Changeset 48472 in spip-zone


Ignore:
Timestamp:
Jun 4, 2011, 8:22:05 AM (10 years ago)
Author:
eric@…
Message:

On rétablit un critère compatible_spip qui fonctionne sur les branches spip collectées et stockées en base (Merci Denisb !!!).
Ajout de pages de tests

Location:
_plugins_/svp
Files:
1 added
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/svp/svp_fonctions.php

    r48411 r48472  
    296296
    297297/**
    298  * Critere de compatibilite avec une version de SPIP :
     298 * Critere de compatibilite avec une branche de SPIP :
    299299 * Fonctionne sur les tables spip_paquets et spip_plugins
     300 * en utilisant la fonction SQL LOCATE sur le champ branches_spip
    300301 *
    301  *   {compatible_spip}
    302  *       le ! (NOT) ne peut pas s'appliquer
    303  *       si 'compatible_spip' pas dans #ENV => tout
    304  *   {compatible_spip 2.0}
    305  *       le ! (NOT) est appliquable
    306  *   {compatible_spip #ENV{vers}} ou {compatible_spip #ENV{vers, 1.9.2}}
    307  *       le ! (NOT) est appliquable
    308  *       si 'vers' pas dans #ENV => $GLOBALS['spip_version_branche']
    309  *   {compatible_spip #GET{vers}} ou {compatible_spip #GET{vers, 1.9.2}}
    310  *       le ! (NOT) est appliquable
    311  *       si 'vers' pas dans #GET => $GLOBALS['spip_version_branche']
     302 *   {branche_spip}
     303 *   {branche_spip 2.0}
     304 *   {branche_spip #ENV{vers}} ou {branche_spip #ENV{vers, 1.9}}
     305 *   {branche_spip #GET{vers}} ou {branche_spip #GET{vers, 1.9}}
     306 *
     307 *   si aucune valeur explicite (dans le critère, par #ENV, par #SET)
     308 *   tous les enregistrements sont retournés.
    312309 */
    313310function critere_compatible_spip_dist($idb, &$boucles, $crit) {
    314311
    315312        $boucle = &$boucles[$idb];
    316         $not = ($crit->not == '!') ? 'NOT' : '';
    317 
    318         $boucle->hash .= '
    319         // COMPATIBILITE SPIP
    320         $liste_compat = charger_fonction(\'svp_lister_compatibles\', \'inc\');';
    321 
    322         // version explicite dans l'appel du critere
     313       
     314        // Si on utilise ! la fonction LOCATE doit retourner 0.
     315        $op = ($crit->not == '!') ? '=' : '>';
     316
     317        // version explicite dans l'appel du critere.
    323318        if (isset($crit->param[0][0])) {
    324319                $version = calculer_liste(array($crit->param[0][0]), array(), $boucles, $boucle->id_parent);
    325320                $boucle->hash .= '
    326                 $where = sql_in(\''.$boucle->id_table.'.'.$boucle->primary.'\', $liste_compat('.$version.', \''.$boucle->id_table.'\', \''.$boucle->primary.'\'), \''.$not.'\');
     321                $where = \'LOCATE(\\\'\'.'.$version.'.\'\\\', '.$boucle->id_table.'.branches_spip) '.$op.' 0\';
    327322                ';
    328323        }
    329324        // pas de version explicite dans l'appel du critere
    330         // on regarde si elle est dans le contexte
     325        // on regarde si elle est dans le contexte.
     326        // (derogatoire du ?)
    331327        else {
    332328                $boucle->hash .= '
    333                 $where = isset($Pile[0][\'compatible_spip\']) ?
    334                         sql_in(\''.$boucle->id_table.'.'.$boucle->primary.'\', $liste_compat($Pile[0][\'compatible_spip\'], \''.$boucle->id_table.'\', \''.$boucle->primary.'\'), \''.$not.'\')
    335                         :
    336                         \'1=1\';
     329                $where = isset($Pile[0][\'branche_spip\']) ?
     330                \'LOCATE(\\\'\'.$Pile[0][\'branche_spip\'].\'\\\', '.$boucle->id_table.'.branches_spip) '.$op.' 0\' : \'1=1\';
    337331                ';
    338332        }
Note: See TracChangeset for help on using the changeset viewer.