private function removeUsers(array $users, $page = false) { global $user; foreach ($users as $deleteuser) { if ($deleteuser != 'admin') { $res = $this->lib->remove_user($deleteuser); if ($res === true) { $logslib = TikiLib::lib('logs'); $logslib->add_log('adminusers', sprintf(tra('Deleted account %s'), $deleteuser), $user); } else { throw new Services_Exception_NotFound(tr('An error occurred, user %0 could not be deleted', $deleteuser)); } if ($page) { global $prefs; $page = $prefs['feature_wiki_userpage_prefix'] . $deleteuser; Services_Exception_Denied::checkObject('remove', 'wiki page', $page); $tikilib = TikiLib::lib('tiki'); $res = $tikilib->remove_all_versions($page); if ($res !== true) { throw new Services_Exception_NotFound(tr('An error occurred, user %0 could not be deleted', $deleteuser)); } } } } return true; }
function action_unlock($input) { global $user; $attributelib = TikiLib::lib('attribute'); $type = $input->type->text(); $object = $input->object->text(); list($perm, $adminperm, $attribute, $permtype) = $this->setup_locking($type); $perms = Perms::get($permtype, $object); $lockedby = $attributelib->get_attribute($type, $object, $attribute); if ($lockedby) { // it's locked if ($perms->{$adminperm} || $user === $lockedby && $perms->{$perm}) { if (!empty($object)) { $res = $attributelib->set_attribute($type, $object, $attribute, ''); if (!$res) { TikiLib::lib('errorreport')->report(tr('Invalid attribute name "%0"', $attribute)); } } return ['locked' => false]; } else { Services_Exception_Denied::checkObject($adminperm, $permtype, $object); } } return []; }
function action_list($input) { $tabularId = $input->tabularId->int(); $lib = TikiLib::lib('tabular'); $info = $lib->getInfo($tabularId); $trackerId = $info['trackerId']; Services_Exception_Denied::checkObject('tiki_p_tabular_list', 'tabular', $tabularId); $schema = $this->getSchema($info); $collection = $schema->getFilterCollection(); $collection->applyInput($input); $search = TikiLib::lib('unifiedsearch'); $query = $search->buildQuery(['type' => 'trackeritem', 'tracker_id' => $trackerId]); $query->setRange($input->offset->int()); $collection->applyConditions($query); $source = new \Tracker\Tabular\Source\PaginatedQuerySource($schema, $query); $writer = new \Tracker\Tabular\Writer\HtmlWriter(); $columns = array_values(array_filter($schema->getColumns(), function ($c) { return !$c->isExportOnly(); })); $arguments = $collection->getQueryArguments(); $collection->setResultSet($source->getResultSet()); $template = ['controls' => [], 'usable' => false, 'selected' => false]; $filters = ['default' => $template, 'primary' => $template, 'side' => $template]; foreach ($collection->getFilters() as $filter) { // Exclude unusable controls if (!$filter->getControl()->isUsable()) { continue; } $pos = $filter->getPosition(); $filters[$pos]['controls'][] = ['id' => $filter->getControl()->getId(), 'label' => $filter->getLabel(), 'help' => $filter->getHelp(), 'control' => $filter->getControl(), 'description' => $filter->getControl()->getDescription(), 'selected' => $filter->getControl()->hasValue()]; $filters[$pos]['usable'] = true; if ($filter->getControl()->hasValue()) { $filters[$pos]['selected'] = true; } } return ['title' => tr($info['name']), 'tabularId' => $tabularId, 'filters' => $filters, 'columns' => $columns, 'data' => $writer->getData($source), 'resultset' => $source->getResultSet(), 'baseArguments' => $arguments]; }
private function removeUsers(array $users, $page = false, $trackerIds = [], $files = false) { global $user; foreach ($users as $deleteuser) { if ($deleteuser != 'admin') { // remove the user's objects, wiki page first if ($page) { global $prefs; $page = $prefs['feature_wiki_userpage_prefix'] . $deleteuser; Services_Exception_Denied::checkObject('remove', 'wiki page', $page); $tikilib = TikiLib::lib('tiki'); $res = $tikilib->remove_all_versions($page); if ($res !== true) { throw new Services_Exception_NotFound(tr('An error occurred. User %0 could not be deleted', $deleteuser)); } } // then tracker items "owner" by the user if (!empty($trackerIds)) { $trklib = TikiLib::lib('trk'); $items = $trklib->get_user_items($deleteuser, false); foreach ($items as $item) { if (in_array($item['trackerId'], $trackerIds)) { $trklib->remove_tracker_item($item['itemId'], true); } } } // then tracker items "owner" by the user if ($files) { $filegallib = TikiLib::lib('filegal'); $galleryId = $filegallib->get_user_file_gallery($deleteuser); if ($galleryId) { $filegallib->remove_file_gallery($galleryId); } } // and finally remove the actual user (and other associated data) $res = $this->lib->remove_user($deleteuser); if ($res === true) { $logslib = TikiLib::lib('logs'); $logslib->add_log('adminusers', sprintf(tra('Deleted account %s'), $deleteuser), $user); } else { throw new Services_Exception_NotFound(tr('An error occurred. User %0 could not be deleted', $deleteuser)); } } } return true; }