X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fformidable_1_0%2Fformidable_autorisations.php;h=91b3ed602a1a3554631c18debc8b6350eef8922a;hp=411ee3f52114230fd70f5c75ed49fdad26757cc5;hb=3b34d0137e672387909494967123983d45db1ffd;hpb=e302f5262d689fd50b5d8ed424ab1cb71f837751 diff --git a/www/plugins/formidable_1_0/formidable_autorisations.php b/www/plugins/formidable_1_0/formidable_autorisations.php index 411ee3f5..91b3ed60 100644 --- a/www/plugins/formidable_1_0/formidable_autorisations.php +++ b/www/plugins/formidable_1_0/formidable_autorisations.php @@ -36,6 +36,28 @@ function formidable_autoriser_par_auteur($id, $id_auteur = 0) { $autorisations = objet_trouver_liens(array('formulaire'=>$id),array('auteur'=>$id_auteur)); $retour = count($autorisations) > 0; } + + return $retour; +} + +/** + * Réponses à un formulaire éditable par un auteur + * + * Est-on en présence d'un auteur qui tente de modifier les réponses d'un formulaire + * et que Formidable est configuré pour prendre en compte les auteurs + * et que les auteurs sont en droit de modifier les réponses de leurs formulaires ? + * + * @param array $qui Description de l'auteur demandant l'autorisation + * @return bool true s'il a le droit, false sinon + * +*/ +function formidable_auteur_admin_reponse($qui) { + // L'auteur peut-il administrer les réponses ? + $admin_reponses_auteur = lire_config('formidable/analyse/admin_reponses_auteur'); + $auteurs = lire_config('formidable/analyse/auteur'); + $is_admin = (isset($qui['statut']) and $qui['statut'] == '0minirezo'); + $retour = ($is_admin or (($auteurs == 'on') and ($admin_reponses_auteur == 'on'))); + return $retour; } @@ -178,9 +200,8 @@ function autoriser_formulaire_modifier_dist($faire, $type, $id, $qui, $opt) { * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ -function autoriser_formulaires_reponse_instituer_dist($faire, $type, $id, $qui, $opt){ - if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and !$qui['restreint']) return true; - else return false; +function autoriser_formulairesreponse_instituer_dist($faire, $type, $id, $qui, $opt){ + return formidable_auteur_admin_reponse($qui); } /** @@ -199,10 +220,33 @@ function autoriser_formulairesreponse_voir_dist($faire, $type, $id, $qui, $opt){ return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt); } +/** + * Autorisation de modifier une réponse d'un formulaire formidable + * + * suivant la config, un administrateur ou l'auteur du formulaire peuvent + * voir les résultats + * + * @param string $faire Action demandée + * @param string $type Type d'objet sur lequel appliquer l'action + * @param int $id Identifiant de l'objet + * @param array $qui Description de l'auteur demandant l'autorisation + * @param array $opt Options de cette autorisation + * @return bool true s'il a le droit, false sinon +**/ +function autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt){ + if ($id_formulaire = intval(sql_getfetsel( + 'id_formulaire', 'spip_formulaires_reponses', "id_formulaires_reponse=$id"))) { + + $retour = (autoriser_formulaire_editer_dist($faire, $type, $id_formulaire, $qui, $opt) + and formidable_auteur_admin_reponse($qui)); + } + return $retour; +} + /** * Autorisation de supprimer une réponse d'un formulaire formidable * - * Il faut pouvoir éditer un formulaire pour pouvoir en supprimer des réponses + * Il faut pouvoir modifier les réponses d'un formulaire pour pouvoir les en supprimer * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action @@ -211,12 +255,9 @@ function autoriser_formulairesreponse_voir_dist($faire, $type, $id, $qui, $opt){ * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ -function autoriser_formulairesreponse_supprimer_dist($faire, $type, $id, $qui, $opt){ - // On récupère l'id du formulaire - if ($id_formulaire = intval(sql_getfetsel('id_formulaire', 'spip_formulaires_reponses', $id))) - return autoriser('editer', 'formulaire', $id_formulaire); - else - return false; +function autoriser_formulairesreponse_supprimer_dist($faire, $type, $id, $qui, $opt) { + $retour = autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt); + return $retour; } ?>