Ignore:
Timestamp:
09/20/10 19:43:59 (10 years ago)
Author:
b_b
Message:

gérer les groupes de mots où unseul = non ; traiter les mots uniquement si un id_diogene est bien passé ; un pipeline déclaré en trop

Location:
plugins_spip/diogene_complements/diogene_mots
Files:
2 edited

Legend:

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

    r3980 r3985  
    2525                                //On récupÚre les mots qui sont peut être associés
    2626                                foreach($groupes_possibles as $groupe){
    27                                         $valeurs_mots['groupe_'.$groupe]        = sql_fetsel('mot.id_mot','spip_mots as mot left join spip_mots_articles as mots_articles ON (mot.id_mot=mots_articles.id_mot)','mots_articles.id_article='.intval($id_article).' AND mot.id_groupe='.intval($groupe));
     27                                        if (sql_getfetsel('unseul','spip_groupes_mots','id_groupe='.intval($groupe))== 'oui') {
     28                                                $valeurs_mots['groupe_'.$groupe] = sql_fetsel('mot.id_mot','spip_mots as mot left join spip_mots_articles as mots_articles ON (mot.id_mot=mots_articles.id_mot)','mots_articles.id_article='.intval($id_article).' AND mot.id_groupe='.intval($groupe));
     29                                        } else {
     30                                                $result = sql_select('mot.id_mot','spip_mots as mot left join spip_mots_articles as articles ON mot.id_mot=articles.id_mot','id_groupe='.intval($groupe).' AND id_article='.intval($id_article));
     31                                                while ($row = sql_fetch($result)) {
     32                                                        $valeurs_mots['groupe_'.$groupe][] = $row['id_mot'];
     33                                                }
     34                                        }       
    2835                                }
    2936                                if (is_array($valeurs_mots)) {
     
    6572        spip_log("DIOGENE_MOTS : Traitement des mots cles");
    6673       
    67         if ($flux['args']['type'] == 'article') {
     74        if (($flux['args']['type'] == 'article') AND ($id_diogene = _request('id_diogene'))) {
    6875                $id_article = $flux['args']['id_objet'];
    6976
    70                 $id_diogene = _request('id_diogene');
    7177                $diogene = sql_fetsel("*","spip_diogenes","id_diogene=$id_diogene");
    7278                $options_complements = unserialize($diogene['options_complements']);
     
    8389                include_spip('inc/editer_mots');
    8490                $groupes_possibles = array_merge($mots_obligatoires,$mots_facultatifs);
    85 
     91               
     92                $mots_multiples = array();
     93               
    8694                /*
    8795                 * On traite chaque groupe séparément
     
    9098                 */
    9199                foreach($groupes_possibles as $groupe){
    92                         $mots = sql_fetsel('mot.id_mot','spip_mots as mot left join spip_mots_articles as articles ON mot.id_mot=articles.id_mot','id_groupe='.intval($groupe).' AND id_article='.intval($id_article));
    93100                        /*
    94101                         * Si le select est multiple
    95102                         */
    96103                        if(is_array(_request('groupe_'.$groupe))){
     104                                $result = sql_select('mot.id_mot','spip_mots as mot left join spip_mots_articles as articles ON mot.id_mot=articles.id_mot','id_groupe='.intval($groupe).' AND id_article='.intval($id_article));
     105                                while ($row = sql_fetch($result)) {
     106                                        $mots_multiples[] = $row['id_mot'];
     107                                }
    97108                                foreach(_request('groupe_'.$groupe) as $cle => $mot){
    98109                                        /*
     
    100111                                         * de l'array des mots originaux
    101112                                         */
    102                                         if(in_array($mot, $mots)){
    103                                                 unset($mots[$cle]);
     113                                        if(in_array($mot, $mots_multiples)){
     114                                                unset($mots_multiples[$cle]);
    104115                                        }
    105116                                        else{
     
    112123                         */
    113124                        else{
    114                                 if(!is_array($mots)){
    115                                         $mots_tmp[] = $mots;
    116                                         $mots = $mots_tmp;
    117                                 }
    118                                 if(in_array(_request('groupe_'.$groupe), $mots)){
    119                                         unset($mots);
     125                                if(!is_array($mots_uniques = sql_fetsel('mot.id_mot','spip_mots as mot left join spip_mots_articles as mots_articles ON (mot.id_mot=mots_articles.id_mot)','mots_articles.id_article='.intval($id_article).' AND mot.id_groupe='.intval($groupe))))
     126                                        $mots_uniques = array();
     127                                if(in_array(_request('groupe_'.$groupe), $mots_uniques)){
     128                                        unset($mots_uniques);
    120129                                }
    121130                                else{
     
    124133                        }
    125134                        /*
    126                          * S'il reste quelque chose dans les mots d'origine, on les délie d l'article
     135                         * S'il reste quelque chose dans les mots d'origine, on les délie de l'article
    127136                         */
    128                         if(count($mots)>0){
    129                                 spip_log('on supprime des mots','emballe_media');
    130                                 spip_log($mots);
    131                                 sql_delete('spip_mots_articles','id_article='.intval($id_article).' AND id_mot IN ('.implode(',',$mots).')');
     137                        if(count($mots_uniques)>0){
     138                                sql_delete('spip_mots_articles','id_article='.intval($id_article).' AND id_mot IN ('.implode(',',$mots_uniques).')');
     139                        }
     140                        if(count($mots_multiples)>0){
     141                                sql_delete('spip_mots_articles','id_article='.intval($id_article).' AND id_mot IN ('.implode(',',$mots_multiples).')');
    132142                        }
    133143                }
  • plugins_spip/diogene_complements/diogene_mots/plugin.xml

    r3695 r3985  
    2727        </pipeline>
    2828        <pipeline>
    29                 <nom>diogene_ajout_media_post_charger</nom>
    30                 <inclure>diogene_mots_pipelines.php</inclure>
    31         </pipeline>
    32         <pipeline>
    3329                <nom>diogene_ajout_media_post_verifier</nom>
    3430                <inclure>diogene_mots_pipelines.php</inclure>
Note: See TracChangeset for help on using the changeset viewer.