Subversion Repositories Applications.papyrus

Rev

Rev 876 | Rev 1061 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
1033 ddelon 22
// CVS : $Id: afficheur.php,v 1.11 2006-10-16 15:49:07 ddelon Exp $
6 jpm 23
/**
24
* Application réalisant l'affichage du contenu stocké dans Papyrus.
25
*
26
* Récupère le dernier contenu lié à un menu et le retourne.
27
*
28
*@package Afficheur
29
//Auteur original :
30
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
31
//Autres auteurs :
32
*@author        Alexandre GRANIER <alexandrel@tela-botanica.org>
33
*@copyright     Tela-Botanica 2000-2004
1033 ddelon 34
*@version       $Revision: 1.11 $ $Date: 2006-10-16 15:49:07 $
6 jpm 35
// +------------------------------------------------------------------------------------------------------+
36
*/
37
 
38
// +------------------------------------------------------------------------------------------------------+
39
// |                                            ENTÊTE du PROGRAMME                                       |
40
// +------------------------------------------------------------------------------------------------------+
181 jpm 41
/** Inclusion du fichier de configuration de cette application.*/
42
require_once GEN_CHEMIN_PAP.'applications/afficheur/configuration/affi_configuration.inc.php';
351 jpm 43
// Inclusion de la bibliothèque PEAR Text_Wiki réalisées par Papyrus.
6 jpm 44
 
45
// +------------------------------------------------------------------------------------------------------+
46
// |                                            CORPS du PROGRAMME                                        |
47
// +------------------------------------------------------------------------------------------------------+
48
/** Fonction afficherContenuTete() - Fonction appelé par le gestionnaire Papyrus.
49
*
50
* Elle retourne l'entête de l'application..
51
*
52
* @return  string  du code XHTML correspondant à la zone d'entête de l'application.
53
*/
54
function afficherContenuTete()
55
{
56
    return '';
57
}
58
 
1033 ddelon 59
function afficherContenuCorps() {
60
 
61
 
62
    $retour = '';
63
 
64
    $db=$GLOBALS['_AFFICHEUR']['objet_pear_db'];
65
 
66
	$id_or=GEN_rechercheMenuCode($db,GEN_rechercheMenuIdentifiant($db,$GLOBALS['_AFFICHEUR']['menu_courant_id']));
67
 
68
    $ligne_contenu=GEN_rechercheContenu($db,$id_or);
69
 
70
	$contenu = $ligne_contenu->gmc_contenu;
71
 
72
	    // Inclusion de la bibliothèque Text_Wiki_Papyrus effectuées par Papyrus précédement
73
	    // Les actions Text_Wiki_Papyrus sont gérées par Papyrus
74
 
75
	    // Nous regardons si nous avons à faire à un texte sous format Wikini ou XHTML
76
	    if (($ligne_contenu->gmc_ce_type_contenu == 1)||(substr($ligne_contenu->gmc_ce_type_contenu,-1)== 1)) {
77
	        $retour = $contenu;
78
	    } elseif (($ligne_contenu->gmc_ce_type_contenu == 2) || (substr($ligne_contenu->gmc_ce_type_contenu,-1)== 2)){
79
	        include_once AFFI_CHEMIN_BIBLIOTHEQUE_API.'text/wiki_wikini/Wikini.class.php';
80
	        // Création d'un objet Text_Wikini :
81
	        $wikini =& new Text_Wikini();
82
	        // Pour éviter de remplacer les caractères spéciaux du XHTML:
83
	        $wikini->setFormatConf('Xhtml', 'translate', false);
84
	        // Configuration de la règle Freelink :
85
	        $wikini->setRenderConf('Xhtml', 'freelink', 'pages', null);
86
	        $wikini->setRenderConf('Xhtml', 'freelink', 'view_url', AFFI_URL_PAPYRUS);
87
	        // Configuration de la règle Interwiki :
88
	        $wikini->setRenderConf('Xhtml', 'interwiki', 'sites', $GLOBALS['_AFFICHEUR']['interwiki_sites']);
89
	        // Application des règles de Wikini :
90
	        $retour = $wikini->transform($contenu, 'Xhtml');
91
	    }
92
 
93
 
94
    //----------------------------------------------------------------------------
95
    // Renvoie du contenu de la page
96
    return $retour;
97
}
98
 
99
 
100
 
