public function testAddContestGroupAdmin()
 {
     // Get a contest
     $contestData = ContestsFactory::createContest();
     // Get a user
     $user = UserFactory::createUser();
     // Get a group
     $groupData = GroupsFactory::createGroup();
     GroupsFactory::addUserToGroup($groupData, $user);
     // Prepare request
     $r = new Request();
     $r['auth_token'] = $this->login($contestData['director']);
     $r['group'] = $groupData['request']['alias'];
     $r['contest_alias'] = $contestData['request']['alias'];
     // Call api
     $response = ContestController::apiAddGroupAdmin($r);
     // Get the role
     $ur = GroupRolesDAO::getByPK($groupData['group']->group_id, CONTEST_ADMIN_ROLE, $contestData['contest']->contest_id);
     $this->assertNotNull($ur);
 }
 /**
  * Returns all contest administrators
  *
  * @param Request $r
  * @return array
  * @throws InvalidDatabaseOperationException
  */
 public static function apiAdmins(Request $r)
 {
     // Authenticate request
     self::authenticateRequest($r);
     Validators::isStringNonEmpty($r['contest_alias'], 'contest_alias');
     try {
         $contest = ContestsDAO::getByAlias($r['contest_alias']);
     } catch (Exception $e) {
         throw new InvalidDatabaseOperationException($e);
     }
     if (!Authorization::IsContestAdmin($r['current_user_id'], $contest)) {
         throw new ForbiddenAccessException();
     }
     $response = array();
     $response['admins'] = UserRolesDAO::getContestAdmins($contest);
     $response['group_admins'] = GroupRolesDAO::getContestAdmins($contest);
     $response['status'] = 'ok';
     return $response;
 }
 public static function IsSystemAdmin($user_id)
 {
     if (self::$is_system_admin == null) {
         self::$is_system_admin = GroupRolesDAO::IsSystemAdmin($user_id) || UserRolesDAO::IsSystemAdmin($user_id);
     }
     return self::$is_system_admin;
 }