source: spip-zone/_plugins_/plugin-thelia/spip_thelia_fonctions.php

Last change on this file was 88741, checked in by cedric@…, 4 years ago

Il est possible d'appeler plusieurs fois le moteur Thelia dans un hit pour le faire passer sur un squelette inclus qui ne depend pas de la session et mettre son resultat en cache avec #FILTRE{spip_thelia_appeler_moteur_thelia}

File size: 21.2 KB
Line 
1<?php
2
3include_spip("inc/charsets");
4include_spip('plugins/installer'); // spip_version_compare dans SPIP 3.x
5include_spip('inc/plugin'); // spip_version_compare dans SPIP 2.x
6if (spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0alpha', '>=')){
7        define('_SPIP3', true);
8} else {
9        define('_SPIP3', false);
10}
11
12
13function spip_thelia_supprimer_balises_thelia($texte){
14        //suppression des boucles thelia
15        $texte = str_replace("THELIA_", "DUMMY_", $texte);
16        //suppression des balises thelia
17        $texte = str_replace("THELIA-", "DUMMY-", $texte);
18        return $texte;
19}
20
21function spip_thelia_demarrer_session_thelia(){
22        pipeline('thelia_pre_session_thelia', array());
23
24        //sauvegarde des variables qui vont etre modifiees pour thelia
25        $GLOBALS['sav_page'] = $GLOBALS['page'];
26        $GLOBALS['sav_session_navig_lang'] = $_SESSION['navig']->lang;
27
28        //conflit sur la variable $page.
29        $GLOBALS['page'] = new stdclass;
30        $GLOBALS['page'] = "";
31
32        include_once(_DIR_RACINE . _RACINE_THELIA . "/classes/Navigation.class.php");
33
34        @ini_set('arg_separator.output', '&amp;');
35        @ini_set("url_rewriter.tags", "a=href,area=href,frame=src,iframe=src,input=src");
36        session_start();
37}
38
39function spip_thelia_header_prive($flux){
40        //si une boite de selection spip/thelia sera affichee sur la page, il faut demarrer prealablement une session thelia
41        $exec = $_REQUEST['exec'];
42        $id_article = $_REQUEST['id_article'];
43        $id_rubrique = $_REQUEST['id_rubrique'];
44        if (function_exists('lire_config')){
45                if (($exec=='articles') || ($exec=='article')){
46                        if ((lire_config("spip_thelia/produits_articles_spip_thelia", "non")=="oui") || (lire_config("spip_thelia/rubriques_articles_spip_thelia", "non")=="oui"))
47                                spip_thelia_demarrer_session_thelia();
48                } else if ((($exec=='naviguer') || ($exec = 'rubrique')) && ($id_rubrique)){
49                        if ((lire_config("spip_thelia/produits_rubriques_spip_thelia", "non")=="oui") || (lire_config("spip_thelia/rubriques_rubriques_spip_thelia", "non")=="oui"))
50                                spip_thelia_demarrer_session_thelia();
51                }
52        }
53
54
55        //on restaure les variables session et request modifiees pour les plugins suivants sur affichage final
56        $GLOBALS['page'] = $GLOBALS['sav_page'];
57        $_SESSION['navig']->lang = $GLOBALS['sav_session_navig_lang'];
58
59        if (!file_exists(_DIR_RACINE . _RACINE_THELIA . "fonctions/moteur.php") && ($_REQUEST['exec']!=""))
60                echo("erreur : th&eacute;lia introuvable, v&eacute;rifiez que les sous-r&eacute;pertoires de th&eacute;lia et spip sont dans le m&ecirc;me r&eacute;pertoire.");
61        if (!function_exists('lire_config'))
62                echo("erreur : le plugin CFG est n'est pas install&eacute;.");
63        return $flux;
64}
65
66function spip_thelia_insert_head($flux){
67        $flux .= "<link rel=\"stylesheet\" href=\"" . _DIR_PLUGIN_SPIP_THELIA . "spipthelia.css\" type=\"text/css\" media=\"projection, screen, tv\" />";
68        return $flux;
69}
70
71/**
72 * Appeler le moteur Thelia sur affichage_final pour faire un rendu des boucles et balises THELIA
73 *
74 * Il est aussi possible d'appeler cette fonction dans un squelette qui utilise des boucles THELIA pour mettre le resultat en cache SPIP
75 * si on sait qu'il ne depend pas de la session utilisateur (pour afficher un lien vers une rubrique de la boutique ou autre)
76 *
77 * #FILTRE{spip_thelia_appeler_moteur_thelia}
78 *
79 * La fonction peut donc etre appelee plusieurs fois dans un meme hit
80 *
81 * @param string $texte
82 * @return string
83 */
84function spip_thelia_appeler_moteur_thelia($texte){
85
86        include_spip("inc/utils");
87
88        //Obtenir les arguments de requete
89        $keys_request = array_keys($_REQUEST);
90
91
92        //si pas de boucle ou de balise thelia ou pas d'action thelia dans la page on sort     
93        if (((strpos($texte, "THELIA-")===FALSE) && (strpos($texte, "<THELIA")==FALSE)) && !count(preg_grep("#thelia.*#", $keys_request)))
94                return $texte;
95
96        pipeline('thelia_pre_session_thelia', array());
97        pipeline('thelia_pre_appeler_moteur', array());
98
99
100        //convertion utf-8 vers ISO des variables $_REQUEST
101        if (lire_config("spip_thelia/encodage_spip_thelia_post", "non")=="oui"){
102                $sauvegarde_request = array();
103                foreach ($_REQUEST as $clef => $valeur){
104                        $sauvegarde_request[$clef] = $valeur;
105                        $_REQUEST[$clef] = unicode2charset(charset2unicode($valeur, 'utf-8'), 'iso-8859-1');
106                }
107        }
108        //parsonnalisation des variables thelia
109        switch ($_REQUEST['page']) {
110                case 'merci' : $securise = 0; $pageret = 0; $reset = 1; break;
111                case 'panier' : $securise = 0; $pageret = 1; break;
112                case 'adresse' : $securise = 1; $pageret = 1; break;
113                case 'cheque' : $securise = 1; $pageret = 1; $reset = 1; break;
114                case 'commande' : $securise = 1; $pageret = 1; $panier = 1; $transport = 1; break;
115                case 'commande_detail' : $securise = 1; break;
116                case 'commande_visualiser' : $securise = 1; break;
117                case 'compte_modifier' : $formulaire = 1; $securise = 1; $obligetelfixe = 1; break;
118                case 'compte_modifiererr' : $formulaire = 1; $securise = 1; $obligetelfixe = 1; break;
119                case 'connexion' : $pageret = 0; break;
120                case 'livraison_adresse' : $securise = 1; break;
121                case 'livraison_modifier' : $securise = 1; break;
122                case 'moncompte' : $pageret = 1; $securise = 1; break;
123                case 'nouveau' : $securise = 1; break;
124                case 'regret' : $pageret = 1; break;
125                case 'virement' : $securise = 1; $pageret = 1; $reset = 1; break;
126                case 'formulerr' : set_request('errform', '1'); break;
127        }
128
129        //sauvegarde des variables qui vont etre modifiees pour thelia
130        $sav_page = $GLOBALS['page'];
131        $sav_session_navig_lang = $_SESSION['navig']->lang;
132
133        //conflit sur la variable $page.
134
135        $GLOBALS['page'] = new stdclass;
136        $GLOBALS['page'] = "";
137
138        include_once(_DIR_RACINE . _RACINE_THELIA . "classes/Navigation.class.php");
139
140        @ini_set('arg_separator.output', '&amp;');
141        @ini_set("url_rewriter.tags", "a=href,area=href,frame=src,iframe=src,input=src");
142        session_start();
143
144        //conflit entre spip et thelia sur la langue en session.
145        if ($_SESSION['navig']->lang!=''){
146                $_SESSION['navig']->lang = 0;
147        }
148
149        //concordance des langues entre spip et thelia
150        //modifiez eventuellement la liste si vous avez ajoute de nouvelles langues dans thelia
151
152        switch ($_REQUEST['lang']) {
153                case 'fr' :
154                        $_REQUEST['lang'] = 1;
155                        break;
156                case 'en' :
157                        $_REQUEST['lang'] = 2;
158                        break;
159                case 'es' :
160                        $_REQUEST['lang'] = 3;
161                        break;
162                default:
163                        $_REQUEST['lang'] = 1;
164                        break;
165        }
166
167        //reaffectation des variables de thelia qui ont etees renommees dans les squelettes pour eviter les conflits avec spip
168        $_REQUEST['action'] = $_REQUEST['thelia_action'];
169        // il faut peupler la globale $page pour que le pagination thelia fonctionne
170        $GLOBALS['page'] = $_REQUEST['page'] = $_REQUEST['page_thelia'];
171
172        if (isset($_REQUEST['thelia_article']))
173                $_REQUEST['article'] = $_REQUEST['thelia_article'];
174
175        //on prepare le flux e envoyer au moteur thelia
176        global $res;
177        $GLOBALS['res'] = $texte;
178        $GLOBALS['res'] = str_replace("THELIA-", "#", $GLOBALS['res']);
179
180        //avant d'envoyer a thelia, on convertie en iso pour thelia
181        if (lire_config("spip_thelia/encodage_spip_thelia", "non")=="oui"){
182                $GLOBALS['res'] = unicode2charset(charset2unicode($res, 'utf-8'), 'iso-8859-1');
183        }
184
185        //on bloque la sortie vers le navigateur le temps d'y faire quelques substitutions     
186        ob_start();
187
188        //si version >= 1.3.4 : plus de surcharge dans le plugin, on appelle directement le moteur de thelia
189        include(_DIR_RACINE . _RACINE_THELIA . "fonctions/moteur.php");
190
191        //Connexion à SPIP à la création du compte Thelia
192        if ($_REQUEST['page']=='nouveau' || $_REQUEST['page_thelia']=='nouveau' || $_REQUEST['action']=='transport' || $_REQUEST['action']=='paiement' || !$_REQUEST['page']){
193                if ($_SESSION['navig']->connecte==1 && lire_config("spip_thelia/auth_unique_spip_thelia", "non")=="oui"){
194                        include_spip('auth/thelia');
195                        $auteur = creer_auteur_thelia(
196                                array(
197                                        'login' => '',
198                                        'pass' => '',
199                                        'client' => $_SESSION['navig']->client
200                                )
201                        );
202                        $session = charger_fonction('session', 'inc');
203                        $session($auteur);
204                        $data = pipeline('thelia_authentifie', array("auteur" => $auteur, "statut" => "nouveau"));
205                }
206        }
207
208
209        $texte = ob_get_contents();
210        ob_end_clean();
211        $texte = remplacement_sortie_thelia($texte);
212
213        //au retour de thelia, on convertie en utf8 pour SPIP
214        if (lire_config("spip_thelia/encodage_spip_thelia", "non")=="oui")
215                $texte = unicode2charset(charset2unicode($texte, 'iso-8859-1'), 'utf-8');
216
217        //on restaure les variables session et request modifiees pour les plugins suivants sur affichage final
218        $GLOBALS['page'] = $sav_page;
219        $_SESSION['navig']->lang = $sav_session_navig_lang;
220
221        //restauration des variables $_REQUEST en utf-8 pour SPIP
222        if (lire_config("spip_thelia/encodage_spip_thelia_post", "non")=="oui"){
223                foreach ($sauvegarde_request as $clef => $valeur){
224                        $_REQUEST[$clef] = $valeur;
225                }
226        }
227
228        return ($texte);
229}
230
231function remplacement_sortie_thelia($in_thelia){
232        $pages = array(
233                "adresse",
234                "cheque",
235                "commande",
236                "commande_detail",
237                "commande_visualiser",
238                "compte_modifier",
239                "connexion",
240                "creercompte",
241                "formulerr",
242                "imgpop",
243                "livraison_adresse",
244                "mdpoublie",
245                "merci",
246                "moncompte",
247                "nouveau",
248                "panier",
249                "produit",
250                "regret",
251                "virement",
252        );
253
254        // renommage action en thelia_action. methode provisoire a revoir.
255        // gerer les 2 formats d'urls : ....php? ou ?page=...&amp;
256        foreach($pages as $p){
257                if (strpos($in_thelia,$p)!==false){
258                        $in_thelia = str_replace("{$p}.php?action", "{$p}.php?thelia_action", $in_thelia);
259                        $in_thelia = str_replace("={$p}&amp;action", "={$p}&amp;thelia_action", $in_thelia);
260                }
261        }
262
263        $in_thelia = str_replace("?fond=", "?page=", $in_thelia);
264        return $in_thelia;
265}
266
267function spip_thelia_affiche_milieu($flux){
268        $exec = $flux['args']['exec'];
269        $id_article = $_REQUEST['id_article'];
270        $id_rubrique = $_REQUEST['id_rubrique'];
271        if (function_exists('lire_config')){
272                if (($exec=='article') || ($exec=='articles')){
273                        if ((lire_config("spip_thelia/produits_articles_spip_thelia", "non")=="oui") || (lire_config("spip_thelia/rubriques_articles_spip_thelia", "non")=="oui"))
274                                $flux['data'] .= spip_thelia_formulaire_article($id_article, spip_thelia_article_editable($id_article), 'articles');
275                } else if ((($exec=='naviguer') || ($exec=='rubrique')) && ($id_rubrique)){
276                        if ((lire_config("spip_thelia/produits_rubriques_spip_thelia", "non")=="oui") || (lire_config("spip_thelia/rubriques_rubriques_spip_thelia", "non")=="oui"))
277                                $flux['data'] .= spip_thelia_formulaire_rubrique($id_rubrique, spip_thelia_rubrique_editable($id_rubrique), 'rubriques');
278                }
279        }
280        return $flux;
281}
282
283function spip_thelia_article_editable($id_article){
284        return autoriser('modifier', 'article', $id_article);
285}
286
287function spip_thelia_rubrique_editable($id_rubrique){
288        return autoriser('modifier', 'rubrique', $id_rubrique);
289}
290
291function spip_thelia_formulaire_article($id_article, $flag_editable, $script){
292
293        global $spip_lang_right;
294        include_spip("inc/presentation");
295        include_spip('public/assembler');
296        include_spip('inc/charsets');
297
298        global $spip_lang_left, $spip_lang_right, $options;
299        global $connect_statut, $options, $connect_id_auteur, $couleur_claire;
300
301        $out = "<div id='editer_produit-$id_article'>";
302        $out .= "<a name='produit'></a>";
303
304        // Quel est le bon titre
305        if (lire_config("spip_thelia/produits_articles_spip_thelia", "non")!="oui"){
306                $titre = _T('spipthelia:rubriques_associees_article');
307        } elseif (lire_config("spip_thelia/rubriques_articles_spip_thelia", "non")!="oui") {
308                $titre = _T('spipthelia:produits_associes_article');
309        } else {
310                $titre = _T('spipthelia:produits_et_rubriques_associes_article');
311        }
312
313        if (function_exists('bouton_block_depliable')){  // SPIP2.0
314                if ($flag_editable){
315                        if (_request('edit') || _request('neweven'))
316                                $bouton = bouton_block_depliable($titre, true, "produitsarticle");
317                        else
318                                $bouton = bouton_block_depliable($titre, false, "produitsarticle");
319                }
320                $out .= debut_cadre_enfonce(_DIR_PLUGIN_SPIP_THELIA . "/img_pack/logo_thelia_petit.png", true, "", $bouton);
321
322        } else {
323                if (_request('edit') || _request('neweven'))
324                        $bouton = bouton_block_visible("produitsarticle") . $titre;
325                else
326                        $bouton = bouton_block_invisible("produitsarticle") . $titre;
327                $out .= debut_cadre_enfonce(_DIR_PLUGIN_SPIP_THELIA . "/img_pack/logo_thelia_petit.png", true, "", $bouton);
328
329                //
330                // Afficher les produits associes
331                //
332                $out .= afficher_rubriques_objet('article', $id_rubrique);
333
334                $out .= afficher_produits_objet('article', $id_article);
335
336                $out .= debut_block_invisible('produitsarticle');
337        }
338
339
340        if (_SPIP3)
341                $link = generer_action_auteur('produits_article', "$id_article", generer_url_ecrire('article', 'id_article=' . $id_article));
342        else
343                $link = generer_action_auteur('produits_article', "$id_article", generer_url_ecrire('articles', 'id_article=' . $id_article));
344
345        $out .= "<form method='POST' action='$link'>\n";
346        $out .= form_hidden($link);
347
348        //masquer provisoirement les warning de session de thelia en attendant une correction
349        //thelia retourne des warning de session (headers already sent) car elle d�marre trop tard, mais on ne l'utilise pas, on se contente de lister les produits
350        $sav_error_reporting = error_reporting(E_ERROR);
351
352        //on bloque la sortie vers le navigateur le temps d'y faire quelques substitutions     
353        $res = recuperer_fond("fonds/produits_associes_article", array("id_article" => $id_article));
354        $res = str_replace("THELIA-", "#", $res);
355
356        //avant d'envoyer a thelia, on convertie en iso pour thelia
357        $res = unicode2charset(charset2unicode($res, 'utf-8'), 'iso-8859-1');
358        ob_start();
359        include_once(_DIR_RACINE . _RACINE_THELIA . "fonctions/moteur.php");
360        $texte = ob_get_contents();
361        ob_end_clean();
362        $texte = remplacement_sortie_thelia($texte);
363
364        //au retour de thelia, on convertit en utf8 pour SPIP
365        if (!is_utf8($texte)) $texte = unicode2charset(charset2unicode($texte, 'iso-8859-1'), 'utf-8');
366        $out .= $texte;
367
368        //remettre le niveau d'erreur precedent
369        error_reporting($sav_error_reporting);
370
371        $out .= "</form>\n";
372
373        $out .= fin_block();
374
375        $out .= fin_cadre_enfonce(true);
376        $out .= "</div><br/>";
377        return $out;
378}
379
380function spip_thelia_formulaire_rubrique($id_rubrique, $flag_editable, $script){
381
382        global $spip_lang_right;
383        include_spip("inc/presentation");
384        include_spip('public/assembler');
385        include_spip('inc/charsets');
386
387        global $spip_lang_left, $spip_lang_right, $options;
388        global $connect_statut, $options, $connect_id_auteur, $couleur_claire;
389
390        // Quel est le bon titre       
391        if (lire_config("spip_thelia/produits_rubriques_spip_thelia", "non")!="oui"){
392                $titre = _T('spipthelia:rubriques_associees_rubrique');
393        } elseif (lire_config("spip_thelia/rubriques_rubriques_spip_thelia", "non")!="oui") {
394                $titre = _T('spipthelia:produits_associes_rubrique');
395        } else {
396                $titre = _T('spipthelia:produits_et_rubriques_associes_rubrique');
397        }
398
399        $out = "<div id='editer_produit-$id_rubrique'>";
400        $out .= "<a name='produit'></a>";
401        if (function_exists('bouton_block_depliable')){ // SPIP2.0
402                if ($flag_editable){
403                        if (_request('edit') || _request('neweven'))
404                                $bouton = bouton_block_depliable($titre, true, "produitsrubrique");
405                        else
406                                $bouton = bouton_block_depliable($titre, false, "produitsrubrique");
407                }
408                $out .= debut_cadre_enfonce(_DIR_PLUGIN_SPIP_THELIA . "/img_pack/logo_thelia_petit.png", true, "", $bouton);
409
410        } else {
411                if (_request('edit') || _request('neweven'))
412                        $bouton = bouton_block_visible("produitsrubrique") . $titre;
413                else
414                        $bouton = bouton_block_invisible("produitsrubrique") . $titre;
415                $out .= debut_cadre_enfonce(_DIR_PLUGIN_SPIP_THELIA . "/img_pack/logo_thelia_petit.png", true, "", $bouton);
416
417                //
418                // Afficher les produits associes
419                //
420                $out .= afficher_rubriques_objet('rubrique', $id_rubrique);
421
422                $out .= afficher_produits_objet('rubrique', $id_rubrique);
423
424                $out .= debut_block_invisible('produitsrubrique');
425        }
426
427
428        if (_SPIP3)
429                $link = generer_action_auteur('produits_rubrique', "$id_rubrique", generer_url_ecrire('rubrique&id_rubrique=' . $id_rubrique, "", false, true));
430        else
431                $link = generer_action_auteur('produits_rubrique', "$id_rubrique", generer_url_ecrire('naviguer&id_rubrique=' . $id_rubrique, "", false, true));
432
433        $out .= "<form method='POST' action='$link'>\n";
434        $out .= form_hidden($link);
435
436        //masquer provisoirement les warning de session de thelia en attendant une correction
437        //thelia retourne des warning de session (headers already sent) car elle demarre trop tard, mais on ne l'utilise pas, on se contente de lister les produits
438        $sav_error_reporting = error_reporting(E_ERROR);
439
440        //on bloque la sortie vers le navigateur le temps d'y faire quelques substitutions     
441        $res = recuperer_fond("fonds/produits_associes_rubrique", array("id_rubrique" => $id_rubrique));
442        $res = str_replace("THELIA-", "#", $res);
443
444        //avant d'envoyer a thelia, on convertie en iso pour thelia
445        $res = unicode2charset(charset2unicode($res, 'utf-8'), 'iso-8859-1');
446        ob_start();
447        include_once(_DIR_RACINE . _RACINE_THELIA . "fonctions/moteur.php");
448        $texte = ob_get_contents();
449        ob_end_clean();
450        $texte = remplacement_sortie_thelia($texte);
451
452        //au retour de thelia, on convertit en utf8 pour SPIP
453        if (!is_utf8($texte)) $texte = unicode2charset(charset2unicode($texte, 'iso-8859-1'), 'utf-8');
454        $out .= $texte;
455
456        //remettre le niveau d'erreur precedent
457        error_reporting($sav_error_reporting);
458
459        $out .= "</form>\n";
460
461        $out .= fin_block();
462        $out .= fin_cadre_enfonce(true);
463        $out .= "</div><br/>";
464        return $out;
465}
466
467function afficher_produits_objet($type, $id){
468
469        if (!preg_match(',^[a-z]*$,', $type)) return '';
470
471        $result = determiner_produits_objet($type, $id);
472        if (!spip_num_rows($result)) return '';
473
474        $table = array();
475
476        while ($row = spip_fetch_array($result)){
477                $vals = array();
478                if (!is_utf8($row['titre'])) $row['titre'] = unicode2charset(charset2unicode($row['titre'], 'iso-8859-1'), 'utf-8');
479
480                $puce = ($row['ligne']) ? find_in_path('images/puce-verte.gif') : find_in_path('images/puce-orange.gif');
481                $etat = ($row['ligne']) ? _T('spipthelia:produit_en_ligne') : _T('spipthelia:produit_non_publie');
482                $url = generer_url_ecrire('spip_thelia_catalogue', 'thelia_url=' . urlencode('produit_modifier.php?ref=' . $row['ref'] . '&rubrique=' . $row['rubrique']));
483                $link = "<a class='product_details' href='%s' target='_blank'>%s</a>";
484
485                $vals[] = sprintf($link, $url, "<img src='$puce' alt='$etat'/>");
486                $vals[] = sprintf($link, $url, $row['titre']);
487                $vals[] = sprintf(number_format($row['prix'], 2));
488
489                $table[] = $vals;
490        }
491
492        $largeurs = array('14', '', '', '', '', '');
493        $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial1');
494
495        $t = afficher_liste($largeurs, $table, $styles);
496        $tranches = '';
497        if ($GLOBALS['spip_display']!=4)
498                $t = $tranches
499                        . "<table width='100%' cellpadding='3' cellspacing='0' border='0'>"
500                        . "<thead><tr><th>&nbsp;</th><th>" . _T('spipthelia:nom_du_produit') . "</th><th>" . _T('spipthelia:prix') . "</th></tr></head><tbody>"
501                        . $t
502                        . "</tbody></table>";
503        return "<div class='liste'>$t</div>\n";
504}
505
506function determiner_produits_objet($type, $id){
507        $les_produits = array();
508        if (!preg_match(',^[a-z]*$,', $type)) return $les_produits;
509
510        $result = spip_query("SELECT titre,ref,prix,ligne,rubrique
511                FROM spip_produits_{$type}s
512                JOIN produit ON produit.id = spip_produits_{$type}s.id_produit
513                JOIN produitdesc ON produitdesc.id = spip_produits_{$type}s.id_produit
514                WHERE id_{$type}=" . _q($id));
515
516        return $result;
517}
518
519function afficher_rubriques_objet($type, $id){
520
521        if (!preg_match(',^[a-z]*$,', $type)) return '';
522
523        $result = determiner_rubriques_objet($type, $id);
524        if (!spip_num_rows($result)) return '';
525
526        $table = array();
527
528        while ($row = spip_fetch_array($result)){
529                $vals = array();
530                if (!is_utf8($row['titre'])) $row['titre'] = unicode2charset(charset2unicode($row['titre'], 'iso-8859-1'), 'utf-8');
531
532                $puce = ($row['ligne']) ? find_in_path('images/puce-verte.gif') : find_in_path('images/puce-orange.gif');
533                $etat = ($row['ligne']) ? _T('spipthelia:rubrique_en_ligne') : _T('spipthelia:rubrique_non_publiee');
534                $url = generer_url_ecrire('spip_thelia_catalogue', 'thelia_url=' . urlencode('parcourir.php?parent=' . $row['rubrique']));
535                $link = "<a class='product_details' href='%s' target='_blank'>%s</a>";
536
537                $vals[] = sprintf($link, $url, "<img src='$puce' alt='$etat'/>");
538                $vals[] = sprintf($link, $url, $row['titre']);
539
540                $table[] = $vals;
541        }
542
543        $largeurs = array('14', '', '', '', '', '');
544        $styles = array('arial11', 'arial2', 'arial11', 'arial11', 'arial11', 'arial1');
545
546        $t = afficher_liste($largeurs, $table, $styles);
547        $tranches = '';
548        if ($GLOBALS['spip_display']!=4)
549                $t = $tranches
550                        . "<table width='100%' cellpadding='3' cellspacing='0' border='0'>"
551                        . "<thead><tr><th>&nbsp;</th><th>" . _T('spipthelia:nom_de_la_rubrique') . "</th></tr></head><tbody>"
552                        . $t
553                        . "</tbody></table>";
554        return "<div class='liste'>$t</div>\n";
555}
556
557function determiner_rubriques_objet($type, $id){
558        $les_produits = array();
559        if (!preg_match(',^[a-z]*$,', $type)) return $les_produits;
560
561        $result = spip_query("SELECT titre,ligne,rubrique
562                FROM spip_rubriquesthelia_{$type}s
563                JOIN rubrique ON rubrique.id = spip_rubriquesthelia_{$type}s.id_rubriquethelia
564                JOIN rubriquedesc ON rubriquedesc.rubrique = spip_rubriquesthelia_{$type}s.id_rubriquethelia
565                WHERE id_{$type}=" . _q($id));
566
567        return $result;
568}
569
Note: See TracBrowser for help on using the repository browser.