6 jpm 101
/** Fonction afficherContenuCorps() - Fonction appelé par le gestionnaire Papyrus.
102
*
103
* Elle retourne le contenu stocké dans Papyrus pour le menu courant demandé.
104
*
105
* @return  string  du code XHTML correspondant au contenu du menu demandé.
106
*/
1033 ddelon 107
function afficherContenuCorpsOld()
6 jpm 108
{
109
    //----------------------------------------------------------------------------
110
    // Initialisation des variable
111
    $retour = '';
181 jpm 112
 
754 ddelon 113
    $id_langue = $GLOBALS['_GEN_commun']['i18n'];
6 jpm 114
 
754 ddelon 115
    if (isset($id_langue) && ($id_langue!='')) {
116
		$langue_test=$id_langue;
117
	} else {
118
		$langue_test=GEN_I18N_ID_DEFAUT;
119
	}
120
 
121
	//-------------------------------------------------------------------------------------------------------------------
122
        // Récupération des informations du contenu concerné.
123
     $ligne_menu = GEN_lireInfoMenu($GLOBALS['_AFFICHEUR']['objet_pear_db'], $GLOBALS['_AFFICHEUR']['menu_courant_id'], DB_FETCHMODE_ASSOC);
124
 
125
 
126
     if ($ligne_menu == false) {
127
            die('ERREUR Papyrus Administrateur de Menus: impossible de lire les infos du menu.<br />'.
128
                'Idenitifiant du menu n° : '. $GLOBALS['_AFFICHEUR']['objet_pear_db'] .'<br />'.
129
                'Ligne n° : '. __LINE__ .'<br />'.
130
                'Fichier n° : '. __FILE__ .'<br />');
131
     }
132
 
133
 
767 ddelon 134
    // Comment ca marche ?
135
    // Historiquement, le code menu est associé au contenu
136
    // Depuis le passage au multilinguisme : ce comportement est conservé mais :
137
    // Tout nouveau contenu, contient également l'information code gm_id_menu, enfoui dans le
138
    // type contenu.
139
 
754 ddelon 140
    // Récupération identifiant du menu en cours
6 jpm 141
 
767 ddelon 142
    $requete =  'SELECT gm_id_menu, gm_code_num   '.
754 ddelon 143
                'FROM gen_menu  '.
144
                'WHERE gm_code_num =  '.$ligne_menu['gm_code_num'].' '.
145
                'AND gm_ce_i18n = "'.$langue_test.'" ';
146
 
147
	$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
148
 
149
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
767 ddelon 150
	if ( $resultat->numRows() > 0 ) {
754 ddelon 151
 
767 ddelon 152
			$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
153
	}
154
	else {
754 ddelon 155
 
876 ddelon 156
	// Recherche defaut :
1033 ddelon 157
 
767 ddelon 158
	$requete =  'SELECT gm_id_menu, gm_code_num   '.
159
                'FROM gen_menu  '.
797 ddelon 160
                'WHERE gm_code_num =  '.$ligne_menu['gm_code_num'].' ';
876 ddelon 161
                'AND gm_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" ';
767 ddelon 162
 
163
		$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
164
 
165
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
166
 
167
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
876 ddelon 168
 
169
			if ($langue_test!=GEN_I18N_ID_DEFAUT) {
170
 
171
			    $requete_defaut =   'SELECT gmr_id_menu_02 as gm_id_menu , ' . $ligne->gm_code_num . ' as gm_code_num '.
172
	                            	'FROM  gen_menu_relation '.
173
	                            	'WHERE '.$ligne->gm_id_menu. ' = gmr_id_menu_01 ' .
174
	                            	'AND  gmr_id_valeur  = 105 ';// 105 Traduction par defaut
175
				$resultat_defaut = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete_defaut);
176
				(DB::isError($resultat_defaut))             ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_defaut->getMessage(), $requete_defaut))
177
				: '';
178
				if ($resultat_defaut->numRows() > 0) {
179
						$ligne=$resultat_defaut->fetchRow(DB_FETCHMODE_OBJECT);
180
				}
181
			}
182
		}
767 ddelon 183
 
1033 ddelon 184
	// Cas historique : ce menu n'a jamais été traduit.
767 ddelon 185
	$requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
186
	                'FROM gen_menu_contenu  '.
797 ddelon 187
	                'WHERE gmc_ce_menu = '.$ligne->gm_id_menu.' '.
