[ Index ] |
|
Code source de SPIP 1.9.2c |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2007 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 14 15 include_spip('inc/rubriques'); 16 17 // http://doc.spip.org/@action_editer_rubrique_dist 18 function action_editer_rubrique_dist() { 19 20 $securiser_action = charger_fonction('securiser_action', 'inc'); 21 $arg = $securiser_action(); 22 23 if (!$id_rubrique = intval($arg)) { 24 if ($arg != 'oui') redirige_par_entete('./'); 25 $id_rubrique = insert_rubrique(_request('id_parent')); 26 } 27 28 revisions_rubriques($id_rubrique); 29 30 $redirect = parametre_url( 31 urldecode(_request('redirect')), 32 'id_rubrique', $id_rubrique, '&'); 33 redirige_par_entete($redirect); 34 } 35 36 37 // http://doc.spip.org/@insert_rubrique 38 function insert_rubrique($id_parent) { 39 include_spip('base/abstract_sql'); 40 return spip_abstract_insert("spip_rubriques", 41 "(titre, id_parent)", 42 "('"._T('item_nouvelle_rubrique')."', ".intval($id_parent).")" 43 ); 44 } 45 46 // Enregistrer certaines modifications d'une rubrique 47 // $c est un tableau qu'on peut proposer en lieu et place de _request() 48 // http://doc.spip.org/@revisions_rubriques 49 function revisions_rubriques($id_rubrique, $c=false) { 50 include_spip('inc/autoriser'); 51 include_spip('inc/filtres'); 52 53 // Ces champs seront pris nom pour nom (_POST[x] => spip_articles.x) 54 $champs_normaux = array('titre', 'texte', 'descriptif'); 55 56 // ne pas accepter de titre vide 57 if (_request('titre', $c) === '') 58 $c = set_request('titre', _T('ecrire:info_sans_titre'), $c); 59 60 $champs = array(); 61 foreach ($champs_normaux as $champ) { 62 $val = _request($champ, $c); 63 if ($val !== NULL) 64 $champs[$champ] = corriger_caracteres($val); 65 } 66 67 // traitement de la rubrique parente 68 // interdiction de deplacer vers ou a partir d'une rubrique 69 // qu'on n'administre pas. 70 $parent = ''; 71 if (NULL !== ($id_parent = _request('id_parent', $c)) 72 AND $id_parent != $id_rubrique // au fou 73 ) { 74 $id_parent = intval($id_parent); 75 $s = spip_fetch_array(spip_query("SELECT * FROM spip_rubriques WHERE id_rubrique=".intval($id_rubrique))); 76 $old_parent = $s['id_parent']; 77 78 if ($id_parent != $old_parent 79 AND autoriser('publierdans', 'rubrique', $id_parent) 80 AND autoriser('publierdans', 'rubrique', $old_parent) 81 ) { 82 $champs['id_parent'] = $id_parent; 83 } else { 84 spip_log("deplacement de $id_rubrique vers $id_parent refuse a " . $GLOBALS['auteur_session']['id_auteur'] . ' '. $GLOBALS['auteur_session']['statut']); 85 } 86 } 87 88 // si c'est une rubrique-secteur contenant des breves, ne deplacer 89 // que si $confirme_deplace == 'oui', et changer l'id_rubrique des 90 // breves en question 91 if ($champs['id_parent'] 92 AND _request('confirme_deplace', $c) == 'oui') { 93 $id_secteur = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_parent")); 94 if ($id_secteur= $id_secteur['id_secteur']) 95 spip_query("UPDATE spip_breves SET id_rubrique=$id_secteur WHERE id_rubrique=$id_rubrique"); 96 } 97 98 // recuperer les extras 99 if ($GLOBALS['champs_extra']) { 100 include_spip('inc/extra'); 101 if ($extra = extra_update('rubriques', $id_rubrique, $c)) 102 $champs['extra'] = $extra; 103 } 104 105 // Envoyer aux plugins 106 include_spip('inc/modifier'); # temporaire pour eviter un bug 107 $champs = pipeline('pre_edition', 108 array( 109 'args' => array( 110 'table' => 'spip_rubriques', 111 'id_objet' => $id_rubrique 112 ), 113 'data' => $champs 114 ) 115 ); 116 117 $update = array(); 118 foreach ($champs as $champ => $val) 119 $update[] = $champ . '=' . _q($val); 120 121 if (!count($update)) return; 122 123 spip_query("UPDATE spip_rubriques SET ".join(', ', $update)." WHERE id_rubrique=$id_rubrique"); 124 125 if ($GLOBALS['meta']['activer_moteur'] == 'oui') { 126 include_spip("inc/indexation"); 127 marquer_indexer('spip_rubriques', $id_rubrique); 128 } 129 130 propager_les_secteurs(); 131 132 calculer_rubriques(); 133 calculer_langues_rubriques(); 134 135 // invalider les caches marques de cette rubrique 136 include_spip('inc/invalideur'); 137 suivre_invalideur("id='id_rubrique/$id_rubrique'"); 138 139 // Notification ? 140 pipeline('post_edition', 141 array( 142 'args' => array( 143 'table' => 'spip_rubriques', 144 'id_objet' => $id_rubrique 145 ), 146 'data' => $champs 147 ) 148 ); 149 150 } 151 152 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |