public static function apiArbitrateRequest(Request $r)
 {
     $result = array("status" => "ok");
     if (is_null($r["resolution"])) {
         throw new InvalidParameterException("invalidParameters");
     }
     // user must be admin of contest to arbitrate security
     $current_ses = SessionController::getCurrentSession($r);
     try {
         $r["contest"] = ContestsDAO::getByAlias($r["contest_alias"]);
     } catch (Exception $e) {
         throw new NotFoundException($e);
     }
     if (is_null($r["contest"])) {
         throw new NotFoundException("contestNotFound");
     }
     $r["target_user"] = UsersDAO::FindByUsername($r["username"]);
     $request = ContestUserRequestDAO::getByPK($r["target_user"]->user_id, $r["contest"]->contest_id);
     if (is_null($request)) {
         throw new InvalidParameterException("userNotInListOfRequests");
     }
     if ($r["resolution"] === "false") {
         // "false" casts to true.
         $resolution = false;
     } else {
         $resolution = (bool) $r["resolution"];
     }
     $request->setAccepted($resolution);
     $request->setExtraNote($r["note"]);
     $request->setLastUpdate(gmdate('Y-m-d H:i:s'));
     ContestUserRequestDAO::save($request);
     // Save this action in the history
     $history = new ContestUserRequestHistory();
     $history->user_id = $request->user_id;
     $history->contest_id = $request->user_id;
     $history->time = $request->last_update;
     $history->admin_id = $current_ses["id"];
     $history->accepted = $request->accepted;
     ContestUserRequestHistoryDAO::save($history);
     self::$log->info("Arbitrated contest for user, new accepted user_id=" . $r["target_user"]->user_id . ", state=" . $resolution);
     return $result;
 }
 public static function apiArbitrateRequest(Request $r)
 {
     $result = array('status' => 'ok');
     if (is_null($r['resolution'])) {
         throw new InvalidParameterException('invalidParameters');
     }
     // user must be admin of contest to arbitrate security
     $current_ses = SessionController::getCurrentSession($r);
     try {
         $r['contest'] = ContestsDAO::getByAlias($r['contest_alias']);
     } catch (Exception $e) {
         throw new NotFoundException($e);
     }
     if (is_null($r['contest'])) {
         throw new NotFoundException('contestNotFound');
     }
     $r['target_user'] = UsersDAO::FindByUsername($r['username']);
     $request = ContestUserRequestDAO::getByPK($r['target_user']->user_id, $r['contest']->contest_id);
     if (is_null($request)) {
         throw new InvalidParameterException('userNotInListOfRequests');
     }
     if ($r['resolution'] === 'false') {
         // "false" casts to true.
         $resolution = false;
     } else {
         $resolution = (bool) $r['resolution'];
     }
     $request->setAccepted($resolution);
     $request->setExtraNote($r['note']);
     $request->setLastUpdate(gmdate('Y-m-d H:i:s'));
     ContestUserRequestDAO::save($request);
     // Save this action in the history
     $history = new ContestUserRequestHistory();
     $history->user_id = $request->user_id;
     $history->contest_id = $request->user_id;
     $history->time = $request->last_update;
     $history->admin_id = $current_ses['id'];
     $history->accepted = $request->accepted;
     ContestUserRequestHistoryDAO::save($history);
     self::$log->info('Arbitrated contest for user, new accepted user_id=' . $r['target_user']->user_id . ', state=' . $resolution);
     return $result;
 }