public static function create_token(Token $clientid, Token $userid, $tokenType, $expires)
 {
     $token = Token::generateToken($tokenType, $userid->getUserSecret());
     $query = Database::generate_query("token_create", [$token->toString(), $userid->toString(), $clientid->toString(), $expires]);
     $query->execute();
     return $token;
 }
 public static function fetch_assignment_profile(Token $token)
 {
     $query = Database::generate_query("assignment_lookup_id", [$token->toString()]);
     $result = $query->execute();
     $row = $result->fetch_data();
     return ["assignment-id" => $token->toString(), "assessment-id" => Token::decode($row['assessment_id']), "deadline" => $row['assignment_deadline']];
 }
 public static function delete_question(AssessmentProfile $profile, Token $id)
 {
     $query = Database::generate_query("assessment_question_delete", [$profile->getAssessmentId()->toString(), $id->toString()]);
     $query->execute();
 }
 public static function check_group_permission(GroupProfile $profile, $permission)
 {
     $query = Database::generate_query("group_permission_check", [$profile->getGroupId()->toString(), $permission]);
     $result = $query->execute();
     $count = $result->count();
     $result->close();
     return $count >= 1;
 }
 // Setup response formats
 $formats = [];
 $formats["json"] = new response\JsonResponseFormat(false);
 $formats["json/pretty"] = new response\JsonResponseFormat(true);
 $formats["xml"] = new response\XMLResponseFormat();
 // Get response response if provided
 $responseFormat = DEFAULT_FORMAT;
 if (array_key_exists(Headers::RESPONSE_FORMAT, $_SERVER)) {
     $responseFormat = $_SERVER[Headers::RESPONSE_FORMAT];
 }
 error_reporting(DEBUG ? E_ALL : 0);
 require_once 'core/Utils.php';
 require_once 'Routes.php';
 // Setup config
 core\Config::loadConfig();
 database\Database::init();
 // Request from the same server don't have a HTTP_ORIGIN
 if (!array_key_exists('HTTP_ORIGIN', $_SERVER)) {
     $_SERVER['HTTP_ORIGIN'] = $_SERVER['SERVER_NAME'];
 }
 // Get response response if provided
 $responseFormat = DEFAULT_FORMAT;
 if (array_key_exists(Headers::RESPONSE_FORMAT, $_SERVER)) {
     $responseFormat = $_SERVER[Headers::RESPONSE_FORMAT];
 }
 $code = HTTP::INTERNAL_ERROR;
 $payload = [];
 // get the requested endpoint
 $request = strtolower($_REQUEST['request']);
 // Sanitize the request
 if (strlen($request) != 0 && ends_with($request, "/")) {
 public static function fetch_user_scores(UserProfile $user, array $assignment)
 {
     $query = Database::generate_query("user_assignment_score", [$user->getUserId()->toString(), $assignment["assignment-id"]]);
     $result = $query->execute();
     $row = $result->fetch_data();
     if ($row['score_id'] == null) {
         return null;
     }
     $data = ["completed" => $row['date_completed'], "score" => $row['score']];
     $query = Database::generate_query("user_assignment_question_scores", [$user->getUserId()->toString(), $assignment["assignment-id"], $row['score_id']]);
     $result = $query->execute();
     $i = 1;
     while ($row = $result->fetch_data()) {
         $data["questions"]["" . $i++] = $row['score'];
     }
     return $data;
 }