getVersion('zoneclearFeedServer') != $core->plugins->moduleInfo('zoneclearFeedServer', 'version')) { return null; } dcPage::check('admin'); $zcfs = new zoneclearFeedServer($core); ############################################################ # # 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 = $core->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 = array('-' => ''); try { $categories = $core->blog->getCategories(array( 'post_type' => 'post' )); while ($categories->fetch()) { $combo_categories[ str_repeat('  ', $categories->level-1). '• '.html::escapeHTML($categories->cat_title) ] = $categories->cat_id; } } catch (Exception $e) { $core->error->add($e->getMessage()); } # Get entry informations if (!empty($_REQUEST['feed_id'])) { $feed = $zcfs->getFeeds(array('feed_id' => $_REQUEST['feed_id'])); if ($feed->isEmpty()) { $core->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 = array( 'sql' => 'AND feed_id < '.$feed_id.' ', 'limit' => 1 ); $next_rs = $zcfs->getFeeds($next_params); $prev_params = array( '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']; if (isset($_POST['feed_status'])) { $feed_status = (integer) $_POST['feed_status']; } $feed_upd_int = $_POST['feed_upd_int']; $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 = $core->blog->getCategory($feed_cat_id); if ($feed_cat_id != '' && !$get_feed_cat_id) { throw new Exception(__('You must provide valid category.')); } } catch (Exception $e) { $core->error->add($e->getMessage()); } } if (!empty($_POST['action']) && $_POST['action'] == 'savefeed' && !$core->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 = (integer) $feed_get_tags; $cur->cat_id = $feed_cat_id != '' ? (integer) $feed_cat_id : null; $cur->feed_status = (integer) $feed_status; $cur->feed_upd_int = (integer) $feed_upd_int; # Update feed if ($feed_id) { try { # --BEHAVIOR-- adminBeforeZoneclearFeedServerFeedUpdate $core->callBehavior( 'adminBeforeZoneclearFeedServerFeedUpdate', $cur, $feed_id ); $zcfs->updFeed($feed_id, $cur); # --BEHAVIOR-- adminAfterZoneclearFeedServerFeedUpdate $core->callBehavior( 'adminAfterZoneclearFeedServerFeedUpdate', $cur, $feed_id ); dcPage::addSuccessNotice( __('Feed successfully updated.') ); http::redirect( $p_url.'&part=feed&feed_id='.$feed_id ); } catch (Exception $e) { $core->error->add($e->getMessage()); } } else { try { # --BEHAVIOR-- adminBeforeZoneclearFeedServerFeedCreate $core->callBehavior( 'adminBeforeZoneclearFeedServerFeedCreate', $cur ); $return_id = $zcfs->addFeed($cur); # --BEHAVIOR-- adminAfterZoneclearFeedServerFeedCreate $core->callBehavior( 'adminAfterZoneclearFeedServerFeedCreate', $cur, $return_id ); dcPage::addSuccessNotice( __('Feed successfully created.') ); http::redirect( $p_url.'&part=feed&feed_id='.$return_id ); } catch (Exception $e) { $core->error->add($e->getMessage()); } } } # Prepared entries list if ($feed_id && $can_view_page) { # Posts action $posts_actions_page = new dcPostsActionsPage( $core, 'plugin.php', [ 'p' => 'zoneclearFeedServer', 'part' => 'feed', 'feed_id' => $feed_id, '_ANCHOR' => 'entries' ] ); if ($posts_actions_page->process()) { return null; } /* Get posts -------------------------------------------------------- */ $post_filter = new adminZcfsPostFilter($core); $post_filter->add('part', 'feed'); $post_filter->add('feed_id', $feed_id); # get list params $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 $core->callBehavior('adminPostsSortbyLexCombo', [& $sortby_lex]); $params['order'] = (array_key_exists($post_filter->sortby, $sortby_lex) ? $core->con->lexFields($sortby_lex[$post_filter->sortby]) : $post_filter->sortby) . ' ' . $post_filter->order; $params['no_content'] = true; # Get posts try { $params['feed_id'] = $feed_id; $posts = $zcfs->getPostsByFeed($params); $counter = $zcfs->getPostsByFeed($params,true); $post_list = new zcfsEntriesList( $core, $posts, $counter->f(0) ); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Display echo ''.__('Feeds server').''. ($feed_id && !$core->error->flag() ? $post_filter->js($core->adminurl->get('admin.plugin.zoneclearFeedServer', ['part' => 'feed', 'feed_id' => $feed_id], '&').'#entries') . dcPage::jsLoad(dcPage::getPF('zoneclearFeedServer/js/list.js')) : ''). dcPage::jsPageTabs(). $next_headlink."\n".$prev_headlink. # --BEHAVIOR-- packmanAdminHeader $core->callBehavior('zcfsAdminHeader', $core). ''. dcPage::breadcrumb( array( html::escapeHTML($core->blog->name) => '', __('Feeds server') => '', __('Feeds') => $p_url, ($feed_id ? __('Edit feed') : __('New feed')) => '' ) ). dcPage::notices() . ($feed_id ? '

