Пример #1
0
 /**
  * Remove user from group test
  */
 public function testRemoveUserFromGroup()
 {
     $groupData = GroupsFactory::createGroup();
     $user = UserFactory::createUser();
     GroupsFactory::addUserToGroup($groupData, $user);
     $response = GroupController::apiRemoveUser(new Request(array('auth_token' => self::login($groupData['owner']), 'usernameOrEmail' => $user->username, 'group_alias' => $groupData['group']->alias)));
     $this->assertEquals('ok', $response['status']);
     $group_users = GroupsUsersDAO::getByPK($groupData['group']->group_id, $user->user_id);
     $this->assertNull($group_users);
 }
Пример #2
0
 /**
  * Remove user from group test
  */
 public function testRemoveUserFromGroup()
 {
     $groupData = GroupsFactory::createGroup();
     $user = UserFactory::createUser();
     GroupsFactory::addUserToGroup($groupData, $user);
     $response = GroupController::apiRemoveUser(new Request(array("auth_token" => self::login($groupData["owner"]), "usernameOrEmail" => $user->username, "group_alias" => $groupData["group"]->alias)));
     $this->assertEquals("ok", $response["status"]);
     $group_users = GroupsUsersDAO::getByPK($groupData["group"]->group_id, $user->user_id);
     $this->assertNull($group_users);
 }
Пример #3
0
 /**
  * Details of a scoreboard. Returns a list with all contests that belong to
  * the given scoreboard_alias
  * 
  * @param Request $r
  */
 public static function apiDetails(Request $r)
 {
     self::validateGroupScoreboard($r);
     $response = array();
     // Fill contests
     $response["contests"] = array();
     $response["ranking"] = array();
     try {
         $groupScoreboardContestKey = new GroupsScoreboardsContests(array("group_scoreboard_id" => $r["scoreboard"]->group_scoreboard_id));
         $r["gscs"] = GroupsScoreboardsContestsDAO::search($groupScoreboardContestKey);
         $i = 0;
         $contest_params = array();
         foreach ($r["gscs"] as $gsc) {
             $contest = ContestsDAO::getByPK($gsc->contest_id);
             $response["contests"][$i] = $contest->asArray();
             $response["contests"][$i]["only_ac"] = $gsc->only_ac;
             $response["contests"][$i]["weight"] = $gsc->weight;
             // Fill contest params to pass to scoreboardMerge
             $contest_params[$contest->alias] = array("only_ac" => $gsc->only_ac == 0 ? false : true, "weight" => $gsc->weight);
             $i++;
         }
     } catch (ApiException $ex) {
         throw $ex;
     } catch (Exception $ex) {
         throw new InvalidDatabaseOperationException($ex);
     }
     $r["contest_params"] = $contest_params;
     // Fill details of this scoreboard
     $response["scoreboard"] = $r["scoreboard"]->asArray();
     // If we have contests, calculate merged&filtered scoreboard
     if (count($response["contests"]) > 0) {
         // Get merged scoreboard
         $r["contest_aliases"] = "";
         foreach ($response["contests"] as $contest) {
             $r["contest_aliases"] .= $contest["alias"] . ",";
         }
         $r["contest_aliases"] = rtrim($r["contest_aliases"], ",");
         try {
             $groupUsers = GroupsUsersDAO::search(new GroupsUsers(array("group_id" => $r["scoreboard"]->group_id)));
             $r["usernames_filter"] = "";
             foreach ($groupUsers as $groupUser) {
                 $user = UsersDAO::getByPK($groupUser->user_id);
                 $r["usernames_filter"] .= $user->username . ",";
             }
             $r["usernames_filter"] = rtrim($r["usernames_filter"], ",");
         } catch (Exception $ex) {
             throw new InvalidDatabaseOperationException($ex);
         }
         $mergedScoreboardResponse = ContestController::apiScoreboardMerge($r);
         $response["ranking"] = $mergedScoreboardResponse["ranking"];
     }
     $response["status"] = "ok";
     return $response;
 }
