From db52b2d87f2267a07a3b3fdd1b660c787da31b17 Mon Sep 17 00:00:00 2001 From: Jean-Christian Denis Date: Sun, 6 Aug 2023 21:48:40 +0200 Subject: [PATCH] upgrade to Dotclear 2.27 --- src/Backend.php | 55 +++++++++++++---------------------------------- src/Frontend.php | 20 ++++++++--------- src/Install.php | 18 +++++----------- src/Manage.php | 53 ++++++++++++++++++++------------------------- src/My.php | 29 ++----------------------- src/Uninstall.php | 10 ++++----- 6 files changed, 58 insertions(+), 127 deletions(-) diff --git a/src/Backend.php b/src/Backend.php index 2340bac..60b88a8 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -14,65 +14,40 @@ declare(strict_types=1); namespace Dotclear\Plugin\construction; -use dcAdmin; use dcCore; -use dcPage; -use dcFavorites; -use dcNsProcess; +use Dotclear\Core\Backend\{ + Favorites, + Menus +}; +use Dotclear\Core\Process; -class Backend extends dcNsProcess +class Backend extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN') - && !is_null(dcCore::app()->auth) && !is_null(dcCore::app()->blog) // nullsafe PHP < 8.0 - && dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([ - dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, - ]), dcCore::app()->blog->id); - - return static::$init; + return self::status(My::checkContext(My::BACKEND)); } public static function process(): bool { - if (!static::$init) { + if (!self::status()) { return false; } - // nullsafe PHP < 8.0 - if (is_null(dcCore::app()->auth) || is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) { - return false; - } - - dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem( - My::name(), - dcCore::app()->adminurl->get('admin.plugin.' . My::id()), - dcPage::getPF(My::id() . '/icon.svg'), - preg_match('/' . preg_quote(dcCore::app()->adminurl->get('admin.plugin.' . My::id())) . '(&.*)?$/', $_SERVER['REQUEST_URI']), - dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_ADMIN]), dcCore::app()->blog->id), - dcCore::app()->blog->settings->get(My::id())->get('flag') ? 'construction-blog' : '' - ); + My::addBackendMenuItem(Menus::MENU_PLUGINS, [], '(&.*)?$', My::settings()->get('flag') ? 'construction-blog' : ''); dcCore::app()->addBehaviors([ 'adminPageHTMLHead' => function (): void { - // nullsafe PHP < 8.0 - if (is_null(dcCore::app()->blog)) { - return; - } - if (dcCore::app()->blog->settings->get(My::id())->get('flag')) { - echo dcPage::cssModuleLoad(My::id() . '/css/backend.css'); + if (My::settings()->get('flag')) { + echo My::cssLoad('backend'); } }, - 'adminDashboardFavoritesV2' => function (dcFavorites $favs): void { - // nullsafe PHP < 8.0 - if (is_null(dcCore::app()->auth) || is_null(dcCore::app()->adminurl)) { - return; - } + 'adminDashboardFavoritesV2' => function (Favorites $favs): void { $favs->register(My::id(), [ 'title' => My::name(), - 'url' => dcCore::app()->adminurl->get('admin.plugin.' . My::id()), - 'small-icon' => dcPage::getPF(My::id() . '/icon.svg'), - 'large-icon' => dcPage::getPF(My::id() . '/icon.svg'), + 'url' => My::manageUrl(), + 'small-icon' => My::icons(), + 'large-icon' => My::icons(), 'permissions' => dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_ADMIN]), ]); }, diff --git a/src/Frontend.php b/src/Frontend.php index 4928f20..2940077 100644 --- a/src/Frontend.php +++ b/src/Frontend.php @@ -16,32 +16,30 @@ namespace Dotclear\Plugin\construction; use ArrayObject; use dcCore; -use dcNsProcess; +use Dotclear\Core\Process; use Dotclear\Helper\Network\Http; use Exception; -class Frontend extends dcNsProcess +class Frontend extends Process { public static function init(): bool { - static::$init = defined('DC_RC_PATH'); - - return static::$init; + return self::status(My::checkContext(My::FRONTEND)); } public static function process(): bool { - if (!static::$init) { + if (!self::status()) { return false; } - dcCore::app()->addBehavior('publicBeforeDocument', function (): void { + dcCore::app()->addBehavior('publicBeforeDocumentV2', function (): void { // nullsafe PHP < 8.0 if (is_null(dcCore::app()->blog)) { return; } - if (!dcCore::app()->blog->settings->get(My::id())->get('flag')) { + if (!My::settings()->get('flag')) { return; } @@ -52,11 +50,11 @@ class Frontend extends dcNsProcess dcCore::app()->tpl->setPath(dcCore::app()->tpl->getPath(), implode(DIRECTORY_SEPARATOR, [My::path(), 'default-templates', DC_DEFAULT_TPLSET])); } - $all_allowed_ip = json_decode(dcCore::app()->blog->settings->get(My::id())->get('allowed_ip'), true); + $all_allowed_ip = json_decode((string) My::settings()->get('allowed_ip'), true); if (!is_array($all_allowed_ip)) { $all_allowed_ip = []; } - $extra_urls = json_decode(dcCore::app()->blog->settings->get(My::id())->get('extra_urls'), true); + $extra_urls = json_decode((string) My::settings()->get('extra_urls'), true); if (!in_array(Http::realIP(), $all_allowed_ip)) { dcCore::app()->url->registerDefault(function (?string $args): void { dcCore::app()->url->type = 'default'; @@ -77,7 +75,7 @@ class Frontend extends dcNsProcess echo dcCore::app()->tpl->getData(dcCore::app()->ctx->__get('current_tpl')); - # --BEHAVIOR-- publicAfterDocument + # --BEHAVIOR-- publicAfterDocumentV2 dcCore::app()->callBehavior('publicAfterDocumentV2'); exit; }); diff --git a/src/Install.php b/src/Install.php index f0da65a..16faf9e 100644 --- a/src/Install.php +++ b/src/Install.php @@ -15,32 +15,24 @@ declare(strict_types=1); namespace Dotclear\Plugin\construction; use dcCore; -use dcNsProcess; +use Dotclear\Core\Process; use Exception; -class Install extends dcNsProcess +class Install extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN') - && dcCore::app()->newVersion(My::id(), dcCore::app()->plugins->moduleInfo(My::id(), 'version')); - - return static::$init; + return self::status(My::checkContext(My::INSTALL)); } public static function process(): bool { - if (!static::$init) { - return false; - } - - // nullsafe PHP < 8.0 - if (is_null(dcCore::app()->blog)) { + if (!self::status()) { return false; } try { - $s = dcCore::app()->blog->settings->get(My::id()); + $s = My::settings(); $s->put( 'flag', diff --git a/src/Manage.php b/src/Manage.php index f25f752..4cd8500 100644 --- a/src/Manage.php +++ b/src/Manage.php @@ -14,10 +14,12 @@ declare(strict_types=1); namespace Dotclear\Plugin\construction; -use dcAuth; use dcCore; -use dcNsProcess; -use dcPage; +use Dotclear\Core\Process; +use Dotclear\Core\Backend\{ + Notices, + Page +}; use Dotclear\Helper\Html\Form\{ Checkbox, Div, @@ -35,31 +37,25 @@ use Dotclear\Helper\Html\Html; use Dotclear\Helper\Network\Http; use Exception; -class Manage extends dcNsProcess +class Manage extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN') - && !is_null(dcCore::app()->auth) && !is_null(dcCore::app()->blog) // nullsafe PHP < 8.0 - && dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([ - dcAuth::PERMISSION_CONTENT_ADMIN, - ]), dcCore::app()->blog->id); - - return static::$init; + return self::status(My::checkContext(My::MANAGE)); } public static function process(): bool { - if (!static::$init) { + if (!self::status()) { return false; } // nullsafe PHP < 8.0 - if (is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) { + if (is_null(dcCore::app()->blog)) { return false; } - $s = dcCore::app()->blog->settings->get(My::id()); + $s = My::settings(); if (!empty($_POST['saveconfig'])) { try { @@ -80,13 +76,11 @@ class Manage extends dcNsProcess dcCore::app()->blog->triggerBlog(); - dcPage::addSuccessNotice( + Notices::addSuccessNotice( __('Settings successfully updated.') ); - dcCore::app()->adminurl->redirect( - 'admin.plugin.' . My::id() - ); + My::redirect(); } catch (Exception $e) { dcCore::app()->error->add($e->getMessage()); } @@ -97,16 +91,16 @@ class Manage extends dcNsProcess public static function render(): void { - if (!static::$init) { + if (!self::status()) { return; } // nullsafe PHP < 8.0 - if (is_null(dcCore::app()->auth) || is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) { + if (is_null(dcCore::app()->blog)) { return; } - $s = dcCore::app()->blog->settings->get(My::id()); + $s = My::settings(); $editor = dcCore::app()->auth->getOption('editor'); $nb_rows = count(json_decode($s->get('allowed_ip'), true)); if ($nb_rows < 2) { @@ -115,22 +109,22 @@ class Manage extends dcNsProcess $nb_rows = 10; } - dcPage::openModule( + Page::openModule( My::name(), - dcPage::jsConfirmClose('opts-forms') . + Page::jsConfirmClose('opts-forms') . dcCore::app()->callBehavior('adminPostEditor', $editor['xhtml'], 'construction', ['#construction_message'], 'xhtml') . - dcPage::jsModuleLoad(My::id() . '/js/backend.js') + Page::jsLoad('backend') ); echo - dcPage::breadcrumb([ + Page::breadcrumb([ __('Plugins') => '', My::name() => '', ]) . - dcPage::notices() . + Notices::getNotices() . (new Div())->id('construction_options')->items([ - (new Form(My::id() . 'form'))->method('post')->action(dcCore::app()->adminurl->get('admin.plugin.' . My::id()))->fields([ + (new Form(My::id() . 'form'))->method('post')->action(My::manageUrl())->fields([ (new Div())->class('fieldset')->items([ (new Text('h4', __('Configuration'))), (new Para())->class('filed')->items([ @@ -159,13 +153,12 @@ class Manage extends dcNsProcess ]), ]), (new Para())->items([ - dcCore::app()->formNonce(false), - (new Hidden(['p'], 'construction')), (new Submit(['saveconfig']))->value(__('Save')), + ... My::hiddenFields(), ]), ]), ])->render(); - dcPage::closeModule(); + Page::closeModule(); } } diff --git a/src/My.php b/src/My.php index 01df6d5..71c342d 100644 --- a/src/My.php +++ b/src/My.php @@ -14,36 +14,11 @@ declare(strict_types=1); namespace Dotclear\Plugin\construction; -use dcCore; +use Dotclear\Module\MyPlugin; /** * This module definitions. */ -class My +class My extends MyPlugin { - /** - * This module id. - */ - public static function id(): string - { - return basename(dirname(__DIR__)); - } - - /** - * This module name. - */ - public static function name(): string - { - $name = dcCore::app()->plugins->moduleInfo(self::id(), 'name'); - - return __(is_string($name) ? $name : self::id()); - } - - /** - * This module path. - */ - public static function path(): string - { - return dirname(__DIR__); - } } diff --git a/src/Uninstall.php b/src/Uninstall.php index d6dfb28..29c0c50 100644 --- a/src/Uninstall.php +++ b/src/Uninstall.php @@ -15,21 +15,19 @@ declare(strict_types=1); namespace Dotclear\Plugin\construction; use dcCore; -use dcNsProcess; +use Dotclear\Core\Process; use Dotclear\Plugin\Uninstaller\Uninstaller; -class Uninstall extends dcNsProcess +class Uninstall extends Process { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN'); - - return static::$init; + return self::status(My::checkContext(My::UNINSTALL)); } public static function process(): bool { - if (!static::$init || !dcCore::app()->plugins->moduleExists('Uninstaller')) { + if (!self::status() || !dcCore::app()->plugins->moduleExists('Uninstaller')) { return false; }