Valider e7775d38 rédigé par tofulm@gmail.com's avatar tofulm@gmail.com
Parcourir les fichiers

Nouvelle fonctionnalité : dans les autorisations modification et suppression...

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.
parent 45e3946c
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+3 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
#SET{qui,#ARRAY{id_auteur,#SESSION{id_auteur},statut,#SESSION{statut}}}
[(#ENV{id_reservation}|oui)
	[(#AUTORISER{supprimer,orr_reservation,#ENV{id_ressource}})
	[(#AUTORISER{supprimer, orr_reservation, #ENV{id_ressource}, #GET{qui}, #ENV{id_reservation}})
	<div id="poubelle">
		<a class="mediabox" href="[(#URL_PAGE{formulaire_poubelle}
			|parametre_url{idresa,#ENV{id_reservation}}
@@ -13,5 +14,5 @@
]
<h1 class="box_resa"><:orr:reserver:></h1>
<div class="ajax">
	#FORMULAIRE_RESERV{#ENV{id_ressource},#ENV{ma_date},#ENV{id_reservation},#ENV{jourj},#ENV{vue}}
	#FORMULAIRE_RESERV{#ENV{id_ressource}, #ENV{ma_date}, #ENV{id_reservation}, #ENV{jourj}, #ENV{vue}, #SESSION{id_auteur}}
</div>
+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -35,7 +35,8 @@
                    V, Voir,
                    M, Modifier,
                    C, Créer,
                    S, Supprimer} }
                    S, Supprimer,
                    *, uniquement } }
            )]
            
            [(#SAISIE{hidden, val_statut})]
+4 −4
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

function formulaires_reserv_charger_dist($idressource, $date_deb=false, $idresa=false, $jourj='', $vue=''){
function formulaires_reserv_charger_dist($idressource, $date_deb=false, $idresa=false, $jourj='', $vue='', $id_auteur){
    include_spip('inc/config');
    // mise à jour: récup les infos de la résa selectionnée
    if ($idresa) {
@@ -41,7 +41,7 @@ function formulaires_reserv_charger_dist($idressource, $date_deb=false, $idresa=
    return $valeurs;
}

function formulaires_reserv_verifier_dist($idressource, $date_deb, $idresa, $jourj, $vue){
function formulaires_reserv_verifier_dist($idressource, $date_deb, $idresa, $jourj, $vue, $id_auteur){
    include_spip('inc/autoriser');
    // on passe les dates du timepicker en format d-m-a h:m:s pour que strtotime() soit capable de les utiliser
    $date_debut = str_replace('/','-',_request('date_debut'));
@@ -117,7 +117,7 @@ function formulaires_reserv_verifier_dist($idressource, $date_deb, $idresa, $jou
}


function formulaires_reserv_traiter_dist($idressource, $date_deb, $idresa, $jourj, $vue){
function formulaires_reserv_traiter_dist($idressource, $date_deb, $idresa, $jourj, $vue, $id_auteur){
    $liste_ressources = array();
	$nom_reservation  = _request('nom_reservation');
	$date_debut       = str_replace('/','-',_request('date_debut'));
@@ -167,7 +167,7 @@ function formulaires_reserv_traiter_dist($idressource, $date_deb, $idresa, $jour
	    // utilisation de l'API editer_liens pour la gestion de la table de lien entre
	    // une reservation et une ressource
	    include_spip('action/editer_liens');
	    objet_associer(array("orr_reservation"=>$id_objet), array("orr_ressource"=>$idressource));
	    objet_associer(array("orr_reservation" => $id_objet), array("orr_ressource" => $idressource,"auteur" => $id_auteur));
    }
	return $retour;
}
+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -2,6 +2,7 @@
#SET{jour,#ENV{jour}} 
#SET{jourplusun,#ENV{jour}|orr_plusunjour}
#SET{couleur,#INFO_ORR_RESSOURCE_COULEUR{orr_ressource,#ENV{idressource}}}
#SET{qui,#ARRAY{id_auteur,#SESSION{id_auteur},statut,#SESSION{statut}}}

<BOUCLE_affichreserv(ORR_RESERVATIONS)
	{id_orr_ressource=#ENV{idressource}}
@@ -24,7 +25,7 @@
				<INCLURE{fond=inc/affichage_champs_extra}{id_resa=#ID_ORR_RESERVATION}>]
				<strong><:orr:auteur_resa:></strong>:  #GET{auteur}				
			</span>
			[(#AUTORISER{modifier,orr_reservation,#ENV{idressource}}) 
			[(#AUTORISER{modifier, orr_reservation, #ENV{idressource}, #GET{qui}, #ID_ORR_RESERVATION}) 
				<a href="[(#URL_PAGE{formulaire_reservation}
					|parametre_url{'id_reservation',#ID_ORR_RESERVATION}
					|parametre_url{'id_ressource',#ENV{idressource}}
+70 −43
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -7,11 +7,26 @@

if (!defined('_ECRIRE_INC_VERSION')) return;

function recherche_autorisation($idressource,$statut_connecte,$autorisation,$id_auteur){
function recherche_autorisation($idressource,$statut_connecte,$autorisation,$id_auteur,$id_resa=''){
    // zou! si on est webmestre, pas besoin d'aller plus loin: on est autorisé pour *tout*
    if (isset($GLOBALS['visiteur_session']['webmestre']) And $GLOBALS['visiteur_session']['webmestre'] == 'oui')
        return true;

    // Pour Modifier ou Supprimer une résa, on test si l'auteur connecté est 
    // le propriétaire de la résa
    $test_auteur = false;
    if ($id_resa) {
        $all = sql_allfetsel(
            "lien.id_objet" , "spip_orr_reservations_liens AS lien",
            array(
                "lien.objet = 'auteur'",
                "lien.id_orr_reservation =". intval($id_resa))
        ); 
        if ($all[0]['id_objet'] == $id_auteur) {
            $test_auteur = true;
        }
    }

    $result = false;
    $res = sql_select(
        array(
@@ -30,10 +45,24 @@ function recherche_autorisation($idressource,$statut_connecte,$autorisation,$id_
    );

    while ($r = sql_fetch($res)) {
	//  autorisation par statut    

        // Si Modif ou suppression uniquement de ses résas
        // on prépare le test de droits 
        $valeur_statut = array("tous"=>"1","6forum"=>"2","1comite"=>"3","0minirezo"=>"4");
		//if (($r['type'] == "statut") AND ($r['statut'] == "$statut_connecte") AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;
		if (($r['type'] == "statut") AND ($valeur_statut[$r['statut']] <= $valeur_statut[$statut_connecte]) AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;
        $r_test = true;
        if (($autorisation == "S" OR $autorisation == "M"  ) AND 
            ((strpos($r['valeur'],"*") !== false) AND 
            ($valeur_statut[$r['statut']] >= $valeur_statut[$statut_connecte]) AND 
            $id_resa AND !$test_auteur)) 
                $r_test = false;

    //  Autorisation par statut
        if (($r['type'] == "statut") AND 
            ($valeur_statut[$r['statut']] <= $valeur_statut[$statut_connecte]) AND 
            (strpos($r['valeur'], $autorisation) !== false) AND
            $r_test) 
                $result = true;

    //   autorisation par grappe
        if ($r['type'] == "grappe") {
            $res_grappe = sql_select(
@@ -52,9 +81,7 @@ function recherche_autorisation($idressource,$statut_connecte,$autorisation,$id_
        }
    //  autorisation par auteur
        if (($r['type'] == "auteur") AND ($r['id_auteur'] == $id_auteur) AND (strpos($r['valeur'], $autorisation) !== false)) $result = true;

    }
	
    return $result;
}

@@ -123,7 +150,7 @@ function autoriser_orrreservation_voir_dist($faire, $type, $id, $qui, $opt) {
}

// modifier
function autoriser_orrreservation_modifier_dist($faire, $type, $id, $qui, $opt) {
function autoriser_orrreservation_modifier_dist($faire, $type, $id, $qui, $id_resa='') {
    if ($qui['statut']) {
        $statut=$qui['statut'];
    }else {
@@ -131,12 +158,12 @@ function autoriser_orrreservation_modifier_dist($faire, $type, $id, $qui, $opt)
    }
    $id_auteur=$qui['id_auteur'];
	$autorisation="M";
	$resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur);
	$resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur,$id_resa);
	return $resultat;
}

// supprimer 
function autoriser_orrreservation_supprimer_dist($faire, $type, $id, $qui, $opt) {
function autoriser_orrreservation_supprimer_dist($faire, $type, $id, $qui, $id_resa='') {
    if ($qui['statut']) {
        $statut=$qui['statut'];
    }else {
@@ -144,7 +171,7 @@ function autoriser_orrreservation_supprimer_dist($faire, $type, $id, $qui, $opt)
    }
    $id_auteur=$qui['id_auteur'];
	$autorisation="S";
	$resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur);
	$resultat=recherche_autorisation($id,$statut,$autorisation,$id_auteur,$id_resa);
	return $resultat;
}