Changeset 48111 in spip-zone


Ignore:
Timestamp:
May 25, 2011, 6:23:58 PM (10 years ago)
Author:
eric@…
Message:

Ajout des champs version_spip, date_crea et date_modif dans la table plugins.
Ces champs sont une compilation des champs homonymes des paquets correspondants.
On en profite aussi pour traiter les intervalles de compatibilité à la mode nouvelle DTD

Location:
_plugins_/svp
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/svp/base/svp_declarer.php

    r48091 r48111  
    3333                "categorie"             => "varchar(100) DEFAULT '' NOT NULL",
    3434                "tags"                  => "text DEFAULT '' NOT NULL",
    35                 "version_spip"  => "varchar(24) DEFAULT '' NOT NULL",
     35                "nbr_sites"     => "integer DEFAULT 0 NOT NULL",
     36                "popularite"    => "double DEFAULT '0' NOT NULL",
    3637                "vmax"                  => "varchar(24) DEFAULT '' NOT NULL", // version la plus elevee des paquets du plugin
    37                 "nbr_sites"     => "integer DEFAULT 0 NOT NULL",
    38                 "popularite"    => "double DEFAULT '0' NOT NULL"
     38                "date_crea"             => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus ancienne des paquets du plugin
     39                "date_modif"    => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus recente des paquets du plugin
     40                "version_spip"  => "varchar(24) DEFAULT '' NOT NULL", // union des intervalles des paquets du plugin
    3941        );
    4042       
  • _plugins_/svp/inc/svp_depoter.php

    r48005 r48111  
    254254                $formater = charger_fonction('preparer_sql_' . $_infos['dtd'], 'plugins');
    255255                if ($champs_aplat = $formater($_infos['plugin'])) {
    256                         // Eclater les champs recuperer en deux sous tableaux, un par table (plugin, paquet)
    257                         // Cette fonction disparaitra quand les deux tables seront fusionnees
     256                        // Eclater les champs recuperes en deux sous tableaux, un par table (plugin, paquet)
    258257                        $champs = eclater_plugin_paquet($champs_aplat);
    259258
     
    409408        if (count($ids_a_supprimer) > 0)
    410409                svp_nettoyer_apres_actualisation($id_depot, $ids_a_supprimer, $versions_a_supprimer);
     410
     411        // On compile maintenant certaines informations des paquets mis a jour dans les plugins
     412        // (date de creation, date de modif, version spip...)
     413        svp_raffiner_plugins($id_depot);
    411414       
    412415        // Calcul des compteurs de paquets, plugins et contributions
     
    487490        return true;
    488491}
     492
     493
     494function svp_raffiner_plugins($id_depot) {
     495        include_spip('plugins/fusion_plugin');
     496
     497        // On limite la revue des paquets a ceux des plugins heberges par le depot en cours d'acutalisation
     498        if ($ids_plugin = sql_allfetsel('id_plugin', 'spip_depots_plugins', array('id_depot=' . sql_quote($id_depot)))) {
     499                // -- on commence donc par recuperer les id des plugins du depot
     500                $ids_plugin = array_map('reset', $ids_plugin);
     501       
     502                // -- on recupere tous les paquets associes aux plugins du depot et on compile les infos
     503                $plugin_en_cours = 0;
     504                if ($resultats = sql_select('id_plugin, version_spip, date_crea, date_modif',
     505                                                                        'spip_paquets',
     506                                                                        array(sql_in('id_plugin', $ids_plugin)), array(),
     507                                                                        array('id_plugin'))) {
     508                        while ($paquet = sql_fetch($resultats)) {
     509                                // On finalise le plugin en cours et on passe au suivant
     510                                if ($plugin_en_cours != $paquet['id_plugin']) {
     511                                        // On met a jour le plugin en cours
     512                                        if ($plugin_en_cours != 0)
     513                                                sql_updateq('spip_plugins',
     514                                                                        $complements,
     515                                                                        'id_plugin=' . sql_quote($plugin_en_cours));
     516                                        // On passe au plugin suivant
     517                                        $plugin_en_cours = $paquet['id_plugin'];
     518                                        $complements = array('version_spip' => '', 'date_crea' => 0, 'date_modif' => 0);
     519                                }
     520                               
     521                                // On compile les compléments du plugin avec le paquet courant
     522                                if ($paquet['date_modif'] > $complements['date_modif'])
     523                                        $complements['date_modif'] = $paquet['date_modif'];
     524                                if (($complements['date_crea'] === 0)
     525                                OR ($paquet['date_crea'] < $complements['date_crea']))
     526                                        $complements['date_crea'] = $paquet['date_crea'];
     527                                if ($paquet['version_spip'])
     528                                        if (!$complements['version_spip'])
     529                                                $complements['version_spip'] = $paquet['version_spip'];
     530                                        else
     531                                                fusionner_intervalles($paquet['version_spip'], $complements['version_spip']);
     532                        }
     533                }
     534               
     535        }
     536        return true;
     537}
     538
    489539
    490540function eclater_plugin_paquet($champs_aplat) {
  • _plugins_/svp/plugins/fusion_plugin.php

    r46468 r48111  
    8686
    8787        if ($intervalle
    88         AND preg_match(',^[\[\(]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-]*)[\]\)]$,Uis', $intervalle, $matches)) {
     88        AND preg_match(',^[\[\(\]]([0-9.a-zRC\s\-]*)[;]([0-9.a-zRC\s\-\*]*)[\]\)\[]$,Uis', $intervalle, $matches)) {
    8989                if ($matches[1]) {
    9090                        $bornes['min']['valeur'] = trim($matches[1]);
     
    100100}
    101101
    102 function contruire_intervalle($bornes) {
    103         return ($bornes['min']['incluse'] ? '[' : '(')
     102function contruire_intervalle($bornes, $dtd='paquet') {
     103        return ($bornes['min']['incluse'] ? '[' : ($dtd=='paquet' ? ']' : '('))
    104104                        . $bornes['min']['valeur'] . ';' . $bornes['max']['valeur']
    105                         . ($bornes['max']['incluse'] ? ']' : ')');
     105                        . ($bornes['max']['incluse'] ? ']' : ($dtd=='paquet' ? '[' : ')'));
    106106}
    107107?>
Note: See TracChangeset for help on using the changeset viewer.