root/spip/ecrire/balise/formulaire_ecrire_auteur.php

Revision 12187, 2.1 kB (checked in by esj@…, 4 months ago)

Les LEFT JOIN c'est plus clair que le tableau fait pour le compilateur.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2008                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
14
15include_spip('base/abstract_sql');
16
17// On prend l'email dans le contexte de maniere a ne pas avoir a le
18// verifier dans la base ni a le devoiler au visiteur
19
20
21// http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR
22function balise_FORMULAIRE_ECRIRE_AUTEUR ($p) {
23    return calculer_balise_dynamique($p,'FORMULAIRE_ECRIRE_AUTEUR', array('id_auteur', 'id_article', 'email'));
24}
25
26// http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR_stat
27function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $filtres) {
28    include_spip('inc/filtres');
29
30    // Pas d'id_auteur ni d'id_article ? Erreur de squelette
31    $id = intval($args[1]);
32    if (!$args[0] AND !$id)
33        return erreur_squelette(
34            _T('zbug_champ_hors_motif',
35                array ('champ' => '#FORMULAIRE_ECRIRE_AUTEUR',
36                    'motif' => 'AUTEURS/ARTICLES')), '');
37
38    // Si on est dans un contexte article,
39    // sortir tous les mails des auteurs de l'article
40    if (!$args[0] AND $id) {
41        $r = '';
42        $s = sql_allfetsel('email',
43                   'spip_auteurs AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur',
44                   "A.email != '' AND L.id_article=$id");
45        foreach($s as $row) {
46            if (email_valide($row['email']))
47                $r .= ','.$row['email'];
48        }
49        $args[2] = substr($r, 1);
50    }
51
52    // On ne peut pas ecrire a un auteur dont le mail n'est pas valide
53    if (!$args[2] OR !email_valide($args[2]))
54        return '';
55
56    // OK
57    return $args;
58}
59
60?>
Note: See TracBrowser for help on using the browser.