diff --git a/src/Backend.php b/src/Backend.php index 234b852..f66e321 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -14,7 +14,6 @@ declare(strict_types=1); namespace Dotclear\Plugin\myUrlHandlers; -use dcAuth; use dcAdmin; use dcCore; use dcFavorites; @@ -32,25 +31,30 @@ class Backend extends dcNsProcess public static function process(): bool { - if (!static::$init) { + if (!static::$init || is_null(dcCore::app()->auth) || is_null(dcCore::app()->blog) || is_null(dcCore::app()->adminurl)) { return false; } + // add backend sidebar menu icon dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem( My::name(), dcCore::app()->adminurl->get('admin.plugin.' . My::id()), dcPage::getPF(My::id() . '/icon.png'), preg_match('/' . preg_quote(dcCore::app()->adminurl->get('admin.plugin.' . My::id())) . '(&.*)?$/', $_SERVER['REQUEST_URI']), - dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcAuth::PERMISSION_CONTENT_ADMIN]), dcCore::app()->blog->id) + dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), dcCore::app()->blog->id) ); + // register user backend dashboard icon dcCore::app()->addBehavior('adminDashboardFavoritesV2', function (dcFavorites $favs): void { + if (is_null(dcCore::app()->auth) || is_null(dcCore::app()->adminurl)) { + return; + } $favs->register(My::id(), [ 'title' => My::name(), 'url' => dcCore::app()->adminurl->get('admin.plugin.' . My::id()), 'small-icon' => dcPage::getPF(My::id() . '/icon.png'), 'large-icon' => dcPage::getPF(My::id() . '/icon-big.png'), - 'permissions' => dcCore::app()->auth->makePermissions([dcAuth::PERMISSION_CONTENT_ADMIN]), + 'permissions' => dcCore::app()->auth->makePermissions([dcCore::app()->auth::PERMISSION_CONTENT_ADMIN]), ]); }); diff --git a/src/Install.php b/src/Install.php index 1932b08..a51fa57 100644 --- a/src/Install.php +++ b/src/Install.php @@ -22,14 +22,15 @@ class Install extends dcNsProcess { public static function init(): bool { - static::$init = defined('DC_CONTEXT_ADMIN') && dcCore::app()->newVersion(My::id(), dcCore::app()->plugins->moduleInfo(My::id(), 'version')); + static::$init = defined('DC_CONTEXT_ADMIN') + && dcCore::app()->newVersion(My::id(), dcCore::app()->plugins->moduleInfo(My::id(), 'version')); return static::$init; } public static function process(): bool { - if (!static::$init) { + if (!static::$init || is_null(dcCore::app()->blog)) { return false; } @@ -58,14 +59,14 @@ class Install extends dcNsProcess ); while ($record->fetch()) { - $value = @unserialize($record->f('setting_value')); - $cur = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME); - $cur->setting_id = My::NS_SETTING_ID; - $cur->setting_ns = My::id(); - $cur->setting_value = json_encode(is_array($value) ? $value : []); + $value = @unserialize($record->f('setting_value')); + $cur = dcCore::app()->con->openCursor(dcCore::app()->prefix . dcNamespace::NS_TABLE_NAME); + $cur->setField('setting_id', My::NS_SETTING_ID); + $cur->setField('setting_ns', My::id()); + $cur->setField('setting_value', json_encode(is_array($value) ? $value : [])); $cur->update( "WHERE setting_id = '" . $record->f('setting_id') . "' and setting_ns = '" . $record->f('setting_ns') . "' " . - 'AND blog_id ' . (null === $record->f('blog_id') ? 'IS NULL ' : ("= '" . dcCore::app()->con->escape($record->f('blog_id')) . "' ")) + 'AND blog_id ' . (null === $record->f('blog_id') ? 'IS NULL ' : ("= '" . dcCore::app()->con->escapeStr((string) $record->f('blog_id')) . "' ")) ); } } diff --git a/src/Manage.php b/src/Manage.php index 13f1871..a2476d2 100644 --- a/src/Manage.php +++ b/src/Manage.php @@ -14,7 +14,6 @@ declare(strict_types=1); namespace Dotclear\Plugin\myUrlHandlers; -use dcAuth; use dcCore; use dcNsProcess; use dcPage; @@ -31,19 +30,17 @@ class Manage extends dcNsProcess public static function init(): bool { static::$init = defined('DC_CONTEXT_ADMIN') - && dcCore::app()->auth->check( - dcCore::app()->auth->makePermissions([ - dcAuth::PERMISSION_CONTENT_ADMIN, - ]), - dcCore::app()->blog->id - ); + && !is_null(dcCore::app()->auth) && !is_null(dcCore::app()->blog) + && dcCore::app()->auth->check(dcCore::app()->auth->makePermissions([ + dcCore::app()->auth::PERMISSION_CONTENT_ADMIN, + ]), dcCore::app()->blog->id); return static::$init; } public static function process(): bool { - if (!static::$init) { + if (!static::$init || is_null(dcCore::app()->adminurl)) { return false; } @@ -117,7 +114,7 @@ class Manage extends dcNsProcess public static function render(): void { - if (!static::$init) { + if (!static::$init || is_null(dcCore::app()->blog)) { return; } diff --git a/src/MyUrlHandlers.php b/src/MyUrlHandlers.php index d786e07..547ce9f 100644 --- a/src/MyUrlHandlers.php +++ b/src/MyUrlHandlers.php @@ -18,10 +18,18 @@ use dcCore; class MyUrlHandlers { - private static $defaults = []; - private static $url2post = []; - private static $post_adm_url = []; + /** @var array $defaults The default URLs handlers */ + private static array $defaults = []; + /** @var array $url2post The posts types URLs */ + private static array $url2post = []; + + /** @var array $post_adm_url The posts types admin URLs */ + private static array $post_adm_url = []; + + /** + * Initialize handlers list. + */ public static function init(): void { # Set defaults @@ -50,6 +58,12 @@ class MyUrlHandlers } } + /** + * Override handler. + * + * @param string $name The handler name + * @param string $url The new url + */ public static function overrideHandler(string $name, string $url): void { if (!isset(self::$defaults[$name])) { @@ -70,6 +84,11 @@ class MyUrlHandlers } } + /** + * Get default URLs handlers + * + * @return array The default URLs handlers + */ public static function getDefaults(): array { $res = []; @@ -80,15 +99,31 @@ class MyUrlHandlers return $res; } + /** + * Get custom blog URLs handlers. + * + * @return array The blog URLs handlers + */ public static function getBlogHandlers(): array { + if (is_null(dcCore::app()->blog)) { + return []; + } $handlers = json_decode((string) dcCore::app()->blog->settings->get(My::id())->get(My::NS_SETTING_ID), true); return is_array($handlers) ? $handlers : []; } + /** + * Save custom URLs handlers + * + * @param array $handlers The custom URLs handlers + */ public static function saveBlogHandlers(array $handlers): void { + if (is_null(dcCore::app()->blog)) { + return; + } dcCore::app()->blog->settings->get(My::id())->put(My::NS_SETTING_ID, json_encode($handlers)); dcCore::app()->blog->triggerBlog(); }