Newer
Older

marcimat@rezo.net
a validé
/**
* Déclaration des autorisations

marcimat@rezo.net
a validé
* @package SPIP\Formidable\Autorisations
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}

camille.sauvage@espci.fr
a validé
include_spip('action/editer_liens');
include_spip('inc/config');

camille.sauvage@espci.fr
a validé
/**
* Autorisation par auteur et par formulaire
*
* Seuls les auteurs associés à un formulaire peuvent y accéder
*
* @param int $id id du formulaire à tester
* @param int $id_auteur id de l'auteur à tester, si ==0 => auteur courant
* @return bool true s'il a le droit, false sinon
*
*/
function formidable_autoriser_par_auteur($id, $id_auteur = 0) {

camille.sauvage@espci.fr
a validé
$retour = false;

camille.sauvage@espci.fr
a validé
$id_auteur = session_get('id_auteur');

camille.sauvage@espci.fr
a validé
if ($id_auteur == null) {
$retour = false;
} else {
$autorisations = objet_trouver_liens(array('formulaire' => $id), array('auteur' => $id_auteur));

camille.sauvage@espci.fr
a validé
$retour = count($autorisations) > 0;
}

camille.sauvage@espci.fr
a validé
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 ?

maieul@maieul.net
a validé
$admin_reponses_auteur = lire_config('formidable/admin_reponses_auteur');
$auteurs = lire_config('formidable/auteur');

camille.sauvage@espci.fr
a validé
$is_admin = (isset($qui['statut']) and $qui['statut'] == '0minirezo');
$retour = ($is_admin or (($auteurs == 'on') and ($admin_reponses_auteur == 'on')));

camille.sauvage@espci.fr
a validé
return $retour;
}

marcimat@rezo.net
a validé
/**
* Fonction d'appel pour le pipeline
* @pipeline autoriser
*/
function formidable_autoriser() {
}

marcimat@rezo.net
a validé
/**
* Autorisation d'éditer un formulaire formidable
*
* Seuls les admins peuvent éditer les formulaires
*
* @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_formulaire_editer_dist($faire, $type, $id, $qui, $opt) {

maieul@maieul.net
a validé
$auteurs = lire_config('formidable/auteur');

camille.sauvage@espci.fr
a validé
/* administrateur ? */
if (isset($qui['statut']) and $qui['statut'] == '0minirezo' and (count($qui['restreint']) == 0)) {

camille.sauvage@espci.fr
a validé
return true;

rastapopoulos@spip.org
a validé
}

camille.sauvage@espci.fr
a validé
/* Test des autorisations par auteur */
if ($auteurs == 'on') {
return formidable_autoriser_par_auteur($id);

camille.sauvage@espci.fr
a validé
}

rastapopoulos@spip.org
a validé
/* Test des autorisations pour un admin restreint */
if (count($qui['restreint'])) {
$autoriser_admin_restreint = isset($GLOBALS['autoriser_admin_restreint'])
? $GLOBALS['autoriser_admin_restreint']

maieul@maieul.net
a validé
: lire_config('formidable/autoriser_admin_restreint') == 'on'

rastapopoulos@spip.org
a validé
: false;

rastapopoulos@spip.org
a validé
return $autoriser_admin_restreint;

camille.sauvage@espci.fr
a validé
}

