Subversion Repositories Applications.papyrus

Rev

Rev 767 | Rev 797 | 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
// +------------------------------------------------------------------------------------------------------+
793 ddelon 22
// CVS : $Id: afficheur.php,v 1.8 2006-03-24 13:03:24 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
793 ddelon 34
*@version       $Revision: 1.8 $ $Date: 2006-03-24 13:03:24 $
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
 
59
/** Fonction afficherContenuCorps() - Fonction appelé par le gestionnaire Papyrus.
60
*
61
* Elle retourne le contenu stocké dans Papyrus pour le menu courant demandé.
62
*
63
* @return  string  du code XHTML correspondant au contenu du menu demandé.
64
*/
65
function afficherContenuCorps()
66
{
793 ddelon 67
 
68
	// Cas d'utilisation :
69
 
70
	// Affichage contenu non migré :
71
	// gmc_ce_menu :  code menu  gmc_ce_type_contenu : 1 ou 2
72
 
73
	// Affichage contenu migré :
74
	// gmc_ce_menu : code menu  gmc_ce_type_contenu : identifiant menu * 10 + type_contenu
75
 
76
 
77
 
6 jpm 78
    //----------------------------------------------------------------------------
79
    // Initialisation des variable
80
    $retour = '';
181 jpm 81
 
754 ddelon 82
    $id_langue = $GLOBALS['_GEN_commun']['i18n'];
6 jpm 83
 
754 ddelon 84
    if (isset($id_langue) && ($id_langue!='')) {
85
		$langue_test=$id_langue;
86
	} else {
87
		$langue_test=GEN_I18N_ID_DEFAUT;
88
	}
89
 
90
	//-------------------------------------------------------------------------------------------------------------------
91
        // Récupération des informations du contenu concerné.
92
     $ligne_menu = GEN_lireInfoMenu($GLOBALS['_AFFICHEUR']['objet_pear_db'], $GLOBALS['_AFFICHEUR']['menu_courant_id'], DB_FETCHMODE_ASSOC);
93
 
94
 
95
     if ($ligne_menu == false) {
96
            die('ERREUR Papyrus Administrateur de Menus: impossible de lire les infos du menu.<br />'.
97
                'Idenitifiant du menu n° : '. $GLOBALS['_AFFICHEUR']['objet_pear_db'] .'<br />'.
98
                'Ligne n° : '. __LINE__ .'<br />'.
99
                'Fichier n° : '. __FILE__ .'<br />');
100
     }
101
 
102
 
767 ddelon 103
    // Comment ca marche ?
104
    // Historiquement, le code menu est associé au contenu
105
    // Depuis le passage au multilinguisme : ce comportement est conservé mais :
106
    // Tout nouveau contenu, contient également l'information code gm_id_menu, enfoui dans le
107
    // type contenu.
108
 
754 ddelon 109
    // Récupération identifiant du menu en cours
6 jpm 110
 
767 ddelon 111
    $requete =  'SELECT gm_id_menu, gm_code_num   '.
754 ddelon 112
                'FROM gen_menu  '.
113
                'WHERE gm_code_num =  '.$ligne_menu['gm_code_num'].' '.
114
                'AND gm_ce_i18n = "'.$langue_test.'" ';
115
 
116
	$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
117
 
118
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
767 ddelon 119
 
120
	if ( $resultat->numRows() > 0 ) {
754 ddelon 121
 
767 ddelon 122
			$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
123
	}
124
	else {
754 ddelon 125
 
793 ddelon 126
	// Pas d'identifiant pour le menu en cours ? Il n'a pas encore été traduit, on recupere l'identifiant
127
	// de la langue par défaut
128
 
767 ddelon 129
	$requete =  'SELECT gm_id_menu, gm_code_num   '.
130
                'FROM gen_menu  '.
793 ddelon 131
                'WHERE gm_code_num =  '.$ligne_menu['gm_code_num'].' '.
132
                'AND gm_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" ';
767 ddelon 133
 
793 ddelon 134
 
767 ddelon 135
		$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
136
 
137
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
138
 
139
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
140
	}
141
 
793 ddelon 142
	// Ici, on a un identifiant pour le menu, soit :
143
	// - l'identifiant du menu selectionné, s'il a été traduit
144
	// - l'identifiant du menu par defaut, s'il n'a pas été traduit
754 ddelon 145
 
793 ddelon 146
 
147
    // On recherche maintenant le contenu :
148
 
149
 
150
	// Cas historique, recherche sur le code menu uniquement.
151
 
767 ddelon 152
	$requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
153
	                'FROM gen_menu_contenu  '.
793 ddelon 154
	                'WHERE gmc_ce_menu = '.$ligne->gm_code_num.' '.
767 ddelon 155
	                'AND gmc_ce_type_contenu in (1,2) '.
156
	                'AND gmc_bool_dernier = 1';
793 ddelon 157
 
158
	 //'WHERE gmc_ce_menu = '.$ligne->gm_id_menu.' '.
159
 
160
 
767 ddelon 161
	$resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
162
	(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
163
 
164
 
165
	// Rien trouvé ? : Migration multilinguisme ou pas encore de contenu
166
 
167
	if ( $resultat->numRows() == 0 ) {
168
 
754 ddelon 169
 
767 ddelon 170
	    // Multilinguisme :
171
 
754 ddelon 172
	    $requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
173
	                'FROM gen_menu_contenu  '.
174
	                'WHERE gmc_ce_menu = '.$ligne_menu['gm_code_num'].' '.
175
	                'AND truncate((gmc_ce_type_contenu/10),0) = '. $ligne->gm_id_menu . ' '.
176
	                'AND gmc_bool_dernier = 1';
767 ddelon 177
 
754 ddelon 178
	    $resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
179
	    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
180
 
767 ddelon 181
		// Pas de contenu, tentative de recuperation contenu initial
182
 
183
		if ( $resultat->numRows() == 0 ) {
754 ddelon 184
 
185
					    $requete =  'SELECT gmc_contenu , gmc_ce_type_contenu '.
767 ddelon 186
					                'FROM gen_menu_contenu, gen_menu_relation '.
187
					                'WHERE truncate((gmc_ce_type_contenu/10),0) = gmr_id_menu_01 '.
188
					                'AND '.$ligne->gm_id_menu.' = gmr_id_menu_02 '.
189
					                'AND gmr_id_valeur = 2 '.
754 ddelon 190
					                'AND gmc_bool_dernier = 1';
767 ddelon 191
 
754 ddelon 192
					    $resultat = $GLOBALS['_AFFICHEUR']['objet_pear_db']->query($requete);
193
					    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
194
 
767 ddelon 195
 
793 ddelon 196
		}
767 ddelon 197
 
793 ddelon 198
	}
754 ddelon 199
 
767 ddelon 200
		 $ligne_contenu = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
754 ddelon 201
 
767 ddelon 202
 
203
	$contenu = $ligne_contenu->gmc_contenu;
754 ddelon 204
 
205
	    // Inclusion de la bibliothèque Text_Wiki_Papyrus effectuées par Papyrus précédement
206
	    // Les actions Text_Wiki_Papyrus sont gérées par Papyrus
207
 
208
	    // Nous regardons si nous avons à faire à un texte sous format Wikini ou XHTML
209
	    if (($ligne_contenu->gmc_ce_type_contenu == 1)||(substr($ligne_contenu->gmc_ce_type_contenu,-1)== 1)) {
210
	        $retour = $contenu;
211
	    } elseif (($ligne_contenu->gmc_ce_type_contenu == 2) || (substr($ligne_contenu->gmc_ce_type_contenu,-1)== 2)){
212
	        include_once AFFI_CHEMIN_BIBLIOTHEQUE_API.'text/wiki_wikini/Wikini.class.php';
213
	        // Création d'un objet Text_Wikini :
214
	        $wikini =& new Text_Wikini();
215
	        // Pour éviter de remplacer les caractères spéciaux du XHTML:
216
	        $wikini->setFormatConf('Xhtml', 'translate', false);
217
	        // Configuration de la règle Freelink :
218
	        $wikini->setRenderConf('Xhtml', 'freelink', 'pages', null);
219
	        $wikini->setRenderConf('Xhtml', 'freelink', 'view_url', AFFI_URL_PAPYRUS);
220
	        // Configuration de la règle Interwiki :
221
	        $wikini->setRenderConf('Xhtml', 'interwiki', 'sites', $GLOBALS['_AFFICHEUR']['interwiki_sites']);
222
	        // Application des règles de Wikini :
223
	        $retour = $wikini->transform($contenu, 'Xhtml');
224
	    }
225
 
226
 
6 jpm 227
    //----------------------------------------------------------------------------
228
    // Renvoie du contenu de la page
229
    return $retour;
230
}
231
// +------------------------------------------------------------------------------------------------------+
232
// |                                           LISTE de FONCTIONS                                         |
233
// +------------------------------------------------------------------------------------------------------+
234
 
181 jpm 235
 
236
 
6 jpm 237
// +------------------------------------------------------------------------------------------------------+
238
// |                                            PIED du PROGRAMME                                         |
239
// +------------------------------------------------------------------------------------------------------+
240
 
241
 
181 jpm 242
 
6 jpm 243
/* +--Fin du code ----------------------------------------------------------------------------------------+
244
*
245
* $Log: not supported by cvs2svn $
793 ddelon 246
* Revision 1.7  2006/03/13 21:00:20  ddelon
247
* Suppression messages d'erreur multilinguisme
248
*
767 ddelon 249
* Revision 1.6  2006/03/02 10:49:49  ddelon
250
* Fusion branche multilinguisme dans branche principale
251
*
754 ddelon 252
* Revision 1.5.2.3  2006/03/02 00:22:23  ddelon
253
* bug afficheur multilinguisme
254
*
255
* Revision 1.5.2.2  2006/03/01 23:51:07  ddelon
256
* bug afficheur multilinguisme
257
*
258
* Revision 1.5.2.1  2006/02/28 14:02:11  ddelon
259
* Finition multilinguisme
260
*
261
* Revision 1.5  2005/04/21 16:46:17  jpm
262
* Gestion via Papyrus du XHTML.
263
*
351 jpm 264
* Revision 1.4  2005/02/22 18:25:13  jpm
265
* Déplacement d'un message d'alerte en cas d'erreur sql.
266
*
270 jpm 267
* Revision 1.3  2004/12/07 12:24:30  jpm
268
* Changement chemin d'accés à l'api Text/Wiki...
269
*
225 jpm 270
* Revision 1.2  2004/11/26 13:10:05  jpm
271
* Utilisation des actions Papyrus et implémentation de la syntaxe Wikini.
272
*
181 jpm 273
* Revision 1.1  2004/06/16 14:35:26  jpm
274
* Changement de nom de Génésia en Papyrus.
275
* Changement de l'arborescence.
276
*
6 jpm 277
* Revision 1.12  2004/05/05 11:35:12  jpm
278
* Amélioration de la gestion de l'internationalisation.
279
*
280
* Revision 1.11  2004/05/05 06:45:40  jpm
281
* Suppression de l'appel de la fonction générant le "vous êtes ici" dans la fonction affichant l'entête de l'application.
282
*
283
* Revision 1.10  2004/05/04 16:28:22  jpm
284
* Réduction de code pour la fonction afficherContenuTete().
285
*
286
*
287
* +-- Fin du code ----------------------------------------------------------------------------------------+
288
*/
181 jpm 289
?>