示例#1
0
 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;
 }
示例#2
0
 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 [];
 }
示例#3
0
 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];
 }
示例#4
0
 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;
 }