Ignore:
Timestamp:
Sep 3, 2012, 8:10:07 PM (7 years ago)
Author:
marcimat@…
Message:

Poursuite du passage à SPIP 3 du plugin dictionnaire. On utilise l'api d'objets éditoriaux et on ne met que les squelettes nécessaires dans le plugin. Au passage on PHPDoc toutes les fonctions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/dictionnaires/trunk/action/editer_dictionnaire.php

    r57283 r65485  
    11<?php
     2
     3/**
     4 * Gestion de l'action editer_dictionnaire
     5 *
     6 * @package SPIP\Dictionnaires\Actions
     7 */
    28
    39// Sécurité
    410if (!defined('_ECRIRE_INC_VERSION')) return;
    511
    6 /**
    7  * Action de création / Modification d'un dictionnaire
    8  * @param unknown_type $arg
    9  * @return unknown_type
    10  */
     12
     13/**
     14 * Action d'édition d'un dictionnaire dans la base de données dont
     15 * l'identifiant est donné en paramètre de cette fonction ou
     16 * en argument de l'action sécurisée
     17 *
     18 * Si aucun identifiant n'est donné, on crée alors un nouveau dictionnaire.
     19 *
     20 * @param null|int $arg
     21 *     Identifiant du dictionnaire. En absence utilise l'argument
     22 *     de l'action sécurisée.
     23 * @return array
     24 *     Liste (identifiant du dictionnaire, Texte d'erreur éventuel)
     25**/
    1126function action_editer_dictionnaire_dist($arg=null) {
    1227        if (is_null($arg)){
     
    2338        if ($id_dictionnaire > 0) $err = dictionnaire_set($id_dictionnaire);
    2439
    25         if (_request('redirect')) {
    26                 $redirect = parametre_url(urldecode(_request('redirect')),
    27                         'id_dictionnaire', $id_dictionnaire, '&') . $err;
    28 
    29                 include_spip('inc/headers');
    30                 redirige_par_entete($redirect);
    31         }
    32         else
    33                 return array($id_dictionnaire,$err);
     40        return array($id_dictionnaire,$err);
    3441}
    3542
     
    3744 * Crée un nouveau dictionnaire et retourne son ID
    3845 *
    39  * @param array $champs Un tableau avec les champs par défaut lors de l'insertion
    40  * @return int id_dictionnaire
     46 * @param array $champs
     47 *     Un tableau avec les champs par défaut lors de l'insertion
     48 * @return int
     49 *     Identifiant du nouveau dictionnaire
    4150 */
    4251function insert_dictionnaire($champs=array()) {
     
    6776
    6877/**
    69  * Appelle la fonction de modification d'un dictionnaire
    70  *
     78 * Modifier un dictionnaire
     79 * 
    7180 * @param int $id_dictionnaire
    72  * @param unknown_type $set
    73  * @return $err
     81 *     Identifiant du dictionnaire à modifier
     82 * @param array|null $set
     83 *     Couples (colonne => valeur) de données à modifier.
     84 *     En leur absence, on cherche les données dans les champs éditables
     85 *     qui ont été postés (via _request())
     86 * @return string|null
     87 *     Chaîne vide si aucune erreur,
     88 *     Null si aucun champ à modifier,
     89 *     Chaîne contenant un texte d'erreur sinon.
    7490 */
    7591function dictionnaire_set($id_dictionnaire, $set=null) {
    7692        $err = '';
    7793
    78         include_spip('inc/saisies');
    79         $saisies = saisies_chercher_formulaire('editer_dictionnaire', array($id_dictionnaire));
    80         $champs = saisies_lister_champs($saisies, false);
    81        
    82         $c = array();
    83         foreach ($champs as $champ)
    84                 $c[$champ] = _request($champ,$set);
    85        
    86         // Pour le statut on fera le travail autre part
    87         $instituer = false;
    88         if (isset($c['actif'])){
    89                 $instituer = array('actif' => $c['actif']);
    90                 unset($c['actif']);
    91         }
     94        include_spip('base/objets');
     95        $desc = lister_tables_objets_sql('spip_dictionnaires');
    9296
    9397        include_spip('inc/modifier');
    94         revision_dictionnaire($id_dictionnaire, $c);
    95        
    96         if ($instituer){
    97                 instituer_dictionnaire($id_dictionnaire, $instituer);
    98         }
    99 
     98        $c = collecter_requests(
     99                // white list
     100                $desc['champs_editables'],
     101                // black list
     102                array(),
     103                // donnees eventuellement fournies
     104                $set
     105        );
     106
     107
     108        if ($err = objet_modifier_champs('dictionnaire', $id_dictionnaire,
     109                array(
     110                        'nonvide' => array('titre' => _T('info_sans_titre'))
     111                ),
     112                $c)) {
     113                return $err;
     114        }
     115
     116        $c = collecter_requests(array('statut'),array(),$set);
     117        $err = instituer_dictionnaire($id_dictionnaire, $c);
    100118        return $err;
    101119}
    102120
    103 /**
    104  * Enregistre une révision de dictionnaire
    105  *
     121
     122/**
     123 * Instituer un dictionnaire : modifier son statut
     124 *
     125 * @pipeline_appel pre_insertion
     126 * @pipeline_appel post_insertion
     127 *
    106128 * @param int $id_dictionnaire
     129 *     Identifiant du dictionnaire
    107130 * @param array $c
    108  * @return
    109  */
    110 function revision_dictionnaire($id_dictionnaire, $c=false) {
    111         $invalideur = "id='id_dictionnaire/$id_dictionnaire'";
    112 
    113         modifier_contenu('dictionnaire', $id_dictionnaire,
    114                 array(
    115                         'nonvide' => array('titre' => _T('info_sans_titre')),
    116                         'invalideur' => $invalideur
    117                 ),
    118                 $c);
    119 
    120         return ''; // pas d'erreur
    121 }
    122 
    123 /**
    124  * Modifie des éléments à part
    125  *
    126  * @param int $id_dictionnaire
    127  * @param array $c
    128  * @return
     131 *     Couples (colonne => valeur) des données à instituer
     132 * @return null|string
     133 *     Null si aucun champ à modifier, chaîne vide sinon.
    129134 */
    130135function instituer_dictionnaire($id_dictionnaire, $c){
    131136        include_spip('inc/autoriser');
    132        
    133         if (isset($c['actif']) and in_array(($actif = $c['actif']), array(0,1))){
    134                 $ancien = sql_getfetsel('actif', 'spip_dictionnaires', 'id_dictionnaire = '.$id_dictionnaire);
     137        include_spip('base/objets');
     138        $desc = lister_tables_objets_sql('spip_dictionnaires');
     139
     140        if (isset($c['statut']) and in_array(($statut = $c['statut']), array_keys($desc['statut_textes_instituer']))){
     141                $ancien = sql_getfetsel('statut', 'spip_dictionnaires', 'id_dictionnaire = '.$id_dictionnaire);
    135142                $champs = array();
    136                
     143
    137144                // Seulement si on change le statut et qu'on a le droit
    138                 if ($actif != $ancien and autoriser('modifier', 'dictionnaire', $id_dictionnaire)){
    139                         $champs['actif'] = $actif;
     145                if ($statut != $ancien and autoriser('modifier', 'dictionnaire', $id_dictionnaire)){
     146                        $champs['statut'] = $statut;
    140147                }
    141148               
     
    179186                        )
    180187                );
    181                
     188
     189                // Notifications
     190                if ($notifications = charger_fonction('notifications', 'inc')) {
     191                        $notifications('instituerdictionnaire', $id_dictionnaire, $champs);
     192                }
     193
    182194                // On refait le cache des définitions
    183195                include_spip('inc/dictionnaires');
    184196                dictionnaires_lister_definitions(true);
    185197        }
     198
     199        return '';
    186200}
    187201
Note: See TracChangeset for help on using the changeset viewer.