Changeset 91578 in spip-zone


Ignore:
Timestamp:
Sep 2, 2015, 6:29:36 AM (6 years ago)
Author:
cedric@…
Message:

Supprimer les references en dur a l'objet article pour etre generique dans tout le code, et centraliser le choix de n'activer que sur les articles par defaut, ce qui ouvre la porte a une configuration

Location:
_plugins_/magnet/trunk
Files:
2 edited

Legend:

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

    r87647 r91578  
    22
    33if (!defined("_ECRIRE_INC_VERSION")) return;
     4
     5function magnet_actif_sur_objet($type){
     6        $type = objet_type($type);
     7        if (in_array($type,array('article'))){
     8                return true;
     9        }
     10        return false;
     11}
    412
    513/**
     
    1321function critere_magnet_dist($idb, &$boucles, $crit) {
    1422        $boucle = &$boucles[$idb];
    15         if ($boucle->type_requete=='articles'){
     23        if (magnet_actif_sur_objet($boucle->type_requete)){
    1624                $boucle->having[] = array($crit->not?"'='":"'<>'","'magnet'","0");
    1725        }
     
    3543
    3644/**
    37  * Critere {ignore_magnet} permet de desactiver la magnetisation des articles
     45 * Critere {ignore_magnet} permet de desactiver la magnetisation des objets
    3846 * qui retrouvent leur ordre naturel
    3947 * @param string $idb
     
    4351function critere_ignore_magnet_dist($idb, &$boucles, $crit) {
    4452        $boucle = &$boucles[$idb];
    45         if ($boucle->type_requete=='articles'){
     53        if (magnet_actif_sur_objet($boucle->type_requete)){
    4654                $boucle->modificateur['ignore_magnet'] = true;
    4755        }
     
    6270        }
    6371
    64         $_id = champ_sql('id_article', $p);
    65         $_objet = "\'article\'";
     72        if ($table = $p->type_requete){
     73                $type = objet_type($table);
     74                $_id = champ_sql(id_table_objet($type), $p);
     75                $_objet = "'$type'";
     76        }
     77        else {
     78                $_id = champ_sql('id_objet', $p);
     79                $_objet = champ_sql('objet', $p);
     80        }
    6681
    6782                $p->code = "
     
    7085          AND \$GLOBALS[\'visiteur_session\'][\'statut\']==\'0minirezo\'
    7186                AND (\$id = '.intval($_id).')
    72                 AND     include_spip(\'inc/autoriser\')
    73                 AND autoriser(\'administrermagnet\',$_objet,\$id)
     87                AND include_spip(\'inc/autoriser\')
     88                AND autoriser(\'administrermagnet\','.sql_quote($_objet).',\$id)
    7489                AND include_spip(\'magnet_fonctions\')) {
    7590                        echo \"<div class=\'boutons spip-admin actions magnets pile-'.$_pile.'\'>\"
    76                         . magnet_html_boutons_admin($_objet,\$id,\'admin-magnet\'$_pile_arg)
     91                        . magnet_html_boutons_admin('.sql_quote($_objet).',\$id,\'admin-magnet\'$_pile_arg)
    7792                        . \"<style>.bouton_action_post.spip-admin-boutons{display:none;}</style></div>\";
    7893                }
     
    85100
    86101/**
    87  * Inserer la clause order : le champ magnet prend 0 pour les articles non magnet et un indice croissant pour les articles magnet
     102 * Inserer la clause order : le champ magnet prend 0 pour les objets non magnet et un indice croissant pour les objets magnet
    88103 * le dernier magnetize arrive en premier
    89  * pour remonter un article magnet en tete il faut le demagnetizer/remagnetizer
     104 * pour remonter un objet magnet en tete il faut le demagnetizer/remagnetizer
    90105 * @param $boucle
    91106 * @return mixed
     
    94109        if (!isset($boucle->modificateur['ignore_magnet'])
    95110          AND (!test_espace_prive() OR isset($boucle->modificateur['criteres']['magnet']) OR isset($boucle->modificateur['criteres']['magnet_pile']))){
    96                 if ($boucle->type_requete=='articles'){
     111                if (magnet_actif_sur_objet($boucle->type_requete)){
    97112                        $pile = (isset($boucle->modificateur['magnet_pile'])?$boucle->modificateur['magnet_pile']:'');
    98113                        $meta_magnet = "magnet_" .($pile?$pile."_":""). $boucle->type_requete;
    99114                        $_id = $boucle->id_table . "." . $boucle->primary;
    100115                        $magnet = true;
    101                         // si la boucle a un critere id_article=xx non conditionnel on ne magnet pas (perf issue)
    102                         if (isset($boucle->modificateur['criteres']['id_article'])){
     116                        // si la boucle a un critere id_xxx=yy non conditionnel on ne magnet pas (perf issue)
     117                        if (isset($boucle->modificateur['criteres'][$boucle->primary])){
    103118                                foreach($boucle->where as $where){
    104119                                        if (is_array($where)
     
    184199
    185200/**
    186  * Ajouter un bouton pour magnetiser/demagnetiser un article
     201 * Ajouter un bouton pour magnetiser/demagnetiser un objet
    187202 * @param $flux
    188203 * @return mixed
    189204 */
    190205function magnet_formulaire_admin($flux){
    191         if ($flux['args']['contexte']['objet']=='article'
    192           AND $objet = $flux['args']['contexte']['objet']
     206        if (  $objet = $flux['args']['contexte']['objet']
     207          AND magnet_actif_sur_objet($objet)
    193208          AND $id_objet = intval($flux['args']['contexte']['id_objet'])
    194209          AND isset($GLOBALS['visiteur_session']['statut'])
     
    237252
    238253function magnet_boite_infos($flux){
    239         if ($flux['args']['type']=='article'
    240           AND $id_article = $flux['args']['id']){
    241                 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/magnet-admin',array('id_article'=>$id_article));
     254        if (magnet_actif_sur_objet($flux['args']['type'])
     255          AND $id = $flux['args']['id']){
     256                $flux['data'] .= recuperer_fond('prive/squelettes/inclure/magnet-admin',array('id_objet'=>$id,'objet'=>$flux['args']['type']));
    242257        }
    243258        return $flux;
  • _plugins_/magnet/trunk/paquet.xml

    r87647 r91578  
    22        prefix="magnet"
    33        categorie="outil"
    4         version="0.6.3"
     4        version="0.7.0"
    55        etat="test"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.