public function submit() { if ($this->validateAction()) { $u = new User(); $fdc = new \Concrete\Core\User\Search\ColumnSet\ColumnSet(); $fldca = new \Concrete\Core\User\Search\ColumnSet\Available(); foreach ($_POST['column'] as $key) { $fdc->addColumn($fldca->getColumnByKey($key)); } $sortCol = $fldca->getColumnByKey($_POST['fSearchDefaultSort']); $fdc->setDefaultSortColumn($sortCol, $_POST['fSearchDefaultSortDirection']); $u->saveConfig('USER_LIST_DEFAULT_COLUMNS', serialize($fdc)); $userList = new UserList(); $columns = \Concrete\Core\User\Search\ColumnSet\ColumnSet::getCurrent(); $col = $columns->getDefaultSortColumn(); $userList->sortBy($col->getColumnKey(), $col->getColumnDefaultSortDirection()); $ilr = new \Concrete\Core\User\Search\Result\Result($columns, $userList, URL::to('/ccm/system/search/users/submit')); $r = new \Concrete\Core\Search\Response(); $r->setMessage(t('User search columns saved successfully.')); $r->setSearchResult($ilr); $r->outputJSON(); } }
public function search() { $dh = Loader::helper('concrete/user'); if (!$dh->canAccessUserSearchInterface()) { return false; } if ($_REQUEST['submitSearch']) { $this->searchRequest->resetSearchRequest(); } $req = $this->searchRequest->getSearchRequest(); $columns = UserSearchColumnSet::getCurrent(); if (!$this->userList->getActiveSortColumn()) { $col = $columns->getDefaultSortColumn(); $this->userList->sanitizedSortBy($col->getColumnKey(), $col->getColumnDefaultSortDirection()); } $this->userList->includeInactiveUsers(); $this->userList->includeUnvalidatedUsers(); $columns = UserSearchColumnSet::getCurrent(); $this->set('columns', $columns); if ($req['keywords'] != '') { $this->userList->filterByKeywords($req['keywords']); } if ($req['numResults'] && Loader::helper('validation/numbers')->integer($req['numResults'])) { $this->userList->setItemsPerPage($req['numResults']); } $u = new User(); if (!$u->isSuperUser()) { $gIDs = array(-1); $gs = new GroupList(); $groups = $gs->getResults(); foreach ($groups as $g) { $gp = new Permissions($g); if ($gp->canSearchUsersInGroup()) { $gIDs[] = $g->getGroupID(); } } $this->userList->getQueryObject()->leftJoin("u", "UserGroups", "ugRequired", "ugRequired.uID = u.uID"); $groups = 'ugRequired.gID in (' . implode(',', $gIDs) . ')'; $gg = Group::getByID(REGISTERED_GROUP_ID); $ggp = new Permissions($gg); if ($ggp->canSearchUsersInGroup()) { $null = 'ugRequired.gID is null'; } $this->userList->getQueryObject()->select('distinct (u.uID)'); $expr = $this->userList->getQueryObject()->expr()->orX($groups, $null); $this->userList->getQueryObject()->andwhere($expr); } $filterGIDs = array(); if (isset($req['gID']) && is_array($req['gID'])) { foreach ($req['gID'] as $gID) { $g = Group::getByID($gID); if (is_object($g)) { $gp = new Permissions($g); if ($gp->canSearchUsersInGroup()) { $filterGIDs[] = $g->getGroupID(); } } } } foreach ($filterGIDs as $gID) { $this->userList->filterByGroupID($gID); } if (is_array($req['field'])) { foreach ($req['field'] as $i => $item) { $this->fields[] = $this->getField($item); // due to the way the form is setup, index will always be one more than the arrays if ($item != '') { switch ($item) { case 'is_active': if ($req['active'] === '0') { $this->userList->filterByIsActive(0); } elseif ($req['active'] === '1') { $this->userList->filterByIsActive(1); } break; case "date_added": $wdt = Loader::helper('form/date_time'); /* @var $wdt \Concrete\Core\Form\Service\Widget\DateTime */ $dateFrom = $wdt->translate('date_added_from', $_REQUEST); if ($dateFrom) { $this->userList->filterByDateAdded($dateFrom, '>='); } $dateTo = $wdt->translate('date_added_to', $_REQUEST); if ($dateTo) { if (preg_match('/^(.+\\d+:\\d+):00$/', $dateTo, $m)) { $dateTo = $m[1] . ':59'; } $this->userList->filterByDateAdded($dateTo, '<='); } break; case "group_set": $gsID = $_REQUEST['gsID']; $gs = GroupSet::getByID($gsID); $groupsetids = array(-1); if (is_object($gs)) { $groups = $gs->getGroups(); } $this->userList->addToQuery('left join UserGroups ugs on u.uID = ugs.uID'); foreach ($groups as $g) { if ($pk->validate($g) && !in_array($g->getGroupID(), $groupsetids)) { $groupsetids[] = $g->getGroupID(); } } $instr = 'ugs.gID in (' . implode(',', $groupsetids) . ')'; $this->userList->filter(false, $instr); break; default: $akID = $item; $fak = UserAttributeKey::getByID($akID); $type = $fak->getAttributeType(); $cnt = $type->getController(); $cnt->setAttributeKey($fak); $cnt->searchForm($this->userList); break; } } } } $ilr = new UserSearchResult($columns, $this->userList, URL::to('/ccm/system/search/users/submit'), $this->fields); $this->result = $ilr; }
public function getCurrentColumnSet() { return ColumnSet::getCurrent(); }