public function handle($data)
 {
     $this->validate_request(["setting" => ["key", "value"]]);
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     $setting = $data->{"setting"};
     GroupBackend::set_group_setting($profile, $setting);
     return ["user" => $profile->toExternalForm(), "setting" => $setting];
 }
 public function handle($data)
 {
     $this->validate_request(["permission"]);
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     $permission = $data->{"permission"};
     GroupBackend::set_group_permission($profile, $permission, true);
     return ["user" => $profile->toExternalForm(), "permission" => $permission];
 }
 public function handle($data)
 {
     $this->validate_request(["group"]);
     $user = UserBackend::fetch_user_profile($this->params['id']);
     $group = GroupBackend::fetch_group_profile($data->{"group"});
     UserBackend::add_user_group($user, $group);
     return [];
 }
 public function handle($data)
 {
     $groups = [];
     /** @var GroupProfile $group */
     foreach (GroupBackend::fetch_all_groups() as $group) {
         $groups[] = $group->toExternalForm();
     }
     return ["count" => count($groups), "groups" => $groups];
 }
 public function handle($data)
 {
     $group = GroupBackend::fetch_group_profile($this->params['id']);
     $users = [];
     /** @var \meteor\data\profiles\UserProfile $user */
     foreach (GroupBackend::fetch_group_users($group) as $user) {
         $users[] = $user->toExternalForm();
     }
     return ["users" => $users];
 }
 public function handle($data)
 {
     $group = GroupBackend::fetch_group_profile($this->params['id']);
     $assignment = AssignmentBackend::fetch_assignment_profile(Token::decode($this->params['assignment']));
     $data = [];
     /** @var UserProfile $user */
     foreach (GroupBackend::fetch_group_users($group) as $user) {
         $data[] = ["user" => $user->toExternalForm(), "score" => UserBackend::fetch_user_scores($user, $assignment)];
     }
     return ["users" => $data];
 }
 public function handle($data)
 {
     $this->validate_request(["assignment"]);
     $group = GroupBackend::fetch_group_profile($this->params['id']);
     $users = GroupBackend::fetch_group_users($group);
     $assignmentId = Token::decode($data->{"assignment"});
     foreach ($users as $user) {
         UserBackend::add_user_assignment($user, $assignmentId);
     }
     $assignmentId = AssignmentBackend::fetch_assignment_profile($assignmentId);
     return ["assignment" => $assignmentId];
 }
 public function handle_get($data)
 {
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     $data = [];
     $data["profile"] = $profile->toExternalForm();
     $data["settings"] = GroupBackend::fetch_group_settings($profile);
     $data["permissions"] = GroupBackend::fetch_group_permissions($profile);
     $users = [];
     /** @var UserProfile $user */
     foreach (GroupBackend::fetch_group_users($profile) as $user) {
         $users[] = $user->toExternalForm();
     }
     $data["users"] = $users;
     return $data;
 }
 private function handleCompleted($data)
 {
     $group = GroupBackend::fetch_group_profile($this->params['id']);
     $assignments = [];
     foreach (GroupBackend::fetch_group_users($group) as $user) {
         foreach (UserBackend::fetch_user_assignments_complete($user) as $assignment) {
             $assignments[$assignment["assignment"]["assignment-id"]] = $assignment["assignment"];
         }
     }
     $completed = [];
     foreach ($assignments as $assignment) {
         $completed[] = $assignment;
     }
     return ["assignments" => $completed];
 }
 public function handle($data)
 {
     $this->validate_request(["group-name"]);
     $groupname = $data->{"group-name"};
     $displayname = $groupname;
     if (isset($data->{"display-name"})) {
         $displayname = $data->{"display-name"};
     }
     if (GroupBackend::group_exists($groupname)) {
         throw new EndpointExecutionException("Group with name already exists", ["group-name", $groupname]);
     }
     // Add the group to the database
     $group = GroupBackend::create_group($groupname, $displayname);
     // Return the new user to the client
     return ["group" => $group->toExternalForm()];
 }
 public function handle($data)
 {
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     $permissions = GroupBackend::fetch_group_permissions($profile);
     return ["permissions" => $permissions];
 }
 private function handlePost($data)
 {
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     GroupBackend::delete_group_setting($profile, $this->params["setting"]);
     return [];
 }
 public static function set_group_setting(GroupProfile $profile, $setting)
 {
     if (array_key_exists($setting->{"key"}, GroupBackend::fetch_group_settings($profile))) {
         $query = Database::generate_query("group_setting_update", [$profile->getGroupId()->toString(), $setting->{"key"}, $setting->{"value"}]);
     } else {
         $query = Database::generate_query("group_setting_set", [$profile->getGroupId()->toString(), $setting->{"key"}, $setting->{"value"}]);
     }
     $query->execute();
 }
 public function handleDelete($data)
 {
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     GroupBackend::set_group_permission($profile, $this->params["permission"], true);
     return [];
 }
 public function handle($data)
 {
     $profile = GroupBackend::fetch_group_profile($this->params["id"]);
     $settings = GroupBackend::fetch_group_settings($profile);
     return ["settings" => $settings];
 }
 public static function check_user_permission(UserProfile $profile, $permission)
 {
     $query = Database::generate_query("user_permission_check", [$profile->getUserId()->toString(), $permission]);
     $result = $query->execute();
     $count = $result->count();
     $result->close();
     if ($count >= 1) {
         return true;
     }
     foreach (UserBackend::fetch_user_groups($profile) as $group) {
         if (GroupBackend::check_group_permission($group, $permission)) {
             return true;
         }
     }
     return false;
 }