marcimat@rezo.net
a validé
/**
* Autorisation de voir la liste des formulaires formidable
*
* Admins et rédacteurs peuvent voir les formulaires existants
*
* @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_formulaires_menu_dist($faire, $type, $id, $qui, $opt) {
if (isset($qui['statut']) and ($qui['statut'] == '1comite' or $qui['statut'] == '0minirezo')) {

rastapopoulos@spip.org
a validé
return true;

rastapopoulos@spip.org
a validé
return false;
}

marcimat@rezo.net
a validé
/**
* Autorisation de répondre à un formidable formidable
*
* On peut répondre à un formulaire si :
* - c'est un formulaire classique
* - on enregistre et que multiple = oui
* - on enregistre et que multiple = non et que la personne n'a pas répondu encore
* - on enregistre et que multiple = non et que modifiable = oui
*
* @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_formulaire_repondre_dist($faire, $type, $id, $qui, $opt) {

rastapopoulos@spip.org
a validé
$id = intval($id);

rastapopoulos@spip.org
a validé
// On regarde si il y a déjà le formulaire dans les options
if (isset($opt['formulaire'])) {
$formulaire = $opt['formulaire'];
} else {
// Sinon on va le chercher

rastapopoulos@spip.org
a validé
$formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
}

rastapopoulos@spip.org
a validé
$traitements = unserialize($formulaire['traitements']);

rastapopoulos@spip.org
a validé
// S'il n'y a pas d'enregistrement, c'est forcément bon
if (!isset($traitements['enregistrement']) or !($options = $traitements['enregistrement'])) {

rastapopoulos@spip.org
a validé
return true;
} else {
// Sinon faut voir les options

rastapopoulos@spip.org
a validé
// Si multiple = oui c'est bon
if ($options['multiple']) {
return true;

rastapopoulos@spip.org
a validé
// Si c'est modifiable, c'est bon
if ($options['modifiable']) {
return true;

rastapopoulos@spip.org
a validé
include_spip('inc/formidable');
// Si la personne n'a jamais répondu, c'est bon

maieul@maieul.net
a validé
if (!formidable_verifier_reponse_formulaire($id, $traitements['enregistrement']['identification'], $traitements['enregistrement']['variable_php'])) {

rastapopoulos@spip.org
a validé
return true;

rastapopoulos@spip.org
a validé
return false;
}
}
}
}

camille.sauvage@espci.fr
a validé
/**
* Autorisation d'associer un nouvel auteur à un formulaire
*
* mêmes autorisations que pour éditer le formulaire
*
**/
function autoriser_formulaire_associerauteurs_dist($faire, $type, $id, $qui, $opt) {
return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
}
/**
* Autorisation de modifier un formulaire
*
* mêmes autorisations que pour éditer le formulaire
*
**/
function autoriser_formulaire_modifier_dist($faire, $type, $id, $qui, $opt) {
return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
}

marcimat@rezo.net
a validé
/**
* Autorisation d'instituer une réponse
*
* On peut modérer une réponse si on est admin
*
* @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_instituer_dist($faire, $type, $id, $qui, $opt) {

camille.sauvage@espci.fr
a validé
return formidable_auteur_admin_reponse($qui);

marcimat@rezo.net
a validé
/**
* Autorisation de voir les réponses d'un formulaire formidable
*
* Au moins rédacteur pour 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_voir_dist($faire, $type, $id, $qui, $opt) {

camille.sauvage@espci.fr
a validé
return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);

camille.sauvage@espci.fr
a validé
/**
* 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) {
$id = intval($id);
if ($id_formulaire = intval(
sql_getfetsel(
'id_formulaire',
'spip_formulaires_reponses',
"id_formulaires_reponse=$id"
)
)) {

rastapopoulos@spip.org
a validé
return
autoriser_formulaire_editer_dist($faire, $type, $id_formulaire, $qui, $opt)
and formidable_auteur_admin_reponse($qui);

camille.sauvage@espci.fr
a validé
}

rastapopoulos@spip.org
a validé
return false;

camille.sauvage@espci.fr
a validé
}

marcimat@rezo.net
a validé
/**
* Autorisation de supprimer une réponse d'un formulaire formidable
*

camille.sauvage@espci.fr
a validé
* Il faut pouvoir modifier les réponses d'un formulaire pour pouvoir les en supprimer

marcimat@rezo.net
a validé
*
* @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
**/

camille.sauvage@espci.fr
a validé
function autoriser_formulairesreponse_supprimer_dist($faire, $type, $id, $qui, $opt) {
$retour = autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt);

camille.sauvage@espci.fr
a validé
return $retour;

rastapopoulos@spip.org
a validé
/**
* Autorisation de poster une réponse en Collection+JSON
*
* Tout le monde peut, l'autorisation réelle se fera après pendant le traitement, suivant l'id_formulaire envoyé
*
* @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_post_collection_dist($faire, $type, $id, $qui, $opt) {
return true;
}