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]; }
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')); }
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]; }
function setUp() { Services_Exception_Disabled::check('feature_search'); Services_Exception_Denied::checkGlobal('tiki_p_admin'); }
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 setUp() { Services_Exception_Denied::checkGlobal('admin'); }
function setUp() { Services_Exception_Denied::checkAuth(); Services_Exception_Disabled::check('feature_multilingual'); }
function setUp() { Services_Exception_Denied::checkAuth(); Services_Exception_Disabled::check('mustread_enabled'); }
function setUp() { Services_Exception_Disabled::check('feature_search'); Services_Exception_Disabled::check('storedsearch_enabled'); Services_Exception_Denied::checkAuth(); }
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]; }
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 []; }
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; }