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