[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / balise / formulaire_ecrire_auteur.php
index 629d229..dbdf45e 100644 (file)
@@ -3,59 +3,98 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2016                                                *
+ *  Copyright (c) 2001-2017                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Ce fichier gère la balise dynamique `#FORMULAIRE_ECRIRE_AUTEUR`
+ *
+ * @package SPIP\Core\Compilateur\Balises
+ **/
 
-include_spip('base/abstract_sql');
-
-// On prend l'email dans le contexte de maniere a ne pas avoir a le
-// verifier dans la base ni a le devoiler au visiteur
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
+include_spip('base/abstract_sql');
 
-// http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR
-function balise_FORMULAIRE_ECRIRE_AUTEUR ($p) {
-       return calculer_balise_dynamique($p,'FORMULAIRE_ECRIRE_AUTEUR', array('id_auteur', 'id_article', 'email'));
+/**
+ * Compile la balise dynamique `#FORMULAIRE_ECRIRE_AUTEUR` qui permet
+ * très logiquement d'afficher un formulaire pour écrire à un auteur
+ *
+ * Cette balise récupère l'id_auteur (et son email) ou l'id_article de
+ * la boucle AUTEURS ou ARTICLES englobante.
+ *
+ * Le ou les emails correspondants à l'auteur ou aux auteurs de l'article
+ * sont transmis au formulaire CVT (mais ils ne seront pas dévoilés
+ * au visiteur).
+ *
+ * @balise
+ *
+ * @param Champ $p
+ *     Pile au niveau de la balise
+ * @return Champ
+ *     Pile complétée du code compilé
+ **/
+function balise_FORMULAIRE_ECRIRE_AUTEUR($p) {
+       return calculer_balise_dynamique($p, 'FORMULAIRE_ECRIRE_AUTEUR', array('id_auteur', 'id_article', 'email'));
 }
 
-// http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR_stat
+/**
+ * Calculs de paramètres de contexte automatiques pour la balise FORMULAIRE_ECRIRE_AUTEUR
+ *
+ * Retourne le contexte du formulaire uniquement si l'email de l'auteur
+ * est valide, sinon rien (pas d'exécution/affichage du formulaire)
+ *
+ * @param array $args
+ *   Liste des arguments demandés obtenus du contexte (id_auteur, id_article, email)
+ * @param array $context_compil
+ *   Tableau d'informations sur la compilation
+ * @return array|string
+ *   - Liste (id_auteur, id_article, email) des paramètres du formulaire CVT
+ *   - chaîne vide sinon (erreur ou non affichage).
+ */
 function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $context_compil) {
        include_spip('inc/filtres');
        // Pas d'id_auteur ni d'id_article ? Erreur de contexte
        $id = intval($args[1]);
-       if (!$args[0] AND !$id) {
-               $msg = array('zbug_champ_hors_motif',
-                               array ('champ' => 'FORMULAIRE_ECRIRE_AUTEUR',
-                                       'motif' => 'AUTEURS/ARTICLES'));
+       if (!$args[0] and !$id) {
+               $msg = array(
+                       'zbug_champ_hors_motif',
+                       array(
+                               'champ' => 'FORMULAIRE_ECRIRE_AUTEUR',
+                               'motif' => 'AUTEURS/ARTICLES'
+                       )
+               );
 
                erreur_squelette($msg, $context_compil);
+
                return '';
        }
        // Si on est dans un contexte article,
        // sortir tous les mails des auteurs de l'article
-       if (!$args[0] AND $id) {
+       if (!$args[0] and $id) {
                $r = '';
                $s = sql_allfetsel('email',
-                                  'spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON (A.id_auteur=L.id_auteur AND L.objet=\'article\')',
-                                  "A.email != '' AND L.id_objet=$id");
-               foreach($s as $row) {
-                       if (email_valide($row['email']))
-                               $r .= ', '.$row['email'];
+                       'spip_auteurs AS A LEFT JOIN spip_auteurs_liens AS L ON (A.id_auteur=L.id_auteur AND L.objet=\'article\')',
+                       "A.email != '' AND L.id_objet=$id");
+               foreach ($s as $row) {
+                       if (email_valide($row['email'])) {
+                               $r .= ', ' . $row['email'];
+                       }
                }
                $args[2] = substr($r, 2);
        }
 
        // On ne peut pas ecrire a un auteur dont le mail n'est pas valide
-       if (!$args[2] OR !email_valide($args[2]))
+       if (!$args[2] or !email_valide($args[2])) {
                return '';
+       }
 
        // OK
        return $args;
 }
-
-?>