getVersion('zoneclearFeedServer') != dcCore::app()->plugins->moduleInfo('zoneclearFeedServer', 'version') ) { return null; } dcPage::check(dcAuth::PERMISSION_CONTENT_ADMIN); $zcfs = new zoneclearFeedServer(); ############################################################ # # One feed # ############################################################ if (isset($_REQUEST['part']) && $_REQUEST['part'] == 'feed') { $feed_id = ''; $feed_name = ''; $feed_desc = ''; $feed_owner = ''; $feed_tweeter = ''; $feed_url = ''; $feed_feed = ''; $feed_lang = dcCore::app()->auth->getInfo('user_lang'); $feed_tags = ''; $feed_get_tags = '0'; $feed_cat_id = ''; $feed_status = '0'; $feed_upd_int = 3600; $can_view_page = true; $feed_headlink = ''; $feed_link = '%s'; $next_link = $prev_link = $next_headlink = $prev_headlink = null; # Combos $combo_langs = l10n::getISOcodes(true); $combo_status = $zcfs->getAllStatus(); $combo_upd_int = $zcfs->getAllUpdateInterval(); $combo_categories = ['-' => '']; try { $categories = dcCore::app()->blog->getCategories(['post_type' => 'post']); while ($categories->fetch()) { $combo_categories[ str_repeat(' ', $categories->level - 1) . '• ' . html::escapeHTML($categories->cat_title) ] = $categories->cat_id; } } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } # Get entry informations if (!empty($_REQUEST['feed_id'])) { $feed = $zcfs->getFeeds(['feed_id' => $_REQUEST['feed_id']]); if ($feed->isEmpty()) { dcCore::app()->error->add(__('This feed does not exist.')); $can_view_page = false; } else { $feed_id = $feed->feed_id; $feed_name = $feed->feed_name; $feed_desc = $feed->feed_desc; $feed_owner = $feed->feed_owner; $feed_tweeter = $feed->feed_tweeter; $feed_url = $feed->feed_url; $feed_feed = $feed->feed_feed; $feed_lang = $feed->feed_lang; $feed_tags = $feed->feed_tags; $feed_get_tags = $feed->feed_get_tags; $feed_cat_id = $feed->cat_id; $feed_status = $feed->feed_status; $feed_upd_int = $feed->feed_upd_int; $next_params = [ 'sql' => 'AND feed_id < ' . $feed_id . ' ', 'limit' => 1, ]; $next_rs = $zcfs->getFeeds($next_params); $prev_params = [ 'sql' => 'AND feed_id > ' . $feed_id . ' ', 'limit' => 1, ]; $prev_rs = $zcfs->getFeeds($prev_params); if (!$next_rs->isEmpty()) { $next_link = sprintf( $feed_link, $next_rs->feed_id, html::escapeHTML($next_rs->feed_name), __('next feed') . ' »' ); $next_headlink = sprintf( $feed_headlink, 'next', html::escapeHTML($next_rs->feed_name), $next_rs->feed_id ); } if (!$prev_rs->isEmpty()) { $prev_link = sprintf( $feed_link, $prev_rs->feed_id, html::escapeHTML($prev_rs->feed_name), '« ' . __('previous feed') ); $prev_headlink = sprintf( $feed_headlink, 'previous', html::escapeHTML($prev_rs->feed_name), $prev_rs->feed_id ); } } } if (!empty($_POST['action']) && $_POST['action'] == 'savefeed') { try { $feed_name = $_POST['feed_name']; $feed_desc = $_POST['feed_desc']; $feed_owner = $_POST['feed_owner']; $feed_tweeter = $_POST['feed_tweeter']; $feed_url = $_POST['feed_url']; $feed_feed = $_POST['feed_feed']; $feed_lang = $_POST['feed_lang']; $feed_tags = $_POST['feed_tags']; $feed_get_tags = empty($_POST['feed_get_tags']) ? 0 : 1; $feed_cat_id = $_POST['feed_cat_id']; $feed_upd_int = $_POST['feed_upd_int']; if (isset($_POST['feed_status'])) { $feed_status = (int) $_POST['feed_status']; } $testfeed_params['feed_feed'] = $feed_feed; if ($feed_id) { $testfeed_params['sql'] = 'AND feed_id <> ' . $feed_id . ' '; } if ($zcfs->getFeeds($testfeed_params, true)->f(0)) { throw new Exception(__('Record with same feed URL already exists.')); } if (empty($feed_name)) { throw new Exception(__('You must provide a name.')); } if (empty($feed_owner)) { throw new Exception(__('You must provide an owner.')); } if (!zoneclearFeedServer::validateURL($feed_url)) { throw new Exception(__('You must provide valid site URL.')); } if (!zoneclearFeedServer::validateURL($feed_feed)) { throw new Exception(__('You must provide valid feed URL.')); } $get_feed_cat_id = dcCore::app()->blog->getCategory($feed_cat_id); if ($feed_cat_id != '' && !$get_feed_cat_id) { throw new Exception(__('You must provide valid category.')); } } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } } if (!empty($_POST['action']) && $_POST['action'] == 'savefeed' && !dcCore::app()->error->flag()) { $cur = $zcfs->openCursor(); $cur->feed_name = $feed_name; $cur->feed_desc = $feed_desc; $cur->feed_owner = $feed_owner; $cur->feed_tweeter = $feed_tweeter; $cur->feed_url = $feed_url; $cur->feed_feed = $feed_feed; $cur->feed_lang = $feed_lang; $cur->feed_tags = $feed_tags; $cur->feed_get_tags = (int) $feed_get_tags; $cur->cat_id = $feed_cat_id != '' ? (int) $feed_cat_id : null; $cur->feed_status = (int) $feed_status; $cur->feed_upd_int = (int) $feed_upd_int; # Update feed if ($feed_id) { try { # --BEHAVIOR-- adminBeforeZoneclearFeedServerFeedUpdate dcCore::app()->callBehavior('adminBeforeZoneclearFeedServerFeedUpdate', $cur, $feed_id); $zcfs->updFeed($feed_id, $cur); # --BEHAVIOR-- adminAfterZoneclearFeedServerFeedUpdate dcCore::app()->callBehavior('adminAfterZoneclearFeedServerFeedUpdate', $cur, $feed_id); dcAdminNotices::addSuccessNotice( __('Feed successfully updated.') ); dcCore::app()->adminurl->redirect( 'admin.plugin.zoneclearFeedServer', ['part' => 'feed', 'feed_id' => $feed_id] ); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } } else { try { # --BEHAVIOR-- adminBeforeZoneclearFeedServerFeedCreate dcCore::app()->callBehavior('adminBeforeZoneclearFeedServerFeedCreate', $cur); $return_id = $zcfs->addFeed($cur); # --BEHAVIOR-- adminAfterZoneclearFeedServerFeedCreate dcCore::app()->callBehavior('adminAfterZoneclearFeedServerFeedCreate', $cur, $return_id); dcAdminNotices::addSuccessNotice( __('Feed successfully created.') ); dcCore::app()->adminurl->redirect( 'admin.plugin.zoneclearFeedServer', ['part' => 'feed', 'feed_id' => $return_id] ); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } } } # Prepared entries list if ($feed_id && $can_view_page) { # action $posts_actions_page = new dcPostsActions( 'plugin.php', [ 'p' => 'zoneclearFeedServer', 'part' => 'feed', 'feed_id' => $feed_id, '_ANCHOR' => 'entries', ] ); if ($posts_actions_page->process()) { return null; } # filters $post_filter = new adminZcfsPostFilter(); $post_filter->add('part', 'feed'); $post_filter->add('feed_id', $feed_id); $params = $post_filter->params(); # lexical sort $sortby_lex = [ // key in sorty_combo (see above) => field in SQL request 'post_title' => 'post_title', 'cat_title' => 'cat_title', 'user_id' => 'P.user_id', ]; # --BEHAVIOR-- adminPostsSortbyLexCombo dcCore::app()->callBehavior('adminPostsSortbyLexCombo', [& $sortby_lex]); $params['no_content'] = true; $params['feed_id'] = $feed_id; $params['order'] = (array_key_exists($post_filter->sortby, $sortby_lex) ? dcCore::app()->con->lexFields($sortby_lex[$post_filter->sortby]) : $post_filter->sortby) . ' ' . $post_filter->order; # posts try { $posts = $zcfs->getPostsByFeed($params); $counter = $zcfs->getPostsByFeed($params, true); $post_list = new zcfsEntriesList( dcCore::app(), $posts, $counter->f(0) ); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } } # display echo '