zcfs = new zoneclearFeedServer(); parent::__construct($uri, $redirect_args); $this->redirect_fields = [ 'sortby', 'order', 'page', 'nb', ]; $this->field_entries = 'feeds'; $this->caller_title = __('Feeds'); $this->loadDefaults(); } protected function loadDefaults() { zcfsDefaultFeedsActions::zcfsFeedsActions($this); dcCore::app()->callBehavior('zcfsFeedsActions', $this); } public function beginPage($breadcrumb = '', $head = '') { echo '' . __('Feeds server') . '' . dcPage::jsLoad('js/_posts_actions.js') . $head . '' . $breadcrumb . '

' . __('Back to feeds list') . '

'; } public function endPage() { echo ''; } public function error(Exception $e) { dcCore::app()->error->add($e->getMessage()); $this->beginPage( dcPage::breadcrumb([ html::escapeHTML(dcCore::app()->blog->name) => '', $this->getCallerTitle() => $this->getRedirection(true), __('Feeds actions') => '', ]) ); $this->endPage(); } protected function fetchEntries($from) { if (!empty($from['feeds'])) { $params['feed_id'] = $from['feeds']; $feeds = $this->zcfs->getFeeds($params); while ($feeds->fetch()) { $this->entries[$feeds->feed_id] = $feeds->feed_name; } $this->rs = $feeds; } else { $this->rs = dcCore::app()->con->select( 'SELECT blog_id FROM ' . dcCore::app()->prefix . dcBlog::BLOG_TABLE_NAME . ' WHERE false' ); } } } /** * @ingroup DC_PLUGIN_ZONECLEARFEEDSERVER * @brief Feeds server - Default actions methods * @since 2.6 * @see dcDefaultPostsActionsPage for mor info */ class zcfsDefaultFeedsActions { public static function zcfsFeedsActions(zcfsFeedsActions $ap) { $ap->addAction( [__('Change category') => 'changecat'], ['zcfsDefaultFeedsActions', 'doChangeCategory'] ); $ap->addAction( [__('Change update interval') => 'changeint'], ['zcfsDefaultFeedsActions', 'doChangeInterval'] ); $ap->addAction( [__('Disable feed update') => 'disablefeed'], ['zcfsDefaultFeedsActions', 'doEnableFeed'] ); $ap->addAction( [__('Enable feed update') => 'enablefeed'], ['zcfsDefaultFeedsActions', 'doEnableFeed'] ); $ap->addAction( [__('Reset last update') => 'resetupdlast'], ['zcfsDefaultFeedsActions', 'doResetUpdate'] ); $ap->addAction( [__('Update (check) feed') => 'updatefeed'], ['zcfsDefaultFeedsActions', 'doUpdateFeed'] ); $ap->addAction( [__('Delete related posts') => 'deletepost'], ['zcfsDefaultFeedsActions', 'doDeletePost'] ); $ap->addAction( [__('Delete feed (without related posts)') => 'deletefeed'], ['zcfsDefaultFeedsActions', 'doDeleteFeed'] ); } public static function doEnableFeed(zcfsFeedsActions $ap, $post) { $enable = $ap->getAction() == 'enablefeed'; $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } foreach ($ids as $id) { $ap->zcfs->enableFeed($id, $enable); } dcAdminNotices::addSuccessNotice(sprintf( $enable ? __( '%d feed has been successfully enabled.', '%d feeds have been successfully enabled.', count($ids) ) : __( '%d feed has been successfully disabled.', '%d feeds have been successfully disabled.', count($ids) ), count($ids) )); $ap->redirect(true); } public static function doDeletePost(zcfsFeedsActions $ap, $post) { $types = [ 'zoneclearfeed_url', 'zoneclearfeed_author', 'zoneclearfeed_site', 'zoneclearfeed_sitename', 'zoneclearfeed_id', ]; $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } foreach ($ids as $id) { $posts = $ap->zcfs->getPostsByFeed([ 'feed_id' => $id, ]); while ($posts->fetch()) { dcCore::app()->blog->delPost($posts->post_id); dcCore::app()->con->execute( 'DELETE FROM ' . dcCore::app()->prefix . dcMeta::META_TABLE_NAME . ' ' . 'WHERE post_id = ' . $posts->post_id . ' ' . 'AND meta_type ' . dcCore::app()->con->in($types) . ' ' ); } } dcAdminNotices::addSuccessNotice( __('Entries have been successfully deleted.') ); $ap->redirect(true); } public static function doDeleteFeed(zcfsFeedsActions $ap, $post) { $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } foreach ($ids as $id) { $ap->zcfs->delFeed($id); } dcAdminNotices::addSuccessNotice(sprintf( __( '%d feed has been successfully deleted.', '%d feeds have been successfully deleted.', count($ids) ), count($ids) )); $ap->redirect(true); } public static function doUpdateFeed(zcfsFeedsActions $ap, $post) { $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } foreach ($ids as $id) { $ap->zcfs->checkFeedsUpdate($id, true); } dcAdminNotices::addSuccessNotice(sprintf( __( '%d feed has been successfully updated.', '%d feeds have been successfully updated.', count($ids) ), count($ids) )); $ap->redirect(true); } public static function doResetUpdate(zcfsFeedsActions $ap, $post) { $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } foreach ($ids as $id) { $cur = $ap->zcfs->openCursor(); $cur->feed_upd_last = 0; $ap->zcfs->updFeed($id, $cur); $ap->zcfs->checkFeedsUpdate($id, true); } dcAdminNotices::addSuccessNotice(sprintf( __( 'Last update of %s feed successfully reseted.', 'Last update of %s feeds successfully reseted.', count($ids) ), count($ids) )); $ap->redirect(true); } public static function doChangeCategory(zcfsFeedsActions $ap, $post) { if (isset($post['upd_cat_id'])) { $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } $cat_id = abs((int) $post['upd_cat_id']); foreach ($ids as $id) { $cur = $ap->zcfs->openCursor(); $cur->cat_id = $cat_id == 0 ? null : $cat_id; $ap->zcfs->updFeed($id, $cur); } dcAdminNotices::addSuccessNotice(sprintf( __( 'Category of %s feed successfully changed.', 'Category of %s feeds successfully changed.', count($ids) ), count($ids) )); $ap->redirect(true); } else { $categories_combo = dcAdminCombos::getCategoriesCombo( dcCore::app()->blog->getCategories() ); $ap->beginPage( dcPage::breadcrumb([ html::escapeHTML(dcCore::app()->blog->name) => '', __('Feeds server') => '', $ap->getCallerTitle() => $ap->getRedirection(true), __('Change category for this selection') => '', ]) ); echo '
' . $ap->getCheckboxes() . '

' . form::combo(['upd_cat_id'], $categories_combo, '') . dcCore::app()->formNonce() . $ap->getHiddenFields() . form::hidden(['action'], 'changecat') . '

' . '
'; $ap->endPage(); } } public static function doChangeInterval(zcfsFeedsActions $ap, $post) { if (isset($post['upd_upd_int'])) { $ids = $ap->getIDs(); if (empty($ids)) { throw new Exception(__('No feeds selected')); } $upd_int = abs((int) $post['upd_upd_int']); foreach ($ids as $id) { $cur = $ap->zcfs->openCursor(); $cur->feed_upd_int = $upd_int; $ap->zcfs->updFeed($id, $cur); } dcAdminNotices::addSuccessNotice(sprintf( __( 'Update frequency of %s feed successfully changed.', 'Update frequency of %s feeds successfully changed.', count($ids) ), count($ids) )); $ap->redirect(true); } else { $ap->beginPage( dcPage::breadcrumb( [ html::escapeHTML(dcCore::app()->blog->name) => '', __('Feeds server') => '', $ap->getCallerTitle() => $ap->getRedirection(true), __('Change update frequency for this selection') => '', ] ) ); echo '
' . $ap->getCheckboxes() . '

' . form::combo(['upd_upd_int'], $ap->zcfs->getAllUpdateInterval(), '') . dcCore::app()->formNonce() . $ap->getHiddenFields() . form::hidden(['action'], 'changeint') . '

' . '
'; $ap->endPage(); } } }