Changeset 114475 in spip-zone


Ignore:
Timestamp:
Mar 14, 2019, 10:43:53 AM (5 months ago)
Author:
cedric@…
Message:

Un peu de refactoring + une balise #MAGNET_LISTE_IDS :
#MAGNET_LISTE_IDS{article} liste les id_article magnetises
#MAGNET_LISTE_IDS{article, selection} lise les id_article magnetises dans la pile 'selection'

Location:
_plugins_/magnet/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/magnet/trunk/magnet_fonctions.php

    r114473 r114475  
    2424        return false;
    2525}
     26
     27
     28/**
     29 * Recuperer la liste des ids d'un type d'objet
     30 * #MAGNET_LISTE_IDS{article}
     31 * #MAGNET_LISTE_IDS{article, maselection}
     32 *
     33 * Peut etre utilisee pour faire {id_article IN #MAGNET_LISTE_IDS{article}}
     34 * (alors equivalent a {magnet})
     35 *
     36 * @param object $p
     37 * @return object
     38 */
     39function balise_MAGNET_LISTE_IDS_dist($p) {
     40        $_objet = interprete_argument_balise(1,$p);
     41        if (!$_objet) {
     42                $err_b_s_a = array('zbug_balise_sans_argument', array('balise' => 'MAGNET_LISTE_IDS'));
     43                erreur_squelette($err_b_s_a, $p);
     44        }
     45        else {
     46                $_pile = interprete_argument_balise(2,$p);
     47                if (!$_pile) {
     48                        $_pile = "''";
     49                }
     50                $p->code = "magnet_liste_ids($_objet, $_pile, '')";
     51                var_dump($p->code);
     52        }
     53
     54        $p->interdire_scripts = false;
     55        return $p;
     56}
     57
    2658
    2759/**
     
    135167                if (magnet_actif_sur_objet($boucle->type_requete)){
    136168                        $pile = (isset($boucle->modificateur['magnet_pile'])?$boucle->modificateur['magnet_pile']:'');
    137                         $meta_magnet = "magnet_" .($pile?$pile."_":""). $boucle->type_requete;
    138169                        $_id = $boucle->id_table . "." . $boucle->primary;
    139170                        $magnet = true;
     
    150181                        }
    151182                        if ($magnet){
    152                                 $_list = "implode(',',array_reverse(array_map('intval',explode(',',isset(\$GLOBALS['meta']['$meta_magnet'])?\$GLOBALS['meta']['$meta_magnet']:'0'))))";
     183                                $_list = "implode(',',array_reverse(magnet_liste_ids('".addslashes($boucle->type_requete)."', '".addslashes($pile)."')))";
    153184                                $boucle->select[] = "FIELD($_id,\".$_list.\") as magnet";
    154185                                if (count($boucle->default_order) AND !count($boucle->order)){
     
    246277
    247278/**
     279 * Nom de la meta qui stocke les id magnets d'un objet et d'une pile
     280 * @param string $objet
     281 * @param string $pile
     282 *   nom de la pile ou sinon pile par defaut
     283 * @return string
     284 */
     285function magnet_nom_meta_pile($objet, $pile = '') {
     286        if (!function_exists('table_objet')) {
     287                include_spip('base/objets');
     288        }
     289        $meta_magnet = "magnet_"
     290                . ($pile ? $pile . "_" : "" )
     291                . table_objet($objet);
     292
     293        return $meta_magnet;
     294}
     295
     296/**
     297 * Lister les ids magnetises d'un objet et d'une pile
     298 * @param string $objet
     299 * @param string $pile
     300 * @param string $defaut
     301 *   valeur par defaut de la meta si non definie ou zero
     302 * @return array|string
     303 */
     304function magnet_liste_ids($objet, $pile, $defaut = '0') {
     305        $meta_magnet = magnet_nom_meta_pile($objet, $pile);
     306        // ne pas renvoyer une liste vide
     307        $ids = $defaut;
     308        if (isset($GLOBALS['meta'][$meta_magnet]) and $GLOBALS['meta'][$meta_magnet]) {
     309                $ids = trim($GLOBALS['meta'][$meta_magnet]);
     310        }
     311        if (!strlen($ids)) {
     312                return array();
     313        }
     314        $ids = explode(',', $ids);
     315        $ids = array_map('trim', $ids);
     316        $ids = array_map('intval', $ids);
     317        return $ids;
     318}
     319
     320/**
    248321 * Renvoie le rang de l'objet :
    249322 * 1 si arrive en tete de la boucle,
     
    257330 */
    258331function magnet_rang($objet, $id_objet, $pile=''){
    259         $meta_magnet = "magnet_" .($pile?$pile."_":""). table_objet($objet);
    260         $magnets = (isset($GLOBALS['meta'][$meta_magnet])?$GLOBALS['meta'][$meta_magnet]:'0');
    261         $magnets = explode(',',$magnets);
    262         if (!in_array($id_objet, $magnets))
     332        $magnets = magnet_liste_ids($objet, $pile, '');
     333        if (!in_array($id_objet, $magnets)) {
    263334                return false;
     335        }
    264336        return array_search($id_objet,$magnets)+1;
    265337}
     
    272344 */
    273345function magnet_count($objet, $pile=''){
    274         $meta_magnet = "magnet_" .($pile?$pile."_":""). table_objet($objet);
    275         $magnets = (isset($GLOBALS['meta'][$meta_magnet])?$GLOBALS['meta'][$meta_magnet]:'');
    276         $magnets = explode(',',$magnets);
     346        $magnets = magnet_liste_ids($objet, $pile, '');
    277347        return count($magnets);
    278348}
  • _plugins_/magnet/trunk/paquet.xml

    r114473 r114475  
    22        prefix="magnet"
    33        categorie="outil"
    4         version="0.7.8"
     4        version="0.8.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.