767 ddelon 188
	                'AND gmc_ce_type_contenu in (1,2) '.
189
	                'AND gmc_bool_dernier = 1';
797 ddelon 190
 
767 ddelon 191
	$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
192
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
193
 
194
 
195
	// Rien trouvé ? : Migration multilinguisme ou pas encore de contenu
196
 
197
	if ( $resultat->numRows() == 0 ) {
198
 
754 ddelon 199
 
1033 ddelon 200
	    // Migration multilinguisme
767 ddelon 201
 
754 ddelon 202
	    $requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
203
	                'FROM gen_menu_contenu  '.
204
	                'WHERE gmc_ce_menu = '.$ligne_menu['gm_code_num'].' '.
205
	                'AND truncate((gmc_ce_type_contenu/10),0) = '. $ligne->gm_id_menu . ' '.
206
	                'AND gmc_bool_dernier = 1';
767 ddelon 207
 
754 ddelon 208
	    $resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
209
	    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
210
 
1033 ddelon 211
		// Pas de contenu, tentative de recuperation du contenu se
767 ddelon 212
 
213
		if ( $resultat->numRows() == 0 ) {
1033 ddelon 214
 
754 ddelon 215
 
1033 ddelon 216
 
217
						    $requete =   'SELECT gmr_id_menu_02 as gm_id_menu , ' . $ligne->gm_code_num . ' as gm_code_num '.
218
				                            	'FROM  gen_menu_relation '.
219
				                            	'WHERE '.$ligne->gm_id_menu. ' = gmr_id_menu_01 ' .
220
				                            	'AND  gmr_id_valeur  = 105 ';// 105 Traduction par defaut
221
 
222
							$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
223
 
224
 
225
							(DB::isError($resultat))             ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
226
							: '';
227
 
228
 
754 ddelon 229
					    $requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
1033 ddelon 230
		                'FROM gen_menu_contenu, gen_menu_relation '.
231
		                'WHERE truncate((gmc_ce_type_contenu/10),0) = gmr_id_menu_01 '.
232
		                'AND '.$ligne->gm_id_menu.' = gmr_id_menu_02 '.
233
		                'AND gmr_id_valeur = 2 '.
234
		                'AND gmc_bool_dernier = 1';
767 ddelon 235
 
754 ddelon 236
					    $resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
237
					    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
1033 ddelon 238
 
239
/*
240
 
241
						    $requete =   'SELECT gmr_id_menu_02 as gm_id_menu , ' . $ligne->gm_code_num . ' as gm_code_num '.
242
				                            	'FROM  gen_menu_relation '.
243
				                            	'WHERE '.$ligne->gm_id_menu. ' = gmr_id_menu_01 ' .
244
				                            	'AND  gmr_id_valeur  = 105 ';// 105 Traduction par defaut
245
 
246
							$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
247
							print_r ($requete);
248
 
249
 
250
							(DB::isError($resultat))             ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
251
							: '';
252
*/
767 ddelon 253
 
797 ddelon 254
				}
255
				// Toujours rien ?
256
 
257
				if ( $resultat->numRows() == 0 ) {
258
 
259
						$requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
260
	                	'FROM gen_menu_contenu  '.
261
	                	'WHERE gmc_ce_menu = '.$ligne->gm_code_num.' '.
262
	                	'AND gmc_ce_type_contenu in (1,2) '.
263
	                	'AND gmc_bool_dernier = 1';
264
 
265
 
266
					    $resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
267
					    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
268
 
269
 
270
				}
271
 
793 ddelon 272
		}
754 ddelon 273
 
767 ddelon 274
		 $ligne_contenu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
754 ddelon 275
 
767 ddelon 276
 
277
	$contenu = $ligne_contenu->gmc_contenu;
754 ddelon 278
 
279
	    // Inclusion de la bibliothèque Text_Wiki_Papyrus effectuées par Papyrus précédement
280
	    // Les actions Text_Wiki_Papyrus sont gérées par Papyrus
281
 
282
	    // Nous regardons si nous avons à faire à un texte sous format Wikini ou XHTML
