Série - Adapter le code pour Dotclear 2.24

Fil des billets - Fil des commentaires

mercredi 26 octobre 2022

Adapter son code pour la 2.24 n° 6

On continue avec la variable globale $__resources (ou son équivalent $GLOBALS['__resources']) qui est à remplacer par dcCore::app()->resources, partout dans votre code.

Exemple pris dans le code d’une des balises du plugin Akismet1.

Avant :

if (!isset($__resources['help']['akismet-filter'])) {
    $__resources['help']['akismet-filter'] = __DIR__ . '/help/help.html';
}

Après :

if (!isset(dcCore::app()->resources['help']['akismet-filter'])) {
    dcCore::app()->resources['help']['akismet-filter'] = __DIR__ . '/help/help.html';
}

L’expression régulière de recherche à utiliser étant :

((\\*?)\$__resources|\$GLOBALS\['__resources'\])

Si vous n’aimez pas les expressions régulières, alors cherchez ceci :

$GLOBALS['__resources']
$__resources
\$GLOBALS['__resources']
\$__resources

Et à remplacer par :

dcCore::app()->resources

Par ailleurs n’oubliez pas de supprimer les lignes contenant :

global $__resources;

Elles ne serviront plus.


Comme pour la variable $core (voir à ce sujet le billet correspondant), vous pouvez ne toucher à rien pour l’instant, la variable globale étant toujours déclarée.

Notez qu’elle sera supprimée dans le futur, donc tant que vous y êtes, sautez le pas ;-)


  1. Les plugins et thèmes de la version 2.23 ont déjà été modifiés en conséquence, vous pouvez un œil à leur code si nécessaire. ↩︎

jeudi 27 octobre 2022

Adapter son code pour la 2.24 n° 7

On reviendra plus tard sur les disparitions des variables globales, spécifiques à la prochaine 2.24 — jusqu’à présent toutes celles mentionnées précédemment l’étaient déjà (obsolètes) dans la 2.23 —, pour utiliser les nouvelles constantes qui définissent les états des entrées (billets et pages) :

  1. dcBlog::POST_PUBLISHED indique un état publié et qui vaut 1
  2. dcBlog::POST_UNPUBLISHED indique un état non publié et qui vaut 0
  3. dcBlog::POST_SCHEDULED indique un état programmé et qui vaut -1
  4. dcBlog::POST_PENDING indique un état en attente et qui vaut -2

Exemple pris dans le code de la page de gestion d’un média :

Avant :

switch ($rs->post_status) {
    case 1:
        $img_status = sprintf($img, __('published'), 'check-on.png');

        break;
    case 0:
        $img_status = sprintf($img, __('unpublished'), 'check-off.png');

        break;
    case -1:
        $img_status = sprintf($img, __('scheduled'), 'scheduled.png');

        break;
    case -2:
        $img_status = sprintf($img, __('pending'), 'check-wrn.png');

        break;
}

Après :

switch ($rs->post_status) {
    case dcBlog::POST_PUBLISHED:
        $img_status = sprintf($img, __('published'), 'check-on.png');

        break;
    case dcBlog::POST_UNPUBLISHED:
        $img_status = sprintf($img, __('unpublished'), 'check-off.png');

        break;
    case dcBlog::POST_SCHEDULED:
        $img_status = sprintf($img, __('scheduled'), 'scheduled.png');

        break;
    case dcBlog::POST_PENDING:
        $img_status = sprintf($img, __('pending'), 'check-wrn.png');

        break;
}

Techniquement pas de différence au niveau de l’exécution du code puisque les constantes conservent les mêmes valeurs qu’auparavant pour les états, mais, d’une part, c’est plus explicite dans le code, par ailleurs ça permet, si besoin, de modifier ces valeurs sans casser le code qui s’en sert.

Notez que ces constantes existent déjà dans la 2.23 (et 2.23.1) et vous pouvez d’ores et déjà les utiliser.

vendredi 28 octobre 2022

Adapter son code pour la 2.24 n° 8

Suite des nouvelles constantes qui définissent les états des commentaires et rétroliens :

  1. dcBlog::COMMENT_PUBLISHED indique un état publié et qui vaut 1
  2. dcBlog::COMMENT_UNPUBLISHED indique un état non publié et qui vaut 0
  3. dcBlog::COMMENT_PENDING indique un état en attente et qui vaut -1
  4. dcBlog::COMMENT_JUNK indique un état indésirable et qui vaut -2

Exemple :

Avant :

$nb_published   = dcCore::app()->blog->getComments(['comment_status' => 1], true)->f(0);
$nb_spam        = dcCore::app()->blog->getComments(['comment_status' => -2], true)->f(0);
$nb_pending     = dcCore::app()->blog->getComments(['comment_status' => -1], true)->f(0);
$nb_unpublished = dcCore::app()->blog->getComments(['comment_status' => 0], true)->f(0);

