Пример #1
0
 function action_create_from_url($input)
 {
     Services_Exception_Disabled::check('page_content_fetch');
     Services_Exception_Denied::checkGlobal('edit_article');
     $id = null;
     $title = null;
     $url = $input->url->url();
     if ($_SERVER['REQUEST_METHOD'] == 'POST' && $url) {
         $lib = TikiLib::lib('pagecontent');
         $data = $lib->grabContent($url);
         if (!$data) {
             throw new Services_Exception_FieldError($input->errorfield->text() ?: 'url', tr('Content could not be loaded.'));
         }
         $data['content'] = trim($data['content']) == '' ? $data['content'] : '~np~' . $data['content'] . '~/np~';
         $data['description'] = '';
         $data['author'] = '';
         $topicId = $input->topicId->int();
         $articleType = $input->type->text();
         $title = $data['title'];
         $hash = md5($data['title'] . $data['description'] . $data['content']);
         $id = TikiDb::get()->table('tiki_articles')->fetchOne('articleId', array('linkto' => $url)) ?: 0;
         if (!$id) {
             $tikilib = TikiLib::lib('tiki');
             $publication = $tikilib->now;
             $expire = $publication + 3600 * 24 * 365;
             $rating = 10;
             $artlib = TikiLib::lib('art');
             $id = $artlib->replace_article($title, $data['author'], $topicId, 'n', '', 0, '', '', $data['description'], $data['content'], $publication, $expire, $GLOBALS['user'], $id, 0, 0, $articleType, '', '', $url, '', '', $rating, 'n', '', '', '', '', 'y', true);
         }
     }
     $db = TikiDb::get();
     $topics = $db->table('tiki_topics')->fetchMap('topicId', 'name', array(), -1, -1, 'name_asc');
     $types = $db->table('tiki_article_types')->fetchColumn('type', array());
     return ['title' => tr('Create article from URL'), 'url' => $url, 'id' => $id, 'articleTitle' => $title, 'topics' => $topics, 'types' => $types];
 }
Пример #2
0
 function action_regenerate_slugs($input)
 {
     global $prefs;
     Services_Exception_Denied::checkGlobal('admin');
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         $pages = TikiDb::get()->table('tiki_pages');
         $initial = TikiLib::lib('slugmanager');
         $tracker = new Tiki\Wiki\SlugManager\InMemoryTracker();
         $manager = clone $initial;
         $manager->setValidationCallback($tracker);
         $list = $pages->fetchColumn('pageName', []);
         $pages->updateMultiple(['pageSlug' => null], []);
         foreach ($list as $page) {
             $slug = $manager->generate($prefs['wiki_url_scheme'], $page, $prefs['url_only_ascii'] === 'y');
             $count = 1;
             while ($pages->fetchCount(['pageSlug' => $slug]) && $count < 100) {
                 $count++;
                 $slug = $manager->generate($prefs['wiki_url_scheme'], $page . ' ' . $count, $prefs['url_only_ascii'] === 'y');
             }
             $tracker->add($page);
             $pages->update(['pageSlug' => $slug], ['pageName' => $page]);
         }
         TikiLib::lib('access')->redirect('tiki-admin.php?page=wiki');
     }
     return array('title' => tr('Regenerate Wiki URLs'));
 }
Пример #3
0
 function action_process_queue($input)
 {
     Services_Exception_Denied::checkGlobal('admin');
     $batch = $input->batch->int() ?: 50;
     $unifiedsearchlib = TikiLib::lib('unifiedsearch');
     $stat = null;
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         @ini_set('max_execution_time', 0);
         @ini_set('memory_limit', -1);
         $stat = $unifiedsearchlib->processUpdateQueue($batch);
     }
     return ['title' => tr('Process Update Queue'), 'stat' => $stat, 'queue_count' => $unifiedsearchlib->getQueueCount(), 'batch' => $batch];
 }
Пример #4
0
 function setUp()
 {
     Services_Exception_Disabled::check('feature_search');
     Services_Exception_Denied::checkGlobal('tiki_p_admin');
 }
Пример #5
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;
 }
Пример #6
0
 function setUp()
 {
     Services_Exception_Denied::checkGlobal('admin');
 }
Пример #7
0
 function setUp()
 {
     Services_Exception_Denied::checkAuth();
     Services_Exception_Disabled::check('feature_multilingual');
 }
Пример #8
0
 function setUp()
 {
     Services_Exception_Denied::checkAuth();
     Services_Exception_Disabled::check('mustread_enabled');
 }
Пример #9
0
 function setUp()
 {
     Services_Exception_Disabled::check('feature_search');
     Services_Exception_Disabled::check('storedsearch_enabled');
     Services_Exception_Denied::checkAuth();
 }
Пример #10
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];
 }
Пример #11
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 [];
 }
Пример #12
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;
 }