clearSelection(); $rsearch = strtolower(remositoryRepository::GetParam($_POST, 'rsearch')); $authoriser = aliroAuthoriser::getInstance(); $roles = $authoriser->getAllRoles(); if ($rsearch) foreach ($roles as $key=>$role) { if (false === strpos(strtolower($role), $rsearch)) unset($roles[$key]); } // Create and activate a View object $view = $this->admin->newHTMLClassCheck ('listGroupsHTML', $this, count($roles), ''); $view->view($roles, $rsearch); } function addTask () { $this->userlist('', true); } function editTask () { $role = remositoryRepository::GetParam($_REQUEST, 'role'); $getrole = remositoryRepository::GetParam($_GET, 'role'); $listype = remositoryRepository::GetParam($_POST, 'listype'); if ('roles' == $listype) { $cfid = remositoryRepository::GetParam($_POST, 'cfid', array()); if (count($cfid)) $this->userlist($cfid[0], false); return; } if ($getrole) $this->userlist($getrole, false); elseif ($role) $this->userlist($role, false); else $this->listTask(); } function addmembersTask () { $role = remositoryRepository::GetParam($_REQUEST, 'role'); $this->userlist($role, true); } function trackSelectedUsers () { $selection = isset($_SESSION['remositoryGroupUsers']) ? $_SESSION['remositoryGroupUsers'] : array(); $cfid = remositoryRepository::getParam($_POST, 'cfid', array()); $cfall = remositoryRepository::getParam($_POST, 'cfall', array()); if (!empty($cfall)) { $selection = array_merge($selection, $cfid); $selection = array_diff($selection, array_diff($cfall,$cfid)); $_SESSION['remositoryGroupUsers'] = $selection; } return $selection; } function clearSelection () { unset($_SESSION['remositoryGroupUsers']); } function saveTask () { $interface = remositoryInterface::getInstance(); $database = $interface->getDB(); $authoriser = aliroAuthorisationAdmin::getInstance(); $role = remositoryRepository::getParam($_POST, 'role'); if ($role) { $drole = $database->getEscaped($role); $selection = $this->trackSelectedUsers(); foreach ($selection as $id) { $authoriser->assign ($drole, 'aUser', $id); } $this->clearSelection(); $message = _DOWN_GROUP_SAVED; $this->interface->redirect("index2.php?option=com_remository&act=groups&task=edit&role=".$role, $message); } else $message = _DOWN_GROUP_NO_NAME; $this->interface->redirect("index2.php?option=com_remository&act=groups", $message); } function deleteTask () { $authoriser = aliroAuthorisationAdmin::getInstance(); $listype = remositoryRepository::GetParam($_POST, 'listype'); if ('roles' == $listype) { if (!is_array($this->admin->cfid) OR count($this->admin->cfid) < 1) { echo "\n"; exit; } $roles = remositoryRepository::GetParam($_POST, 'cfid', array()); $interface = remositoryInterface::getInstance(); $database = $interface->getDB(); foreach ($roles as $role) { $role = $database->getEscaped($role); $authoriser->dropRole($role); } $this->listTask(); } else { $selection = $this->trackSelectedUsers(); if (0 == count($selection)) { echo "\n"; exit; } $role = remositoryRepository::GetParam($_POST, 'role'); if ($role) { foreach ($selection as $userid) $authoriser->unassign($role, 'aUser', $userid); } $this->clearSelection(); $this->interface->redirect("index2.php?option=com_remository&act=groups&task=edit&role=".$role); } } function userlist ($role, $usersToAdd=false) { if (!isset($_SESSION['remositoryGroupUsersAdd']) OR $usersToAdd != $_SESSION['remositoryGroupUsersAdd']) { $_SESSION['remositoryGroupUsersAdd'] = $usersToAdd; $this->clearSelection(); } $selected = $this->trackSelectedUsers(); $interface = remositoryInterface::getInstance(); $search = $interface->getUserStateFromRequest( "searchRemosRoles", 'search', '' ); $authoriser = aliroAuthoriser::getInstance(); $userids = $authoriser->listAccessors ('aUser', $role); // list of criteria filters $filterby[] = remositoryRepository::makeOption( 'all', '- All fields -'); $filterby[] = remositoryRepository::makeOption( 'name', 'Name'); $filterby[] = remositoryRepository::makeOption( 'username', 'userID'); $filterby[] = remositoryRepository::makeOption( 'email', 'e-mail'); $lists['filter_by'] = remositoryRepository::selectList($filterby, 'filter_by', 'class="inputbox" size="1"'); $rows = $this->findUsers ($userids, $search, $total, $usersToAdd); // Create and activate a View object $view = $this->admin->newHTMLClassCheck ('editGroupsHTML', $this, $total, ''); $view->view($rows, $selected, $search, $lists, $role, $usersToAdd, $this->admin->task); } function findUsers ($userids, $search, &$total, $usersToAdd=false) { $interface = remositoryInterface::getInstance(); $database = $interface->getDB(); $where = array(); if (count($userids)) { if ($usersToAdd) $where[] = 'id NOT IN ('.implode(',', $userids).')'; else $where[] = 'id IN ('.implode(',', $userids).')'; } elseif (!$usersToAdd) return array(); if ($search) { $filter_by = $interface->getUserStateFromRequest( "filter_by", 'filter_by', 'all'); $search = $database->getEscaped($search); if (!in_array($filter_by, array ('all', 'name', 'username', 'email'))) $filter_by = 'all'; if ('all' == $filter_by) $where[] = "(u.username LIKE '%$search%' OR u.email LIKE '%$search%' OR u.name LIKE '%$search%')"; else $where[] = "(u.$filter_by LIKE '%$search%')"; } if ($conditions = implode(' AND ', $where )) $conditions = ' WHERE '.$conditions; $query = "SELECT %s FROM #__users AS u"; $database->setQuery(sprintf($query,'COUNT(*)').$conditions); $total = $database->loadResult(); $this->makePageNav($this->admin, $total); if ($total) { if ($this->admin->limitstart > $total-1) $this->admin->limitstart = 0; $limiter = " LIMIT {$this->admin->limitstart}, {$this->admin->limit}"; $database->setQuery(sprintf($query,'u.*, u.usertype as groupname').$conditions.$limiter); $rows = $database->loadObjectList(); } else $rows = array(); return $rows; } }