spip_articles.x) $champs_normaux = array('titre', 'texte', 'descriptif'); // ne pas accepter de titre vide if (_request('titre', $c) === '') $c = set_request('titre', _T('ecrire:info_sans_titre'), $c); $champs = array(); foreach ($champs_normaux as $champ) { $val = _request($champ, $c); if ($val !== NULL) $champs[$champ] = corriger_caracteres($val); } // traitement de la rubrique parente // interdiction de deplacer vers ou a partir d'une rubrique // qu'on n'administre pas. $parent = ''; if (NULL !== ($id_parent = _request('id_parent', $c)) AND $id_parent != $id_rubrique // au fou ) { $id_parent = intval($id_parent); $s = spip_fetch_array(spip_query("SELECT * FROM spip_rubriques WHERE id_rubrique=".intval($id_rubrique))); $old_parent = $s['id_parent']; if ($id_parent != $old_parent AND autoriser('publierdans', 'rubrique', $id_parent) AND autoriser('publierdans', 'rubrique', $old_parent) ) { $champs['id_parent'] = $id_parent; } else { spip_log("deplacement de $id_rubrique vers $id_parent refuse a " . $GLOBALS['auteur_session']['id_auteur'] . ' '. $GLOBALS['auteur_session']['statut']); } } // si c'est une rubrique-secteur contenant des breves, ne deplacer // que si $confirme_deplace == 'oui', et changer l'id_rubrique des // breves en question if ($champs['id_parent'] AND _request('confirme_deplace', $c) == 'oui') { $id_secteur = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_parent")); if ($id_secteur= $id_secteur['id_secteur']) spip_query("UPDATE spip_breves SET id_rubrique=$id_secteur WHERE id_rubrique=$id_rubrique"); } // recuperer les extras if ($GLOBALS['champs_extra']) { include_spip('inc/extra'); if ($extra = extra_update('rubriques', $id_rubrique, $c)) $champs['extra'] = $extra; } // Envoyer aux plugins include_spip('inc/modifier'); # temporaire pour eviter un bug $champs = pipeline('pre_edition', array( 'args' => array( 'table' => 'spip_rubriques', 'id_objet' => $id_rubrique ), 'data' => $champs ) ); $update = array(); foreach ($champs as $champ => $val) $update[] = $champ . '=' . _q($val); if (!count($update)) return; spip_query("UPDATE spip_rubriques SET ".join(', ', $update)." WHERE id_rubrique=$id_rubrique"); if ($GLOBALS['meta']['activer_moteur'] == 'oui') { include_spip("inc/indexation"); marquer_indexer('spip_rubriques', $id_rubrique); } propager_les_secteurs(); calculer_rubriques(); calculer_langues_rubriques(); // invalider les caches marques de cette rubrique include_spip('inc/invalideur'); suivre_invalideur("id='id_rubrique/$id_rubrique'"); // Notification ? pipeline('post_edition', array( 'args' => array( 'table' => 'spip_rubriques', 'id_objet' => $id_rubrique ), 'data' => $champs ) ); } ?>