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

Last change on this file since 76725 was 76725, checked in by cam.lafit@…, 6 years ago

Lancer Thelia si une action le demande

  • Il ne suffit pas d'avoir une boucle pour être dans un contexte Thelia

Exemple : la page mot de "mot de passe oublié" utilise uniquement une action Thelia.

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