From ba095b08359412060c79a8f29685bd73cb218367 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Fri, 15 Apr 2011 08:50:37 +0000 Subject: [PATCH] =?UTF-8?q?Unification=20de=20l'API=20editer=5Fxxx=20des?= =?UTF-8?q?=20objets=20:=20on=20renomme=20de=20fa=C3=A7on=20coh=C3=A9rente?= =?UTF-8?q?=20pour=20tous=20les=20objets=20xxx=5Finserer=20xxx=5Fmodifier?= =?UTF-8?q?=20xxx=5Finstituer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les points d'entrée de l'API sont donc action_editer_xxx pour le traitement global d'un post xxx_inserer et xxx_modifier pour les operations elementaires xxx_instituer n'est pas un point d'entree et ne devrait pas etre appelee en direct : il faut passer par xxx_modifier. Le fichier inc/modifier contenait de façon centralisee des fonctions revision_xxx pour les objets historiques de SPIP (essentiellement utilisées par les crayons) Cette construction centralisée n'est pas facilement extensible. On evacue donc chaque fonction dans le action/edtier_xxx de l'objet concerné, et on propose en remplacement un point d'entrée unique revision_objet($objet,$id,$c) qui va dispatcher vers la fonction xxx_modifier de l'objet, ou a defaut la fonction generique objet_modifier de action/editer_objet. Les fonctions revision_xxx sont par ailleurs dépréciées. Les anciennes fonctions insert&set sont toujours definies et renvoie vers la fonction a nommage conventionnel, pour eviter trop de rupture de compatibilité --- action/ajouter_documents.php | 2 +- action/copier_local.php | 2 +- action/editer_document.php | 67 ++++++++++++++++++------------ action/supprimer_document.php | 2 +- formulaires/illustrer_document.php | 2 +- formulaires/joindre_document.php | 2 +- 6 files changed, 46 insertions(+), 31 deletions(-) diff --git a/action/ajouter_documents.php b/action/ajouter_documents.php index 8cbf139f..6a085a53 100644 --- a/action/ajouter_documents.php +++ b/action/ajouter_documents.php @@ -188,7 +188,7 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet, if (!$id_document) return _T('medias:erreur_insertion_document_base',array('fichier'=>"<em>".$file['name']."</em>")); - document_set($id_document,$champs); + document_modifier($id_document,$champs); // permettre aux plugins de faire des modifs a l'ajout initial // ex EXIF qui tourne les images si necessaire diff --git a/action/copier_local.php b/action/copier_local.php index ff0f6648..8c962d7e 100644 --- a/action/copier_local.php +++ b/action/copier_local.php @@ -68,7 +68,7 @@ function action_copier_local_post($id_document) { // ajouter l'origine du document aux credits include_spip('action/editer_document'); - document_set($id_document,array('credits'=>($row['credits']?$row['credits'].', ':'').$source)); + document_modifier($id_document,array('credits'=>($row['credits']?$row['credits'].', ':'').$source)); return true; } else { diff --git a/action/editer_document.php b/action/editer_document.php index 3488f7bd..43b72554 100644 --- a/action/editer_document.php +++ b/action/editer_document.php @@ -18,34 +18,24 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * * @return unknown */ -function action_editer_document_dist() { +function action_editer_document_dist($arg=null) { - $securiser_action = charger_fonction('securiser_action', 'inc'); - $arg = $securiser_action(); + if (is_null($arg)){ + $securiser_action = charger_fonction('securiser_action', 'inc'); + $arg = $securiser_action(); + } // Envoi depuis le formulaire de creation d'un document if (!$id_document = intval($arg)) { - $id_document = insert_document(); + $id_document = document_inserer(); } - if ($id_document = intval($id_document)) { - document_set($id_document); - } - // Erreur - else{ - include_spip('inc/headers'); - redirige_url_ecrire(); - } + if (!$id_document) + return array(0,''); // erreur - if (_request('redirect')) { - $redirect = parametre_url(urldecode(_request('redirect')), - 'id_document', $id_document, '&'); - - include_spip('inc/headers'); - redirige_par_entete($redirect); - } - else - return array($id_document,''); + $err = document_modifier($id_document); + + return array($id_document,$err); } /** @@ -53,7 +43,7 @@ function action_editer_document_dist() { * * @return unknown */ -function insert_document() { +function document_inserer() { $champs = array( 'statut' => 'prop', @@ -70,7 +60,16 @@ function insert_document() { ) ); $id_document = sql_insertq("spip_documents", $champs); - + pipeline('post_insertion', + array( + 'args' => array( + 'table' => 'spip_documents', + 'id_objet' => $id_document + ), + 'data' => $champs + ) + ); + return $id_document; } @@ -82,7 +81,7 @@ function insert_document() { * @param int $id_document * @param array $set */ -function document_set ($id_document, $set=false) { +function document_modifier($id_document, $set=false) { include_spip('inc/modifier'); // champs normaux @@ -129,7 +128,7 @@ function document_set ($id_document, $set=false) { // Changer le statut du document ? // le statut n'est jamais fixe manuellement mais decoule de celui des objets lies $champs = collecter_requests(array('parents','ajouts_parents'),array(),$set); - if(instituer_document($id_document,$champs)) { + if(document_instituer($id_document,$champs)) { // // Post-modifications @@ -149,7 +148,7 @@ function document_set ($id_document, $set=false) { * * @param int $id_document */ -function instituer_document($id_document,$champs=array()){ +function document_instituer($id_document,$champs=array()){ $statut=isset($champs['statut'])?$champs['statut']:null; $date_publication = isset($champs['date_publication'])?$champs['date_publication']:null; @@ -257,4 +256,20 @@ function medias_revision_document_parents($id_document, $parents=null, $ajout=fa objet_associer(array('document'=>$id_document),$objets_parents); } + + +// obsoletes +function insert_document() { + return document_inserer(); +} +function document_set($id_document, $set=false) { + return document_modifier($id_document, $set); +} +function instituer_document($id_document,$champs=array()){ + return document_instituer($id_document,$champs); +} +function revision_document($id_document, $c=false) { + return document_modifier($id_document,$c); +} + ?> diff --git a/action/supprimer_document.php b/action/supprimer_document.php index c606d199..a7b8ff20 100644 --- a/action/supprimer_document.php +++ b/action/supprimer_document.php @@ -27,7 +27,7 @@ function action_supprimer_document_dist($id_document=0) { // si c'etait une vignette, modifier le document source ! if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette='.intval($id_document))){ include_spip('action/editer_document'); - document_set($source,array("id_vignette" => 0)); + document_modifier($source,array("id_vignette" => 0)); } include_spip('inc/documents'); diff --git a/formulaires/illustrer_document.php b/formulaires/illustrer_document.php index 5dee1135..adcb1577 100644 --- a/formulaires/illustrer_document.php +++ b/formulaires/illustrer_document.php @@ -67,7 +67,7 @@ function formulaires_illustrer_document_traiter_dist($id_document){ if (is_int(reset($ajoute))){ $id_vignette = reset($ajoute); include_spip('action/editer_document'); - document_set($id_document,array("id_vignette" => $id_vignette,'mode'=>'document')); + document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document')); $res['message_ok'] = _T('medias:document_installe_succes'); } else diff --git a/formulaires/joindre_document.php b/formulaires/joindre_document.php index e80524d2..cf40fc7a 100644 --- a/formulaires/joindre_document.php +++ b/formulaires/joindre_document.php @@ -153,7 +153,7 @@ function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet= // lier le parent en plus $champs = array('ajout_parents' => array("$objet|$id_objet")); include_spip('action/editer_document'); - document_set($refdoc_joindre,$champs); + document_modifier($refdoc_joindre,$champs); set_request('refdoc_joindre',''); // vider la saisie $ancre = $refdoc_joindre; $sel[] = $refdoc_joindre; -- GitLab