Changeset 109668 in spip-zone
- Timestamp:
- Mar 25, 2018, 10:33:42 AM (3 years ago)
- Location:
- _plugins_/taxonomie/trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/taxonomie/trunk/formulaires/decrire_taxon.php
r109602 r109668 183 183 // Récupération des informations de base du taxon 184 184 $select = array('tsn', 'nom_scientifique', 'edite', $element, 'sources'); 185 $where = array('id_taxon=' . sql_quote($id_taxon));185 $where = array('id_taxon=' . intval($id_taxon)); 186 186 $taxon = sql_fetsel($select, 'spip_taxons', $where); 187 187 … … 232 232 $maj['sources'] = serialize($maj['sources']); 233 233 // - Mise à jour 234 sql_updateq('spip_taxons', $maj, 'id_taxon=' . sql_quote($id_taxon));234 sql_updateq('spip_taxons', $maj, 'id_taxon=' . intval($id_taxon)); 235 235 236 236 // Redirection vers la page d'édition du taxon -
_plugins_/taxonomie/trunk/paquet.xml
r109630 r109668 19 19 <pipeline nom="declarer_tables_interfaces" inclure="base/taxonomie_declarations.php" /> 20 20 <pipeline nom="pre_edition" inclure="taxonomie_pipelines.php" /> 21 <pipeline nom="post_edition" inclure="taxonomie_pipelines.php" /> 21 22 22 23 <necessite nom="saisies" compatibilite="[1.24.0;]" /> -
_plugins_/taxonomie/trunk/prive/objets/liste/taxons.html
r109662 r109668 34 34 <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]"> 35 35 <td class="picto">[(#CHEMIN_IMAGE{taxon-16.png}|balise_img)]</td> 36 <td class="statut">[(#STATUT| puce_statut{taxon,#ID_TAXON})]</td>36 <td class="statut">[(#STATUT|taxon_afficher_statut{#ID_TAXON})]</td> 37 37 <td class="titre principale nom_scientifique"> 38 38 [(#LOGO_TAXON|image_reduire{20,26})] -
_plugins_/taxonomie/trunk/taxonomie_autorisations.php
r109604 r109668 132 132 /** 133 133 * Autorisation de modifier le statut d'un taxon. 134 * Cela n'est possible que pour les espèces ne possédant aucun enfant. 134 * Cela n'est possible que : 135 * - si l'auteur possède l'autorisation de modifier le taxon 136 * - et le taxon est une espèce 137 * - et que l'espèce est soit une feuille de la hiérarchie soit possède des enfants dont aucun n'est au statut 138 * publié. 135 139 * 136 140 * @param object $faire … … 139 143 * @param object $qui 140 144 * @param object $opt 145 * 141 146 * @return 147 * `true`si autorisé, `false`sinon. 142 148 */ 143 149 function autoriser_taxon_instituer_dist($faire, $type, $id, $qui, $opt) { … … 146 152 147 153 if ($id_taxon = intval($id)) { 154 // On récupère les informations sur le taxon concerné et en particulier si celui-ci est bien une espèce 155 // ou un descendant d'espèce. 148 156 $from = 'spip_taxons'; 149 157 $where = array("id_taxon=$id_taxon"); 150 $espece = sql_getfetsel('espece', $from, $where); 151 152 $autoriser = (($espece == 'oui') and autoriser('modifier', 'taxon', $id_taxon, $qui, $opt)); 158 $select = array('espece', 'statut', 'tsn'); 159 $taxon = sql_fetsel($select, $from, $where); 160 161 if (($taxon['espece'] == 'oui') and autoriser('modifier', 'taxon', $id_taxon, $qui, $opt)) { 162 // On vérifie que l'espèce ne possède pas des descendants directs 163 $where = array('tsn_parent=' . intval($taxon['tsn'])); 164 $select = array('statut'); 165 $enfants = sql_allfetsel($select, $from, $where); 166 if (!$enfants) { 167 // Si le taxon est une feuille de la hiérarchie alors il peut toujours être institué. 168 $autoriser = true; 169 } else { 170 // Le taxon a des descendants. 171 // - si un descendants est publié alors l'espèce concernée l'est aussi et ne peut pas être 172 // instituée (prop ou poubelle) sous peine de casser la hiérarchie. 173 // - si aucun descendant n'est publié alors quelque soit le statut de l'espèce concernée celle-ci 174 // peut être instituée. 175 if (!in_array('publie', array_column($enfants, 'statut'))) { 176 $autoriser = true; 177 } 178 } 179 } 153 180 } 154 181 155 182 return $autoriser; 156 183 } 184 185 157 186 /** 158 187 * Autorisation de voir la liste des taxons : tout le monde est autorisé. -
_plugins_/taxonomie/trunk/taxonomie_fonctions.php
r109602 r109668 301 301 return $sources; 302 302 } 303 304 305 /** 306 * Affiche la puce de statut d'un taxon sans proposer le formulaire de changement de statut. 307 * 308 * @package SPIP\TAXONOMIE\TAXON 309 * 310 * @api 311 * @filtre 312 * 313 * @param string $statut 314 * Statut du taxon, `prop`, `publie`ou `poubelle`. 315 * @param int $id_taxon 316 * Id du taxon. 317 * 318 * @return array 319 * Image de la puce. 320 */ 321 function taxon_afficher_statut($statut, $id_objet = 0) { 322 323 // On évite de charger la fonction n fois. 324 static $afficher_puce = null; 325 326 if (!$afficher_puce) { 327 // Chargement de la fonction d'affichage 328 $afficher_puce = charger_fonction('puce_statut', 'inc'); 329 } 330 331 // On affiche la puce sans proposer le formulaire rapide de changement de statut qui pose un problème avec 332 // l'ajax sachant qu'un changement peut en provoquer d'autres, la liste n'est plus à jour. 333 $puce = $afficher_puce($id_objet, $statut, 0, 'taxon', false, false); 334 335 return $puce; 336 } -
_plugins_/taxonomie/trunk/taxonomie_pipelines.php
r109384 r109668 44 44 return $flux; 45 45 } 46 47 48 /** 49 * Surcharge l'action `instituer` d'un taxon. 50 * Si une espèce est instituée à publié, alors ses ascendants de type espèce non encore publiés sont automatiquement 51 * publiés. 52 * 53 * @pipeline pre_edition 54 * @package SPIP\TAXONOMIE\TAXON 55 * 56 * @param array $flux 57 * Données du pipeline fournie en entrée (chaque pipeline possède une structure de donnée propre). 58 * 59 * @return array 60 * Données du pipeline modifiées pour refléter le traitement. 61 * 62 **/ 63 function taxonomie_post_edition($flux) { 64 65 $table = $flux['args']['table']; 66 $id = intval($flux['args']['id_objet']); 67 $action = $flux['args']['action']; 68 69 // Traitements particuliers de l'objet taxon quand celui-ci est institué manuellement 70 if (($table == 'spip_taxons') and $id) { 71 // Instituer : on ne peut instituer qu'une espèce dont aucun enfant n'est publié. Il est donc inutile de 72 // considérer ces cas. 73 if ($action == 'instituer') { 74 // On vérifie qu'on institue l'espèce de 'prop' à 'publie'. Si c'est le cas, alors on vérifie 75 // qu'il est aussi nécessaire d'instituer à 'publie' les enfants de type espèce encore à prop. 76 $statut_nouveau = $flux['data']['statut']; 77 $statut_ancien = $flux['args']['statut_ancien']; 78 if (($statut_ancien == 'prop') and ($statut_nouveau == 'publie')) { 79 // On récupère le TSN et le TSN parent de l'espèce concernée. 80 $from = 'spip_taxons'; 81 $select = array('tsn', 'tsn_parent'); 82 $where = array("id_taxon=$id"); 83 $taxon = sql_fetsel($select, $from, $where); 84 85 // On récupère les ascendants de type espèce de l'espèce concernée si ils existent. 86 include_spip('taxonomie_fonctions'); 87 $ascendance = taxon_informer_ascendance($id, $taxon['tsn_parent'], 'ascendant'); 88 if ($ascendance) { 89 // On publie les taxons en évitant une ré-entrance (donc sans appeler l'api objet) 90 // mais en utilisant directement une mise à jour sql. 91 // include_spip('action/editer_objet'); 92 foreach ($ascendance as $_parent) { 93 if ($_parent['espece'] == 'oui') { 94 if (($_parent['statut'] <> 'publie')) { 95 $maj = array('statut' => $statut_nouveau, 'edite' => 'oui'); 96 sql_updateq($from, $maj, 'id_taxon=' . intval($_parent['id_taxon'])); 97 // objet_modifier('taxon', intval($_parent['id_taxon']), array('statut' => $statut_nouveau)); 98 } 99 } else { 100 // Dès que l'on est sur un taxon non espèce on peut s'arrêter vu que les ascendants sont 101 // classé du parent le plus proche au plus éloigné. 102 break; 103 } 104 } 105 } 106 } 107 } 108 } 109 110 return $flux; 111 }
Note: See TracChangeset
for help on using the changeset viewer.