Changeset 54192 in spip-zone


Ignore:
Timestamp:
Nov 8, 2011, 12:54:26 PM (8 years ago)
Author:
kent1@…
Message:

Utilisation des nouvelles autorisations

Un peu de doc des fonctions

Un pipeline supplémentaire "post-insertion"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/branches/v2/action/editer_gis.php

    r48696 r54192  
    22
    33if (!defined("_ECRIRE_INC_VERSION")) return;
     4
     5include_spip('inc/autoriser');
    46
    57function action_editer_gis_dist() {
     
    1517}
    1618
     19/**
     20 * Fonction d'insertion d'un gis vide
     21 *
     22 * @return int/false $id_gis : l'identifiant numérique du point ou false en cas de non création
     23 */
    1724function insert_gis() {
    18         $champs = array();
    19        
    20         // Envoyer aux plugins
    21         $champs = pipeline('pre_insertion', array(
    22                 'args' => array(
    23                         'table' => 'spip_gis',
    24                 ),
    25                 'data' => $champs
    26         ));
    27        
    28         $id_gis = sql_insertq("spip_gis", $champs);
    29         return $id_gis;
     25        if(autoriser('creer','gis')){
     26                $champs = array();
     27               
     28                // Envoyer aux plugins
     29                $champs = pipeline('pre_insertion', array(
     30                        'args' => array(
     31                                'table' => 'spip_gis',
     32                        ),
     33                        'data' => $champs
     34                ));
     35               
     36                $id_gis = sql_insertq("spip_gis", $champs);
     37               
     38                pipeline('post_insertion',
     39                        array(
     40                                'args' => array(
     41                                        'table' => 'spip_gis',
     42                                        'id_objet' => $id_gis
     43                                ),
     44                                'data' => $champs
     45                        )
     46                );
     47                return $id_gis;
     48        }else{
     49                return false;
     50        }
    3051}
    3152
    32 // Enregistrer certaines modifications d'un gis
     53/**
     54 *  Enregistrer certaines modifications d'un gis
     55 *
     56 * @param int $id_gis : l'identifiant numérique du point
     57 * @param array $c : un array des valeurs à mettre en base (par défaut false, on récupère les valeurs passées en dans le POST)
     58 */
    3359function revisions_gis($id_gis, $c=false) {
    3460        // recuperer les champs dans POST s'ils ne sont pas transmis
     
    6187 * @param string $objet Le type de l'objet à lier
    6288 * @param int $id_objet L'identifiant numérique de l'objet lié
     89 *
     90 * @return bool : true si la liaison s'est bien passée, false à l'inverse
    6391 */
    6492function lier_gis($id_gis, $objet, $id_objet){
     
    6795        AND preg_match('/^[a-z0-9_]+$/i', $objet) # securite
    6896        AND !sql_getfetsel("id_gis", "spip_gis_liens", "id_gis=$id_gis AND id_objet=$id_objet AND objet=".sql_quote($objet))
     97        AND autoriser('lier','gis',$id_gis,$GLOBALS['visiteur_session'],array('objet' => $objet,'id_objet'=>$id_objet))
    6998        ) {
    7099                sql_insertq('spip_gis_liens',
     
    72101                                'id_objet' => $id_objet,
    73102                                'objet' => $objet));
     103                include_spip('inc/invalideur');
     104                suivre_invalideur("id='id_gis/$id_gis'");
     105                return true;
    74106        }
     107        return false;
    75108}
    76109
     
    81114 * @param string $objet Le type de l'objet à lier
    82115 * @param int $id_objet L'identifiant numérique de l'objet lié
     116 *
     117 * @return bool : true si la suppression de la liaison s'est bien passée, false à l'inverse
    83118 */
    84119function delier_gis($id_gis, $objet, $id_objet){
     
    86121        if ($id_objet AND $id_gis
    87122        AND preg_match('/^[a-z0-9_]+$/i', $objet) # securite
     123        AND autoriser('delier','gis',$id_gis,$GLOBALS['visiteur_session'],array('objet' => $objet,'id_objet'=>$id_objet))
    88124        ) {
    89125                sql_delete('spip_gis_liens', "id_gis=$id_gis AND id_objet=$id_objet AND objet=". sql_quote($objet));
     126                include_spip('inc/invalideur');
     127                suivre_invalideur("id='id_gis/$id_gis'");
     128                return true;
    90129        }
    91         include_spip('inc/invalideur');
    92         suivre_invalideur("id='id_gis/$id_gis'");
     130        return false;
    93131}
    94132
     133/**
     134 * Supprimer définitivement un point géolocalisé
     135 *
     136 * @param int $id_gis identifiant numérique du point
     137 * @return 0/false 0 si réussite, false dans le cas ou le point n'existe pas
     138 */
    95139function supprimer_gis($id_gis){
    96         if (intval($id_gis)){
     140        $valide = sql_getfetsel('id_gis','spip_gis','id_gis='.intval($id_gis));
     141        if($valide && autoriser('supprimer','gis',$valide)){
    97142                sql_delete("spip_gis_liens", "id_gis=".intval($id_gis));
    98143                sql_delete("spip_gis", "id_gis=".intval($id_gis));
     144                $id_gis = 0;
     145                include_spip('inc/invalideur');
     146                suivre_invalideur("id='id_gis/$id_gis'");
     147                return $id_gis;
    99148        }
    100         $id_gis = 0;
    101         include_spip('inc/invalideur');
    102         suivre_invalideur("id='id_gis/$id_gis'");
    103         return $id_gis;
     149        return false;
    104150}
    105151
Note: See TracChangeset for help on using the changeset viewer.