6
Indiquez l’intérêt que vous portez à cette question
0

Création d’un plugin avec des tables de reference pré-renseignées

Bonjour,

je viens de me lancer dans la création d’un plugin pour ajouter à mon site de doc technique, des pages dont les infos sont collectées dans des bases de données provenant d’autres serveurs (non SPIP).

J’ai installé SPIP 3.0.17 avec les plugins ViaSPIP 3.0.11 et Saisies 2.1.1
Mon plugin s’appuie sur ViaSpip et reprend l’un des thèmes fournis.
(Le plugin ViaSpip fonctionne très bien sans mes ajouts ;) )

Ce que je souhaite faire, c’est qu’à l’installation du plugin, 4 tables soient crées et que 3 d’entre elles soient préchargées (tables de référence).

L’installation du plugin et la création des tables fonctionne, mais je ne trouve pas le moyen "d’hydrater" mes tables de référence.

J’ai bien sûr parcouru de nombreuses docs sur le net, et en particulier celle de M.Marcimat sur laquelle je me suis basé pour comprendre la marche à suivre.
La plupart d’entre elles concernent SPIP 2 ou SPIP3beta et il me semble que beaucoup de choses ont changé depuis.
Pour l’instant, et après plusieurs heures de bidouilles infructueuses, je butte toujours.

Si quelqu’un pouvait me mettre sur la voie, ce serait peut être l’étincelle ....

Merci par avance pour votre attention.
Philippe

Voici en gros ce que j’ai utilisé :

plugins/dbadocs/paquet.xml

<paquet
        prefix="dbadocs"
        categorie="squelette"
        version="0.1.0"
        schema="0.1.0"
        etat="dev"
        compatibilite="[3.0.0;["
        logo="img/dbadocs_logo.png"
        documentation="DbaDocs"
>
        <nom>DbaDocs</nom>
        <auteur>PhL</auteur>
        <licence>GNU/GPL</licence>
        <necessite nom="viaspip3" compatibilite="[3.0.11a;]" />
        <necessite nom="saisies" compatibilite="[2.1.1;]" />

<!-- Création des tables de DbaDocs -->
        <pipeline nom="declarer_tables_objets_sql" inclure="base/dbadocs.php" />
    <!-- pipeline nom="charger_tables_ref" inclure="inc/precharger_dbadocs.php /-->
<!--
        pipeline nom="insert_head" inclure="dbadocs_.php"
        pipeline nom="editer_serveur" inclure="dbadocs_pipelines.php"
-->

    <!-- Ajout d'une entrée dans le menu prive/Edition -->
    <menu nom="dbadocs" titre="dbadocs:titre_menu_serveurs_bbq" parent="menu_edition" icone="images/serveur_28x28.png" />

    <!-- Ajout de l'icone serveur dans la barre d'outils rapides du menu prive -->
    <menu nom="dbadocs_ajout" titre="dbadocs:legende_ajout_serveur" parent="outils_rapides" icone="images/serveur_28x28.png" action="serveur_edit" parametres="new=oui" />

        </paquet>

Si je décommente le pipeline charger_tables_ref cela ne fonctionne pas et aucune ligne n’est insérée.

plugin/dbadocs/base/dbadocs.php

<?php
  if (!defined('_ECRIRE_INC_VERSION')) return;

  function dbadocs_declarer_tables_objets_sql($tables) {
    $tables['dbadocs_serveurs'] = array(
    'principale' => 'oui',
    'field' => array(
      'id_serveur'  => 'INT(4) NOT NULL',
      'serveur' => 'CHAR(16) NOT NULL',
      'application' => 'CHAR(150) NOT NULL',
      'environnement' => 'INT(1) NOT NULL',
      'opsys' => 'int(1) NOT NULL',
      'id_rubrique' => 'bigint(21) NOT NULL DEFAULT 0'
      ),
    'key' => array(
      'PRIMARY KEY pk_environnement' => 'id_serveur',
      'KEY ix_serveur' => 'serveur',
      'KEY ix_application' => 'application'
      ),
    'titre' => 'Serveurs',
    'date'  => 'date',
    'champs_editables' => array(
      'serveur',
      'application',
      'environnement',
      'opsys'
      )
    );

    $tables['dbadocs_environnements'] = array(
      'principale' => 'oui',
      'field' => array(
        'id_environnement'  => 'INT(1) NOT NULL',
        'environnement' => 'CHAR(5) NOT NULL'
        ),
      'key' => array(
        'PRIMARY KEY pk_environnement' => 'id_environnement',
        'KEY ix_environnement' => 'environnement'
        ),
      'titre' => 'Environnements',
      'date'  => 'date',
      'champs_editables' => 'environnement'
      );
...... autres tables ......

    return $tables;
    }

plugins/dbadocs/inc/precharger_dbadocs.php

<?php
  if (!defined('_ECRIRE_INC_VERSION')) return;

  function dbadocs_charger_tables_ref() {
    echo "Insertions .....<br>";
    $id = sql_insertq_multi(
      'dbadocs_environnements',
      array(
        array(0 => 'Production'),
        array(1 => 'Validation'),
        array(2 => 'Test')
        )
      );
    if ($id > 0) echo "Insertions = $id<br>";
    return;
    }
?>