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

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

Indentation et suppresion du ?> final

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