Example #1
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'));
 }