<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://dotclear.watch/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DotclearWatch / Blog - Mot-clé - 2.33</title>
    <link>https://dotclear.watch/</link>
    <atom:link href="https://dotclear.watch/feed/tag/2.33/rss2" rel="self" type="application/rss+xml" />
    <description>Suivez l'évolution du moteur de blogs Dotclear.</description>
    <language>fr</language>
    <pubDate>Mon, 06 Apr 2026 09:30:20 +0200</pubDate>
    <copyright>Tous droits réservés © Jean-Christian Denis</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Sortie de Dotclear 2.33</title>
        <link>https://dotclear.watch/Billet/Sortie-de-Dotclear-2.33</link>
        <guid isPermaLink="false">urn:md5:b4816c7c288b07b2180a4e570c948ca8</guid>
        <pubDate>Thu, 13 Feb 2025 10:05:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Actualités</category>
                          <category>2.33</category>
                  <category>release</category>
                <description>&lt;p&gt;Ce jeudi 13 Février 2025 sort la version 2.33 du moteur de blogs Dotclear.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://fr.dotclear.org/blog/post/2025/02/13/Dotclear-2.33&quot; hreflang=&quot;fr&quot; title=&quot;Annonce officielle de Dotclear 2.33&quot;&gt;Cette version&lt;/a&gt; améliore encore l'aspect graphique de l'interface, elle continue la migration des outils javascript, elle corrige quelques bugs, modifie la gestion des status et enfin ajoute la possibilité d'utiliser les sessions coté publique. On reparle de ces changements dans un &lt;a href=&quot;https://dotclear.watch/Billet/2.33&quot; hreflang=&quot;fr&quot; title=&quot;Détail de la version 2.33&quot;&gt;billet dédié&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;</description>
        
                  <comments>https://dotclear.watch/Billet/Sortie-de-Dotclear-2.33#comment-form</comments>
          <wfw:comment>https://dotclear.watch/Billet/Sortie-de-Dotclear-2.33#comment-form</wfw:comment>
          <wfw:commentRss>https://dotclear.watch/feed/atom/comments/62</wfw:commentRss>
              </item>
          <item>
        <title>2.33</title>
        <link>https://dotclear.watch/Billet/2.33</link>
        <guid isPermaLink="false">urn:md5:d77dab362d1add5616e4d776e430e734</guid>
        <pubDate>Thu, 13 Feb 2025 10:04:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>Versions</category>
                          <category>2.33</category>
                  <category>release</category>
                <description>&lt;p&gt;Sortie le 13 Fevrier 2025, &lt;a href=&quot;https://fr.dotclear.org/blog/post/2025/02/13/Dotclear-2.33&quot; hreflang=&quot;fr&quot; title=&quot;Annonce officielle de Dotclear 2.33&quot;&gt;cette version de Dotclear&lt;/a&gt; ouvre de nouveaux horizons pour les plugins.&lt;/p&gt; &lt;h5&gt;Résumé&lt;/h5&gt;

&lt;p&gt;Beaucoup d'amélioration continue dans cette version avec l'avancement de l'utilisation de Vanilla JS, des Helper\Form, des métadonnée de média... Mais également deux gros changements sur les statuts et le sessions public.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;Nouveautés&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Amélioration de l'expérience utilisateur coté admin&lt;/li&gt;
&lt;li&gt;Amélioration de la gestion des média. (et de leurs métadonnées)&lt;/li&gt;
&lt;li&gt;Avancement de l'utilisation de Vanilla JS plutôt que JQuery&lt;/li&gt;
&lt;li&gt;Avancement de l'utilisation de Helper/Form coté admin&lt;/li&gt;
&lt;li&gt;Ajout d'un behavior &lt;a href=&quot;https://dotclear.watch/Billet/Requ%C3%AAte-sur-les-billets-en-2.33&quot;&gt;coreBlogBeforeGetPostsAddingParameters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Harmonisation et &lt;a href=&quot;https://dotclear.watch/Billet/Les-status-en-2.33&quot;&gt;ouverture des status&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Outils d'utilisation de session en Frontend&lt;/li&gt;
&lt;li&gt;Déplacement des schémas de base de données et de paramètres de blog&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le &lt;a href=&quot;https://git.dotclear.org/dev/dotclear/src/branch/master/CHANGELOG&quot; hreflang=&quot;en&quot; title=&quot;Doclear CHANGELOG&quot;&gt;changelog complet&lt;/a&gt; est disponible sur le dépôt.
&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;Aide&lt;/h5&gt;

