Ignore:
Timestamp:
08/28/12 12:09:33 (7 years ago)
Author:
kent1
Message:

Le plugin diogene_mots devient générique... On peut ajouter des mots sur tous les objets et pas que les articles

Location:
plugins_spip/diogene_complements/diogene_mots/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/diogene_complements/diogene_mots/trunk/diogene_mots_pipelines.php

    r6923 r6939  
    1010 */
    1111function diogene_mots_diogene_ajouter_saisies($flux){
    12         $id_article = $flux['args']['contexte']['id_article'];
     12        $objet = $flux['args']['type'];
     13        $id_table_objet = id_table_objet($flux['args']['type']);
     14        $id_objet = $flux['args']['contexte'][$id_table_objet];
    1315        if (is_array(unserialize($flux['args']['champs_ajoutes'])) && in_array('mots',unserialize($flux['args']['champs_ajoutes']))) {
    1416
     
    2527                $valeurs_mots['id_groupes'] = $groupes_possibles = array_merge($mots_obligatoires,$mots_facultatifs);
    2628               
    27                 if (intval($id_article)) {                             
     29                if (intval($id_objet)) {                               
    2830                        //On récupÚre les mots qui sont peut être associés
    2931                        foreach($groupes_possibles as $groupe){
    3032                                if (sql_getfetsel('unseul','spip_groupes_mots','id_groupe='.intval($groupe))== 'oui') {
    31                                         $valeurs_mots['groupe_'.$groupe] = sql_fetsel('mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as mots_liens ON (mot.id_mot=mots_liens.id_mot)','mots_liens.objet="article" AND mots_liens.id_objet='.intval($id_article).' AND mot.id_groupe='.intval($groupe));
     33                                        $valeurs_mots['groupe_'.$groupe] = sql_fetsel('mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as mots_liens ON (mot.id_mot=mots_liens.id_mot)','mots_liens.objet='.sql_quote($objet).' AND mots_liens.id_objet='.intval($id_objet).' AND mot.id_groupe='.intval($groupe));
    3234                                }else {
    33                                         $result = sql_select('mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as mots_liens ON mot.id_mot=mots_liens.id_mot','mots_liens.objet="article" AND id_groupe='.intval($groupe).' AND mots_liens.id_objet='.intval($id_article));
     35                                        $result = sql_select('mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as mots_liens ON mot.id_mot=mots_liens.id_mot','mots_liens.objet='.sql_quote($objet).' AND mot.id_groupe='.intval($groupe).' AND mots_liens.id_objet='.intval($id_objet));
    3436                                        while ($row = sql_fetch($result)) {
    3537                                                $valeurs_mots['groupe_'.$groupe][] = $row['id_mot'];
     
    8284 */
    8385function diogene_mots_diogene_traiter($flux){
    84         if (($flux['args']['type'] == 'article') AND ($id_diogene = _request('id_diogene'))) {
    85                 $id_article = $flux['args']['id_objet'];
     86        $pipeline = pipeline('diogene_objets');
     87        if (in_array($flux['args']['type'],array_keys($pipeline)) && isset($pipeline[$flux['args']['type']]['champs_sup']['mots']) AND ($id_diogene = _request('id_diogene'))) {
     88                $id_objet = $flux['args']['id_objet'];
    8689
    8790                $diogene = sql_fetsel("*","spip_diogenes","id_diogene=".intval($id_diogene));
     
    101104                include_spip('inc/editer_mots');
    102105                $groupes_possibles = array_merge($mots_obligatoires,$mots_facultatifs);
    103                
     106
    104107                $mots_multiples = array();
    105108               
    106109                /**
    107110                 * On traite chaque groupe séparément
    108                  * Si c'est une modification d'article il se peut qu'il faille supprimer les anciens mots
     111                 * Si c'est une modification d'objet il se peut qu'il faille supprimer les anciens mots
    109112                 * On fait une vérifications sur chaque groupe
    110113                 */
     
    114117                         */
    115118                        if(is_array(_request('groupe_'.$groupe))){
    116                                 $result = sql_select('0+mot.titre AS num, mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as liens ON mot.id_mot=liens.id_mot','liens.objet="article" AND id_groupe='.intval($groupe).' AND liens.id_objet='.intval($id_article),'','num, mot.titre');
     119                                $result = sql_select('0+mot.titre AS num, mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as liens ON mot.id_mot=liens.id_mot','liens.objet="'.$flux['args']['type'].'" AND id_groupe='.intval($groupe).' AND liens.id_objet='.intval($id_objet),'','num, mot.titre');
    117120                                while ($row = sql_fetch($result)) {
    118121                                        $mots_multiples[] = $row['id_mot'];
     
    127130                                        }
    128131                                        else{
    129                                                 sql_insertq('spip_mots_liens', array('id_mot' =>$mot,  'id_objet' => $id_article,'objet'=> 'article'));
     132                                                sql_insertq('spip_mots_liens', array('id_mot' =>$mot,  'id_objet' => $id_objet,'objet'=> $flux['args']['type']));
    130133                                        }
    131134                                }
     
    135138                         */
    136139                        else{
    137                                 if(!is_array($mots_uniques = sql_fetsel('mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as liens ON (mot.id_mot=liens.id_mot)','liens.objet="article" AND liens.id_objet='.intval($id_article).' AND mot.id_groupe='.intval($groupe))))
     140                                if(!is_array($mots_uniques = sql_fetsel('mot.id_mot','spip_mots as mot LEFT JOIN spip_mots_liens as liens ON (mot.id_mot=liens.id_mot)','liens.objet="'.$flux['args']['type'].'" AND liens.id_objet='.intval($id_objet).' AND mot.id_groupe='.intval($groupe))))
    138141                                        $mots_uniques = array();
    139142                                if(in_array(_request('groupe_'.$groupe), $mots_uniques)){
     
    141144                                }
    142145                                else{
    143                                         sql_insertq('spip_mots_liens', array('id_mot' =>_request('groupe_'.$groupe),  'id_objet' => $id_article,'objet'=>'article'));
     146                                        sql_insertq('spip_mots_liens', array('id_mot' =>_request('groupe_'.$groupe),  'id_objet' => $id_objet,'objet'=>$flux['args']['type']));
    144147                                }
    145148                        }
    146149                        /**
    147                          * S'il reste quelque chose dans les mots d'origine, on les délie de l'article
     150                         * S'il reste quelque chose dans les mots d'origine, on les délie de l'objet
    148151                         */
    149152                        if(count($mots_uniques)>0){
    150                                 sql_delete('spip_mots_liens','objet="article" AND id_objet='.intval($id_article).' AND id_mot IN ('.implode(',',$mots_uniques).')');
     153                                sql_delete('spip_mots_liens','objet="'.$flux['args']['type'].'" AND id_objet='.intval($id_objet).' AND id_mot IN ('.implode(',',$mots_uniques).')');
    151154                        }
    152155                        if(count($mots_multiples)>0){
    153                                 sql_delete('spip_mots_liens','objet="article" AND id_objet='.intval($id_article).' AND id_mot IN ('.implode(',',$mots_multiples).')');
     156                                sql_delete('spip_mots_liens','objet="'.$flux['args']['type'].'" AND id_objet='.intval($id_objet).' AND id_mot IN ('.implode(',',$mots_multiples).')');
    154157                        }
    155158                }
  • plugins_spip/diogene_complements/diogene_mots/trunk/paquet.xml

    r6923 r6939  
    22        prefix="diogene_mots"
    33        categorie="edition"
    4         version="1.1.0"
     4        version="1.2.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.99]"
Note: See TracChangeset for help on using the changeset viewer.