Après :

$nb_published   = dcCore::app()->blog->getComments(['comment_status' => dcBlog::COMMENT_PUBLISHED], true)->f(0);
$nb_spam        = dcCore::app()->blog->getComments(['comment_status' => dcBlog::COMMENT_JUNK], true)->f(0);
$nb_pending     = dcCore::app()->blog->getComments(['comment_status' => dcBlog::COMMENT_PENDING], true)->f(0);
$nb_unpublished = dcCore::app()->blog->getComments(['comment_status' => dcBlog::COMMENT_UNPUBLISHED], true)->f(0);

Techniquement pas de différence au niveau de l’exécution du code puisque les constantes conservent les mêmes valeurs qu’auparavant pour les états, mais, d’une part, c’est plus explicite dans le code, par ailleurs ça permet, si besoin, de modifier ces valeurs sans casser le code qui s’en sert.

Notez que ces constantes existent déjà dans la 2.23 (et 2.23.1) et vous pouvez d’ores et déjà les utiliser.

samedi 29 octobre 2022

Adapter son code pour la 2.24 n° 9

Attention, à partir de ce billet ça ne concerne plus que la version 2.24 de Dotclear, donc prévoyez de modifier ou de rajouter la dépendance dans vos plugins et thèmes si besoin, 'requires' => [['core', '2.24']], !

Suite des nouvelles constantes qui définissent les états des blogs :

  1. dcBlog::BLOG_ONLINE indique un état publié et qui vaut 1
  2. dcBlog::BLOG_OFFLINE indique un état hors ligne et qui vaut 0
  3. dcBlog::BLOG_REMOVED indique un état retiré et qui vaut -1

Exemple :

Avant :

if (dcCore::app()->blog->status == 0) {
    echo '<p class="static-msg">' . __('This blog is offline') . '.</p>';
} elseif (dcCore::app()->blog->status == -1) {
    echo '<p class="static-msg">' . __('This blog is removed') . '.</p>';
}

Après :

if (dcCore::app()->blog->status == dcBlog::BLOG_OFFLINE) {
    echo '<p class="static-msg">' . __('This blog is offline') . '.</p>';
} elseif (dcCore::app()->blog->status == dcBlog::BLOG_REMOVED) {
    echo '<p class="static-msg">' . __('This blog is removed') . '.</p>';
}

Techniquement pas de différence au niveau de l’exécution du code puisque les constantes conservent les mêmes valeurs qu’auparavant pour les états, mais, d’une part, c’est plus explicite dans le code, par ailleurs ça permet, si besoin, de modifier ces valeurs sans casser le code qui s’en sert.

dimanche 30 octobre 2022

Adapter son code pour la 2.24 n° 10

Suite des nouvelles constantes qui définissent les différents menus disponibles dans la barre de gauche de l’administration :

  1. dcAdmin::MENU_FAVORITES qui désigne le menu Mes favoris et qui vaut 'Favorites'
  2. dcAdmin::MENU_BLOG qui désigne le menu Blog et qui vaut 'Blog'
  3. dcAdmin::MENU_SYSTEM qui désigne le menu Réglages système et qui vaut 'System'
  4. dcAdmin::MENU_PLUGINS qui désigne le menu Plugins et qui vaut 'Plugins'

Exemple1 :

Avant :

dcCore::app()->menu['Favorites']->addItem(…);
dcCore::app()->menu['Plugins']->addItem(…);
dcCore::app()->menu['System']->addItem(…);
dcCore::app()->menu['Blog']->addItem(…);

Après :

dcCore::app()->menu[dcAdmin::MENU_FAVORITES]->addItem(…);
dcCore::app()->menu[dcAdmin::MENU_PLUGINS]->addItem(…);
dcCore::app()->menu[dcAdmin::MENU_SYSTEM]->addItem(…);
dcCore::app()->menu[dcAdmin::MENU_BLOG]->addItem(…);

Il existait un 5e menu 'Dashboard' qui sera supprimé dans la 2.24, celui-ci n’ayant jamais été utilisé.

Techniquement pas de différence au niveau de l’exécution du code puisque les constantes conservent les mêmes valeurs qu’auparavant pour les menus, mais, d’une part, c’est plus explicite dans le code, par ailleurs ça permet, si besoin, de modifier ces valeurs sans casser le code qui s’en sert.


  1. Vous noterez l’usage de dcCore::app()->menu à la place de $_menu, normalement déjà en place si vous avez appliqué les modifications indiquées dans le billet correspondant↩︎

- page 2 de 6 -

Haut de page