&lt;p&gt;Afin de tester les modifications apporté à cette version de Dotclear, je propose 3 petits plugins utilisant ces nouvelles fonctionnalités. Ces plugins n'apportent pas grand chose par eux mêmes mais sont assez simple pour présenter et comprendre ces changements :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestion de session publique : &lt;a href=&quot;https://github.com/JcDenis/FrontendSession&quot; hreflang=&quot;en&quot; title=&quot;Dépôt Github du plugin&quot;&gt;FrontendSession&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ajout de status de billet coté admin : &lt;a href=&quot;https://github.com/JcDenis/Proofreading&quot; hreflang=&quot;en&quot; title=&quot;Dépôt Github de plugin&quot;&gt;Proofreading&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ajout de status de billet et permissions utilisateur coté publique : &lt;a href=&quot;https://github.com/JcDenis/RestrictedReading&quot; hreflang=&quot;en&quot; title=&quot;Dépôt Github du plugin&quot;&gt;RestrictedReading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
        
                  <comments>https://dotclear.watch/Billet/2.33#comment-form</comments>
          <wfw:comment>https://dotclear.watch/Billet/2.33#comment-form</wfw:comment>
          <wfw:commentRss>https://dotclear.watch/feed/atom/comments/63</wfw:commentRss>
              </item>
          <item>
        <title>Requête sur les billets</title>
        <link>https://dotclear.watch/Billet/Requ%C3%AAte-sur-les-billets-en-2.33</link>
        <guid isPermaLink="false">urn:md5:cb50189c3afe2f13d6d6cc33271f0d88</guid>
        <pubDate>Thu, 13 Feb 2025 10:02:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.33</category>
                          <category>2.33</category>
                  <category>billet</category>
                  <category>paramètre</category>
                  <category>post</category>
                  <category>requête</category>
                  <category>status</category>
                  <category>type</category>
                <description>&lt;p&gt;La &lt;a href=&quot;https://dotclear.watch/Billet/2.33&quot;&gt;version 2.33&lt;/a&gt; de Dotclear modifie la gestion des status et ouvre les session coté publique apportant des modification dans les requêtes.&lt;/p&gt; &lt;p&gt;L'ouverture des statuts de billets de la version 2.33 de Dotclear oblige a modifier les requêtes liées aux billets, en effet il faut désormais tenir compte qu'il est possible d'avoir de nouveaux statuts encore inconnues jusqu'ici. Par exemple là ou il suffisait de tester si un billet avec un statut &lt;strong&gt;POST_PUBLISHED&lt;/strong&gt; pour l'afficher, maintenant un nouveau statut &lt;strong&gt;POST_SUBSCRIBER&lt;/strong&gt; amené par un plugin pourrait tout à fait avoir le droit d'être également affiché. Pour faciliter cette limite entre billet autorisé et billet restreint, les groupes de status ont une limite de niveau définie à partir de laquelle un billet est considéré comme restreint, c'est la propriété threshold. Elle peut être testé avec :&lt;br&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;if (App::status()-&amp;gt;post()-&amp;gt;isRestricted($rs-&amp;gt;post_status)) { }&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mais cela est loin d'être suffisant, la version 2.33 de Dotclear ouvre également les sessions coté publique. On peut alors imaginer qu'un billet sera restreint aux lecteurs lambda du blog mais autorisé aux lecteurs enregistrés coté publique. Le billet peut alors être restreint ou non suivant sont niveau mais également suivant le niveau de l'utilisateur.&lt;br&gt;
