Ignore:
Timestamp:
May 3, 2012, 2:49:11 PM (9 years ago)
Author:
guy.cesaro@…
Message:

quelques reports des evolutions de la branche v2 entre r51054 et r60879 : a tester.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/trunk/action/editer_gis.php

    r53652 r60882  
    22
    33if (!defined("_ECRIRE_INC_VERSION")) return;
     4
     5include_spip('inc/autoriser');
    46
    57function action_editer_gis_dist($arg=null) {
     
    1820}
    1921
     22/**
     23 * Fonction d'insertion d'un gis vide
     24 *
     25 * @return int/false $id_gis : l'identifiant numérique du point ou false en cas de non création
     26 */
    2027function insert_gis() {
    21         $champs = array();
    22        
    23         // Envoyer aux plugins
    24         $champs = pipeline('pre_insertion', array(
    25                 'args' => array(
    26                         'table' => 'spip_gis',
    27                 ),
    28                 'data' => $champs
    29         ));
    30        
    31         $id_gis = sql_insertq("spip_gis", $champs);
    32         return $id_gis;
     28        if(autoriser('creer','gis')){
     29                $champs = array();
     30               
     31                // Envoyer aux plugins
     32                $champs = pipeline('pre_insertion', array(
     33                        'args' => array(
     34                                'table' => 'spip_gis',
     35                        ),
     36                        'data' => $champs
     37                ));
     38               
     39                $id_gis = sql_insertq("spip_gis", $champs);
     40               
     41                pipeline('post_insertion',
     42                        array(
     43                                'args' => array(
     44                                        'table' => 'spip_gis',
     45                                        'id_objet' => $id_gis
     46                                ),
     47                                'data' => $champs
     48                        )
     49                );
     50                return $id_gis;
     51        }else{
     52                return false;
     53        }
    3354}
    3455
    35 // Enregistrer certaines modifications d'un gis
     56/**
     57 *  Enregistrer certaines modifications d'un gis
     58 *
     59 * @param int $id_gis : l'identifiant numérique du point
     60 * @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)
     61 */
    3662function revisions_gis($id_gis, $c=false) {
     63        $err = '';
    3764        // recuperer les champs dans POST s'ils ne sont pas transmis
    3865        if ($c === false) {
     
    5481                $c);
    5582       
    56         if(intval(_request('id_objet')) && _request('objet'))
    57                 lier_gis($id_gis, _request('objet'), _request('id_objet'));
     83        if ((intval(_request('id_objet')) && _request('objet')) OR (intval($c['id_objet']) && $c['objet'])) {
     84                $objet = _request('objet') ? _request('objet') : $c['objet'];
     85                $id_objet = _request('id_objet') ? _request('id_objet') : $c['id_objet'];
     86                lier_gis($id_gis, $objet, $id_objet);
     87        }
     88       
     89        return $err;
    5890}
    5991
     
    6496 * @param string $objet Le type de l'objet à lier
    6597 * @param int $id_objet L'identifiant numérique de l'objet lié
     98 *
     99 * @return bool : true si la liaison s'est bien passée, false à l'inverse
    66100 */
    67101function lier_gis($id_gis, $objet, $id_objet){
     
    70104        AND preg_match('/^[a-z0-9_]+$/i', $objet) # securite
    71105        AND !sql_getfetsel("id_gis", "spip_gis_liens", "id_gis=$id_gis AND id_objet=$id_objet AND objet=".sql_quote($objet))
     106        AND autoriser('lier','gis',$id_gis,$GLOBALS['visiteur_session'],array('objet' => $objet,'id_objet'=>$id_objet))
    72107        ) {
    73108                sql_insertq('spip_gis_liens',
     
    75110                                'id_objet' => $id_objet,
    76111                                'objet' => $objet));
     112                include_spip('inc/invalideur');
     113                suivre_invalideur("id='id_gis/$id_gis'");
     114                return true;
    77115        }
     116        return false;
    78117}
    79118
     
    84123 * @param string $objet Le type de l'objet à lier
    85124 * @param int $id_objet L'identifiant numérique de l'objet lié
     125 *
     126 * @return bool : true si la suppression de la liaison s'est bien passée, false à l'inverse
    86127 */
    87128function delier_gis($id_gis, $objet, $id_objet){
     
    89130        if ($id_objet AND $id_gis
    90131        AND preg_match('/^[a-z0-9_]+$/i', $objet) # securite
     132        AND autoriser('delier','gis',$id_gis,$GLOBALS['visiteur_session'],array('objet' => $objet,'id_objet'=>$id_objet))
    91133        ) {
    92134                sql_delete('spip_gis_liens', "id_gis=$id_gis AND id_objet=$id_objet AND objet=". sql_quote($objet));
     135                include_spip('inc/invalideur');
     136                suivre_invalideur("id='id_gis/$id_gis'");
     137                return true;
    93138        }
    94         include_spip('inc/invalideur');
    95         suivre_invalideur("id='id_gis/$id_gis'");
     139        return false;
    96140}
    97141
     142/**
     143 * Supprimer définitivement un point géolocalisé
     144 *
     145 * @param int $id_gis identifiant numérique du point
     146 * @return 0/false 0 si réussite, false dans le cas ou le point n'existe pas
     147 */
    98148function supprimer_gis($id_gis){
    99         if (intval($id_gis)){
     149        $valide = sql_getfetsel('id_gis','spip_gis','id_gis='.intval($id_gis));
     150        if($valide && autoriser('supprimer','gis',$valide)){
    100151                sql_delete("spip_gis_liens", "id_gis=".intval($id_gis));
    101152                sql_delete("spip_gis", "id_gis=".intval($id_gis));
     153                $id_gis = 0;
     154                include_spip('inc/invalideur');
     155                suivre_invalideur("id='id_gis/$id_gis'");
     156                return $id_gis;
    102157        }
    103         $id_gis = 0;
    104         include_spip('inc/invalideur');
    105         suivre_invalideur("id='id_gis/$id_gis'");
    106         return $id_gis;
     158        return false;
    107159}
    108160
Note: See TracChangeset for help on using the changeset viewer.