/** * 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); }
/** * 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); }
/** * 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; }
/** * 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; }
/** * 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; }