&lt;br&gt;
Pour faciliter la gestion de ces requêtes complexes et pourvoir d'un coup accorder à nos besoins toutes les requêtes d'une page (il y en a pour les catégories de billets, les tags de billets, etc...) un nouveau behavior fait son apparition : &lt;code&gt;coreBlogBeforeGetPostsAddingParameters&lt;/code&gt;. Il va permettre aux plugins d'interagir avec les requêtes de billets de manière globale. A travers ce behavior un plugin peut modifier les paramètres de requête : &lt;strong&gt;post_type&lt;/strong&gt;, &lt;strong&gt;post_status&lt;/strong&gt;, et &lt;strong&gt;comment_status&lt;/strong&gt;. Le plugin va pouvoir ainsi ajouter son post_status à la requête si l'utilisateur est enregistré.&lt;br&gt;
&lt;br&gt;
Le plugin d'exemple concret et simple &lt;strong&gt;RestrictedReading&lt;/strong&gt; permet de comprendre la mise en œuvre de ces changements.&lt;br&gt;
Voici le contenu de son fichier Prepend.php :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;class Prepend extends Process
{
    public static function init(): bool
    {
        return self::status(My::checkContext(My::PREPEND));
    }

    public static function process(): bool
    {
        if (!self::status()) {
            return false;
        }

        // Ajout d&amp;#039;une nouvelle permission pour les uilisateurs
        App::auth()-&amp;gt;setPermissionType(My::USER_PERMISSION, __(&amp;#039;Restricted reading&amp;#039;));

        // Ajout d&amp;#039;un nouveau status pour les billets
        if (App::status()-&amp;gt;post()-&amp;gt;set(
            (new Status(My::POST_STATUS , My::id(), &amp;#039;Restricted reading&amp;#039;, &amp;#039;Restricted reading (&amp;gt;1)&amp;#039;, My::fileURL(&amp;#039;icon.svg&amp;#039;))),
        )) {
            // Ajout du behavior de modification des requêtes de billets
            App::behavior()-&amp;gt;addBehaviors([
                &amp;#039;coreBlogBeforeGetPostsAddingParameters&amp;#039; =&amp;gt; self::coreBlogBeforeGetPostsAddingParameters(...),
            ]);

            return true;
        }

        return false;
    }

    /**
     * Utilisation du behavior pour l&amp;#039;ajout de l&amp;#039;autorisation d&amp;#039;afficher le billet si :
     * * Le billet a le status My::POST_STATUS 
     * * L&amp;#039;utilisateur est enregistré avec la permissions My::USER_PERMISSION
     */
    public static function coreBlogBeforeGetPostsAddingParameters(ArrayObject $params, string|null $arg = null): void
    {
        if (App::task()-&amp;gt;checkContext(&amp;#039;FRONTEND&amp;#039;) &amp;amp;&amp;amp; App::auth()-&amp;gt;check(My::USER_PERMISSION, App::blog()-&amp;gt;id()) === true) {
            if (!isset($params[&amp;#039;post_status&amp;#039;])) {
                $params[&amp;#039;post_status&amp;#039;] = [];
            }
            if (!is_array($params[&amp;#039;post_status&amp;#039;])) {
                $params[&amp;#039;post_status&amp;#039;] = [$params[&amp;#039;post_status&amp;#039;]];
            }

            $params[&amp;#039;post_status&amp;#039;][] = My::POST_STATUS;
        }
    }&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Grace à ce behavior tout le contenu de la page courante tiendra compte du statut du billet et des permissions de l'utilisateur.%%&lt;/p&gt;</description>
        
                  <comments>https://dotclear.watch/Billet/Requ%C3%AAte-sur-les-billets-en-2.33#comment-form</comments>
          <wfw:comment>https://dotclear.watch/Billet/Requ%C3%AAte-sur-les-billets-en-2.33#comment-form</wfw:comment>
          <wfw:commentRss>https://dotclear.watch/feed/atom/comments/65</wfw:commentRss>
              </item>
          <item>
        <title>Les status</title>
        <link>https://dotclear.watch/Billet/Les-status-en-2.33</link>
        <guid isPermaLink="false">urn:md5:6e19713bdd7549979250058e98d57b37</guid>
        <pubDate>Thu, 13 Feb 2025 10:01:00 +0000</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.33</category>
                          <category>2.33</category>
                  <category>status</category>
                <description>&lt;p&gt;La &lt;a href=&quot;https://dotclear.watch/Billet/2.33&quot;&gt;version 2.33&lt;/a&gt; de Dotclear modifie la gestion des status des utilisateurs, blogs, billets, commentaires.&lt;/p&gt; &lt;h5&gt;Résumé&lt;/h5&gt;

&lt;p&gt;Dans les versions précédentes chaque entité utilisait des méthodes et valeurs dédiées et bloquées de status, tout ça éparpillé un peu partout. Depuis la version 2.33, tous ces status utilisent une structure commune et sont ouvert à l'ajout de nouveaux status. Cela a entrainé pas mal de modifications de requêtes et de scripts de vérification pour prendre en compte cette ouverture.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;Nouvelles classes&lt;/h5&gt;

&lt;p&gt;De nouvelles classes regroupant les status d'un groupe sont donc accessibles depuis l'application :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utilisateurs : &lt;code&gt;App::status()-&amp;gt;user()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Blogs : &lt;code&gt;App::status()-&amp;gt;blog()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Billets : &lt;code&gt;App::status()-&amp;gt;post()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Commentaires : &lt;code&gt;App::status()-&amp;gt;comment()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces classes contiennent une pile de status, qui sont maintenant des objets.&lt;br&gt;
La classe d'un status contient les propriétés suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un niveau &lt;code&gt;level&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Un identifiant &lt;code&gt;id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Un nom &lt;code&gt;name&lt;/code&gt; (et son pluriel &lt;code&gt;plural_name&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Une icone &lt;code&gt;icon&lt;/code&gt; (et sa version foncée &lt;code&gt;icon_dark&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Une option &lt;code&gt;hidden&lt;/code&gt; pour le cacher des sélections de formulaire&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour connaitre toutes les méthodes disponibles pour les groupes de status, les classes sont dans :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;src\Helper\Stack\Status&lt;/code&gt; (générique)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src\Helper\Stack\Statuses&lt;/code&gt; (générique)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src\Schema\Status\Blog.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src\Schema\Status\Comment.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src\Schema\Status\Post.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;src\Schema\Status\User.php&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;
Les classes regroupant ces status vont faciliter leur gestion en intégrant tous les outils nécessaires comme les combo, les filtres, les colonnes de tableau, les actions... Le code de Dotclear s'en retrouve simplifié et plus harmonieux à sa lecture.&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;Utilisation&lt;/h5&gt;

&lt;p&gt;Récupérer le nom et l'image d'un status de blog :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;$name  = App::status()-&amp;gt;blog()-&amp;gt;name((int) $rs-&amp;gt;blog_status);
$image = App::status()-&amp;gt;blog()-&amp;gt;image((int) $rs-&amp;gt;blog_status);&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Tester si un billet a un status restreint :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;if (App::status()-&amp;gt;post()-&amp;gt;isRestricted((int) $rs-&amp;gt;post_status)) { }&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Récupérer le combo d'action sur des commentaires :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;echo (new Select(&amp;#039;comment_status&amp;#039;))
    -&amp;gt;items(App::status()-&amp;gt;comment()-&amp;gt;combo())
    -&amp;gt;default((string) $rs-&amp;gt;comment_status)
    -&amp;gt;label(new Label(__(&amp;#039;Comment status:&amp;#039;), Label::IL_TF))
    -&amp;gt;render();&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Exemple d'ajout d'un status aux utilisateurs depuis le plugin FrontendSession :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;App::status()-&amp;gt;user()-&amp;gt;set((new Status(
    My::USER_PENDING , 
    My::id(), 
    &amp;#039;Pending registration&amp;#039;, 
    &amp;#039;pending registration (&amp;gt;1)&amp;#039;, 
    My::fileURL(&amp;#039;icon.svg&amp;#039;))
));&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;La recherche de status se fait par identifiant ou par niveau sur la plupart des méthodes, ces 3 exemples retourneront le même objet :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;$status_online = App::status()-&amp;gt;blog()-&amp;gt;get(1);
$status_online = App::status()-&amp;gt;blog()-&amp;gt;get(App::status()-&amp;gt;blog()::ONLINE);
$status_online = App::status()-&amp;gt;blog()-&amp;gt;get(&amp;#039;online&amp;#039;);&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ces quelques exemples montrent l'harmonisation entre les différents status rencontrés dans Dotclear.&lt;br&gt;
Parmis les changements qui risquent de poser problème à certains plugins, il y a la gestion des status dans les requêtes avec un nouveau behavior &lt;code&gt;coreBlogBeforeGetPostsAddingParameters&lt;/code&gt; qui est détaillé dans &lt;a href=&quot;https://dotclear.watch/Billet/Requ%C3%AAte-sur-les-billets-en-2.33&quot;&gt;un article de ce blog&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h5&gt;Dépréciés&lt;/h5&gt;

&lt;p&gt;Comme souvent, ces changements apportent leur lot de dépréciés.&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Core\Backend\Combos::getPostStatusesCombo()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()-&amp;gt;combo()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core\Backend\Combos::getBlogStatusesCombo()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()-&amp;gt;combo()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core\Backend\Combos::getCommentStatusesCombo()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()-&amp;gt;combo()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core\Backend\Filter\FilterBlogs::getBlogStatusFilter()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()-&amp;gt;filter()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core\Backend\Filter\FilterComments::getCommentStatusFilter()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()-&amp;gt;filter()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Core\Backend\Filter\FilterPosts::getPostStatusFilter()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()-&amp;gt;filter()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::BLOG_ONLINE&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()::ONLINE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::BLOG_OFFLINE&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()::OFFLINE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::BLOG_REMOVED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()::REMOVED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::BLOG_UNDEFINED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()::UNDEFINED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::POST_PENDING&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()::PENDING&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::POST_SCHEDULED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()::SCHEDULED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::POST_UNPUBLISHED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()::UNPUBLISHED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::POST_PUBLISHED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()::PUBLISHED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::COMMENT_JUNK&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()::JUNK&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::COMMENT_PENDING&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()::PENDING&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::COMMENT_UNPUBLISHED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()::UNPUBLISHED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::COMMENT_PUBLISHED&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()::PUBLISHED&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::getPostStatus($s)&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()-&amp;gt;name($s)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::getAllPostStatus()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;post()-&amp;gt;statuses()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blog()::getAllCommentStatus()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;comment()-&amp;gt;statuses()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blogs()::getAllBlogStatus()&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()-&amp;gt;statuses()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App::blogs()::getBlogStatus($s)&lt;/strong&gt; : &lt;code&gt;App::status()-&amp;gt;blog()-&amp;gt;name($s)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description>
        
                  <comments>https://dotclear.watch/Billet/Les-status-en-2.33#comment-form</comments>
          <wfw:comment>https://dotclear.watch/Billet/Les-status-en-2.33#comment-form</wfw:comment>
          <wfw:commentRss>https://dotclear.watch/feed/atom/comments/64</wfw:commentRss>
              </item>
      </channel>
</rss>
