Changeset 74974 in spip-zone


Ignore:
Timestamp:
Aug 26, 2013, 6:34:25 PM (6 years ago)
Author:
eric@…
Message:

Passage des globales boussoles manuelles et serveurs disponibles en variables de configuration :

  • mise à jour du schéma et migration associée
  • prise en compte de la configuration dans les traitements
  • ajout d'une liste des serveurs et d'un formulaire d'ajout de serveur
  • ajout d'une action de retrait d'un serveur activable à partir de la liste

Attention, il n'est plus possible temporairement de rajouter des boussoles manuelles, la configuration n'étant pas encore faite.

Location:
_plugins_/boussole/trunk
Files:
4 added
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/boussole/trunk/action/serveur_informer_boussole.php

    r74837 r74974  
    1616        if (_BOUSSOLE_ALIAS_SERVEUR AND $alias) {
    1717                // Acquerir la liste des boussoles prêtes à être diffusées
    18                 $boussoles = $GLOBALS['serveur_boussoles_disponibles'];
     18                include_spip('inc/config');
     19                $boussoles = lire_config('boussole/serveur/boussoles_disponibles');
    1920                $boussoles = pipeline('declarer_boussoles', $boussoles);
    2021
  • _plugins_/boussole/trunk/action/serveur_lister_boussoles.php

    r74837 r74974  
    1414        if (_BOUSSOLE_ALIAS_SERVEUR) {
    1515                // Acquerir la liste des boussoles prêtes à être diffusées
    16                 $boussoles = $GLOBALS['serveur_boussoles_disponibles'];
     16                include_spip('inc/config');
     17                $boussoles = lire_config('boussole/serveur/boussoles_disponibles');
    1718                $boussoles = pipeline('declarer_boussoles', $boussoles);
    1819
  • _plugins_/boussole/trunk/boussole_administrations.php

    r70690 r74974  
    1313        $maj = array();
    1414
     15        // Configuration par défaut à la première activation du plugin
     16        $defaut_config = array(
     17                'client' => array('serveurs_disponibles' =>
     18                                                        array('spip' => array('url' => 'http://boussole.spip.net'))),
     19                'serveur' => array('boussoles_disponibles' => array())
     20        );
    1521        $maj['create'] = array(
    16                 array('maj_tables', array('spip_boussoles', 'spip_boussoles_extras'))
     22                array('maj_tables', array('spip_boussoles', 'spip_boussoles_extras')),
     23                array('ecrire_config', 'boussole', $defaut_config)
    1724        );
    1825
     
    2330                array('maj_tables', array('spip_boussoles_extras')),
    2431                array('maj02')
     32        );
     33
     34        // A partir de ce schéma, le plugin migre ses globales en configuration
     35        $maj['0.3'] = array(
     36                array('maj03', $defaut_config)
    2537        );
    2638
     
    3749
    3850        spip_log('Installation/mise à jour des tables du plugin','boussole' . _LOG_INFO);
     51}
    3952
    40 }
    4153
    4254/**
     
    4759function boussole_vider_tables($nom_meta_base_version) {
    4860        // On nettoie les metas de mises a jour des boussoles
    49         nettoyer_metas_boussole();
     61        $meta = array();
     62        $akas_boussole = sql_allfetsel('aka_boussole', 'spip_boussoles', array(), 'aka_boussole');
     63        if ($akas_boussole) {
     64                foreach (array_map('reset', $akas_boussole) as $_aka_boussole) {
     65                        $meta[] = 'boussole_infos_' . $_aka_boussole;
     66                }
     67                if ($meta)
     68                        sql_delete('spip_meta', sql_in('nom', $meta));
     69        }
    5070
    5171        // on efface ensuite la table et la meta habituelle designant la version du plugin
    5272        sql_drop_table("spip_boussoles");
    5373        sql_drop_table("spip_boussoles_extras");
     74
     75        // on efface la meta de configuration du plugin
     76        effacer_meta('boussole');
     77
     78        // on efface la meta du schéma du plugin
    5479        effacer_meta($nom_meta_base_version);
    5580
    56         spip_log('Désinstallation des tables du plugin','boussole' . _LOG_INFO);
     81        spip_log('Désinstallation des données du plugin','boussole' . _LOG_INFO);
    5782}
    5883
     
    7398                }
    7499        }
     100        spip_log('Maj 0.2 des données du plugin','boussole' . _LOG_INFO);
    75101}
    76102
     103
    77104/**
    78  * Suppression de l'ensemble des données des tables et metas propres au plugin boussole
     105 * Suppression des boussoles autres que la boussole spip car on ne peut pas les mettre à jour,
     106 * leur serveur n'étant pas connu
    79107 *
    80108 */
    81 function nettoyer_metas_boussole() {
    82         $meta = array();
     109function maj03($defaut_config) {
    83110
    84         $akas_boussole = sql_allfetsel('aka_boussole', 'spip_boussoles', array(), 'aka_boussole');
    85         if ($akas_boussole) {
    86                 foreach (array_map('reset', $akas_boussole) as $_aka_boussole) {
    87                         $meta[] = 'boussole_infos_' . $_aka_boussole;
     111        // On initialise la configuration du plugin avec celle par défaut
     112        $config = $defaut_config;
     113
     114        // Migration des éventuels serveurs configurés autres que "spip"
     115        if (isset($GLOBALS['client_serveurs_disponibles'])) {
     116                // On boucle sur tous les serveurs configurés
     117                foreach($GLOBALS['client_serveurs_disponibles'] as $_serveur => $_infos) {
     118                        $casier = array_shift(explode('_', $config));
     119                        if ($_serveur != 'spip') {
     120                                if (isset($_infos['api'])) {
     121                                        $config['client']['serveurs_disponibles'][$_serveur]['url'] = str_replace('/spip.php?action=[action][arguments]', '', $_infos['api']);
     122                                }
     123                                else if (isset($_infos['url'])) {
     124                                        $config['client']['serveurs_disponibles'][$_serveur] = $_infos;
     125                                }
     126                        }
    88127                }
    89                 sql_delete('spip_meta', sql_in('nom', $meta));
     128                // Suppression de la globale devenue inutile
     129                unset($GLOBALS['client_serveurs_disponibles']);
    90130        }
     131
     132        // Migration des éventuelles boussoles manuelles hébergés par le serveur
     133        if (isset($GLOBALS['serveur_boussoles_disponibles'])) {
     134                // On boucle sur tous les serveurs configurés
     135                foreach($GLOBALS['serveur_boussoles_disponibles'] as $_boussole => $_infos) {
     136                        if ($_infos['prefixe'] == '') {
     137                                $config['serveur']['boussoles_disponibles'][$_boussole] = $_infos;
     138                        }
     139                }
     140                // Suppression de la globale devenue inutile
     141                unset($GLOBALS['serveur_boussoles_disponibles']);
     142        }
     143
     144        // Mise à jour de la configuration migrée
     145        include_spip('inc/config');
     146        ecrire_config('boussole', $config);
     147
     148        spip_log('Maj 0.3 des données du plugin','boussole' . _LOG_INFO);
    91149}
    92150
  • _plugins_/boussole/trunk/boussole_options.php

    r74857 r74974  
    77if (!defined('_BOUSSOLE_ALIAS_SERVEUR'))
    88        define('_BOUSSOLE_ALIAS_SERVEUR', '');
    9 
    10 // Liste des serveurs disponibles pour le client du plugin Boussole
    11 // -- Par défaut, le serveur de la Galaxie SPIP est toujours disponible
    12 $GLOBALS['client_serveurs_disponibles']['spip'] = array(
    13         'api' => 'http://boussole.spip.net/spip.php?action=[action][arguments]');
    14 
    15 // Liste des boussoles "manuelles" (non fournies sous forme de plugin) disponibles sur le serveur
    16 // -- par défaut le serveur n'en contient aucune
    17 isset($GLOBALS['serveur_boussoles_disponibles']) AND $GLOBALS['serveur_boussoles_disponibles']
    18         ? $GLOBALS['serveur_boussoles_disponibles']
    19         : array();
    209?>
  • _plugins_/boussole/trunk/formulaires/ajouter_boussole.php

    r74837 r74974  
    5454        include_spip('inc/distant');
    5555
     56        // Détermination des serveurs configurés
     57        include_spip('inc/config');
     58        $serveurs = lire_config('boussole/client/serveurs_disponibles');
     59
    5660        // On boucle sur tous les serveurs configurés pour le site client
    5761        // -- pour chacun on acquiert la liste des boussoles disponibles
     
    5963        $message = '';
    6064        $index = 1;
    61         foreach($GLOBALS['client_serveurs_disponibles'] as $_serveur => $_infos) {
    62                 $action = str_replace(
    63                                         array('[action]','[arguments]'),
    64                                         array('serveur_lister_boussoles', ""),
    65                                         $_infos['api']);
     65        foreach($serveurs as $_serveur => $_infos) {
     66                $action = rtrim($_infos['url'], '/')
     67                                . "/spip.php?action=serveur_lister_boussoles";
    6668                $page = recuperer_page($action);
    6769
  • _plugins_/boussole/trunk/inc/cacher.php

    r74939 r74974  
    1818function boussole_actualiser_caches() {
    1919
     20        // Suppression de tous les caches afin de ne pas conserver des boussoles qui ne sont plus disponibles
     21        $dir_caches = _DIR_VAR . 'cache-boussoles';
     22        if ($fichiers_cache = glob($dir_caches . "/*.*")) {
     23                foreach ($fichiers_cache as $_fichier) {
     24                        supprimer_fichier($_fichier);
     25                }
     26        }
     27
     28
    2029        // Acquisition de la liste des boussoles disponibles sur le serveur.
    2130        // (on sait déjà que le mode serveur est actif)
    22         $boussoles = $GLOBALS['serveur_boussoles_disponibles'];
     31        include_spip('inc/config');
     32        $boussoles = lire_config('boussole/serveur/boussoles_disponibles');
    2333        $boussoles = pipeline('declarer_boussoles', $boussoles);
    2434
  • _plugins_/boussole/trunk/inc/deboussoler.php

    r74837 r74974  
    162162        $infos = array('erreur' => '');
    163163
     164        // Détermination des serveurs configurés
     165        include_spip('inc/config');
     166        $serveurs = lire_config('boussole/client/serveurs_disponibles');
     167
    164168        // Acquérir les informations de la boussole à partir du serveur
    165169        include_spip('inc/distant');
    166         $action = str_replace(
    167                                 array('[action]','[arguments]'),
    168                                 array('serveur_informer_boussole', "&arg=${boussole}"),
    169                                 $GLOBALS['client_serveurs_disponibles'][$serveur]['api']);
     170        $action = rtrim($serveurs[$serveur]['url'], '/')
     171                        . "/spip.php?action=serveur_informer_boussole&arg=${boussole}";
    170172        $page = recuperer_page($action);
    171173
  • _plugins_/boussole/trunk/lang/boussole_fr.php

    r74852 r74974  
    1010        'bouton_actualiser_caches' => 'Actualiser les caches',
    1111        'bouton_boussole' => 'Boussole',
     12        'bouton_retirer_serveur' => 'Retirer le serveur',
    1213        'bouton_supprimer' => 'Supprimer',
    1314        'bulle_afficher' => 'Afficher dans les modèles',
     
    2425        'colonne_prefixe_plugin' => 'Plugin ?',
    2526        'colonne_titre' => 'Titre',
     27        'colonne_url' => 'URL',
     28        'colonne_serveur' => 'Serveur',
    2629        'colonne_version' => 'Version',
    2730
     
    3740        'info_boite_boussoles_gerer_client' => '<strong>Cette page est uniquement accessible aux responsables du site.</strong><p>Elle permet l’ajout, la mise à jour et la suppression des boussoles en base de données en vue de leur affichage sur ce site. Il est aussi possible de se rendre sur la page de configuration de l\'affichage de chaque boussole en cliquant sur son nom dans la liste.</p>',
    3841        'info_boite_boussoles_gerer_serveur' => '<strong>Cette page est uniquement accessible aux responsables du site.</strong><p>Elle permet de mettre à jour manuellement le cache des boussoles hébergées par ce site serveur. Il est possible de télécharger les caches en cliquant sur leur nom dans la liste.</p>',
    39         'info_boussole_manuelle' => 'Manuelle',
     42        'info_boussole_manuelle' => 'Boussole Manuelle',
    4043        'info_cache_boussole' => 'Cache de la boussole «@boussole@»',
    4144        'info_cache_boussoles' => 'Cache des boussoles hébergées',
    4245        'info_configurer_boussole' => 'Ce formulaire vous permet de configurer l\'affichage de la boussole en choisissant les sites à afficher ou pas et l\'ordre d\'affichage dans un groupe. Les sites non affichés sont repérés par un fond hachuré et une police grise.',
     46        'info_ajouter_serveur' => 'Ce formulaire vous permet d\'ajouter un serveur de boussoles. Par défaut, le serveur &#171;spip&#187; est toujours disponible sur les sites client. La liste des serveurs disponibles est affichée ci-dessus et permet aussi de retirer un serveur configuré.',
     47        'info_url_serveur' => 'Saisissez l\'URL du serveur pour l\'ajouter à la liste.',
    4348        'info_fichier_boussole' => 'Saisissez l\'url du fichier de description de votre boussole',
    4449        'info_liste_aucun_cache' => 'Aucun cache n\'a encore été créé pour les boussoles hébérgées. Utilisez le bouton «actualiser les caches» pour les générer.',
     50        'info_liste_aucun_serveur' => 'Aucun serveur n\'a encore été configuré pour le site client.',
    4551        'info_liste_aucune_boussole' => 'Aucune boussole n\'a encore été chargée dans votre base. Utilisez le formulaire ci-dessous pour en ajouter.',
    4652        'info_site_boussole' => 'Ce site fait partie de la boussole :',
     
    8894        'label_ul_class' => 'Classe de la balise ul de la liste',
    8995        'label_url' => 'URL',
     96        'label_url_serveur' => 'URL du serveur',
    9097        'label_version' => 'Version',
    9198
     
    100107        'message_ok_boussole_actualisee' => 'La boussole « @fichier@ » a été mise à jour.',
    101108        'message_ok_boussole_ajoutee' => 'La boussole « @fichier@ » a été ajoutée.',
     109        'message_ok_serveur_ajoute' => 'Le serveur « @serveur@ » a été ajouté (@url@).',
    102110        'modele_boussole_liste_avec_logo' => 'Liste de liens avec noms, logos et description',
    103111        'modele_boussole_liste_par_groupe' => 'Liste de liens textuels par groupe',
     
    120128        'titre_boite_logo_boussole' => 'LOGO DE LA BOUSSOLE',
    121129        'titre_form_ajouter_boussole' => 'Ajouter ou mettre à jour une boussole',
     130        'titre_form_ajouter_serveur' => 'Ajouter un serveur de boussoles',
    122131        'titre_formulaire_configurer' => 'Configuration de l\'affichage de la boussole',
    123132        'titre_liste_boussoles' => 'Liste des boussoles disponibles à l\'affichage',
    124133        'titre_liste_caches' => 'Liste des caches des boussoles hébergées',
     134        'titre_liste_serveurs' => 'Liste des serveurs disponibles',
    125135        'titre_page_boussole' => 'Gestion des boussoles'
    126136);
  • _plugins_/boussole/trunk/paquet.xml

    r74940 r74974  
    22        prefix="boussole"
    33        categorie="navigation"
    4         version="2.1.9"
     4        version="2.2.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
    77        logo="boussole_logo-64.png"
    8         schema="0.2"
     8        schema="0.3"
    99        documentation="http://contrib.spip.net/Boussole-v2-nouveau-fonctionnement-client-serveur"
    1010>       
  • _plugins_/boussole/trunk/prive/squelettes/contenu/boussoles.html

    r74709 r74974  
    33
    44[(#REM) <!-- Suivant la fonction client ou serveur affichée, le contenu est soit :
    5         - la liste des boussoles et le formulaire d'ajout/mise à jour (client)
    6         - la liste des caches pour les boussoles hébergées
     5        - la liste des boussoles, le formulaire d'ajout/mise à jour des boussoles,
     6          la liste des serveurs et le formulaire d'ajout d'un serveur (client)
     7        - la liste des caches pour les boussoles hébergées (serveur)
    78 --> ]
    89
     
    1617                env, ajax} />
    1718
    18         [(#REM) <!-- Formulaire d'ajout ou de mise à jour manuelle d'une boussole --> ]
     19        [(#REM) <!-- Formulaire d'ajout ou de mise à jour manuelle d'une boussole en BDD --> ]
    1920        <div class="noajax">
    2021                #FORMULAIRE_AJOUTER_BOUSSOLE
     22        </div>
     23
     24        [(#REM) <!-- Liste des serveurs --> ]
     25        <INCLURE{fond=prive/squelettes/liste/serveurs,
     26                titre=<:boussole:titre_liste_serveurs:>,
     27                env, ajax} />
     28
     29        [(#REM) <!-- Formulaire d'ajout d'un serveur de boussoles --> ]
     30        <div class="noajax">
     31                #FORMULAIRE_AJOUTER_SERVEUR_BOUSSOLES
    2132        </div>
    2233]
  • _plugins_/boussole/trunk/prive/squelettes/liste/caches_fonctions.php

    r74796 r74974  
    99        if ($fichiers_cache = glob($dir_caches . "/boussole*.xml")) {
    1010                // (on sait déjà que le mode serveur est actif)
    11                 $boussoles = $GLOBALS['serveur_boussoles_disponibles'];
     11                include_spip('inc/config');
     12                $boussoles = lire_config('boussole/serveur/boussoles_disponibles');
    1213                $boussoles = pipeline('declarer_boussoles', $boussoles);
    1314
Note: See TracChangeset for help on using the changeset viewer.