From f2a3977f2d905445dfad42c856ed0fb87bd06012 Mon Sep 17 00:00:00 2001 From: Jean-Christian Denis Date: Sat, 14 Oct 2023 15:41:43 +0200 Subject: [PATCH] upgrade to dotclear 2.28 --- CHANGELOG.md | 6 + README.md | 8 +- _define.php | 38 +++--- _init.php | 20 --- cron-script.php | 10 +- dcstore.xml | 6 +- src/ActivityReportActions.php | 26 ++-- src/Backend.php | 40 +++--- src/BackendBehaviors.php | 46 +++---- src/Combo.php | 10 +- src/Config.php | 18 +-- src/FeedRow.php | 6 +- src/FeedsActions.php | 30 ++--- src/FeedsDefaultActions.php | 60 ++++----- src/FeedsList.php | 22 ++-- src/Frontend.php | 45 +++---- src/Install.php | 26 ++-- src/Manage.php | 26 ++-- src/ManageFeed.php | 48 ++++--- src/ManageFeedVars.php | 32 ++--- src/My.php | 49 ++++---- src/PostsFilter.php | 37 +++--- src/PostsList.php | 24 ++-- src/Prepend.php | 24 ++-- src/RsExtPosts.php | 48 ++++--- src/Settings.php | 18 +-- src/Template.php | 96 +++++++------- src/Uninstall.php | 21 ++-- src/UninstallCleaner.php | 25 ++-- src/Upgrade.php | 35 +++--- src/UrlHandler.php | 38 +++--- src/Widgets.php | 32 ++--- src/ZoneclearFeedServer.php | 230 ++++++++++++++++++---------------- 33 files changed, 540 insertions(+), 660 deletions(-) delete mode 100644 _init.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 4df6bc3..a4203c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +zoneclearFeedServer 2023.10.14 +=========================================================== +* Require Dotclear 2.28 +* Require PHP 8.1 +* Upgrade to Dotclear 2.28 + zoneclearFeedServer 2023.08.20 =========================================================== * Require Dotclear 2.27 diff --git a/README.md b/README.md index 4e74691..abda47e 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # README -[![Release](https://img.shields.io/badge/release-2023.08.20-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases) -![Date](https://img.shields.io/badge/date-2023.08.20-c44d58.svg) -[![Dotclear](https://img.shields.io/badge/dotclear-v2.27-137bbb.svg)](https://fr.dotclear.org/download) +[![Release](https://img.shields.io/badge/release-2023.10.14-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases) +![Date](https://img.shields.io/badge/date-2023.10.14-c44d58.svg) +[![Dotclear](https://img.shields.io/badge/dotclear-v2.28-137bbb.svg)](https://fr.dotclear.org/download) [![Dotaddict](https://img.shields.io/badge/dotaddict-official-9ac123.svg)](https://plugins.dotaddict.org/dc2/details/zoneclearFeedServer) [![License](https://img.shields.io/badge/license-GPL--2.0-ececec.svg)](https://git.dotclear.watch/JcDenis/zoneclearFeedServer/src/branch/master/LICENSE) @@ -14,7 +14,7 @@ _zoneclearFeedServer_ is a plugin for the open-source web publishing software ca ## REQUIREMENTS -* Dotclear 2.27 +* Dotclear 2.28 * PHP 8.1 * Dotclear super admin permissions for plugin and services configuration * Dotclear admin permissions to manage feeds diff --git a/_define.php b/_define.php index 0c79949..fb5c7f9 100644 --- a/_define.php +++ b/_define.php @@ -1,35 +1,31 @@ registerModule( 'Feeds server', 'Mix your blog with a feeds planet', 'Jean-Christian Denis, BG, Pierre Van Glabeke', - '2023.08.20', + '2023.10.14', [ - 'requires' => [ - ['php', '8.1'], - ['core', '2.27'], - ], - 'permissions' => dcCore::app()->auth->makePermissions([ - dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, - ]), - 'type' => 'plugin', - 'support' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/issues', - 'details' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/src/branch/master/README.md', - 'repository' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/raw/branch/master/dcstore.xml', + 'requires' => [['core', '2.28']], + 'permissions' => 'My', + 'type' => 'plugin', + 'support' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/issues', + 'details' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/src/branch/master/README.md', + 'repository' => 'https://git.dotclear.watch/JcDenis/' . basename(__DIR__) . '/raw/branch/master/dcstore.xml', ] ); diff --git a/_init.php b/_init.php deleted file mode 100644 index 9fb8fb3..0000000 --- a/_init.php +++ /dev/null @@ -1,20 +0,0 @@ -setBlog(is_string(DC_BLOG_ID) ? DC_BLOG_ID : ''); -if (is_null(dcCore::app()->blog) || dcCore::app()->blog->id == null) { +App::blog()->loadFromBlog(is_string(DC_BLOG_ID) ? DC_BLOG_ID : ''); +if (!App::blog()->isDefined() || '' == App::blog()->id()) { fwrite(STDERR, "Blog is not defined\n"); exit(1); } -if (!isset($opts['u']) || !dcCore::app()->auth->checkUser(is_string($opts['u']) ? $opts['u'] : '')) { +if (!isset($opts['u']) || !App::auth()->checkUser(is_string($opts['u']) ? $opts['u'] : '')) { fwrite(STDERR, "Unable to set user\n"); exit(1); } -dcCore::app()->plugins->loadModules(DC_PLUGINS_ROOT); +App::plugins()->loadModules(DC_PLUGINS_ROOT); try { $zc = Dotclear\Plugin\zoneclearFeedServer\ZoneclearFeedServer::instance(); diff --git a/dcstore.xml b/dcstore.xml index 74aa35d..fb71d60 100644 --- a/dcstore.xml +++ b/dcstore.xml @@ -2,11 +2,11 @@ Feeds server - 2023.08.20 + 2023.10.14 Jean-Christian Denis, BG, Pierre Van Glabeke Mix your blog with a feeds planet - https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases/download/v2023.08.20/plugin-zoneclearFeedServer.zip - 2.27 + https://git.dotclear.watch/JcDenis/zoneclearFeedServer/releases/download/v2023.10.14/plugin-zoneclearFeedServer.zip + 2.28 https://git.dotclear.watch/JcDenis/zoneclearFeedServer/src/branch/master/README.md https://git.dotclear.watch/JcDenis/zoneclearFeedServer/issues diff --git a/src/ActivityReportActions.php b/src/ActivityReportActions.php index d305d0e..26be2fb 100644 --- a/src/ActivityReportActions.php +++ b/src/ActivityReportActions.php @@ -1,20 +1,10 @@ auth->getInfo('user_cn'); + $user = App::auth()->getInfo('user_cn'); if (!is_string($user)) { return; } @@ -64,7 +60,7 @@ class ActivityReportActions __('A new feed named "%s" point to "%s" was added by "%s"'), 'zoneclearFeedServerAfterAddFeed', function (Cursor $cur, int $id): void { - $user = dcCore::app()->auth->getInfo('user_cn'); + $user = App::auth()->getInfo('user_cn'); if (!is_string($user) || !is_string($cur->getField('feed_name')) || !is_string($cur->getField('feed_feed')) @@ -115,7 +111,7 @@ class ActivityReportActions } $row = new FeedRow($rs); - $user = dcCore::app()->auth->getInfo('user_cn'); + $user = App::auth()->getInfo('user_cn'); if (!is_string($user)) { return; } diff --git a/src/Backend.php b/src/Backend.php index 71f0cac..be1055b 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -1,24 +1,18 @@ addBehaviors([ + App::behavior()->addBehaviors([ // Allways take care to delete related info about feed post in meta table 'adminBeforePostDelete' => function (int $post_id): void { ZoneclearFeedServer::instance()::deletePostsMeta($post_id); }, // widgets registration - 'initWidgets' => [Widgets::class, 'init'], + 'initWidgets' => Widgets::init(...), // add Uninstaller cleaner for special direct action 'UninstallerCleanersConstruct' => function ($uninstaller_stack) { UninstallCleaner::init($uninstaller_stack); @@ -61,14 +55,14 @@ class Backend extends Process My::addBackendMenuItem(); // behaviors that require user perm - dcCore::app()->addBehaviors([ - 'adminDashboardFavoritesV2' => [BackendBehaviors::class, 'adminDashboardFavoritesV2'], - 'adminColumnsListsV2' => [BackendBehaviors::class, 'adminColumnsListsV2'], - 'adminFiltersListsV2' => [BackendBehaviors::class, 'adminFiltersListsV2'], - 'adminPostListHeaderV2' => [BackendBehaviors::class, 'adminPostListHeaderV2'], - 'adminPostListValueV2' => [BackendBehaviors::class, 'adminPostListValueV2'], - 'adminPostHeaders' => [BackendBehaviors::class, 'adminPostHeaders'], - 'adminPostFormItems' => [BackendBehaviors::class, 'adminPostFormItems'], + App::behavior()->addBehaviors([ + 'adminDashboardFavoritesV2' => BackendBehaviors::adminDashboardFavoritesV2(...), + 'adminColumnsListsV2' => BackendBehaviors::adminColumnsListsV2(...), + 'adminFiltersListsV2' => BackendBehaviors::adminFiltersListsV2(...), + 'adminPostListHeaderV2' => BackendBehaviors::adminPostListHeaderV2(...), + 'adminPostListValueV2' => BackendBehaviors::adminPostListValueV2(...), + 'adminPostHeaders' => BackendBehaviors::adminPostHeaders(...), + 'adminPostFormItems' => BackendBehaviors::adminPostFormItems(...), ]); return true; diff --git a/src/BackendBehaviors.php b/src/BackendBehaviors.php index e70387c..62ec94d 100644 --- a/src/BackendBehaviors.php +++ b/src/BackendBehaviors.php @@ -1,21 +1,11 @@ My::manageUrl(), 'small-icon' => My::icons(), 'large-icon' => My::icons(), - 'permissions' => dcCore::app()->auth->makePermissions([ - dcCore::app()->auth::PERMISSION_USAGE, - dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, + 'permissions' => App::auth()->makePermissions([ + App::auth()::PERMISSION_USAGE, + App::auth()::PERMISSION_CONTENT_ADMIN, ]), // update user dashboard favorites icon with nb of updated feeds 'dashboard_cb' => function (ArrayObject $fav): void { @@ -123,7 +117,7 @@ class BackendBehaviors */ public static function adminPostListValueV2(MetaRecord $rs, ArrayObject $cols): void { - $rs_meta = dcCore::app()->meta->getMetadata(['post_id' => $rs->f('post_id'), 'meta_type' => My::META_PREFIX . 'id']); + $rs_meta = App::meta()->getMetadata(['post_id' => $rs->f('post_id'), 'meta_type' => My::META_PREFIX . 'id']); if ($rs_meta->isEmpty()) { $item = (new Text('', '-')); } else { @@ -150,7 +144,7 @@ class BackendBehaviors public static function adminPostFormItems(ArrayObject $main_items, ArrayObject $sidebar_items, ?MetaRecord $post): void { // nullsafe - if (is_null(dcCore::app()->blog)) { + if (!App::blog()->isDefined()) { return; } @@ -159,7 +153,7 @@ class BackendBehaviors return; } - $url = dcCore::app()->meta->getMetadata([ + $url = App::meta()->getMetadata([ 'post_id' => $post->f('post_id'), 'meta_type' => My::META_PREFIX . 'url', 'limit' => 1, @@ -169,21 +163,21 @@ class BackendBehaviors return; } - $author = dcCore::app()->meta->getMetadata([ + $author = App::meta()->getMetadata([ 'post_id' => $post->f('post_id'), 'meta_type' => My::META_PREFIX . 'author', 'limit' => 1, ]); $author = $author->isEmpty() ? '' : $author->f('meta_id'); - $site = dcCore::app()->meta->getMetadata([ + $site = App::meta()->getMetadata([ 'post_id' => $post->f('post_id'), 'meta_type' => My::META_PREFIX . 'site', 'limit' => 1, ]); $site = $site->isEmpty() ? '' : $site->f('meta_id'); - $sitename = dcCore::app()->meta->getMetadata([ + $sitename = App::meta()->getMetadata([ 'post_id' => $post->f('post_id'), 'meta_type' => My::META_PREFIX . 'sitename', 'limit' => 1, @@ -191,11 +185,11 @@ class BackendBehaviors $sitename = $sitename->isEmpty() ? '' : $sitename->f('meta_id'); $edit = (new Text('', '')); - if (dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([ - dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, - ]), dcCore::app()->blog->id) + if (App::auth()->check(App::auth()->makePermissions([ + App::auth()::PERMISSION_CONTENT_ADMIN, + ]), App::blog()->id()) ) { - $fid = dcCore::app()->meta->getMetadata([ + $fid = App::meta()->getMetadata([ 'post_id' => $post->f('post_id'), 'meta_type' => My::META_PREFIX . 'id', 'limit' => 1, diff --git a/src/Combo.php b/src/Combo.php index 48adb77..0c96651 100644 --- a/src/Combo.php +++ b/src/Combo.php @@ -14,12 +14,16 @@ declare(strict_types=1); namespace Dotclear\Plugin\zoneclearFeedServer; -use dcCore; +use Dotclear\App; use Dotclear\Helper\Html\Html; use Exception; /** - * Various combo list. + * @brief zoneclearFeedServer backend combo helper. + * @ingroup zoneclearFeedServer + * + * @author Jean-Christian Denis + * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html */ class Combo { @@ -122,7 +126,7 @@ class Combo $combo = ['-' => '']; try { - $categories = dcCore::app()->blog?->getCategories(['post_type' => 'post']); + $categories = App::blog()->getCategories(['post_type' => 'post']); if (!is_null($categories)) { while ($categories->fetch()) { $level = is_numeric($categories->f('level')) ? (int) $categories->f('level') : 1; diff --git a/src/Config.php b/src/Config.php index 15dc588..c6d440e 100644 --- a/src/Config.php +++ b/src/Config.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Dotclear\Plugin\zoneclearFeedServer; -use dcCore; +use Dotclear\App; use Dotclear\Core\Backend\{ Notices, ModulesList, @@ -34,7 +34,11 @@ use Dotclear\Helper\Html\Form\{ use Exception; /** - * Backend module configuration. + * @brief zoneclearFeedServer config class. + * @ingroup zoneclearFeedServer + * + * @author Jean-Christian Denis + * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html */ class Config extends Process { @@ -72,13 +76,13 @@ class Config extends Process Notices::addSuccessNotice( __('Configuration has been successfully updated.') ); - dcCore::app()->admin->url->redirect('admin.plugins', [ + App::bakcend()->url()->redirect('admin.plugins', [ 'module' => My::id(), 'conf' => '1', - 'redir' => !(dcCore::app()->admin->__get('list') instanceof ModulesList) ? '' : dcCore::app()->admin->__get('list')->getRedir(), + 'redir' => !(App::backend()->__get('list') instanceof ModulesList) ? '' : App::backend()->__get('list')->getRedir(), ]); } catch (Exception $e) { - dcCore::app()->error->add($e->getMessage()); + App::error()->add($e->getMessage()); } return true; @@ -94,7 +98,7 @@ class Config extends Process $s = $z->settings; $msg = []; - if (!is_writable(DC_TPL_CACHE)) { + if (!is_writable(App::config()->cacheRoot())) { $msg[] = (new Para()) ->class('error') ->text(__('Dotclear cache is not writable or not well configured!')); @@ -105,7 +109,7 @@ class Config extends Process (new Link()) ->class('onblog_link outgoing') ->text(__('View the public list of feeds') . ' ') - ->href(dcCore::app()->blog->url . dcCore::app()->url->getBase('zoneclearFeedsPage')), + ->href(App::blog()->url() . App::url()->getBase('zoneclearFeedsPage')), ]); } diff --git a/src/FeedRow.php b/src/FeedRow.php index 7827971..a97478e 100644 --- a/src/FeedRow.php +++ b/src/FeedRow.php @@ -17,7 +17,11 @@ namespace Dotclear\Plugin\zoneclearFeedServer; use Dotclear\Database\MetaRecord; /** - * Feed meta record row type hinting. + * @brief zoneclearFeedServer feed meta record row. + * @ingroup zoneclearFeedServer + * + * @author Jean-Christian Denis + * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html */ class FeedRow { diff --git a/src/FeedsActions.php b/src/FeedsActions.php index 987bf7b..6fa4025 100644 --- a/src/FeedsActions.php +++ b/src/FeedsActions.php @@ -1,21 +1,11 @@ callBehavior('zoneclearFeedServerAddFeedsActions', $this); + App::behavior()->callBehavior('zoneclearFeedServerAddFeedsActions', $this); } public function beginPage(string $breadcrumb = '', string $head = ''): void @@ -83,12 +77,12 @@ class FeedsActions extends Actions public function error(Exception $e): void { - dcCore::app()->error->add($e->getMessage()); + App::error()->add($e->getMessage()); $this->beginPage( Page::breadcrumb([ - Html::escapeHTML((string) dcCore::app()->blog?->name) => '', - $this->getCallerTitle() => $this->getRedirection(true), - __('Feeds actions') => '', + Html::escapeHTML(App::blog()->name()) => '', + $this->getCallerTitle() => $this->getRedirection(true), + __('Feeds actions') => '', ]) ); $this->endPage(); diff --git a/src/FeedsDefaultActions.php b/src/FeedsDefaultActions.php index d67e4b0..f6287cd 100644 --- a/src/FeedsDefaultActions.php +++ b/src/FeedsDefaultActions.php @@ -1,22 +1,10 @@ addAction( [__('Change category') => 'changecat'], - [self::class, 'doChangeCategory'] + self::doChangeCategory(...) ); $ap->addAction( [__('Change update interval') => 'changeint'], - [self::class, 'doChangeInterval'] + self::doChangeInterval(...) ); $ap->addAction( [__('Disable feed update') => 'disablefeed'], - [self::class, 'doEnableFeed'] + self::doEnableFeed(...) ); $ap->addAction( [__('Enable feed update') => 'enablefeed'], - [self::class, 'doEnableFeed'] + self::doEnableFeed(...) ); $ap->addAction( [__('Reset last update') => 'resetupdlast'], - [self::class, 'doResetUpdate'] + self::doResetUpdate(...) ); $ap->addAction( [__('Update (check) feed') => 'updatefeed'], - [self::class, 'doUpdateFeed'] + self::doUpdateFeed(...) ); $ap->addAction( [__('Delete related posts') => 'deletepost'], - [self::class, 'doDeletePost'] + self::doDeletePost(...) ); $ap->addAction( [__('Delete feed (without related posts)') => 'deletefeed'], - [self::class, 'doDeleteFeed'] + self::doDeleteFeed(...) ); } @@ -142,10 +134,10 @@ class FeedsDefaultActions while ($posts->fetch()) { if (is_numeric($posts->f('post_id'))) { - dcCore::app()->blog?->delPost((int) $posts->f('post_id')); + App::blog()->delPost((int) $posts->f('post_id')); $sql = new DeleteStatement(); $sql - ->from(dcCore::app()->prefix . dcMeta::META_TABLE_NAME) + ->from(App::con()->prefix() . App::meta()::META_TABLE_NAME) ->where('post_id = ' . $posts->f('post_id')) ->and('meta_type ' . $sql->in($types)) ->delete(); @@ -270,10 +262,10 @@ class FeedsDefaultActions } else { $ap->beginPage( Page::breadcrumb([ - Html::escapeHTML((string) dcCore::app()->blog?->name) => '', - __('Feeds server') => '', - $ap->getCallerTitle() => $ap->getRedirection(true), - __('Change category for this selection') => '', + Html::escapeHTML(App::blog()->name()) => '', + __('Feeds server') => '', + $ap->getCallerTitle() => $ap->getRedirection(true), + __('Change category for this selection') => '', ]) ); @@ -294,7 +286,7 @@ class FeedsDefaultActions (new Submit('do-action')) ->value(__('Save')), (new Hidden(['action'], 'changecat')), - dcCore::app()->formNonce(false), + App::nonce()->formNonce(), ] )), @@ -337,10 +329,10 @@ class FeedsDefaultActions $ap->beginPage( Page::breadcrumb( [ - Html::escapeHTML((string) dcCore::app()->blog?->name) => '', - __('Feeds server') => '', - $ap->getCallerTitle() => $ap->getRedirection(true), - __('Change update frequency for this selection') => '', + Html::escapeHTML(App::blog()->name()) => '', + __('Feeds server') => '', + $ap->getCallerTitle() => $ap->getRedirection(true), + __('Change update frequency for this selection') => '', ] ) ); @@ -362,7 +354,7 @@ class FeedsDefaultActions (new Submit('do-action')) ->value(__('Save')), (new Hidden(['action'], 'changeint')), - dcCore::app()->formNonce(false), + App::nonce()->formNonce(), ] )), diff --git a/src/FeedsList.php b/src/FeedsList.php index 50b8dc5..c8d339d 100644 --- a/src/FeedsList.php +++ b/src/FeedsList.php @@ -1,21 +1,11 @@ auth->getInfo('user_tz'); + $tz = App::auth()->getInfo('user_tz'); if (!is_string($tz)) { $tz = 'UTC'; } diff --git a/src/Frontend.php b/src/Frontend.php index 9ceb688..3cf8cb6 100644 --- a/src/Frontend.php +++ b/src/Frontend.php @@ -1,28 +1,21 @@ settings; - dcCore::app()->addBehaviors([ + App::behavior()->addBehaviors([ // posts record 'coreBlogGetPosts' => function (MetaRecord $rs): void { RsExtPosts::$brother_extensions = $rs->extensions(); @@ -55,12 +48,12 @@ class Frontend extends Process // Register template blocks foreach (My::TPL_BLOCKS as $block) { - dcCore::app()->tpl->addBlock('zc' . $block, [Template::class, $block]); + App::frontend()->template()->addBlock('zc' . $block, [Template::class, $block]); } // Register template values foreach (My::TPL_VALUES as $value) { - dcCore::app()->tpl->addValue('zc' . $value, [Template::class, $value]); + App::frontend()->template()->addValue('zc' . $value, [Template::class, $value]); } // module not active @@ -70,8 +63,8 @@ class Frontend extends Process // feeds update methods if (1 == $s->bhv_pub_upd) { - dcCore::app()->addBehavior('publicBeforeDocumentV2', function (): void { - if (in_array(dcCore::app()->url->type, ['default', 'feed'])) { + App::behavior()->addBehavior('publicBeforeDocumentV2', function (): void { + if (in_array(App::url()->type, ['default', 'feed'])) { try { ZoneclearFeedServer::instance()->checkFeedsUpdate(); } catch (Exception $e) { @@ -79,28 +72,28 @@ class Frontend extends Process }; }); } elseif (2 == $s->bhv_pub_upd) { - dcCore::app()->addBehavior('publicAfterDocumentV2', function (): void { + App::behavior()->addBehavior('publicAfterDocumentV2', function (): void { try { ZoneclearFeedServer::instance()->checkFeedsUpdate(); } catch (Exception $e) { } }); } elseif (3 == $s->bhv_pub_upd) { - dcCore::app()->addBehavior('publicHeadContent', function (): void { - if (is_null(dcCore::app()->blog) || dcCore::app()->url->type != 'default') { + App::behavior()->addBehavior('publicHeadContent', function (): void { + if (!App::blog()->isDefined() || App::url()->type != 'default') { return; } $blog_url = Html::escapeJS( - dcCore::app()->blog->url . - dcCore::app()->url->getBase('zoneclearFeedsPage') . + App::blog()->url() . + App::url()->getBase('zoneclearFeedsPage') . '/zcfsupd' ); - $blog_id = Html::escapeJS(dcCore::app()->blog->id); + $blog_id = Html::escapeJS(App::blog()->id()); echo "\n \n" . - dcUtils::jsLoad(dcCore::app()->blog->url . dcCore::app()->url->getBase('zoneclearFeedsPage') . '/zcfsupd.js') . + App::plugins()->jsLoad(App::blog()->url() . App::url()->getBase('zoneclearFeedsPage') . '/zcfsupd.js') . "