[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / formidable / formidable_autorisations.php
index 91b3ed6..2551a3e 100644 (file)
@@ -7,7 +7,9 @@
 **/
 
 // Sécurité
-if (!defined("_ECRIRE_INC_VERSION")) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 include_spip('action/editer_liens');
 include_spip('inc/config');
@@ -23,17 +25,19 @@ include_spip('inc/config');
  *
 */
 function formidable_autoriser_par_auteur($id, $id_auteur = 0) {
-       if ($id == 0) return true;
+       if ($id == 0) {
+               return true;
+       }
 
        $retour = false;
 
-       if ($id_auteur == 0)
+       if ($id_auteur == 0) {
                $id_auteur = session_get('id_auteur');
-
+       }
        if ($id_auteur == null) {
                $retour = false;
        } else {
-               $autorisations = objet_trouver_liens(array('formulaire'=>$id),array('auteur'=>$id_auteur));
+               $autorisations = objet_trouver_liens(array('formulaire' => $id), array('auteur' => $id_auteur));
                $retour = count($autorisations) > 0;
        }
 
@@ -65,7 +69,8 @@ function formidable_auteur_admin_reponse($qui) {
  * Fonction d'appel pour le pipeline
  * @pipeline autoriser
  */
-function formidable_autoriser(){}
+function formidable_autoriser() {
+}
 
 /**
  * Autorisation d'éditer un formulaire formidable
@@ -79,22 +84,28 @@ function formidable_autoriser(){}
  * @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){
+function autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt) {
        $auteurs = lire_config('formidable/analyse/auteur');
 
        /* administrateur ? */
-       if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and (!$qui['restreint']))
+       if (isset($qui['statut']) and $qui['statut'] <= '0minirezo' and (count($qui['restreint']) == 0)) {
                return true;
+       }
 
        /* Test des autorisations par auteur */
        if ($auteurs == 'on') {
                return formidable_autoriser_par_auteur($id);
-       } else {
-               /* dans un else car la config 'auteurs' doit primer sur l'admin restreint */
-               if ($GLOBALS['formulaires']['autoriser_admin_restreint'])
-                       return true;
-               else
-                       return false;
+       }
+
+       /* Test des autorisations pour un admin restreint */
+       if (count($qui['restreint'])) {
+               $autoriser_admin_restreint = isset($GLOBALS['autoriser_admin_restreint'])
+                               ? $GLOBALS['autoriser_admin_restreint']
+                                       : lire_config('formidable/analyse/autoriser_admin_restreint') == 'on'
+                                               ? true
+                                               : false;
+
+               return $autoriser_admin_restreint;
        }
 }
 
@@ -110,9 +121,12 @@ function autoriser_formulaire_editer_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_menu_dist($faire, $type, $id, $qui, $opt){
-    if (isset($qui['statut']) and $qui['statut'] <= '1comite') return true;
-    else return false;
+function autoriser_formulaires_menu_dist($faire, $type, $id, $qui, $opt) {
+       if (isset($qui['statut']) and $qui['statut'] <= '1comite') {
+               return true;
+       } else {
+               return false;
+       }
 }
 
 
@@ -132,39 +146,42 @@ function autoriser_formulaires_menu_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_formulaire_repondre_dist($faire, $type, $id, $qui, $opt){
-// On regarde si il y a déjà le formulaire dans les options
-    if (isset($options['formulaire']))
-        $formulaire = $options['formulaire'];
-    // Sinon on va le chercher
-    else{
-        $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
-    }
-
-    $traitements = unserialize($formulaire['traitements']);
-
-    // S'il n'y a pas d'enregistrement, c'est forcément bon
-    if (!($options = $traitements['enregistrement']))
-        return true;
-    // Sinon faut voir les options
-    else{
-        // Si multiple = oui c'est bon
-        if ($options['multiple'])
-            return true;
-        else{
-            // Si c'est modifiable, c'est bon
-            if ($options['modifiable'])
-                return true;
-            else{
-                include_spip('inc/formidable');
-                // Si la personne n'a jamais répondu, c'est bon
-                if (!formidable_verifier_reponse_formulaire($id))
-                    return true;
-                else
-                    return false;
-            }
-        }
-    }
+function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt) {
+       $id = intval($id);
+
+       // 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
+               $formulaire = sql_fetsel('*', 'spip_formulaires', 'id_formulaire = '.$id);
+       }
+
+       $traitements = unserialize($formulaire['traitements']);
+
+       // S'il n'y a pas d'enregistrement, c'est forcément bon
+       if (!isset($traitements['enregistrement']) or !($options = $traitements['enregistrement'])) {
+               return true;
+       } else {
+               // Sinon faut voir les options
+               // Si multiple = oui c'est bon
+               if ($options['multiple']) {
+                       return true;
+               } else {
+                       // Si c'est modifiable, c'est bon
+                       if ($options['modifiable']) {
+                               return true;
+                       } else {
+                               include_spip('inc/formidable');
+                               // Si la personne n'a jamais répondu, c'est bon
+                               if (!formidable_verifier_reponse_formulaire($id)) {
+                                       return true;
+                               } else {
+                                       return false;
+                               }
+                       }
+               }
+       }
 }
 
 /**
@@ -200,7 +217,7 @@ 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_formulairesreponse_instituer_dist($faire, $type, $id, $qui, $opt){
+function autoriser_formulairesreponse_instituer_dist($faire, $type, $id, $qui, $opt) {
        return formidable_auteur_admin_reponse($qui);
 }
 
@@ -216,7 +233,7 @@ function autoriser_formulairesreponse_instituer_dist($faire, $type, $id, $qui, $
  * @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){
+function autoriser_formulairesreponse_voir_dist($faire, $type, $id, $qui, $opt) {
        return autoriser_formulaire_editer_dist($faire, $type, $id, $qui, $opt);
 }
 
@@ -233,14 +250,22 @@ 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_modifier_dist($faire, $type, $id, $qui, $opt){
-    if ($id_formulaire = intval(sql_getfetsel(
-                       'id_formulaire', 'spip_formulaires_reponses', "id_formulaires_reponse=$id"))) {
+function autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt) {
+       $id = intval($id);
 
-               $retour = (autoriser_formulaire_editer_dist($faire, $type, $id_formulaire, $qui, $opt)
-                               and formidable_auteur_admin_reponse($qui));
+       if ($id_formulaire = intval(
+               sql_getfetsel(
+                       'id_formulaire',
+                       'spip_formulaires_reponses',
+                       "id_formulaires_reponse=$id"
+               )
+       )) {
+               return
+                       autoriser_formulaire_editer_dist($faire, $type, $id_formulaire, $qui, $opt)
+                       and formidable_auteur_admin_reponse($qui);
        }
-       return $retour;
+
+       return false;
 }
 
 /**
@@ -257,7 +282,22 @@ function autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $o
 **/
 function autoriser_formulairesreponse_supprimer_dist($faire, $type, $id, $qui, $opt) {
        $retour = autoriser_formulairesreponse_modifier_dist($faire, $type, $id, $qui, $opt);
+
        return $retour;
 }
 
-?>
+/**
+ * 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;
+}