Beispiel #1
0
 /**
  * Adds a group of users(by their IDs) to a certain group
  *
  * @access  public
  * @param   int     $guid  Group's ID
  * @param   array   $users Array with user id
  * @return  mixed   True on success or Jaws_Error on failure
  */
 function AddUsersToGroup($guid, $users)
 {
     $userModel = new Jaws_User();
     $group = $userModel->GetGroup((int) $guid);
     if (!$group) {
         return new Jaws_Error(_t('USERS_GROUPS_GROUP_NOT_EXIST'));
     }
     $postedUsers = array();
     foreach ($users as $k => $v) {
         $postedUsers[$v] = $v;
     }
     $list = $userModel->GetUsers();
     foreach ($list as $user) {
         if ($userModel->UserIsInGroup($user['id'], $guid)) {
             if (!isset($postedUsers[$user['id']])) {
                 if (!$GLOBALS['app']->Session->IsSuperAdmin() && $user['superadmin']) {
                     continue;
                 }
                 $userModel->DeleteUserFromGroup($user['id'], $guid);
             }
         } else {
             if (isset($postedUsers[$user['id']])) {
                 $userModel->AddUserToGroup($user['id'], $guid);
             }
         }
     }
     return true;
 }
Beispiel #2
0
 /**
  * Update a user's group
  *
  * @access  public
  * @return  void
  */
 function UpdateGroup()
 {
     $this->gadget->CheckPermission('ManageUserGroups');
     $post = jaws()->request->fetch(array('gid', 'name', 'title', 'description', 'enabled'), 'post');
     $selected_members = jaws()->request->fetch('members:array', 'post');
     $user = $GLOBALS['app']->Session->GetAttribute('user');
     $post['enabled'] = (bool) $post['enabled'];
     $jUser = new Jaws_User();
     $res = $jUser->UpdateGroup($post['gid'], $post, $user);
     $current_members_info = $jUser->GetUsers($post['gid']);
     $current_members = array();
     foreach ($current_members_info as $member_info) {
         $current_members[] = $member_info['id'];
     }
     $new_member = array_diff($selected_members, $current_members);
     if (!Jaws_Error::isError($res) && count($new_member) > 0) {
         // TODO: improve performance
         foreach ($new_member as $member) {
             $res = $jUser->AddUserToGroup($member, $post['gid'], $user);
         }
     }
     $removed_member = array_diff($current_members, $selected_members);
     if (!Jaws_Error::isError($res) && count($removed_member) > 0) {
         // TODO: improve performance
         foreach ($removed_member as $member) {
             $res = $jUser->DeleteUserFromGroup($member, $post['gid'], $user);
         }
     }
     if (Jaws_Error::isError($res)) {
         $GLOBALS['app']->Session->PushResponse($res->getMessage(), 'Users.Groups', RESPONSE_ERROR);
     } elseif ($res == true) {
         $GLOBALS['app']->Session->PushResponse(_t('USERS_GROUPS_UPDATED', $post['title']), 'Users.Groups', RESPONSE_NOTICE);
     }
     Jaws_Header::Location($this->gadget->urlMap('Groups'));
 }