/tiki-admin_rssmodules.php
PHP | 254 lines | 225 code | 14 blank | 15 comment | 64 complexity | 32f524943d06669df6db351d0a0bc6ef MD5 | raw file
- <?php
- /**
- * @package tikiwiki
- */
- // (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
- //
- // All Rights Reserved. See copyright.txt for details and a complete list of authors.
- // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
- // $Id$
- require_once('tiki-setup.php');
- /** @var RSSLib $rsslib */
- $rsslib = TikiLib::lib('rss');
- //get_strings tra('External Feeds')
- $auto_query_args = [
- 'rssId',
- 'offset',
- 'maxRecords',
- 'sort_mode',
- 'find'
- ];
- $access->check_permission('tiki_p_admin_rssmodules');
- if (isset($_REQUEST["rssId"])) {
- $smarty->assign('rssId', $_REQUEST["rssId"]);
- $cookietab = 2;
- }
- $smarty->assign('preview', 'n');
- if (isset($_REQUEST["view"])) {
- $smarty->assign('preview', 'y');
- $data = $rsslib->get_rss_module($_REQUEST["view"]);
- if ($data['sitetitle']) {
- $smarty->assign(
- 'feedtitle',
- [
- 'title' => $data['sitetitle'],
- 'link' => $data['siteurl']
- ]
- );
- }
- $smarty->assign('items', $rsslib->get_feed_items($_REQUEST['view']));
- }
- if (isset($_REQUEST["rssId"])) {
- $info = $rsslib->get_rss_module($_REQUEST["rssId"]);
- } else {
- $info = [];
- // default for new rss feed:
- $info["name"] = '';
- $info["description"] = '';
- $info["url"] = '';
- $info["refresh"] = 1800;
- $info["showTitle"] = 'n';
- $info["showPubDate"] = 'n';
- }
- $smarty->assign('name', $info["name"]);
- $smarty->assign('description', $info["description"]);
- $smarty->assign('url', $info["url"]);
- $smarty->assign('refreshSeconds', $info["refresh"]);
- $smarty->assign('showTitle', $info["showTitle"]);
- $smarty->assign('showPubDate', $info["showPubDate"]);
- if ((isset($_REQUEST["refresh_all"]) || ! empty($_REQUEST["refresh"])) && $access->checkCsrf()) {
- if (isset($_REQUEST["refresh_all"])) {
- // Refresh all feeds button
- $result = $rsslib->refresh_all_rss_modules();
- } else {
- // Refreshing a single feed
- $result = $rsslib->refresh_rss_module($_REQUEST["refresh"]);
- }
- if (is_array($result)) {
- if ($result['entries']['feed'] === 1) {
- $msg = tr('Refresh resulted in %0 updated feed entry', $result['entries']['feed']);
- } elseif ($result['entries']['feed'] > 1) {
- $msg = tr('Refresh resulted in %0 updated feed entries', $result['entries']['feed']);
- } else {
- $msg = tr('Feed entries already up to date, no changes made');
- }
- if (isset($result['entries']['articles']) && $result['entries']['articles'] === 1) {
- $msg .= '. ' . tr('In addition, %0 article was created from the feed items.', $result['entries']['articles']);
- } elseif (! empty($result['entries']['articles'])) {
- $msg .= '. ' . tr('In addition, %0 articles were created from the feed items.', $result['entries']['articles']);
- }
- Feedback::success($msg);
- } else {
- Feedback::error(tr('Feeds not refreshed'));
- }
- }
- if (isset($_REQUEST['clear']) && $access->checkCsrf()) {
- $count = $rsslib->table('tiki_rss_items')->fetchCount(
- ['rssId' => $_REQUEST['clear']]
- );
- if ($count == 0) {
- Feedback::note(tr(
- 'No cached items to clear for external feed ID %0.',
- htmlspecialchars($_REQUEST['clear'])
- ));
- } else {
- $result = $rsslib->clear_rss_cache($_REQUEST['clear']);
- if ($result && $result->numRows()) {
- Feedback::success(tr('Cache cleared'));
- } else {
- Feedback::error(tr('Cache not cleared'));
- }
- }
- }
- if (isset($_REQUEST["remove"]) && $access->checkCsrf(true)) {
- $result = $rsslib->remove_rss_module($_REQUEST["remove"]);
- if ($result['feed'] && $result['feed']->numRows()) {
- if ($result['items'] && $result['items']->numRows()) {
- if ($result['items']->numRows() === 1) {
- Feedback::success(tr('External feed with 1 item deleted'));
- } else {
- Feedback::success(tr('External feed with %0 items deleted', $result['items']->numRows()));
- }
- } else {
- Feedback::success(tr('External feed with no items deleted'));
- }
- } else {
- Feedback::error(tr('No external feeds were deleted'));
- }
- }
- if (isset($_REQUEST['article']) && $prefs['feature_articles'] == 'y') {
- if ($_SERVER['REQUEST_METHOD'] == 'POST' && $access->checkCsrf()) {
- $result = $rsslib->set_article_generator(
- $_REQUEST['article'],
- [
- 'active' => isset($_POST['enable']),
- 'expiry' => $jitPost->expiry->int(),
- 'atype' => $jitPost->type->text(),
- 'custom_atype' => $jitPost->asArray('custom_atype'),
- 'topic' => $jitPost->topic->int(),
- 'custom_topic' => $jitPost->asArray('custom_topic'),
- 'future_publish' => $jitPost->future_publish->int(),
- 'categories' => (array) $jitPost->cat_categories->int(),
- 'rating' => $jitPost->rating->int(),
- 'custom_rating' => $jitPost->asArray('custom_rating'),
- 'submission' => isset($_POST['submission']),
- 'custom_priority' => $jitPost->asArray('custom_priority'),
- 'a_lang' => $jitPost->a_lang->word(),
- ]
- );
- $cookietab = 1;
- if ($result && $result->numRows()) {
- Feedback::success(tr('Article generator settings updated'));
- } else {
- Feedback::note(tr('No changes made to article generator settings'));
- }
- } else {
- $cookietab = 3;
- }
- $config = $rsslib->get_article_generator($_REQUEST['article']);
- $smarty->assign('articleConfig', $config);
- $smarty->assign('ratingOptions', array_map('strval', range(0, 10)));
- $sourcecats = $rsslib->get_feed_source_categories($_REQUEST["article"]);
- $smarty->assign('sourcecats', $sourcecats);
- $article_custom_info = $rsslib->get_article_custom_info($_REQUEST["article"]);
- $smarty->assign('article_custom_info', $article_custom_info);
- $artlib = TikiLib::lib('art');
- $smarty->assign('topics', $artlib->list_topics());
- $smarty->assign('types', $artlib->list_types());
- $cat_type = 'null';
- $cat_objid = 'null';
- $_REQUEST['cat_categorize'] = 'on';
- $_REQUEST['cat_categories'] = $config['categories'];
- include 'categorize_list.php';
- }
- if (isset($_REQUEST["save"]) && $access->checkCsrf()) {
- if (isset($_REQUEST['showTitle']) == 'on') {
- $smarty->assign('showTitle', 'y');
- $info["showTitle"] = 'y';
- } else {
- $smarty->assign('showTitle', 'n');
- $info["showTitle"] = 'n';
- }
- if (isset($_REQUEST['showPubDate']) == 'on') {
- $smarty->assign('showPubDate', 'y');
- $info["showPubDate"] = 'y';
- } else {
- $smarty->assign('showPubDate', 'n');
- $info["showPubDate"] = 'n';
- }
- $result = $rsslib->replace_rss_module(
- $_REQUEST["rssId"],
- $_REQUEST["name"],
- $_REQUEST["description"],
- $_REQUEST["url"],
- $_REQUEST["refreshMinutes"],
- $info["showTitle"],
- $info["showPubDate"]
- );
- $smarty->assign('rssId', 0);
- $smarty->assign('name', '');
- $smarty->assign('description', '');
- $smarty->assign('url', '');
- $smarty->assign('refreshSeconds', 900);
- $smarty->assign('showTitle', 'n');
- $smarty->assign('showPubDate', 'n');
- $cookietab = 1;
- if (is_numeric($result)) {
- if (! empty($_REQUEST["rssId"])) {
- $msg = tr('External feed updated');
- } else {
- $msg = tr('External feed saved');
- }
- Feedback::success($msg);
- } else {
- Feedback::note(tr('No changes made to external feed'));
- }
- }
- if (! isset($_REQUEST["sort_mode"])) {
- $sort_mode = 'name_desc';
- } else {
- $sort_mode = $_REQUEST["sort_mode"];
- }
- if (! isset($_REQUEST["offset"])) {
- $offset = 0;
- } else {
- $offset = $_REQUEST["offset"];
- }
- $smarty->assign_by_ref('offset', $offset);
- if (isset($_REQUEST["find"])) {
- $find = $_REQUEST["find"];
- } else {
- $find = '';
- }
- if ($prefs['feature_multilingual'] == 'y') {
- $languages = [];
- $langLib = TikiLib::lib('language');
- $languages = $langLib->list_languages();
- $smarty->assign_by_ref('languages', $languages);
- }
- $smarty->assign('find', $find);
- $smarty->assign_by_ref('sort_mode', $sort_mode);
- $channels = $rsslib->list_rss_modules($offset, $maxRecords, $sort_mode, $find);
- $cant = $channels['cant'];
- $smarty->assign_by_ref('cant', $cant);
- $temp_max = count($channels["data"]);
- $smarty->assign_by_ref('channels', $channels["data"]);
- // disallow robots to index page:
- $smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
- // Display the template
- $smarty->assign('mid', 'tiki-admin_rssmodules.tpl');
- $smarty->display("tiki.tpl");