283
	    if (($ligne_contenu->gmc_ce_type_contenu == 1)||(substr($ligne_contenu->gmc_ce_type_contenu,-1)== 1)) {
284
	        $retour = $contenu;
285
	    } elseif (($ligne_contenu->gmc_ce_type_contenu == 2) || (substr($ligne_contenu->gmc_ce_type_contenu,-1)== 2)){
286
	        include_once AFFI_CHEMIN_BIBLIOTHEQUE_API.'text/wiki_wikini/Wikini.class.php';
287
	        // Création d'un objet Text_Wikini :
288
	        $wikini =& new Text_Wikini();
289
	        // Pour éviter de remplacer les caractères spéciaux du XHTML:
290
	        $wikini->setFormatConf('Xhtml', 'translate', false);
291
	        // Configuration de la règle Freelink :
292
	        $wikini->setRenderConf('Xhtml', 'freelink', 'pages', null);
293
	        $wikini->setRenderConf('Xhtml', 'freelink', 'view_url', AFFI_URL_PAPYRUS);
294
	        // Configuration de la règle Interwiki :
295
	        $wikini->setRenderConf('Xhtml', 'interwiki', 'sites', $GLOBALS['_AFFICHEUR']['interwiki_sites']);
296
	        // Application des règles de Wikini :
297
	        $retour = $wikini->transform($contenu, 'Xhtml');
298
	    }
299
 
300
 
6 jpm 301
    //----------------------------------------------------------------------------
302
    // Renvoie du contenu de la page
303
    return $retour;
304
}
305
// +------------------------------------------------------------------------------------------------------+
306
// |                                           LISTE de FONCTIONS                                         |
307
// +------------------------------------------------------------------------------------------------------+
308
 
181 jpm 309
 
310
 
6 jpm 311
// +------------------------------------------------------------------------------------------------------+
312
// |                                            PIED du PROGRAMME                                         |
313
// +------------------------------------------------------------------------------------------------------+
314
 
315
 
181 jpm 316
 
6 jpm 317
/* +--Fin du code ----------------------------------------------------------------------------------------+
318
*
319
* $Log: not supported by cvs2svn $
1033 ddelon 320
* Revision 1.10  2006/06/29 15:12:26  ddelon
321
* Multilinguisme : contenu par defaut
322
*
876 ddelon 323
* Revision 1.9  2006/03/27 10:50:24  ddelon
324
* Still some pb
325
*
793 ddelon 326
* Revision 1.7  2006/03/13 21:00:20  ddelon
327
* Suppression messages d'erreur multilinguisme
328
*
767 ddelon 329
* Revision 1.6  2006/03/02 10:49:49  ddelon
330
* Fusion branche multilinguisme dans branche principale
331
*
754 ddelon 332
* Revision 1.5.2.3  2006/03/02 00:22:23  ddelon
333
* bug afficheur multilinguisme
334
*
335
* Revision 1.5.2.2  2006/03/01 23:51:07  ddelon
336
* bug afficheur multilinguisme
337
*
338
* Revision 1.5.2.1  2006/02/28 14:02:11  ddelon
339
* Finition multilinguisme
340
*
341
* Revision 1.5  2005/04/21 16:46:17  jpm
342
* Gestion via Papyrus du XHTML.
343
*
351 jpm 344
* Revision 1.4  2005/02/22 18:25:13  jpm
345
* Déplacement d'un message d'alerte en cas d'erreur sql.
346
*
270 jpm 347
* Revision 1.3  2004/12/07 12:24:30  jpm
348
* Changement chemin d'accés à l'api Text/Wiki...
349
*
225 jpm 350
* Revision 1.2  2004/11/26 13:10:05  jpm
351
* Utilisation des actions Papyrus et implémentation de la syntaxe Wikini.
352
*
181 jpm 353
* Revision 1.1  2004/06/16 14:35:26  jpm
354
* Changement de nom de Génésia en Papyrus.
355
* Changement de l'arborescence.
356
*
6 jpm 357
* Revision 1.12  2004/05/05 11:35:12  jpm
358
* Amélioration de la gestion de l'internationalisation.
359
*
360
* Revision 1.11  2004/05/05 06:45:40  jpm
361
* Suppression de l'appel de la fonction générant le "vous êtes ici" dans la fonction affichant l'entête de l'application.
362
*
363
* Revision 1.10  2004/05/04 16:28:22  jpm
364
* Réduction de code pour la fonction afficherContenuTete().
365
*
366
*
367
* +-- Fin du code ----------------------------------------------------------------------------------------+
368
*/
181 jpm 369
?>