Changeset 93617 in spip-zone for _core_/plugins/mots/inc/mots.php
- Timestamp:
- Dec 13, 2015, 11:44:49 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
_core_/plugins/mots/inc/mots.php
r93092 r93617 12 12 13 13 /** 14 * Déclaration de filtres pour les squelettes 14 * Déclaration de filtres pour les squelettes 15 15 * 16 16 * @package SPIP\Mots\Filtres 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) { 19 return; 20 } 19 21 20 22 include_spip('inc/presentation'); … … 27 29 * 28 30 * @pipeline_appel afficher_nombre_objets_associes_a 29 * 31 * 30 32 * @param int $id_mot 31 33 * Identifiant du mot clé … … 34 36 * @return string[] 35 37 * Tableau de textes indiquant le nombre d'éléments tel que '3 articles' 36 **/38 **/ 37 39 function filtre_objets_associes_mot_dist($id_mot, $id_groupe) { 38 40 static $occurrences = array(); 39 41 40 42 // calculer tous les liens du groupe d'un coup 41 if (!isset ($occurrences[$id_groupe])) 43 if (!isset ($occurrences[$id_groupe])) { 42 44 $occurrences[$id_groupe] = calculer_utilisations_mots($id_groupe); 45 } 43 46 44 47 $associes = array(); 45 48 $tables = lister_tables_objets_sql(); 46 foreach ($tables as $table_objet_sql =>$infos) {49 foreach ($tables as $table_objet_sql => $infos) { 47 50 $nb = (isset($occurrences[$id_groupe][$table_objet_sql][$id_mot]) ? $occurrences[$id_groupe][$table_objet_sql][$id_mot] : 0); 48 if ($nb) 49 $associes[] = objet_afficher_nb($nb,$infos['type']); 51 if ($nb) { 52 $associes[] = objet_afficher_nb($nb, $infos['type']); 53 } 50 54 } 51 55 52 $associes = pipeline('afficher_nombre_objets_associes_a',array('args'=>array('objet'=>'mot','id_objet'=>$id_mot),'data'=>$associes)); 56 $associes = pipeline('afficher_nombre_objets_associes_a', 57 array('args' => array('objet' => 'mot', 'id_objet' => $id_mot), 'data' => $associes)); 58 53 59 return $associes; 54 60 … … 65 71 * Mots est un tableau de couples (id_mot => nombre d'utilisation) 66 72 */ 67 function calculer_utilisations_mots($id_groupe) 68 { 73 function calculer_utilisations_mots($id_groupe) { 69 74 $retour = array(); 70 $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))); 75 $objets = sql_allfetsel('DISTINCT objet', array('spip_mots_liens AS L', 'spip_mots AS M'), 76 array('L.id_mot=M.id_mot', 'M.id_groupe=' . intval($id_groupe))); 71 77 72 foreach ($objets as $o) {73 $objet =$o['objet'];78 foreach ($objets as $o) { 79 $objet = $o['objet']; 74 80 $_id_objet = id_table_objet($objet); 75 81 $table_objet_sql = table_objet_sql($objet); 76 82 $infos = lister_tables_objets_sql($table_objet_sql); 77 if (isset($infos['field']) AND $infos['field']) {83 if (isset($infos['field']) AND $infos['field']) { 78 84 // uniquement certains statut d'objet, 79 85 // et uniquement si la table dispose du champ statut. … … 85 91 86 92 // bricoler les statuts d'apres la declaration de l'objet (champ previsu a defaut de mieux) 87 if (array_key_exists('previsu', $infos['statut'][0]) AND strlen($infos['statut'][0]['previsu']) >1) {93 if (array_key_exists('previsu', $infos['statut'][0]) AND strlen($infos['statut'][0]['previsu']) > 1) { 88 94 $str_statuts = $infos['statut'][0]['previsu']; 89 if ($GLOBALS['connect_statut'] !="0minirezo") 90 $str_statuts = str_replace('prepa','',$str_statuts); 91 $not = (substr($str_statuts, 0, 1) == '!'? 'NOT' : ''); 92 $str_statuts = str_replace('!','',$str_statuts); 95 if ($GLOBALS['connect_statut'] != "0minirezo") { 96 $str_statuts = str_replace('prepa', '', $str_statuts); 97 } 98 $not = (substr($str_statuts, 0, 1) == '!' ? 'NOT' : ''); 99 $str_statuts = str_replace('!', '', $str_statuts); 93 100 $Tstatuts = array_filter(explode(',', $str_statuts)); 94 $statuts = " AND " . sql_in("O.$c_statut", $Tstatuts, $not); 101 $statuts = " AND " . sql_in("O.$c_statut", $Tstatuts, $not); 102 } // objets sans champ previsu ou avec un previsu == '!' (par ex les rubriques) 103 else { 104 $statuts = " AND " . sql_in("O.$c_statut", 105 ($GLOBALS['connect_statut'] == "0minirezo") ? array('prepa', 'prop', 'publie') : array('prop', 'publie')); 95 106 } 96 // objets sans champ previsu ou avec un previsu == '!' (par ex les rubriques)97 else98 $statuts = " AND " . sql_in("O.$c_statut", ($GLOBALS['connect_statut'] =="0minirezo") ? array('prepa','prop','publie') : array('prop','publie'));99 107 } 100 108 $res = sql_allfetsel( … … 103 111 LEFT JOIN spip_mots AS M ON L.id_mot=M.id_mot 104 112 AND L.objet=" . sql_quote($objet) . " 105 LEFT JOIN " . $table_objet_sql . " AS O ON L.id_objet=O.$_id_objet" 113 LEFT JOIN " . $table_objet_sql . " AS O ON L.id_objet=O.$_id_objet", 106 114 "M.id_groupe=$id_groupe$statuts", 107 115 "L.id_mot"); 108 foreach ($res as $row) {116 foreach ($res as $row) { 109 117 $retour[$table_objet_sql][$row['id_mot']] = $row['cnt']; 110 118 } … … 114 122 return $retour; 115 123 } 124 116 125 ?>
Note: See TracChangeset
for help on using the changeset viewer.