diff --git a/CHANGELOG.md b/CHANGELOG.md index 74031ce..c9dad0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +simplyFavicon 2023.10.13 +=========================================================== +* Require Dotclear 2.28 +* Require PHP 8.1 +* Upgrade to Dotclear 2.28 + simplyFavicon 2023.08.13 =========================================================== * Require Dotclear 2.27 diff --git a/README.md b/README.md index 809a03c..9c2c661 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,23 @@ # README -[![Release](https://img.shields.io/badge/release-2023.08.13-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/simplyFavicon/releases) -[![Date](https://img.shields.io/badge/date-2023.08.13-c44d58.svg)](https://git.dotclear.watch/JcDenis/simplyFavicon/releases) -[![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.13-a2cbe9.svg)](https://git.dotclear.watch/JcDenis/simplyFavicon/releases) +![Date](https://img.shields.io/badge/date-2023.10.13-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/simplyFavicon) [![License](https://img.shields.io/github/license/JcDenis/simplyFavicon)](https://git.dotclear.watch/JcDenis/simplyFavicon/blob/master/LICENSE) -## WHAT IS simplyFavicon ? +## ABOUT -_simplyFavicon_ is a plugin for the open-source -web publishing software called Dotclear. +_pacKman_ is a plugin for the open-source web publishing software called [Dotclear](https://www.dotclear.org). -It adds a favicon to your blog. +> Add a favicon to your blog. ## REQUIREMENTS -_simplyFavicon_ requires: - +* Dotclear 2.28 +* PHP 8.1+ +* A readable public directory * Administrator permissions -* Dotclear 2.27 -* PHP 7.4+ -* A readable public directory. ## USAGE @@ -33,12 +30,13 @@ simplyFavicon add required code to public page to show favicon on browser. ## LINKS -* License : [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html) -* Source & contribution : [Gitea Page](https://git.dotclear.watch/JcDenis/simplyFavicon) or [GitHub Page](https://github.com/JcDenis/simplyFavicon) -* Packages & details : [Gitea Page](https://git.dotclear.watch/JcDenis/simplyFavicon/releases) or [Dotaddict Page](https://plugins.dotaddict.org/dc2/details/simplyFavicon) +* [License](https://git.dotclear.watch/JcDenis/simplyFavicon/src/branch/master/LICENSE) +* [Packages & details](https://git.dotclear.watch/JcDenis/simplyFavicon/releases) (or on [Dotaddict](https://plugins.dotaddict.org/dc2/details/simplyFavicon)) +* [Sources & contributions](https://git.dotclear.watch/JcDenis/simplyFavicon) (or on [GitHub](https://github.com/JcDenis/simplyFavicon)) +* [Issues & security](https://git.dotclear.watch/JcDenis/simplyFavicon/issues) (or on [GitHub](https://github.com/JcDenis/simplyFavicon/issues)) ## CONTRIBUTORS -* Jean-Christian Denis +* Jean-Christian Denis (author) You are welcome to contribute to this code. diff --git a/_define.php b/_define.php index 26c3049..2f920f5 100644 --- a/_define.php +++ b/_define.php @@ -10,9 +10,19 @@ * @copyright Jean-Christian Denis * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html */ -if (!defined('DC_RC_PATH')) { - return; -} +/* + * @file + * @brief The simplyFavicon pacKman definition + * @ingroup simplyFavicon + * + * @defgroup simplyFavicon Plugin simplyFavicon. + * + * Multi-agents favicon. + * + * @author Jean-Christian Denis + * @copyright GPL-2.0 https://www.gnu.org/licenses/gpl-2.0.html + */ +declare(strict_types=1); $this->registerModule( 'Simply favicon', @@ -20,11 +30,9 @@ $this->registerModule( 'Jean-Christian Denis', '2023.08.13', [ - 'requires' => [['core', '2.27']], - 'permissions' => dcCore::app()->auth->makePermissions([ - dcCore::app()->auth::PERMISSION_ADMIN, - ]), - 'settings' => [ + 'requires' => [['core', '2.28']], + 'permissions' => 'My', + 'settings' => [ 'blog' => '#params.' . basename(__DIR__) . '_params', ], 'type' => 'plugin', diff --git a/dcstore.xml b/dcstore.xml index 2a1ccd2..e83cc36 100644 --- a/dcstore.xml +++ b/dcstore.xml @@ -2,11 +2,11 @@ Simply favicon - 2023.08.13 + 2023.10.13 Jean-Christian Denis Multi-agents favicon - https://git.dotclear.watch/JcDenis/simplyFavicon/releases/download/v2023.08.13/plugin-simplyFavicon.zip - 2.27 + https://git.dotclear.watch/JcDenis/simplyFavicon/releases/download/v2023.10.13/plugin-simplyFavicon.zip + 2.28 https://git.dotclear.watch/JcDenis/simplyFavicon/src/branch/master/README.md https://git.dotclear.watch/JcDenis/simplyFavicon/issues diff --git a/src/Backend.php b/src/Backend.php index 3205198..d23b14a 100644 --- a/src/Backend.php +++ b/src/Backend.php @@ -1,21 +1,11 @@ addBehaviors([ - 'adminBlogPreferencesFormV2' => function (dcSettings $blog_settings): void { - // nullsafe - if (is_null(dcCore::app()->blog)) { + App::behavior()->addBehaviors([ + 'adminBlogPreferencesFormV2' => function (BlogSettings $blog_settings): void { + if (!App::blog()->isDefined()) { return; } $exists = []; - $path = Path::fullFromRoot((string) $blog_settings->get('system')->get('public_path'), DC_ROOT); + $path = Path::fullFromRoot((string) $blog_settings->get('system')->get('public_path'), App::config()->dotclearRoot()); foreach (['ico', 'png', 'bmp', 'gif', 'jpg', 'mng'] as $ext) { if (file_exists($path . '/favicon.' . $ext)) { - $url = dcCore::app()->blog->url . dcCore::app()->url->getURLFor('simplyFavicon', $ext); + $url = App::blog()->url() . App::url()->getURLFor('simplyFavicon', $ext); $exists[] = '
  • ' . $url . '
  • '; } } @@ -82,7 +78,7 @@ class Backend extends Process ) . '
    '; }, - 'adminBeforeBlogSettingsUpdate' => function (dcSettings $blog_settings): void { + 'adminBeforeBlogSettingsUpdate' => function (BlogSettings $blog_settings): void { $blog_settings->get('system')->put('simply_favicon', !empty($_POST['simply_favicon'])); }, ]); diff --git a/src/Frontend.php b/src/Frontend.php index 8deb107..9503ef3 100644 --- a/src/Frontend.php +++ b/src/Frontend.php @@ -1,23 +1,20 @@ addBehavior('publicHeadContent', function (): void { - if (is_null(dcCore::app()->blog) || !dcCore::app()->blog->settings->get('system')->get('simply_favicon')) { + App::behavior()->addBehavior('publicHeadContent', function (): void { + if (!App::blog()->isDefined() || !App::blog()->settings()->get('system')->get('simply_favicon')) { return; } - $public_path = Path::fullFromRoot(dcCore::app()->blog->settings->get('system')->get('public_path'), DC_ROOT) . '/favicon.'; - $public_url = dcCore::app()->blog->url . dcCore::app()->url->getBase('simplyFavicon') . '.'; + $public_path = Path::fullFromRoot(App::blog()->settings()->get('system')->get('public_path'), App::config()->dotclearRoot()) . '/favicon.'; + $public_url = App::blog()->url() . App::url()->getBase('simplyFavicon') . '.'; // ico : IE6 - if (file_exists($public_path . 'ico') && '?' != substr(dcCore::app()->blog->url, -1)) { + if (file_exists($public_path . 'ico') && '?' != substr(App::blog()->url(), -1)) { echo '' . "\n"; } @@ -49,7 +46,7 @@ class Frontend extends Process echo '' . "\n" . '' . "\n"; - // all others + // all others } else { foreach (UrlHandler::$mimetypes as $ext => $mime) { if (in_array($ext, ['ico', 'png'])) { diff --git a/src/My.php b/src/My.php index 4a6e9a1..a5fcf5a 100644 --- a/src/My.php +++ b/src/My.php @@ -1,21 +1,32 @@ App::task()->checkContext('BACKEND') + && App::blog()->isDefined() + && App::auth()->check(App::auth()->makePermissions([ + App::auth()::PERMISSION_ADMIN, + ]), App::blog()->id()), + + default => null, + }; + } } diff --git a/src/Prepend.php b/src/Prepend.php index 0d47b33..a531aa3 100644 --- a/src/Prepend.php +++ b/src/Prepend.php @@ -1,22 +1,19 @@ url->register( + App::url()->register( 'simplyFavicon', 'favicon', '^favicon.(.*?)$', - [UrlHandler::class, 'simplyFaviconUrl'] + UrlHandler::simplyFaviconUrl(...) ); return true; diff --git a/src/UrlHandler.php b/src/UrlHandler.php index 5fd05fd..f012663 100644 --- a/src/UrlHandler.php +++ b/src/UrlHandler.php @@ -1,25 +1,27 @@ $mimetypes + */ public static array $mimetypes = [ 'ico' => 'image/x-icon', 'png' => 'image/png', @@ -31,14 +33,13 @@ class UrlHandler extends dcUrlHandlers public static function simplyFaviconUrl(string $arg): void { - // nullsafe - if (is_null(dcCore::app()->blog)) { + if (!App::blog()->isDefined()) { return; } - $public_path = Path::fullFromRoot(dcCore::app()->blog->settings->get('system')->get('public_path'), DC_ROOT); + $public_path = Path::fullFromRoot(App::blog()->settings()->get('system')->get('public_path'), App::config()->dotclearRoot()); - if (dcCore::app()->blog->settings->get('system')->get('simply_favicon') + if (App::blog()->settings()->get('system')->get('simply_favicon') && !empty($arg) && array_key_exists($arg, self::$mimetypes) && file_exists($public_path . '/favicon.' . $arg)