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_definition.php

    r58145 r65485  
    11<?php
    22
     3
     4/**
     5 * Gestion de l'action editer_definition
     6 *
     7 * @package SPIP\Dictionnaires\Actions
     8 */
     9 
    310// Sécurité
    411if (!defined('_ECRIRE_INC_VERSION')) return;
    512
    613/**
    7  * Action de création / Modification d'un definition
    8  * @param unknown_type $arg
    9  * @return unknown_type
    10  */
     14 * Action d'édition d'une définition de 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 une nouvelle définition.
     19 *
     20 * @param null|int $arg
     21 *     Identifiant de la définition. En absence utilise l'argument
     22 *     de l'action sécurisée.
     23 * @return array
     24 *     Liste (identifiant de la définition, Texte d'erreur éventuel)
     25**/
    1126function action_editer_definition_dist($arg=null) {
    1227        if (is_null($arg)){
     
    2338        if ($id_definition > 0) $err = definition_set($id_definition);
    2439
    25         if (_request('redirect')) {
    26                 $redirect = parametre_url(urldecode(_request('redirect')),
    27                         'id_definition', $id_definition, '&') . $err;
    28 
    29                 include_spip('inc/headers');
    30                 redirige_par_entete($redirect);
    31         }
    32         else
    33                 return array($id_definition,$err);
    34 }
    35 
    36 /**
    37  * Crée un nouveau definition et retourne son ID
    38  *
    39  * @param array $champs Un tableau avec les champs par défaut lors de l'insertion
    40  * @return int id_definition
     40        return array($id_definition, $err);
     41}
     42
     43
     44/**
     45 * Crée une nouvelle définition de dictionnaire
     46 *
     47 * @param array $champs
     48 *     Un tableau avec les champs par défaut lors de l'insertion
     49 * @return int
     50 *     Identifiant de la nouvelle définition
    4151 */
    4252function insert_definition($champs=array()) {
     
    6676}
    6777
    68 /**
    69  * Appelle la fonction de modification d'un definition
    70  *
     78
     79/**
     80 * Modifier une définition
     81 *
    7182 * @param int $id_definition
    72  * @param unknown_type $set
    73  * @return $err
     83 *     Identifiant de la définition à modifier
     84 * @param array|null $set
     85 *     Couples (colonne => valeur) de données à modifier.
     86 *     En leur absence, on cherche les données dans les champs éditables
     87 *     qui ont été postés (via _request())
     88 * @param bool $purger_cache
     89 *     true pour purcher le cache des définitions au passage lors de l'institution
     90 * @return string|null
     91 *     Chaîne vide si aucune erreur,
     92 *     Null si aucun champ à modifier,
     93 *     Chaîne contenant un texte d'erreur sinon.
    7494 */
    7595function definition_set($id_definition, $set=null, $purger_cache=true) {
    7696        $err = '';
    7797
    78         include_spip('inc/saisies');
    79         $saisies = saisies_chercher_formulaire('editer_definition', array($id_definition));
    80         $champs = saisies_lister_champs($saisies, false);
    81        
    82         $c = array();
    83         foreach ($champs as $champ)
    84                 $c[$champ] = _request($champ,$set);
    85        
     98        include_spip('base/objets');
     99        $desc = lister_tables_objets_sql('spip_definitions');
     100
     101        include_spip('inc/modifier');
     102        $c = collecter_requests(
     103                // white list
     104                $desc['champs_editables'],
     105                // black list
     106                array(),
     107                // donnees eventuellement fournies
     108                $set
     109        );
     110
    86111        // Pour le parent on fera plus tard
    87         if (isset($c['id_dictionnaire'])){
    88                 unset($c['id_dictionnaire']);
    89         }
    90        
    91         include_spip('inc/modifier');
    92         revision_definition($id_definition, $c);
    93        
    94         // Modification de statut, changement de rubrique ?
    95         $c = array();
    96         foreach (array(
    97                 'date', 'statut', 'id_dictionnaire'
    98         ) as $champ)
    99                 $c[$champ] = _request($champ, $set);
    100         $err .= instituer_definition($id_definition, $c, $purger_cache);
    101 
     112        unset($c['id_dictionnaire']);
     113
     114        if ($err = objet_modifier_champs('definition', $id_definition,
     115                array(
     116                        'nonvide' => array('titre' => _T('info_sans_titre'))
     117                ),
     118                $c)) {
     119                return $err;
     120        }
     121
     122        $c = collecter_requests(array('date', 'statut', 'id_dictionnaire'),array(),$set);
     123        $err = instituer_definition($id_definition, $c, $purger_cache);
    102124        return $err;
    103125}
    104126
    105 /**
    106  * Enregistre une révision de definition
    107  *
     127
     128/**
     129 * Instituer une définition : modifier son statut, date, parent
     130 *
     131 * @pipeline_appel pre_insertion
     132 * @pipeline_appel post_insertion
     133 *
    108134 * @param int $id_definition
     135 *     Identifiant de la définition
    109136 * @param array $c
    110  * @return
    111  */
    112 function revision_definition($id_definition, $c=false) {
    113         $invalideur = "id='id_definition/$id_definition'";
    114 
    115         modifier_contenu('definition', $id_definition,
    116                 array(
    117                         'nonvide' => array('titre' => _T('info_sans_titre')),
    118                         'invalideur' => $invalideur
    119                 ),
    120                 $c);
    121 
    122         return ''; // pas d'erreur
    123 }
    124 
    125 /**
    126  * Modifie des éléments à part
    127  *
    128  * @param int $id_definition
    129  * @param array $c
    130  * @return
     137 *     Couples (colonne => valeur) des données à instituer
     138 * @param bool $purger_cache
     139 *     true pour purcher le cache des définitions au passage
     140 * @return null|string
     141 *     Null si aucun champ à modifier, chaîne vide sinon.
    131142 */
    132143function instituer_definition($id_definition, $c, $purger_cache=true){
     
    237248                )
    238249        );
    239        
     250
    240251        // On refait le cache des définitions si le nouveau ou l'ancien statut était publié
    241         if ($purger_cache and ($champs['statut'] == 'publie' or $statut_ancien == 'publie')){
    242                 include_spip('inc/dictionnaires');
    243                 dictionnaires_lister_definitions(true);
    244         }
    245        
     252        if ($purger_cache and ((isset($champs['statut']) AND $champs['statut'] == 'publie')
     253                 OR $statut_ancien == 'publie'))
     254                {
     255                        include_spip('inc/dictionnaires');
     256                        dictionnaires_lister_definitions(true);
     257        }
     258
    246259        // Notifications
    247260        if ($notifications = charger_fonction('notifications', 'inc', true)) {
Note: See TracChangeset for help on using the changeset viewer.