public function handle($data)
 {
     $rsa = new RSA();
     $rsa->setPrivateKeyFormat(RSA::PRIVATE_FORMAT_XML);
     $rsa->setPublicKeyFormat(RSA::PRIVATE_FORMAT_XML);
     return ["assignment" => Token::generateNewToken(TOKEN_ASSIGNMENT)->toExternalForm(false)];
 }
 public function handle($data)
 {
     $this->validate_request(["assessment" => ["profile", "questions"]]);
     $assessment = $data->{"assessment"};
     $profileJson = $assessment->{"profile"};
     if (isset($profileJson->{"assessment-id"})) {
         $id = Token::decode($profileJson->{"assessment-id"});
     } else {
         $id = Token::generateNewToken(TOKEN_ASSESSMENT);
     }
     $name = $profileJson->{"assessment-name"};
     $displayname = isset($profileJson->{"display-name"}) ? $profileJson->{"display-name"} : $name;
     $profile = new AssessmentProfile($id, $name, $displayname);
     $questions = [];
     foreach ($assessment->{"questions"} as $questionData) {
         $questionJson = obj_to_array($questionData);
         if (isset($questionData->{"question-id"})) {
             $questionId = Token::decode($questionData->{"question-id"});
         } else {
             $questionId = Token::generateNewToken(TOKEN_QUESTION);
         }
         $question = [];
         $question["id"] = $questionId->toString();
         $question["data"] = $questionJson;
         $questions[] = $question;
     }
     return ["assessment" => AssessmentBackend::create_assessment($profile, $questions)->toExternalForm()];
 }
 public function handle($data)
 {
     $this->validate_request(["assessment", "deadline"]);
     $id = Token::generateNewToken(TOKEN_ASSIGNMENT);
     AssignmentBackend::create_assignment($id, Token::decode($data->{"assessment"}), $data->{"deadline"});
     return ["assignment-id" => $id->toString(), "assessment-id" => $data->{"assessment"}, "deadline" => $data->{"deadline"}];
 }
 public static function add_question(AssessmentProfile $profile, $question)
 {
     $answer = (string) $question["data"]["answer"];
     unset($question['data']['answer']);
     $query = Database::generate_query("assessment_question_create", [$question["id"], $profile->getAssessmentId()->toString(), json_encode($question["data"])]);
     $query->execute();
     $query = Database::generate_query("assessment_answer_create", [Token::generateNewToken(TOKEN_ANSWER)->toString(), $question["id"], $profile->getAssessmentId()->toString(), $answer]);
     $query->execute();
 }
 public static function create_group($groupname, $displayname)
 {
     $groupid = Token::generateNewToken(TOKEN_GROUP);
     $groupname = Database::format_string($groupname);
     $displayname = Database::format_string($displayname);
     $query = Database::generate_query("group_create", [$groupid->toString(), $groupname, $displayname]);
     $query->execute();
     return new GroupProfile($groupid, $groupname, $displayname);
 }
 public static function create_user($username, $displayname, $password)
 {
     $username = Database::format_string($username);
     $displayname = Database::format_string($displayname);
     $userid = Token::generateNewToken(TOKEN_USER);
     $query = Database::generate_query("user_create", [$userid->toString(), $username, $displayname, Crypt::hash_password($password)]);
     $query->execute();
     return new UserProfile($userid, $username, $displayname);
 }
 public function handle($data)
 {
     $this->validate_request(["question"]);
     $assessment = AssessmentBackend::fetch_assessment_profile(Token::decode($this->params['id']));
     $questionJson = obj_to_array($data->{"question"});
     if (isset($data->{"question"}->{"question-id"})) {
         $questionId = Token::decode($data->{"question"}->{"question-id"});
     } else {
         $questionId = Token::generateNewToken(TOKEN_QUESTION);
     }
     $question = [];
     $question["id"] = $questionId->toString();
     $question["data"] = $questionJson;
     AssessmentBackend::add_question($assessment, $question);
     return [];
 }