' . sprintf(__('Edit feed "%s"'), $feed_name) .'

' : ''); # Feed if ($can_view_page) { # nav link if ($feed_id && ($next_link || $prev_link)) { echo '

'; if ($prev_link) { echo $prev_link; } if ($next_link && $prev_link) { echo ' - '; } if ($next_link) { echo $next_link; } echo '

'; } echo '
'. '
'. '

'.__('Feed information').'

'. '

'. form::field('feed_name', 60, 255, $feed_name, 'maximal'). '

'. '

'. form::field('feed_owner', 60, 255, $feed_owner, 'maximal'). '

'. // move this away '

'. form::field('feed_tweeter', 60, 64, $feed_tweeter, 'maximal'). '

'. '

'. form::field('feed_url', 60, 255, $feed_url, 'maximal'). '

'. '

'. form::field('feed_feed', 60, 255, $feed_feed, 'maximal'). '

'. '

'. form::field('feed_desc', 60, 255, $feed_desc, 'maximal'). '

'. '

'. form::field('feed_tags', 60, 255, $feed_tags, 'maximal'). '

'. # --BEHAVIOR-- zoneclearFeedServerFeedForm $core->callBehavior('zoneclearFeedServerFeedForm', $core, $feed_id). '
'. '
'. '

'.__('Local settings').'

'. '

'. form::combo('feed_cat_id', $combo_categories, $feed_cat_id, 'maximal'). '

'. '

'. form::combo('feed_status', $combo_status, $feed_status, 'maximal'). '

'. '

'. form::combo('feed_upd_int', $combo_upd_int, $feed_upd_int, 'maximal'). '

'. '

'. form::combo('feed_lang', $combo_langs, $feed_lang, 'maximal'). '

'. '

'. '
'. '
'. '

'. form::hidden(array('action'), 'savefeed'). form::hidden(array('feed_id'), $feed_id). form::hidden(array('p'), 'zoneclearFeedServer'). form::hidden(array('part'), 'feed'). $core->formNonce(). '

'; } # Entries if ($feed_id && $can_view_page && !$core->error->flag()) { echo '
'; $post_filter->display(['admin.plugin.zoneclearFeedServer','#entries'], form::hidden('p', 'zoneclearFeedServer') . form::hidden('part', 'feed') . form::hidden('feed_id', $feed_id) ); # fix pager url $args = $post_filter->values(); unset($args['page']); $args['page'] = '%s'; $base_url = $core->adminurl->get('admin.plugin.zoneclearFeedServer', $args, '&').'#entries'; # Show posts $post_list->display($post_filter->page, $post_filter->nb, $base_url, '
'. '%s'. '
'. '

'. '

'.__('Selected entries action:').' '. form::combo('action', $posts_actions_page->getCombo()). '

'. $core->adminurl->getHiddenFormFields('admin.plugin.zoneclearFeedServer', $post_filter->values()) . form::hidden('redir', $core->adminurl->get('admin.plugin.zoneclearFeedServer', $post_filter->values())) . $core->formNonce(). '
'. '
', $post_filter->show() ); echo '
'; } } ############################################################ # # All feeds # ############################################################ else { # Actions page $feeds_actions_page = new zcfsFeedsActionsPage( $core, 'plugin.php', array('p' => 'zoneclearFeedServer', 'part' => 'feeds') ); if ($feeds_actions_page->process()) { return null; } $feeds_filter = new adminGenericFilter($core, 'zcfs_feeds'); $feeds_filter->add('part', 'feeds'); $feeds_filter->add(dcAdminFilters::getPageFilter()); $params = $feeds_filter->params(); try { $feeds = $zcfs->getFeeds($params); $feeds_counter = $zcfs->getFeeds($params, true)->f(0); $feeds_list = new zcfsFeedsList( $core, $feeds, $feeds_counter ); } catch (Exception $e) { $core->error->add($e->getMessage()); } # Display echo ''.__('Feeds server').''. $feeds_filter->js($core->adminurl->get('admin.plugin.zoneclearFeedServer', ['part' => 'feeds'], '&')) . dcPage::jsLoad(dcPage::getPF('zoneclearFeedServer/js/list.js')) . dcPage::jsPageTabs(). # --BEHAVIOR-- packmanAdminHeader $core->callBehavior('zcfsAdminHeader', $core). ''. dcPage::breadcrumb( array( html::escapeHTML($core->blog->name) => '', __('Feeds server') => '', __('Feeds') => '' ) ). dcPage::notices(). '

'. ''. __('New feed').'

'; $feeds_filter->display('admin.plugin.zoneclearFeedServer', form::hidden('p', 'zoneclearFeedServer') . form::hidden('part', 'feeds')); $feeds_list->feedsDisplay($feeds_filter->page, $feeds_filter->nb, '
'. '%s'. '
'. '

'. '

'.__('Selected feeds action:').' '. form::combo(['action'], $feeds_actions_page->getCombo()). ''. $core->adminurl->getHiddenFormFields('admin.plugin.zoneclearFeedServer', $feeds_filter->values(true)) . $core->formNonce(). '

'. '
'. '
', false ); } echo '';