[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / balise / url_logout.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
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
13 /**
14 * Ce fichier gère la balise dynamique `#URL_LOGOUT`
15 *
16 * @package SPIP\Core\Compilateur\Balises
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 /**
24 * Compile la balise dynamique `#URL_LOGOUT` qui génère une URL permettant
25 * de déconnecter l'auteur actuellement connecté
26 *
27 * @balise
28 * @example
29 * ```
30 * [<a href="(#URL_LOGOUT)">déconnexion</a>]
31 * ```
32 *
33 * @param Champ $p
34 * Pile au niveau de la balise
35 * @return Champ
36 * Pile complétée du code compilé
37 **/
38 function balise_URL_LOGOUT($p) {
39 return calculer_balise_dynamique($p, 'URL_LOGOUT', array());
40 }
41
42
43 /**
44 * Calculs de paramètres de contexte automatiques pour la balise URL_LOGOUT
45 *
46 * @param array $args
47 * Liste des arguments transmis à la balise
48 * - `$args[0]` = URL destination après logout `[(#URL_LOGOUT{url})]`
49 * @param array $context_compil
50 * Tableau d'informations sur la compilation
51 * @return array
52 * Liste (url) des arguments collectés.
53 */
54 function balise_URL_LOGOUT_stat($args, $context_compil) {
55 $url = isset($args[0]) ? $args[0] : '';
56
57 return array($url);
58 }
59
60 /**
61 * Exécution de la balise dynamique `#URL_LOGOUT`
62 *
63 * Retourne une URL de déconnexion uniquement si le visiteur est connecté.
64 *
65 * @param string $cible
66 * URL de destination après déconnexion
67 * @return string
68 * URL de déconnexion ou chaîne vide.
69 **/
70 function balise_URL_LOGOUT_dyn($cible) {
71
72 if (!$GLOBALS['visiteur_session']['login'] and !$GLOBALS['visiteur_session']['statut']) {
73 return '';
74 }
75
76 return generer_url_action('logout', "logout=public&url=" . rawurlencode($cible ? $cible : self('&')));
77 }