Les dépréciés

Billet

La version 2.27 de Dotclear apporte son lot de dépréciés. Et leur nombre augmente par rapport aux dernières versions.

Autoloader

dcCore::autoload() => Autoloader::me()
Il faut désormais appeler directement Autoloader::me()

Erreur

_ _error() => new Dotclear\Fault()
Il faut utiliser la classe dédiée Fault avec soit le constructeur new Dotclear\Fault() ou bien la forme statique Dotclear\Fault::throw()

Déconnection

logout=1 => process=Logout
La déconnection a maintenant une URL dédiée. Pour l'appeler, il faut utiliser le gestionnaire d'URL dcCore::app()->admin->url->redirect('admin.logout') qui donnera dans l'URL &process=Logout
Astuces : Si un plugin ou un thème bloque l'accès à l'admin, il est possible de simplement ajouter à la fin de l'URL de votre navigateur ?process=Logout et vous pourrez vous reconnecter en mode sans échec.

Variable $init de process

dcNsProcess::$init => Process::status()
Introduite en 2.26 cette variable posait des problèmes, elle a été remplacé par la méthode Dotclear\Core\Process::status() qui sert à la fois en lecture et en écriture.

Ajout de menu

dcAdminHelper::addMenuItem() => dcCore::app()->admin->menus->addItem()
Avec l'arrivée des espaces de noms PHP dans la partie administration, les menus font partie d'un objet nommé Menus et donc il faut passer par lui pour ajouter des menus avec dcCore::app()->admin->menus->addItem().
Pour les plugins il est recommandé d'utiliser la classe My et la méthode My::addBackendMenuItem()..

Constantes de menu
  • dcAdmin::MENU_FAVORITES => Menus::MENU_FAVORITES,
  • dcAdmin::MENU_BLOG => Menus::MENU_BLOG,
  • dcAdmin::MENU_SYSTEM => Menus::MENU_SYSTEM,
  • dcAdmin::MENU_PLUGINS => Menus::MENU_PLUGINS,

Ici encore suite à l'arrivée du nouvel objet Menus, les constantes associées sont déplacées dedans. Le nom complet de la classe est Dotclear\Core\Backend\Menus. Il est possible de les appeler depuis l'instance dcCore::app()->admin->menus::MENU_XXX

Les notices
  • dcPage::notices() => Notices::getNotices(),
  • dcPage::addMessageNotice() => Notices::addMessageNotice(),
  • dcPage::addSuccessNotice() => Notices::addSuccessNotice(),
  • dcPage::addWarningNotice() => Notices::addWarningNotice(),
  • dcPage::addErrorNotice() => Notices::addErrorNotice(),
  • dcPage::message() => Notices::message(),
  • dcPage::success() => Notices::success(),
  • dcPage::warning() => Notices::warning(),
  • dcPage::error() => Notices::error(),

Toutes les méthodes de dcPage (nouvellement Page) en rapport aux notices sont dépréciées, il faut désormais utiliser les méthodes de la classe d'origine Dotclear\Core\Backend\Notices dont les signatures restent les mêmes.

Fichiers de modules
  • dcPage::cssModuleLoad() => My::cssLoad(),
  • dcPage::jsModuleLoad() => My::jsLoad(),
  • dcUtils::cssModuleLoad() => My::cssLoad(),
  • dcUtils::jsModuleLoad() => My::jsLoad(),

Encore une fois la classe My dédiée aux modules vient prendre le relai de ces deux méthodes. La différence est que, la structure des modules devenant plus stricte, ces deux nouvelles méthodes ont uniquement besoin du nom du fichier à charger. Il n'est plus nécessaire de fournir le nom du module ni celui du sous répertoire. Pour les css les fichiers sont rangés dans le dossier css, pour les js, les fichiers sont rangés dan le dossier js. Propre.
Exemple avec un partie de la méthode process de la classe Manage d'un module :

<?php
//...
Page::openModule(
    My::name,
    // charge le fichier MonPlugin/js/backend.js
    My::jsLoad('backend') .
    // charge le fichier MonPlugin/css/style.css
    My::cssLoad('style')
);
De core à admin
  • dcCore::app()->adminurl => dcCore::app()->admin->url,
  • dcCore::app()->favs => dcCore::app()->admin->favs,
  • dcCore::app()->menu => dcCore::app()->admin->menus,

Comme annoté dans le code depuis quelques versions certaines instances se trouvant historiquement dans dcCore auraient dû aller dans dcCore::app()->admin, c'est chose faite en 2.27.

Points d'entrées
  • dotclear/inc/public/_prepend.php
  • dotclear/inc/admin/_prepend.php
  • tous les fichiers dotclear/admin/xxx.php

Tous les points d'entrée qui étaient représentés par des fichiers sont dépréciés, ils sont remplacés par un seul fichier index.php qui lance l'application Dotclear.

  • Coté public, ce sera l'index.php de définition du blog qui lancera l'application.
  • Coté admin, ce sera l'index.php de l'URL d'administration qui s'en chargera.

Cas particulier, la mise à jour en ligne de commande se déplace de dotclear/inc/dbschema/upgrade-cli.php vers dotclear/admin/upgrade/upgrade-cli.php :

user@server: /var/www/dotclear$ php admin/upgrade/upgrade-cli.php inc/config.php
Propriétés du core

Nombre de propriétés de dcCore utilisent en 2.27 l'état 'uninitialized' c'est à dire qu'il ne faut plus tester leur nullité mais leur présence, cela se traduit par exemple par :

  • is_null(dcCore::app()->auth) ou dcCore::app()->auth === null => isset(dcCore::app()->auth)


Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.

La discussion continue ailleurs

URL de rétrolien : https://dotclear.watch/trackback/12