La limite du proxy

Prévoir un plugin proxy qui permet d’assurer la compatibilité entre le vieil eco-système et le code modernisé est une bonne chose, mais ça a ses limites, en particulier quand, en passant par des behaviors dont la signature a été modifiée on utilise des fonctions de rappel dont les signatures ont elles aussi été modifiées via de nouvelles classes …

Bref, ça fout un peu le dawa, alors :

  • On conserve une compatibilité pour les behaviors existants (certains, très peu utilisés, vont cependant disparaître)
  • Idem pour les classes existantes
  • Par contre j’ai cassé la signature des fonctions de rappel des actions sur les listes de billets, commentaires et blogs de l’administration.

Rien de méchant pour adapter les plugins, il suffit de passer aux behaviors V2 et de virer le premier argument dcCore $core des arguments des fonctions de rappel.

Exemple pour le plugin Typo, dans le fichier _admin.php :

diff --git a/_admin.php b/_admin.php
index 05860fa..0b51af0 100644
--- a/_admin.php
+++ b/_admin.php
@@ -39,11 +39,11 @@ dcCore::app()->menu['Blog']->addItem(
 dcCore::app()->addBehavior('adminDashboardFavorites', ['adminTypo', 'adminDashboardFavorites']);

 /* Add behavior callbacks for posts actions */
-dcCore::app()->addBehavior('adminPostsActionsPage', ['adminTypo', 'adminPostsActionsPage']);
-dcCore::app()->addBehavior('adminPagesActionsPage', ['adminTypo', 'adminPagesActionsPage']);
+dcCore::app()->addBehavior('adminPostsActions', ['adminTypo', 'adminPostsActionsPage']);
+dcCore::app()->addBehavior('adminPagesActions', ['adminTypo', 'adminPagesActionsPage']);

 /* Add behavior callbacks for comments actions */
-dcCore::app()->addBehavior('adminCommentsActionsPage', ['adminTypo', 'adminCommentsActionsPage']);
+dcCore::app()->addBehavior('adminCommentsActions', ['adminTypo', 'adminCommentsActionsPage']);

 class adminTypo
 {
@@ -58,7 +58,7 @@ class adminTypo
         ]);
     }

-    public static function adminPostsActionsPage($core, $ap)
+    public static function adminPostsActionsPage(dcPostsActions $ap)
     {
         // Add menuitem in actions dropdown list
         if (dcCore::app()->auth->check('contentadmin', dcCore::app()->blog->id)) {
@@ -69,7 +69,7 @@ class adminTypo
         }
     }

-    public static function adminPagesActionsPage($core, $ap)
+    public static function adminPagesActionsPage(dcPagesActions $ap)
     {
         // Add menuitem in actions dropdown list
         if (dcCore::app()->auth->check('contentadmin', dcCore::app()->blog->id)) {
@@ -80,17 +80,17 @@ class adminTypo
         }
     }

-    public static function adminPostsDoReplacements($core, dcPostsActionsPage $ap, $post)
+    public static function adminPostsDoReplacements(dcPostsActions $ap, arrayObject $post)
     {
-        self::adminEntriesDoReplacements(dcCore::app(), $ap, $post, 'post');
+        self::adminEntriesDoReplacements($ap, $post, 'post');
     }

-    public static function adminPagesDoReplacements($core, dcPostsActionsPage $ap, $post)
+    public static function adminPagesDoReplacements(dcPagesActions $ap, arrayObject $post)
     {
-        self::adminEntriesDoReplacements(dcCore::app(), $ap, $post, 'page');
+        self::adminEntriesDoReplacements($ap, $post, 'page');
     }

-    public static function adminEntriesDoReplacements($core, dcPostsActionsPage $ap, $post, $type = 'post')
+    public static function adminEntriesDoReplacements($ap, arrayObject $post, $type = 'post')
     {
         if (!empty($post['full_content'])) {
             // Do replacements
@@ -156,7 +156,7 @@ class adminTypo
         }
     }

-    public static function adminCommentsActionsPage($core, $ap)
+    public static function adminCommentsActionsPage(dcCommentsActions $ap)
     {
         // Add menuitem in actions dropdown list
         if (dcCore::app()->auth->check('contentadmin', dcCore::app()->blog->id)) {
@@ -167,7 +167,7 @@ class adminTypo
         }
     }

-    public static function adminCommentsDoReplacements($core, dcCommentsActionsPage $ap, $post)
+    public static function adminCommentsDoReplacements(dcCommentsActions $ap, arrayObject $post)
     {
         if (!empty($post['full_content'])) {
             // Do replacements

Une fois la mise à jour effectuée en 2.24, il faudra songer à mettre à jour les plugins qui fournissent des actions pour éviter d’avoir des erreurs moches sur le tableau de bord :-)

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/15453

Haut de page