X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Fbalise%2Fformulaire_ecrire_auteur.php;fp=www%2Fecrire%2Fbalise%2Fformulaire_ecrire_auteur.php;h=dbdf45e3bc20b0f2550c2023c30546d67d3bcfd6;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=629d2295f8e1d648ac571d6429df374829a30583;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/balise/formulaire_ecrire_auteur.php b/www/ecrire/balise/formulaire_ecrire_auteur.php index 629d2295..dbdf45e3 100644 --- a/www/ecrire/balise/formulaire_ecrire_auteur.php +++ b/www/ecrire/balise/formulaire_ecrire_auteur.php @@ -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; } - -?>