<?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é - install</title>
    <link>https://dotclear.watch/</link>
    <atom:link href="https://dotclear.watch/feed/tag/install/rss2" rel="self" type="application/rss+xml" />
    <description>Suivez l'évolution du moteur de blogs Dotclear.</description>
    <language>fr</language>
    <pubDate>Mon, 25 May 2026 06:49:11 +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>Fichier Install d'un module</title>
        <link>https://dotclear.watch/Billet/Fichier-Install-d-un-module</link>
        <guid isPermaLink="false">urn:md5:374cf218364b206c7b7fe9a6bba42317</guid>
        <pubDate>Sun, 16 Jul 2023 20:51:00 +0100</pubDate>
        <dc:creator>Jean-Christian Denis</dc:creator>
                  <category>2.27</category>
                          <category>2.27</category>
                  <category>admin</category>
                  <category>install</category>
                  <category>module</category>
                  <category>plugin</category>
                  <category>structure</category>
                  <category>theme</category>
                  <category>update</category>
                <description>&lt;p&gt;Le fichier &lt;strong&gt;Install.php&lt;/strong&gt;, placé dans &lt;a href=&quot;https://dotclear.watch/Billet/Structure-d-un-module&quot;&gt;le dossier src&lt;/a&gt; du module, permet d'effectuer ses opérations d'installation et de mise à jour.&lt;/p&gt; &lt;p&gt;Le fichier &lt;strong&gt;Install.php&lt;/strong&gt; fait partie du processus reconnu par le gestionnaire de modules, il est donc automatiquement pris en compte coté admin si il existe.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il est placé dans le sous dossier &lt;code&gt;src&lt;/code&gt; du module,&lt;/li&gt;
&lt;li&gt;Il contient une classe du nom de &lt;code&gt;Install&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;Il est dans l'espace de nom PHP &lt;code&gt;Dotclear\Plugin\monPlugin&lt;/code&gt; ou &lt;code&gt;Dotclear\Theme\monTheme&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;La classe doit étendre &lt;a href=&quot;https://dotclear.watch/Billet/La-class-Process&quot;&gt;la classe Process&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;Seules les méthodes &lt;code&gt;init()&lt;/code&gt; et &lt;code&gt;process()&lt;/code&gt; sont utilisées,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce fichier est chargé en préambule de la page d'accueil de l'admin, de la page de gestion de l'apparence du blog, et de la page de gestion des plugins. Généralement il permet d'enregistrer des paramètres, de créer des tables, etc.&lt;br /&gt;
La méthode &lt;code&gt;init()&lt;/code&gt; de la classe &lt;strong&gt;doit&lt;/strong&gt; vérifier que la version installée n'existe pas ou qu'elle est à mettre à jour, elle doit renvoyer &lt;code&gt;false&lt;/code&gt; si il n'y a pas besoin d'effectuer ces opérations d'installation / mise à jour. Pour aider, &lt;a href=&quot;https://dotclear.watch/Billet/Les-classes-de-module-My&quot;&gt;la classe My&lt;/a&gt; embarque un contexte qui permet cela &lt;code&gt;My::checkContext(My::INSTALL)&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Exemple du plugin blogroll de la distribution qui ajoute une table à la base de données :&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;lt;?php
declare(strict_types=1);

namespace Dotclear\Plugin\blogroll;

use dcCore;
use Dotclear\Core\Process;
use Dotclear\Database\Structure;
use initBlogroll;

class Install extends Process
{
    public static function init(): bool
    {
        return self::status(My::checkContext(My::INSTALL));
    }

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

        $schema = new Structure(dcCore::app()-&amp;gt;con, dcCore::app()-&amp;gt;prefix);

        $schema-&amp;gt;{initBlogroll::LINK_TABLE_NAME}
            -&amp;gt;link_id(&amp;#039;bigint&amp;#039;, 0, false)
            -&amp;gt;blog_id(&amp;#039;varchar&amp;#039;, 32, false)
            -&amp;gt;link_href(&amp;#039;varchar&amp;#039;, 255, false)
            -&amp;gt;link_title(&amp;#039;varchar&amp;#039;, 255, false)
            -&amp;gt;link_desc(&amp;#039;varchar&amp;#039;, 255, true)
            -&amp;gt;link_lang(&amp;#039;varchar&amp;#039;, 5, true)
            -&amp;gt;link_xfn(&amp;#039;varchar&amp;#039;, 255, true)
            -&amp;gt;link_position(&amp;#039;integer&amp;#039;, 0, false, 0)

            -&amp;gt;primary(&amp;#039;pk_link&amp;#039;, &amp;#039;link_id&amp;#039;)
            -&amp;gt;index(&amp;#039;idx_link_blog_id&amp;#039;, &amp;#039;btree&amp;#039;, &amp;#039;blog_id&amp;#039;)
            -&amp;gt;reference(&amp;#039;fk_link_blog&amp;#039;, &amp;#039;blog_id&amp;#039;, &amp;#039;blog&amp;#039;, &amp;#039;blog_id&amp;#039;, &amp;#039;cascade&amp;#039;, &amp;#039;cascade&amp;#039;)
        ;

        (new Structure(dcCore::app()-&amp;gt;con, dcCore::app()-&amp;gt;prefix))-&amp;gt;synchronize($schema);

        return true;
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;
&lt;em&gt;&lt;q&gt;Le contenu de ce document a été écrit suivant le code de la version 2.27 de Dotclear.&lt;/q&gt;&lt;/em&gt;&lt;/p&gt;</description>
        
              </item>
      </channel>
</rss>
