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 | */ |
---|
34 | if (!defined("_ECRIRE_INC_VERSION")) return; |
---|
35 | global $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 | */ |
---|
43 | function 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 | */ |
---|
78 | function 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 | */ |
---|
107 | function 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('&'))); |
---|
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 | ?> |
---|