/** Creates a new session. */ public static function newSession($assignment_id, $worker_id, Game $game) { $new_session = new Session(); $new_session->id = uniqid('', true); $new_session->assignment_id = $assignment_id; $new_session->worker_id = $worker_id; $new_session->game = $game; $new_session->current_step = $game->steps[0]; $new_session->repetition = 0; $new_session->data = array(); $new_session->status = self::awaiting_user_input; $new_session->setExpiration($new_session->current_step->time_limit); $dbh = Database::handle(); $sth = $dbh->prepare('INSERT INTO sessions ' . '(session_id, assignment_id, worker_id, game, data, status, expires) ' . 'VALUES ' . '(:session, :assignment, :worker, :game, :data, :status, :expires)'); $sth->bindValue(':session', $new_session->id); $sth->bindValue(':assignment', $new_session->assignment_id); $sth->bindValue(':worker', $new_session->worker_id); $sth->bindValue(':game', $new_session->game->getID()); $sth->bindValue(':data', serialize($new_session->data)); $sth->bindValue(':status', $new_session->status); $sth->bindValue(':expires', $new_session->expires); $sth->execute(); self::$sessions[$new_session->id] = $new_session; return self::$sessions[$new_session->id]; }