Changeset 81387 in spip-zone


Ignore:
Timestamp:
Mar 14, 2014, 10:00:12 PM (5 years ago)
Author:
tofulm@…
Message:

Nouvelle fonctionnalité : dans les autorisations modification et suppression ajout d'un nouveau parametre :
modification et suppression uniquement des réservations que l'auteur connecté à créé.
Pour l'instant, cela fonctionne seulement sur les autorisations : STATUT.
Attention cette modification ne fonctionne qu'avec les nouvelles résa. On enregistre maintenant dans la table de liens orr_reservations_liens les auteurs.

Location:
_plugins_/orr/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/orr/trunk/formulaire_reservation.html

    r78981 r81387  
     1#SET{qui,#ARRAY{id_auteur,#SESSION{id_auteur},statut,#SESSION{statut}}}
    12[(#ENV{id_reservation}|oui)
    2         [(#AUTORISER{supprimer,orr_reservation,#ENV{id_ressource}})
     3        [(#AUTORISER{supprimer, orr_reservation, #ENV{id_ressource}, #GET{qui}, #ENV{id_reservation}})
    34        <div id="poubelle">
    45                <a class="mediabox" href="[(#URL_PAGE{formulaire_poubelle}
     
    1415<h1 class="box_resa"><:orr:reserver:></h1>
    1516<div class="ajax">
    16         #FORMULAIRE_RESERV{#ENV{id_ressource},#ENV{ma_date},#ENV{id_reservation},#ENV{jourj},#ENV{vue}}
     17        #FORMULAIRE_RESERV{#ENV{id_ressource}, #ENV{ma_date}, #ENV{id_reservation}, #ENV{jourj}, #ENV{vue}, #SESSION{id_auteur}}
    1718</div>
  • _plugins_/orr/trunk/formulaires/editer_orr_autorisation.html

    r78355 r81387  
    3636                    M, Modifier,
    3737                    C, Créer,
    38                     S, Supprimer} }
     38                    S, Supprimer,
     39                    *, uniquement } }
    3940            )]
    4041           
  • _plugins_/orr/trunk/formulaires/reserv.php

    r79263 r81387  
    11<?php
    22
    3 function formulaires_reserv_charger_dist($idressource, $date_deb=false, $idresa=false, $jourj='', $vue=''){
     3function formulaires_reserv_charger_dist($idressource, $date_deb=false, $idresa=false, $jourj='', $vue='', $id_auteur){
    44    include_spip('inc/config');
    55    // mise à jour: récup les infos de la résa selectionnée
     
    4242}
    4343
    44 function formulaires_reserv_verifier_dist($idressource, $date_deb, $idresa, $jourj, $vue){
     44function formulaires_reserv_verifier_dist($idressource, $date_deb, $idresa, $jourj, $vue, $id_auteur){
    4545    include_spip('inc/autoriser');
    4646    // on passe les dates du timepicker en format d-m-a h:m:s pour que strtotime() soit capable de les utiliser
     
    118118
    119119
    120 function formulaires_reserv_traiter_dist($idressource, $date_deb, $idresa, $jourj, $vue){
     120function formulaires_reserv_traiter_dist($idressource, $date_deb, $idresa, $jourj, $vue, $id_auteur){
    121121    $liste_ressources = array();
    122122        $nom_reservation  = _request('nom_reservation');
     
    168168            // une reservation et une ressource
    169169            include_spip('action/editer_liens');
    170             objet_associer(array("orr_reservation"=>$id_objet), array("orr_ressource"=>$idressource));
     170            objet_associer(array("orr_reservation" => $id_objet), array("orr_ressource" => $idressource,"auteur" => $id_auteur));
    171171    }
    172172        return $retour;
  • _plugins_/orr/trunk/inc/affichage_resas.html

    r79114 r81387  
    33#SET{jourplusun,#ENV{jour}|orr_plusunjour}
    44#SET{couleur,#INFO_ORR_RESSOURCE_COULEUR{orr_ressource,#ENV{idressource}}}
     5#SET{qui,#ARRAY{id_auteur,#SESSION{id_auteur},statut,#SESSION{statut}}}
    56
    67<BOUCLE_affichreserv(ORR_RESERVATIONS)
     
    2526                                <strong><:orr:auteur_resa:></strong>:  #GET{auteur}                             
    2627                        </span>
    27                         [(#AUTORISER{modifier,orr_reservation,#ENV{idressource}})
     28                        [(#AUTORISER{modifier, orr_reservation, #ENV{idressource}, #GET{qui}, #ID_ORR_RESERVATION})
    2829                                <a href="[(#URL_PAGE{formulaire_reservation}
    2930                                        |parametre_url{'id_reservation',#ID_ORR_RESERVATION}
  • _plugins_/orr/trunk/orr_autorisations.php

    r78700 r81387  
    88if (!defined('_ECRIRE_INC_VERSION')) return;
    99
    10 function recherche_autorisation($idressource,$statut_connecte,$autorisation,$id_auteur){
    11         // zou! si on est webmestre, pas besoin d'aller plus loin: on est autorisé pour *tout*
    12         if (isset($GLOBALS['visiteur_session']['webmestre']) And $GLOBALS['visiteur_session']['webmestre'] == 'oui')
    13                 return true;
     10function recherche_autorisation($idressource,$statut_connecte,$autorisation,$id_auteur,$id_resa=''){
     11    // zou! si on est webmestre, pas besoin d'aller plus loin: on est autorisé pour *tout*
     12    if (isset($GLOBALS['visiteur_session']['webmestre']) And $GLOBALS['visiteur_session']['webmestre'] == 'oui')
     13        return true;
    1414
    15         $result= false;
    16         $res = sql_select(
    17                 array(
    18                         "auto.id_orr_autorisation AS idauto",
    19                         "auto.orr_type_objet AS type",
    20                         "auto.orr_statut AS statut",
    21                         "auto.id_auteur AS id_auteur",
    22                         "auto.orr_autorisation_valeur AS valeur"),
    23                 array(
    24                         "spip_orr_autorisations AS auto",
    25                         "spip_orr_autorisations_liens AS lien"),
    26                 array(
    27                         "auto.id_orr_autorisation = lien.id_orr_autorisation",
    28                         "lien.objet='orr_ressource'",
    29                         "lien.id_objet=$idressource")
    30         );
     15    // Pour Modifier ou Supprimer une résa, on test si l'auteur connecté est
     16    // le propriétaire de la résa
     17    $test_auteur = false;
     18    if ($id_resa) {
     19        $all = sql_allfetsel(
     20            "lien.id_objet" , "spip_orr_reservations_liens AS lien",
     21            array(
     22                "lien.objet = 'auteur'",
     23                "lien.id_orr_reservation =". intval($id_resa))
     24        );
     25        if ($all[0]['id_objet'] == $id_auteur) {
     26            $test_auteur = true;
     27        }
     28    }
    3129
    32         while ($r=sql_fetch($res)) {
    33         //  autorisation par statut   
    34         $valeur_statut=array("tous"=>"1","6forum"=>"2","1comite"=>"3","0minirezo"=>"4");
    35                 //if (($r['type'] == "statut") AND ($r['statut'] == "$statut_connecte") AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;
    36                 if (($r['type'] == "statut") AND ($valeur_statut[$r['statut']] <= $valeur_statut[$statut_connecte]) AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;
     30    $result = false;
     31    $res = sql_select(
     32        array(
     33            "auto.id_orr_autorisation AS idauto",
     34            "auto.orr_type_objet AS type",
     35            "auto.orr_statut AS statut",
     36            "auto.id_auteur AS id_auteur",
     37            "auto.orr_autorisation_valeur AS valeur"),
     38        array(
     39            "spip_orr_autorisations AS auto",
     40            "spip_orr_autorisations_liens AS lien"),
     41        array(
     42            "auto.id_orr_autorisation = lien.id_orr_autorisation",
     43            "lien.objet='orr_ressource'",
     44            "lien.id_objet=$idressource")
     45    );
     46
     47    while ($r = sql_fetch($res)) {
     48
     49        // Si Modif ou suppression uniquement de ses résas
     50        // on prépare le test de droits
     51        $valeur_statut = array("tous"=>"1","6forum"=>"2","1comite"=>"3","0minirezo"=>"4");
     52        $r_test = true;
     53        if (($autorisation == "S" OR $autorisation == "M"  ) AND
     54            ((strpos($r['valeur'],"*") !== false) AND
     55            ($valeur_statut[$r['statut']] >= $valeur_statut[$statut_connecte]) AND
     56            $id_resa AND !$test_auteur))
     57                $r_test = false;
     58
     59    //  Autorisation par statut
     60        if (($r['type'] == "statut") AND
     61            ($valeur_statut[$r['statut']] <= $valeur_statut[$statut_connecte]) AND
     62            (strpos($r['valeur'], $autorisation) !== false) AND
     63            $r_test)
     64                $result = true;
     65
    3766    //   autorisation par grappe
    3867        if ($r['type'] == "grappe") {
    39             $res_grappe=sql_select(
     68            $res_grappe = sql_select(
    4069                array(
    41                         "lien.id_objet AS idgrappe_auteur"),
     70                    "lien.id_objet AS idgrappe_auteur"),
    4271                array(
    43                         "spip_grappes AS grappe",
    44                         "spip_grappes_liens AS lien"),
     72                    "spip_grappes AS grappe",
     73                    "spip_grappes_liens AS lien"),
    4574                array(
    46                         "grappe.id_grappe = lien.id_grappe",
    47                         "lien.objet='auteur'"));
     75                    "grappe.id_grappe = lien.id_grappe",
     76                    "lien.objet = 'auteur'"));
    4877
    49             while($rg=sql_fetch($res_grappe)){
     78            while($rg = sql_fetch($res_grappe)){
    5079                if (($rg['idgrappe_auteur'] == $id_auteur) AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;
    5180            }
    5281        }
    5382    //  autorisation par auteur
    54         if (($r['type'] == "auteur") AND ($r['id_auteur']==$id_auteur) AND (strpos($r['valeur'], $autorisation) !== false)) $result=true;
    55 
     83        if (($r['type'] == "auteur") AND ($r['id_auteur'] == $id_auteur) AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;
    5684    }
    57        
    58         return $result;
     85    return $result;
    5986}
    6087
     
    124151
    125152// modifier
    126 function autoriser_orrreservation_modifier_dist($faire, $type, $id, $qui, $opt) {
     153function autoriser_orrreservation_modifier_dist($faire, $type, $id, $qui, $id_resa='') {
    127154    if ($qui['statut']) {
    128155        $statut=$qui['statut'];
     
    132159    $id_auteur=$qui['id_auteur'];
    133160        $autorisation="M";
    134         $resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur);
     161        $resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur,$id_resa);
    135162        return $resultat;
    136163}
    137164
    138 // supprimer
    139 function autoriser_orrreservation_supprimer_dist($faire, $type, $id, $qui, $opt) {
     165// supprimer 
     166function autoriser_orrreservation_supprimer_dist($faire, $type, $id, $qui, $id_resa='') {
    140167    if ($qui['statut']) {
    141168        $statut=$qui['statut'];
     
    145172    $id_auteur=$qui['id_auteur'];
    146173        $autorisation="S";
    147         $resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur);
     174        $resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur,$id_resa);
    148175        return $resultat;
    149176}
Note: See TracChangeset for help on using the changeset viewer.