Пример #4
0
 /**
  * Details of a group (users in a group)
  * 
  * @param Request $r
  */
 public static function apiDetails(Request $r)
 {
     self::validateGroupAndOwner($r);
     $response = array();
     $response["group"] = array();
     $response["users"] = array();
     $response["scoreboards"] = array();
     try {
         $response["group"] = $r["group"]->asArray();
         $userGroups = GroupsUsersDAO::search(new GroupsUsers(array("group_id" => $r["group"]->group_id)));
         foreach ($userGroups as $userGroup) {
             $r["user"] = UsersDAO::getByPK($userGroup->user_id);
             $userProfile = UserController::getProfile($r);
             $response["users"][] = $userProfile;
         }
         $scoreboards = GroupsScoreboardsDAO::search(new GroupsScoreboards(array("group_id" => $r["group"]->group_id)));
         foreach ($scoreboards as $scoreboard) {
             $response["scoreboards"][] = $scoreboard->asArray();
         }
     } catch (Exception $ex) {
         throw new InvalidDatabaseOperationException($ex);
     }
     $response["status"] = "ok";
     return $response;
 }
 /**
  * Details of a scoreboard. Returns a list with all contests that belong to
  * the given scoreboard_alias
  *
  * @param Request $r
  */
 public static function apiDetails(Request $r)
 {
     self::validateGroupScoreboard($r);
     $response = array();
     // Fill contests
     $response['contests'] = array();
     $response['ranking'] = array();
     try {
         $groupScoreboardContestKey = new GroupsScoreboardsContests(array('group_scoreboard_id' => $r['scoreboard']->group_scoreboard_id));
         $r['gscs'] = GroupsScoreboardsContestsDAO::search($groupScoreboardContestKey);
         $i = 0;
         $contest_params = array();
         foreach ($r['gscs'] as $gsc) {
             $contest = ContestsDAO::getByPK($gsc->contest_id);
             $response['contests'][$i] = $contest->asArray();
             $response['contests'][$i]['only_ac'] = $gsc->only_ac;
             $response['contests'][$i]['weight'] = $gsc->weight;
             // Fill contest params to pass to scoreboardMerge
             $contest_params[$contest->alias] = array('only_ac' => $gsc->only_ac == 0 ? false : true, 'weight' => $gsc->weight);
             $i++;
         }
     } catch (ApiException $ex) {
         throw $ex;
     } catch (Exception $ex) {
         throw new InvalidDatabaseOperationException($ex);
     }
     $r['contest_params'] = $contest_params;
     // Fill details of this scoreboard
     $response['scoreboard'] = $r['scoreboard']->asArray();
     // If we have contests, calculate merged&filtered scoreboard
     if (count($response['contests']) > 0) {
         // Get merged scoreboard
         $r['contest_aliases'] = '';
         foreach ($response['contests'] as $contest) {
             $r['contest_aliases'] .= $contest['alias'] . ',';
         }
         $r['contest_aliases'] = rtrim($r['contest_aliases'], ',');
         try {
             $groupUsers = GroupsUsersDAO::search(new GroupsUsers(array('group_id' => $r['scoreboard']->group_id)));
             $r['usernames_filter'] = '';
             foreach ($groupUsers as $groupUser) {
                 $user = UsersDAO::getByPK($groupUser->user_id);
                 $r['usernames_filter'] .= $user->username . ',';
             }
             $r['usernames_filter'] = rtrim($r['usernames_filter'], ',');
         } catch (Exception $ex) {
             throw new InvalidDatabaseOperationException($ex);
         }
         $mergedScoreboardResponse = ContestController::apiScoreboardMerge($r);
         $response['ranking'] = $mergedScoreboardResponse['ranking'];
     }
     $response['status'] = 'ok';
     return $response;
 }
Пример #6
0
 /**
  * Members of a group (usernames only).
  *
  * @param Request $r
  */
 public static function apiMembers(Request $r)
 {
     self::validateGroupAndOwner($r);
     $response = array();
     try {
         $response['users'] = GroupsUsersDAO::GetMemberUsernames($r['group']);
     } catch (Exception $ex) {
         throw new InvalidDatabaseOperationException($ex);
     }
     $response['status'] = 'ok';
     return $response;
 }