Changeset 60520 in spip-zone


Ignore:
Timestamp:
Apr 21, 2012, 9:25:14 AM (9 years ago)
Author:
cedric@…
Message:

Ferme http://core.spip.org/issues/2655 : eviter une erreur SQL lorsque un mot reste associé à une table qui n'existe plus (plugin supprimé)
corriger une coquille qui provoquait multiple recomptages identiques
corriger un defaut CSS sur les pages de groupes

Location:
_core_/plugins/mots
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _core_/plugins/mots/inc/mots.php

    r60185 r60520  
    1818
    1919function filtre_objets_associes_mot_dist($id_mot,$id_groupe) {
    20         static $occurences = array();
     20        static $occurrences = array();
    2121
    2222        // calculer tous les liens du groupe d'un coup
    23         if (!isset ($occurences[$id_groupe]))
     23        if (!isset ($occurrences[$id_groupe]))
    2424                $occurrences[$id_groupe] = calculer_utilisations_mots($id_groupe);
    2525
     
    4646{
    4747        $retour = array();
    48         $objets = sql_allfetsel('DISTINCT objet', array('spip_mots_liens AS L', 'spip_mots AS M'), array('L.id_mot=M.id_mot', 'M.id_groupe='.$id_groupe));
     48        $objets = sql_allfetsel('DISTINCT objet', array('spip_mots_liens AS L', 'spip_mots AS M'), array('L.id_mot=M.id_mot', 'M.id_groupe='.intval($id_groupe)));
    4949
    5050        foreach($objets as $o) {
     
    5353                $table_objet_sql = table_objet_sql($objet);
    5454                $infos = lister_tables_objets_sql($table_objet_sql);
    55                 // uniquement certains statut d'objet,
    56                 // et uniquement si la table dispose du champ statut.
    57                 $statuts = "";
    58                 if (isset($infos['field']['statut']) OR isset($infos['statut'][0]['champ'])) {
    59                         // on s'approche au mieux de la declaration de l'objet.
    60                         // il faudrait ameliorer ce point.
    61                         $c_statut = isset($infos['statut'][0]['champ']) ? $infos['statut'][0]['champ'] : 'statut';
    62                        
    63                         // bricoler les statuts d'apres la declaration de l'objet (champ previsu a defaut de mieux)
    64                         if (array_key_exists('previsu', $infos['statut'][0]) AND strlen($infos['statut'][0]['previsu'])>1) {
    65                                 $str_statuts = $infos['statut'][0]['previsu'];
    66                                 if ($GLOBALS['connect_statut'] !="0minirezo")
    67                                         $str_statuts = str_replace('prepa','',$str_statuts);
    68                                 $not = (substr($str_statuts, 0, 1) == '!'? 'NOT' : '');
    69                                 $str_statuts = str_replace('!','',$str_statuts);
    70                                 $Tstatuts = array_filter(explode(',', $str_statuts));
    71                                 $statuts = " AND " . sql_in("O.$c_statut",  $Tstatuts, $not);
     55                if (isset($infos['field']) AND $infos['field']){
     56                        // uniquement certains statut d'objet,
     57                        // et uniquement si la table dispose du champ statut.
     58                        $statuts = "";
     59                        if (isset($infos['field']['statut']) OR isset($infos['statut'][0]['champ'])) {
     60                                // on s'approche au mieux de la declaration de l'objet.
     61                                // il faudrait ameliorer ce point.
     62                                $c_statut = isset($infos['statut'][0]['champ']) ? $infos['statut'][0]['champ'] : 'statut';
     63
     64                                // bricoler les statuts d'apres la declaration de l'objet (champ previsu a defaut de mieux)
     65                                if (array_key_exists('previsu', $infos['statut'][0]) AND strlen($infos['statut'][0]['previsu'])>1) {
     66                                        $str_statuts = $infos['statut'][0]['previsu'];
     67                                        if ($GLOBALS['connect_statut'] !="0minirezo")
     68                                                $str_statuts = str_replace('prepa','',$str_statuts);
     69                                        $not = (substr($str_statuts, 0, 1) == '!'? 'NOT' : '');
     70                                        $str_statuts = str_replace('!','',$str_statuts);
     71                                        $Tstatuts = array_filter(explode(',', $str_statuts));
     72                                        $statuts = " AND " . sql_in("O.$c_statut",  $Tstatuts, $not);
     73                                }
     74                                // objets sans champ previsu ou avec un previsu == '!' (par ex les rubriques)
     75                                else
     76                                        $statuts = " AND " . sql_in("O.$c_statut",  ($GLOBALS['connect_statut'] =="0minirezo")  ? array('prepa','prop','publie') : array('prop','publie'));
    7277                        }
    73                         // objets sans champ previsu ou avec un previsu == '!' (par ex les rubriques)
    74                         else           
    75                                 $statuts = " AND " . sql_in("O.$c_statut",  ($GLOBALS['connect_statut'] =="0minirezo")  ? array('prepa','prop','publie') : array('prop','publie'));
    76                 }
    77                 $res = sql_allfetsel(
    78                         "COUNT(*) AS cnt, L.id_mot",
    79                         "spip_mots_liens AS L
    80                                 LEFT JOIN spip_mots AS M ON L.id_mot=M.id_mot
    81                                         AND L.objet=" . sql_quote($objet) . "
    82                                 LEFT JOIN " . $table_objet_sql . " AS O ON L.id_objet=O.$_id_objet" ,
    83                         "M.id_groupe=$id_groupe$statuts",
    84                         "L.id_mot");
    85         foreach($res as $row) {
    86                         $retour[$table_objet_sql][$row['id_mot']] = $row['cnt'];
     78                        $res = sql_allfetsel(
     79                                "COUNT(*) AS cnt, L.id_mot",
     80                                "spip_mots_liens AS L
     81                                        LEFT JOIN spip_mots AS M ON L.id_mot=M.id_mot
     82                                                AND L.objet=" . sql_quote($objet) . "
     83                                        LEFT JOIN " . $table_objet_sql . " AS O ON L.id_objet=O.$_id_objet" ,
     84                                "M.id_groupe=$id_groupe$statuts",
     85                                "L.id_mot");
     86                        foreach($res as $row) {
     87                                $retour[$table_objet_sql][$row['id_mot']] = $row['cnt'];
     88                        }
    8789                }
    8890        }
  • _core_/plugins/mots/paquet.xml

    r60256 r60520  
    22        prefix="mots"
    33        categorie="edition"
    4         version="2.4.5"
     4        version="2.4.6"
    55        etat="stable"
    66        compatibilite="[3.0.0-alpha2;["
  • _core_/plugins/mots/prive/style_prive_plugin_mots.html

    r60519 r60520  
    1616#HTTP_HEADER{Vary: Accept-Encoding}
    1717
    18 #SET{claire,##ENV{couleur_claire,edf3fe}}
    19 #SET{foncee,##ENV{couleur_foncee,3874b0}}
    20 #SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
    21 #SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
    22 #SET{rtl,#ENV{ltr}|choixsiegal{left,'',_rtl}}
    23 
    24 .item.message .rv {color:#666;font-size:0.9em;padding-#GET{left}:20px;background:url(#CHEMIN_IMAGE{heure-16.png}) no-repeat [(#GET{left}) ]top;}
    25 .item.message .rv.on {color:#000;background-image:url(#CHEMIN_IMAGE{heure-on-16.png});}
    26 
    27 .liste-objets.messages tr > .new,
    28 .liste-objets.messages tr > .type,
    29 .liste-objets.messages tr > .isrv {width: 16px; padding-left:2px;padding-right:2px;text-align:center;}
    30 .liste-objets.messages tr.new td {font-weight: bold;}
    31 
    32 /* exec=message */
    33 .message #wysiwyg {position: relative;}
    34 .message #wysiwyg .contenu_from .label,
    35 .message #wysiwyg .contenu_destinataires .label,
    36 .message #wysiwyg .contenu_titre .label,
    37 .message #wysiwyg .contenu_date_heure .label,
    38 .message #wysiwyg .contenu_date_fin .label {display: block;float:#GET{left};width:6em;clear:#GET{left};text-align:#GET{right};padding:0 10px;}
    39 .message #wysiwyg .contenu_date_heure img {vertical-align: middle;}
    40 .message #wysiwyg .contenu_date_fin img {vertical-align: middle;visibility: hidden;}
    41 .message #wysiwyg .contenu_from .spip_logos {position: absolute;#GET{right}: 0;top:0;}
    42 
    43 .message #wysiwyg .contenu_titre {display: block;}
    44 .message #wysiwyg .contenu_texte {clear:both;border-top: 1px solid #999;margin-top: 1em;padding-top: 1em;}
    45 
    46 /* formulaire editer_message */
    47 .formulaire_editer_message span.dest {padding:1px 3px;background:#EEE;border:1px solid #CCC;display:block;float:left;margin:0 4px 3px 0;}
    48 .formulaire_editer_message span.dest:hover {background:#DDD;}
    49 .formulaire_editer_message span.dest img {cursor:pointer;padding:1px;}
    50 .formulaire_editer_message .fake-input {background:#FFF;border:1px solid #999;padding: 3px 3px 0; width: 100%; box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box;-ms-box-sizing: border-box;}
    51 .formulaire_editer_message .fake-input input.text {width:200px;border: 0;padding: 1px 0;margin-bottom: 3px;}
    52 .formulaire_editer_message .editer_date_debut {padding-bottom: 0;}
    53 .formulaire_editer_message .editer_date_fin {padding-top: 0;}
    54 
    55 /* autocompletion */
    56 .formulaire_editer_message input.ac_loading {   background-image : url(#CHEMIN_IMAGE{'searching.gif'});background-position: right center;background-repeat: no-repeat;}
    57 /*.ac_input {   width: 200px; }*/
    58 .ac_results {   padding: 0px;   border: 1px solid WindowFrame;  background-color: Window;       text-align:left;z-index:1000;margin-top: 3px;margin-left: -3px;}
    59 .ac_results ul {        width: 100%;    overflow: hidden !important;list-style-position: outside;       list-style: none;       padding: 0;     margin: 0;}
    60 
    61 /*.ac_results iframe {position:absolute;        top:0;  left:0; z-index:-1;     filter:mask();  width:3000px;   height:3000px;}*/
    62 .ac_results li {        margin: 0px;    padding: 2px 5px;       cursor: pointer;        display: block; width: 100%;    font-size: 1em; overflow: hidden;}
    63 .ac_over {      background-color: Highlight;    color: HighlightText;}
    64 
    65 /* ?exec=messages*/
     18.groupe_mots #wysiwyg {clear:none;margin-#ENV{right}:100px;}
Note: See TracChangeset for help on using the changeset viewer.