Carnet Wiki

Et si on automatisait tout ça ?

Version 17 — August 2013 spipfactory

Arnaud, Jean Christophe, Stéphane de Ch’Nord, Stéphane le charentais (Après le 15 août.) participent et vous ? ; Ne pas hésiter a modifier, corriger ...

Suite a l’expérience d’utilisation de la mutualisation c’est a dire partager le noyau de SPIP entre plusieurs sites., des besoins d’automatisation se sont fait sentir.

Pourquoi faire ?

  • pour certains c’est diminuer les coûts
  • pour d’autres se simplifier la vie

Quels besoins ?

(Stéphane)

- -* Un formulaire d’inscription
qui permet d’installer un spip automatiquement en renseignant:
-* -** Nom de votre site

    • URL (Adresse)
      -* -** une adresse mail

exemple : Nursit

Est-on sur que c’est pas fait en manuel derrière , déjà sur l’exemple proposé ? ;-)
Personnellement je pense que c’est pas fait en auto, déjà car il est pas mal d’avoir une validation manuelle de l’inscription au service. (Arnaud B.)

- l’inscription automatique d’un Auteur Webmestre
permettre au webmestre de la mutu de passer en tant que webmestre dans un site mutualisé, pratique pour du dépannage de configuration du squelette

Que choisit on pour l’inscription / redirection adresse : (Arnaud B.)

  • Domaine : l’utilisateur doit le faire pointer lui-même vers le serveur de la mutualisation (donc faut expliquer ^^ c’est pas gagné).
    • je m’y colle de tenter une Explication ;) (Stéphane)
  • sous.domaine.tld : faut créer le vhost sur le serveur, via un script.sh

Process de l’install :

En partant du principe que le domaine a déjà été redirigé soit par une création de sous-domaine, soit par pointage des dns.

  • Soumission du formulaire d’inscription au service
  • Ajout de l’auteur (inscrit)
    • soit dans une table externe,
    • soit dans la table Auteur du site maitre,
    • soit avec le plugin client en ajout si besoin de champs supplémentaires,
    • soit LDAP.
  • Création des répertoires du site (idem plugin mutualisation)
  • Installation (ici prévoir la possibilité d’import d’une base de démarrage)

A la fin du process d’install :

  • Envoi d’un mail au nouvel inscrit avec son login et son mot de passe, webmestre

Comme nous sommes une plateforme participative :

  • Envoi d’un mail sur une liste de diffusion prévenant l’ensemble des mutualisés qu’il y a un nouvel inscrit
  • Dans notre cas utilisation du squelette Escal (aprés chacun fait ce qui lui plait plait plait ...))

Escal création automatique des Mots-clés

(Jean Christophe Villeneuve)

  • Test en mutu locale, avec Escal placé en extension (ainsi que agenda/calendrier mini), l’installation des mots-clefs fonctionne dès la création du site. (cf ci dessous, les fichiers modifiés et exemples). (Arnaud B. 6/08/13)

Fichier /escal/paquet.xml

Ajouter un shema dans la description du paquet, pour pouvoir mettre a jour.

<paquet
    prefix="escal"
    categorie="squelette"
    version="3.71.18"
    schema="1.."
    etat="stable"
    compatibilite="[2.10.;["
    logo="images/escal32.png"
    documentation="http://projetice.crdp.ac-lyon.fr/escal/"
>


<nom>Escal</nom>


<auteur>Jean-Christophe Villeneuve</auteur>
  <licence lien="http://www.gnu.org/licenses/gpl-3..html">GNU/GPL</licence>
  
  <utilise nom="palette" compatibilite="[2..;[" />
  <utilise nom="spip_400" />
  
  <necessite nom="agenda" compatibilite="[3.11.2;[" />


<menu nom="escal" titre="escal:escal" parent="menu_squelette" icone="images/escal16.png" action="configurer_escal" />


<pipeline nom="autoriser" inclure="inc/escal_autoriser.php" />


</paquet>

Fichier /escal/escal_administrations.php

<?php
/**
 * Plugin Escal
 * (c) xxxx
 * Licence GNU/GPL
 * Fichier ./escal_administrations.php
 */


if (!defined('_ECRIRE_INC_VERSION')) return;


/**
 * Fonction d'installation du plugin et de mise à jour.
 * Vous pouvez :
 * - créer la structure SQL,
 * - insérer du pre-contenu,
 * - installer des valeurs de configuration,
 * - mettre à jour la structure SQL 
**/
function escal_upgrade($nom_meta_base_version, $version_cible) {
    $maj = array();
    include_spip('escal_fonctions');
    include_spip('inc/config');
    include_spip('action/editer_objet');
    
    $maj['create'] = array(
        array('install_groupe_mots'),
        array('ecrire_config', array('escal', array()))
    );
    
    include_spip('base/upgrade');
    maj_plugin($nom_meta_base_version, $version_cible, $maj);
    ecrire_meta($nom_meta_base_version,$version_cible);
    ecrire_meta();
}


/**
 * Fonction de désinstallation du plugin.
 * Vous devez :
 * - nettoyer toutes les données ajoutées par le plugin et son utilisation
 * - supprimer les tables et les champs créés par le plugin. 
**/
function escal_vider_tables($nom_meta_base_version) {


include_spip('inc/config');
    $affichage = lire_config('escal/mots_techniques/affichage');
    
    sql_delete('spip_groupes_mots', sql_in("id_groupe", array($affichage)));
    sql_delete('spip_mots', sql_in("id_groupe", array($affichage)));
    
    effacer_meta('escal');
    effacer_meta($nom_meta_base_version);
    ecrire_meta();
}


?>

Fichier /escal/escal_fonctions.php

// Exemple de fonction d'instal de groupes et mots-clef
// a placer dans ./escal_fonctions.php


/*
 * function install_groupe_mot
 * install les groupes de mots techniques et les mots clefs correspondants
 * on les stocke en spip_meta.tbl pour pouvoir les désinstaller, mettre a jour, via une upgrade du shema
 * 
 */
function install_groupe_mots() {
    // Création du groupe de mot Clef : affichage
    $groupe_affichage = sql_insertq('spip_groupes_mots',array('titre'=>'affichage','tables_liees'=>'articles,rubriques'));
    
    // Création des mots clefs -----------


// Mot : pas_au_menu
    $pas_au_menu = objet_inserer('mot',$groupe_affichage);
    objet_modifier('mot',$pas_au_menu,array(
        'titre'=>'pas-au-menu',
        'descriptif'=>'pour ne pas afficher une rubrique ou un article dans le menu horizontal'
        )
    );
    
    $result = array(
        'affichage'=>$groupe_affichage, 
        'affichage_mots'=> array(
            'pas_au_menu'=>$pas_au_menu
            )
    );
    
    ecrire_config('escal/mots_techniques',$result);
    
    return $result;
}

Comment ?

Une mutualisation de site spip avec le site maître dans la mutualisation

  • permet d’utiliser les fonctions spip

Sur quoi s’appuyer ?

Donc si on peut s’y coller à plusieurs ça serait sympa et profitable à tous.

@micalement