source: spip-zone/_plugins_/tipafriend/balise/tipafriend.php @ 48796

Last change on this file since 48796 was 48796, checked in by piero.wbmstr@…, 10 years ago

Petites corrections + compatibilité "plugin.xml" avec SVP (+ montée en version vers 1.04)

  • Property svn:executable set to *
File size: 6.4 KB
Line 
1<?php
2/**
3 * Balise TIPAFRIEND dynamique
4 *
5 * En utilisation 'classique', la balise ne prend qu'un seul argument indiquant :
6 * - soit le squelette à choisir pour générer le bouton "Envoyer cette page ..." ; ce squelette doit
7 * être trouvé dans le répertoire 'modeles/'
8 * <pre>Exemple:
9 * #TIPAFRIEND{mon_squelette}</pre>
10 * - soit l'info 'mini' qui indique à la balise qu'elle ne doit afficher que l'image (sans le texte
11 * "Envoyer cette page ...")
12 * <pre>Exemple:
13 * #TIPAFRIEND{mini}</pre>
14 *
15 * Comme pour l'ensemble du plugin, si le squelette n'est pas trouvé, le squelette par défaut sera
16 * chargé à la place.
17 *
18 * Arguments complets possibles (cf. 'tipafriend_options.php') :
19 * => 1: type de squelette (cf. ci-dessus)
20 * => 2: URL
21 * => 3: email expediteur
22 * => 4: nom expediteur
23 * => 5: adresses destination
24 *
25 * Arguments ajoutés par la balise statique :
26 * => tot-1: id_objet
27 * => tot-2: type objet
28 *
29 * @name                BaliseDynamique
30 * @author              Piero Wbmstr <http://www.spip-contrib.net/PieroWbmstr>
31 * @license             http://opensource.org/licenses/gpl-license.php GNU Public License
32 * @package             Tip-a-friend
33 */
34if (!defined("_ECRIRE_INC_VERSION")) return;
35global $div_debug; $div_debug = array();
36
37/**
38 * Balise classique, appelée par SPIP
39 *
40 * On ajoute ici dans les paramètres du contexte de la balise les valeurs de l'objet demandé
41 * et de son identifiant
42 */
43function balise_TIPAFRIEND($p, $nom='TIPAFRIEND') {
44        global $div_debug;
45        if (!is_array($p->param) OR !count($p->param))
46                $p->param = array(array(0=>null));
47
48    $objet = $p->boucles[$p->id_boucle]->id_table;
49    $_objet = $objet ? objet_type($objet) : "balise_hors_boucle";
50        $t = new Texte;
51        $t->texte = $_objet;
52        $p->param[0][] = array($t); 
53        if(_TIPAFRIEND_TEST)
54                $div_debug[_T('tipafriend:taftest_creation_objet_texte')] = 
55                        var_export($t, true);
56
57        $_id_objet = $p->boucles[$p->id_boucle]->primary;
58    $id_objet = champ_sql($_id_objet, $p);
59        $t = new Champ;
60        $t->nom_champ = "id_$_objet";
61        $p->param[0][] = array($t); 
62        if(_TIPAFRIEND_TEST)
63                $div_debug[_T('tipafriend:taftest_creation_objet_champs')] =
64                        var_export($t, true);
65
66        // Arguments vides puisque fonction statique ci-dessous
67        $args = $supp = array();
68        return calculer_balise_dynamique($p, $nom, $args, $supp);
69}
70
71/**
72 * Balise statique
73 *
74 * On organise ici les paramètres qui seront passés à la fonction dynamiques,
75 * notamment en fonction de leur nombre (<i>paramètres passés à la balise dans les squelettes
76 * ou non ...</i>).
77 */
78function balise_TIPAFRIEND_stat($args, $filtres) {
79        global $div_debug;
80        $num = count($args);
81
82        if(_TIPAFRIEND_TEST)
83                $div_debug[_T('tipafriend:taftest_arguments_balise_stat')] =
84                        var_export($args, true);
85
86        $type_skel = ($num >= 3) ? $args[0] : ''; // 1: type de squelette
87        $url = ($num >= 4) ? $args[1] : ''; // 2: URL
88        $adresse_exped = ($num >= 5) ? $args[2] : ''; // 3: email expediteur
89        $nom_exped = ($num >= 6) ? $args[3] : ''; // 4: nom expediteur
90        $adresse_dest = ($num >= 7) ? $args[4] : ''; // 5: adresses destination
91
92    $objet = $args[$num-2]; // tot-2: type objet
93    $id_objet = $args[$num-1];// tot-1: id_objet
94
95        $args = array($objet, $id_objet, $url, $type_skel, $adresse_exped, $nom_exped, $adresse_dest);
96        return $args;
97}
98
99/**
100 * Balise dynamique
101 *
102 * On charge ici l'ensemble du contexte en fonction des paramètres passés et de la configuration
103 * courante. Puis on renvoie le modèle et le contexte.
104 *
105 * Le cache de ce modèle est fixé à 0. Cette valeur peut être modifiée en première ligne de cette fontion.
106 */
107function balise_TIPAFRIEND_dyn($objet='', $id_objet='', $url='', $skel='', $mail_exp='', $nom_exp='', $mail_dest='', $plus='') {
108        // Temps du cache sur le modèle | peut être modifié
109        $temps_de_cache = 0;
110
111        global $div_debug;
112        include_spip('inc/filtres');
113        $config = tipafriend_config();
114        $list_objets = array('article', 'breve', 'rubrique', 'mot', 'auteur', 'syndic');
115        $id = $type = '';
116
117        if(_TIPAFRIEND_TEST)
118                $div_debug[_T('tipafriend:taftest_arguments_balise_dyn')] =
119                        var_export(array('objet'=>$objet, 'id_objet'=>$id_objet, 'url'=>$url, 'squelette'=>$skel, 'adresse mail'=>$mail, 'ajouts'=>$plus), true);
120
121        // Completer la requete
122        $_url = strlen($url) ? urlencode($url) : urlencode(url_absolue(self('&amp;')));
123        $type_skel = strlen($skel) ? $skel : 'complet';
124        $model = str_replace('.html', '', $config['modele']);
125        if (!in_array($type_skel, array('mini','complet'))) {
126                $model = str_replace('.html', '', $type_skel);
127                $type_skel = 'complet';
128                if(_TIPAFRIEND_TEST)
129                        $div_debug[_T('tipafriend:taftest_modele_demande')] = var_export($model, true);
130        }
131        if(!find_in_path('modeles/'.$model.'.html')) {
132                if(_TIPAFRIEND_TEST)
133                        $div_debug[] = _T('tipafriend:taftest_skel_pas_trouve', array('skel'=>$model));
134                spip_log("TIPAFRIEND squelette de config utilisateur pas trouve ! ['$model']");
135                $model = str_replace('.html', '', $GLOBALS['TIPAFRIEND_DEFAULTS']['modele']);
136        }
137
138        // Construction du contexte
139        $contexte = array( 
140                'fond' => 'modeles/'.$model,
141                'url' => $_url,
142                'type' => $type_skel,
143                'options' => _request('options') ? _request('options') : (
144                        $config['options'] ? $config['options'] : ''
145                ),
146                'java' => ($config['javascript_standard'] == 'oui') ? 'oui' : 'non',
147                'adresse_expediteur' => $_mail ? $_mail : '',
148                'temps_cache' => $temps_de_cache
149        );
150        foreach($list_objets as $_obj){
151                if( strlen($objet) AND strtolower($objet) == $_obj) {
152                        $contexte["id_$_obj"] = $id_objet;
153                        $id = $id_objet;
154                        $type = $objet;
155                }
156                else $contexte["id_$_obj"] = '';
157        }
158        $url_args = "id=$id&type=$type&mex=$mail_exp&nex=$nom_exp&mdes=$mail_dest&usend=$_url";
159        $skel = $config['squelette'];
160        if(!find_in_path($skel.'.html')) {
161                if(_TIPAFRIEND_TEST)
162                        $div_debug[] = _T('tipafriend:taftest_skel_pas_trouve', array('skel'=>$skel));
163                spip_log("TIPAFRIEND squelette de config utilisateur pas trouve ! ['$skel']");
164                $skel = str_replace('.html', '', $GLOBALS['TIPAFRIEND_DEFAULTS']['squelette']);
165        }
166        if(_TIPAFRIEND_TEST) $url_args .= "&var_mode=recalcul";
167        $contexte['lien_href_accessible'] = generer_url_public($skel, $url_args);
168        if($config['header'] == 'non') $url_args .= "&header=non";
169        if($config['close_button'] == 'non') $url_args .= "&close_button=non";
170        if($config['taf_css'] == 'non') $url_args .= "&taf_css=non";
171        $contexte['lien_href'] = generer_url_public($skel, $url_args);
172
173        if(_TIPAFRIEND_TEST){
174                $div_debug[_T('tipafriend:taftest_contexte_modele')] = 
175                        var_export($contexte, true);
176                echo taf_dbg_block($div_debug);
177        }
178
179        return array('modeles/'.$model, $temps_de_cache, $contexte);
180}
181?>
Note: See TracBrowser for help on using the repository browser.