Subversion Repositories Applications.papyrus

Rev

Rev 1664 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2075 Jean-Pasca 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
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: adsi_site.fonct.php,v 1.42 2007-10-23 13:31:22 ddelon Exp $
23
/**
24
* Bibliotheque de fonctions d'admininistration des projets
25
*
26
* Contient un ensemble de fonctions permettant a l'application Administrateur de Papyrus, de modifier des informations
27
* sur les projets (=sites geres par Papyrus).
28
*
29
*@package Admin_site
30
*@subpackage Fonctions
31
//Auteur original :
32
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
33
//Autres auteurs :
34
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
35
*@author        Laurent COUDOUNEAU <lc@gsite.org>
36
*@copyright     Tela-Botanica 2000-2004
37
*@version       $Revision: 1.42 $ $Date: 2007-10-23 13:31:22 $
38
// +------------------------------------------------------------------------------------------------------+
39
*/
40
 
41
// +------------------------------------------------------------------------------------------------------+
42
// |                                            ENT�TE du PROGRAMME                                       |
43
// +------------------------------------------------------------------------------------------------------+
44
if (GEN_FTP_UTILISE) {
45
    /** Inclusion bibliotheque de PEAR gerant le FTP.*/
46
    require_once ADSI_CHEMIN_BIBLIOTHEQUE_PEAR.'Net/FTP.php';
47
}
48
 
49
// +------------------------------------------------------------------------------------------------------+
50
// |                                            CORPS du PROGRAMME                                        |
51
// +------------------------------------------------------------------------------------------------------+
52
/** Fonction ADMIN_afficherListeSites()- Genere le xhtml permettant de choisir un site parmis une liste.
53
*
54
* Cette fonction fournie une liste des sites principaux geres par papyrus.
55
*
56
* @param  string   l'objet Pear DB.
57
* @param  string   l'url de la page � laquelle renvoyer le formulaire.
58
* @param  string   un message important � destination de l'utilisateur.
59
* return  string   le code XHTML a retourner.
60
*/
61
function ADMIN_afficherFormListeSites(&$db, $url, $message = '')
62
{
63
 
64
	$id_langue = $GLOBALS['_GEN_commun']['i18n']; //identifiant de la langue choisie
65
 
66
	// Langue en cours : langue choisie ou langue par defaut (principale)
67
 
68
	if (isset($id_langue) && ($id_langue!='')) {
69
		$langue_test=$id_langue;
70
	} else {
71
		$langue_test=GEN_I18N_ID_DEFAUT;
72
	}
73
 
74
    // Liste des sites principaux :
75
    // Recherche de tous les sites langue en cours
76
 
77
    $requete =  'SELECT * '.
78
                'FROM gen_site, gen_site_relation '.
79
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
80
                'AND gsr_id_site_01 = gs_id_site '.
81
                'AND gsr_id_valeur IN (102, 103) '.
82
                'AND gs_ce_i18n = "'.$langue_test.'" '.
83
                'ORDER BY gsr_ordre';
84
 
85
 
86
    $resultat = $db->query($requete);
87
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
88
 
89
    $liste_site=array();
90
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
91
 
92
    		if ($langue_test == GEN_I18N_ID_DEFAUT) {
93
 
94
    		  $requete_est_traduction =   'SELECT gsr_id_site_01 '.
95
	                       'FROM  gen_site_relation '.
96
	                       'WHERE '.$ligne->gs_id_site.' = gsr_id_site_02 ' .
97
	                  	   'AND  gsr_id_site_01 <> gsr_id_site_02 ' .
98
	                       'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
99
 
100
 
101
	            $resultat_est_traduction = $db->query($requete_est_traduction);
102
	            (DB::isError($resultat_est_traduction))
103
	                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
104
	                : '';
105
 
106
	   			if ( $resultat_est_traduction->numRows() == 0 ) {
107
    	 			$liste_site[]=$ligne;
108
	            }
109
    		}
110
    		else {
111
    			   $liste_site[]=$ligne;
112
    		}
113
    }
114
    $resultat->free();
115
 
116
    // Si la langue en cours n'est pas la langue par defaut, recherche des sites ayant comme langue
117
    // la langue par defaut, non traduits dans la langue en cours et n'etant pas des traductions
118
 
119
 
120
	if ($langue_test != GEN_I18N_ID_DEFAUT) {
121
 
122
 
123
	    $requete =  'SELECT * '.
124
	                'FROM gen_site, gen_site_relation '.
125
	                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
126
	                'AND gs_id_site = gsr_id_site_01 '.
127
	                'AND gsr_id_valeur IN (102, 103) '.
128
	                'AND gs_ce_i18n = "'.GEN_I18N_ID_DEFAUT.'" '.
129
	                'ORDER BY gs_code_num ASC';// 102 = site "principal" et 103 = site "externe"
130
 
131
	    $resultat = $db->query($requete);
132
	    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '';
133
 
134
 
135
 
136
 
137
	    // Recherche de tous les sites de la langue principale  qui ne sont pas traduits dans la langue en cours
138
 
139
	    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
140
 
141
	    		$requete_est_traduction =   'SELECT gsr_id_site_01 '.
142
	                                'FROM  gen_site_relation '.
143
	                                'WHERE '.$ligne->gs_id_site.' = gsr_id_site_02 ' .
144
	                                'AND  gsr_id_site_01 <> gsr_id_site_02 ' .
145
	                                'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
146
 
147
 
148
	            $resultat_est_traduction = $db->query($requete_est_traduction);
149
	            (DB::isError($resultat_est_traduction))
150
	                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_est_traduction->getMessage(), $requete_est_traduction))
151
	                : '';
152
 
153
	            if ( $resultat_est_traduction->numRows() == 0 ) {
154
 
155
 
156
					if (isset($id_langue) && ($id_langue!='')) {
157
						$langue_test=$id_langue;
158
					} else {
159
						$langue_test=GEN_I18N_ID_DEFAUT;
160
					}
161
 
162
		    		$requete_traduction =   'SELECT gsr_id_site_01 '.
163
		                                    'FROM  gen_site_relation, gen_site '.
164
		                                    'WHERE '.$ligne->gs_id_site.' = gsr_id_site_01 ' .
165
		                                    'AND gsr_id_site_02 = gs_id_site '.
166
		                                    'AND gs_ce_i18n = "'.$langue_test.'" '.
167
		                                    'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
168
 
169
		            $resultat_traduction = $db->query($requete_traduction);
170
		            (DB::isError($resultat_traduction))
171
		                ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction))
172
		                : '';
173
 
174
		            if ( $resultat_traduction->numRows() == 0 ) {
175
		            	$liste_site []=$ligne;
176
		            }
177
 
178
		            $resultat_traduction->free();
179
 
180
	            }
181
	               $resultat_est_traduction->free();
182
 
183
	    }
184
	    $resultat->free();
185
	}
186
 
187
 
188
 
189
    //----------------------------------------------------------------------------
190
    // Cr�ation du formulaire
191
    $form =& new HTML_QuickForm('form_sites', 'post', str_replace('&amp;', '&', $url));
192
    $tab_index = 1000;
193
    $squelette =& $form->defaultRenderer();
194
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
195
    $squelette->setElementTemplate( '<li>'."\n".'{label}'."\n".'{element}'."\n".
196
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
197
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
198
                                    '</li>'."\n");
199
    $squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n");
200
 
201
    $partie_site_debut =    '<fieldset>'."\n".
202
                            '<legend>Listes des sites</legend>'."\n".
203
                            '<ul>'."\n";
204
    $form->addElement('html', $partie_site_debut);
205
 
206
    $aso_options = array();
207
    foreach ($liste_site as $ligne ) {
208
        $aso_options[$ligne->gs_id_site] = htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')');
209
 
210
        // Affichage des traductions
211
        $requete_traduction =   'SELECT * '.
212
	                            'FROM  gen_site_relation, gen_site '.
213
	                            'WHERE '.$ligne->gs_id_site.' = gsr_id_site_01 ' .
214
	                            'AND gsr_id_site_02 <> gsr_id_site_01 '.
215
	                            'AND gsr_id_site_02 = gs_id_site '.
216
	                            'AND gsr_id_valeur = 1 ';// 1 = "avoir traduction"
217
	    $resultat_traduction = $db->query($requete_traduction);
218
        (DB::isError($resultat_traduction))
219
            ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_traduction->getMessage(), $requete_traduction))
220
            : '';
221
 
222
        while ($ligne_traduction = $resultat_traduction->fetchRow(DB_FETCHMODE_OBJECT)) {
223
        	$aso_options[$ligne_traduction->gs_id_site] = '&nbsp;&nbsp;&nbsp;'.$ligne_traduction->gs_ce_i18n.":&nbsp;".htmlentities($ligne_traduction->gs_nom.' ('.$ligne_traduction->gs_code_alpha.')');
224
        }
225
        $resultat_traduction->free();
226
 
227
    }
228
 
229
    $id = 'form_sites_id_site';
230
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
231
    $label = '<label for="'.$id.'">'.'Listes des sites : '.'</label>';
232
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
233
 
234
    $partie_site_fin =  '</ul>'."\n".
235
                        '</fieldset>'."\n";
236
    $form->addElement('html', $partie_site_fin);
237
 
238
    $liste_bouton_debut = '<ul class="liste_bouton">'."\n";
239
    $form->addElement('html', $liste_bouton_debut);
240
 
241
    $id = 'form_sites_ajouter';
242
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
243
    $label = 'Ajouter';
244
    $form->addElement('submit', $id, $label, $aso_attributs);
245
 
246
    $id = 'form_sites_modifier';
247
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
248
    $label = 'Modifier';
249
    $form->addElement('submit', $id, $label, $aso_attributs);
250
 
251
    $id = 'form_sites_traduire';
252
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
253
    $label = 'Traduire';
254
    $form->addElement('submit', $id, $label, $aso_attributs);
255
 
256
    $id = 'form_sites_supprimer';
257
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'onclick' => 'javascript:return confirm(\''.'�tes vous s�r de vouloir supprimer ce site ?'.'\');');
258
    $label = 'Supprimer';
259
    $form->addElement('submit', $id, $label, $aso_attributs);
260
 
261
    $liste_bouton_fin = '</ul>'."\n";
262
    $form->addElement('html', $liste_bouton_fin);
263
 
264
    $sortie = $form->toHTML()."\n";
265
 
266
    // Titre de la page:
267
    $titre = 'Configuration des sites';
268
 
269
    // Construction de la page.
270
    return ADMIN_contruirePage($titre, $sortie, $message);
271
}
272
 
273
/** Fonction ADMIN_validerFormListesSites() - Valide les donn�es issues du formulaire de liste de sites.
274
*
275
* Cette fonction valide les donn�es du formulaire de liste de site.
276
*
277
* @param  string   l'objet pear de connexion � la base de donn�es.
278
* @param  string   le tableau contenant les valeurs du formulaire.
279
* @return string   retourne les messages d'erreurs sinon rien.
280
*/
281
function ADMIN_validerFormListesSites(&$db, $aso_valeurs)
282
{
283
    $message = '';
284
 
285
    // Validation des donnees du formulaire
286
    if (empty($aso_valeurs['form_sites_id_site'])) {
287
        $message .= '<p class="pap_erreur">Vous devez d\'abord s&eacute;lectionner un site.</p>';
288
    }
289
 
290
    return $message;
291
}
292
 
293
/** Fonction ADMIN_afficherFormSite()- G�n�re un formulaire pour gen_site.
294
*
295
* Cette fonction retourne un formulaire pour modification ou pour ajout.
296
*
297
* @param  string   l'objet pear de connexion a la base de donnees.
298
* @param  string   l'url a laquelle renvoyer le formulaire.
299
* @param  string   le tableau contenant les valeurs du formulaire.
300
* @param  string   un message a destination de l'utilisateur.
301
* return  string   le code XHTML a retourner.
302
*/
303
function ADMIN_afficherFormSite(&$db, $url, $aso_valeurs = array(), $message = '')
304
{
305
    // Initialisation des valeurs
306
    $sortie = '';
307
    $aso_valeurs['modification'] = false;
308
    $aso_valeurs['traduction'] = false;
309
    $aso_valeurs['defaut'] = false;
310
    $aso_valeurs['type_site_externe'] = 0;
311
    // Nous cherchons a savoir si nous somme en modification
312
    if ((isset($aso_valeurs['form_sites_modifier']))  || (isset($aso_valeurs['form_sites_traduire'])))  {
313
    	if ((isset($aso_valeurs['form_sites_modifier']))) {
314
        	$as_val['modification'] = true;
315
        	$as_val['traduction'] = false;
316
    	}
317
        else {
318
        	$as_val['traduction'] = true;
319
        	$as_val['modification'] = false;
320
        }
321
 
322
        if ($as_val['traduction']) {
323
	        // Traduction d'un site principal uniquement :
324
 
325
	        $requete =  'SELECT * '.
326
	                    'FROM gen_site_relation '.
327
	                    'WHERE gsr_id_site_02 = '.$aso_valeurs['form_sites_id_site'].' '.
328
	                    'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
329
 
330
	        $resultat = $db->query($requete);
331
 
332
	        if (DB::isError($resultat)) {
333
	            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
334
	        }
335
 
336
	        if ( $resultat->numRows() == 0 ) {
337
	        	$site_id = $aso_valeurs['form_sites_id_site'];
338
	        }
339
	        else {
340
	        	$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
341
		        $site_id = $ligne->gsr_id_site_01;
342
	        }
343
	        $resultat->free();
344
       		 }
345
        else {
346
          	$site_id = $aso_valeurs['form_sites_id_site'];
347
      	 }
348
 
349
	        // Requete pour recuperer les informations sur le site a modifier
350
	        $requete =  'SELECT * '.
351
	                    'FROM gen_site '.
352
	                    'WHERE gs_id_site = '.$site_id;
353
	        $resultat = $db->query($requete);
354
	        if (DB::isError($resultat)) {
355
	            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
356
	        }
357
	        $aso_valeurs = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
358
	        $site_ligne = $aso_valeurs;
359
	        $resultat->free();
360
 
361
        // Requete pour recuperer les informations issues des relations du site a modifier
362
        $requete =  'SELECT * '.
363
                    'FROM gen_site_relation '.
364
                    'WHERE gsr_id_site_01 = '.$site_id.' '.
365
                    'AND gsr_id_site_01 = gsr_id_site_02';
366
        $resultat = $db->query($requete);
367
        if (DB::isError($resultat)) {
368
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
369
        }
370
 
371
        $tab_type = GEN_retournerTableauTypeSiteExterne($db);
372
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
373
            if ($ligne->gsr_id_valeur == 101) {// 101 = site par defaut
374
                $aso_valeurs['defaut'] = true;
375
            }
376
            foreach ($tab_type as $cle => $val) {
377
                if ($ligne->gsr_id_valeur == $val['id']) {// 20x = type de site externe a Papyrus
378
                    $aso_valeurs['type_site_externe'] = $val['id'];
379
                }
380
            }
381
        }
382
        $resultat->free();
383
 
384
        if (($as_val['modification'])) {
385
        	$aso_valeurs['modification'] = true;
386
        	$aso_valeurs['traduction'] = false;
387
        }
388
        else {
389
        	$aso_valeurs['traduction'] = true;
390
        	$aso_valeurs['modification'] = false;
391
        };
392
 
393
 
394
 
395
    } else if (isset($aso_valeurs['gs_id_site'])) {
396
        $aso_valeurs['modification'] = true;
397
    }
398
    // Debogage :
399
    //$GLOBALS['_DEBOGAGE_'] .= '<pre>'.print_r($aso_valeurs, true).'</pre>';
400
    //-------------------------------------------------------------------------------------------------------------------
401
    // Information precedent le formulaire (en modification)
402
    if ((isset($aso_valeurs['modification'])||isset($aso_valeurs['traduction']))&&isset($aso_valeurs['gs_id_site'])) {
403
        $sortie .= '<p>'.'Identifiant de ce site : '.'<span id="adsi_site_id">'.$aso_valeurs['gs_id_site'].'</span></p>'."\n";
404
    }
405
    //-------------------------------------------------------------------------------------------------------------------
406
    // Cr�ation du formulaire
407
    $form =& new HTML_QuickForm('site', 'post', str_replace('&amp;', '&', $url));
408
    $tab_index = 1000;
409
    $squelette =& $form->defaultRenderer();
410
    $squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'{content}'."\n".'</form>'."\n");
411
	$squelette->setElementTemplate( '<p class="formulaire_element"><span class="form_label">'."\n".
412
		'{label}'."\n".
413
		'<!-- BEGIN required --><span style="color:red; width:5px; margin:0; padding:0;">*</span><!-- END required -->'."\n".
414
		'</span>'."\n".'{element}'."\n".
415
		'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
416
		'</p>'."\n");
417
	$squelette->setGroupElementTemplate('<p style="display:inline">{element}</p>', 'form_boutons');
418
	$squelette->setRequiredNoteTemplate("\n".'<p class="symbole_obligatoire">*&nbsp;:&nbsp;{requiredNote}</p>'."\n");
419
	//Note pour les erreurs javascript
420
	$form->setJsWarnings('Erreur de saisie', 'Veuillez verifier vos informations saisies');
421
    // Note de fin de formulaire
422
    $form->setRequiredNote('Indique les champs obligatoires');
423
 
424
//    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
425
//    $squelette->setElementTemplate(  '<li>'."\n".
426
//                                    '{label}'."\n".
427
//                                    '{element}'."\n".
428
//                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
429
//                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
430
//                                    '</li>'."\n");
431
//    $squelette->setGroupElementTemplate('{label}'."\n".
432
//                                        '{element}'."\n".
433
//                                        '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
434
//                                        '&nbsp;'."\n"
435
//                                        , 'double');
436
//    $squelette->setRequiredNoteTemplate("\n".'<p><span class="symbole_obligatoire">*</span> {requiredNote}</p>'."\n");
437
//
438
    $partie_site_debut = '<fieldset>'."\n".'<legend>Configuration du site</legend>'."\n";
439
    $form->addElement('html', $partie_site_debut);
440
 
441
    if ($aso_valeurs['modification'] || $aso_valeurs['traduction']) {
442
        $form->addElement('hidden', 'gs_id_site');
443
        $form->addElement('hidden', 'modification');
444
        $form->addElement('hidden', 'traduction');
445
    }
446
 
447
    $id = 'gs_nom';
448
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 35, 'maxlength' => 100, 'value' => 'nom du site');
449
    $label = '<label for="'.$id.'">'.'Nom du site : '.'</label>';
450
    $form->addElement('text', $id, $label, $aso_attributs);
451
    $form->addRule($id, 'Un nom est requis pour le site !', 'required', '', 'client');
452
 
453
    $id = 'gs_code_alpha';
454
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 20, 'maxlength' => 20, 'value' => 'site_01');
455
    $label = '<label for="'.$id.'">'.'Code alphanum&eacute;rique : '.'</label>';
456
    $form->addElement('text', $id, $label, $aso_attributs);
457
    $form->addRule('gs_code_alpha', 'Un code alphanum&eacute;rique est requis pour le site !', 'required', '', 'client');
458
 
459
    $id = 'gs_code_num';
460
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 20, 'maxlength' => 20, 'value' => 1);
461
    $label = '<label for="'.$id.'">'.'Code num&eacute;rique : '.'</label>';
462
    $form->addElement('text', $id, $label, $aso_attributs);
463
    $form->addRule('gs_code_num', 'Un code num&eacute;rique est requis pour le site !', 'required', '', 'client');
464
 
465
    $id = 'gs_raccourci_clavier';
466
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'size' => 1, 'maxlength' => 1, 'value' => 'Z');
467
    $label = '<label for="'.$id.'">'.'Raccourci clavier : '.'</label>';
468
    $form->addElement('text', $id, $label, $aso_attributs);
469
 
470
    // Requete pour connaitre les identifications dispo
471
    $requete =  'SELECT * '.
472
                'FROM gen_site_auth '.
473
                'WHERE gsa_id_auth != 0';
474
    $resultat = $db->query($requete) ;
475
    if (DB::isError($resultat)) {
476
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
477
    }
478
    $aso_options = array();
479
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
480
        // Test pour conna�tre le type d'authentification.
481
        $type = '';
482
        if ($ligne->gsa_ce_type_auth == '1' ) {
483
            $type = 'Base de donn&eacute;es';
484
        } else if ($ligne->gsa_ce_type_auth == '2' ) {
485
            $type = 'LDAP';
486
        }
487
        $aso_options[$ligne->gsa_id_auth] = $ligne->gsa_nom.' ('.$type.')';
488
    }
489
    $resultat->free();
490
 
491
 
492
    $id = 'gs_ce_auth';
493
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
494
    $label = '<label for="'.$id.'">'.'Identification : '.'</label>';
495
    if (isset($aso_valeurs['gs_ce_auth'])) {
496
	    $s = &$form->createElement('select', $id , $label, "", $aso_attributs);
497
    	$s->loadArray($aso_options,$aso_valeurs['gs_ce_auth']);
498
    	$form->addElement($s);
499
    }
500
    else {
501
	    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
502
    }
503
 
504
    // En modification nous affichons la liste des squelettes disponibles dans
505
    // le dossier du site.
506
    if ($aso_valeurs['modification'] || $aso_valeurs['traduction']) {
507
        $aso_options = array();
508
        if (!GEN_FTP_UTILISE) {
509
            $chemin_squelettes =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
510
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
511
            $dossier = opendir($chemin_squelettes);
512
            while(($fichier = readdir($dossier)) !== false) {
513
                if ($fichier != '.' && $fichier != '..') {
514
                    $chemin_type = $chemin_squelettes.GEN_SEP.$fichier;
515
                    if (filetype($chemin_type) != 'dir') {
516
                        $aso_options[$fichier] = $fichier;
517
                    }
518
                }
519
            }
520
        } else {
521
            // ouverture des squelettes present dans le dossier du site
522
            // creation de l'objet pear ftp
523
            $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
524
            // creation de la connexion
525
            $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
526
            // identification
527
            $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
528
            // Gestion des erreurs ftp
529
            if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
530
                return ('ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
531
                    'Serveur : '. GEN_FTP_SERVEUR .'<br />'.
532
                    'Utilisateur : '. GEN_FTP_UTILISATEUR .'<br />'.
533
                    'Ligne n&deg; : '. __LINE__ .'<br />'.
534
                    'Fichier n&deg; : '. __FILE__ .'<br />');
535
                    //'Message erreur de connection : '.$ftp_conn->getMessage().'<br />'.
536
                    //'Message erreur de login : '.$ftp_login_result->getMessage());
537
            }
538
            $chemin_squelettes =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
539
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
540
            $tab_squelettes = $objet_pear_ftp->ls($chemin_squelettes);
541
            $aso_options = array();
542
            if (PEAR::isError($tab_squelettes)) {
543
                return ('ERREUR Papyrus admin : impossible d\'acc&eacute; aux fichiers par ftp.<br />'.
544
                    'Chemin : '. $chemin_squelettes .'<br />'.
545
                    'Ligne n&deg; : '. __LINE__ .'<br />'.
546
                    'Fichier n&deg; : '. __FILE__ .'<br />'.
547
                    'Message : '. $tab_squelettes->getMessage());
548
            }
549
            for ($i = 0; $i < count($tab_squelettes) ; $i++) {
550
                if ($tab_squelettes[$i]['is_dir'] == false) {
551
                    $aso_options[$tab_squelettes[$i]['name']] = $tab_squelettes[$i]['name'];
552
                }
553
            }
554
            $objet_pear_ftp->disconnect();
555
        }
556
 
557
        // Verification de la presence de squelettes
558
        if (count($aso_options) == 0) {
559
            $aso_options['Aucun squelette'] = 'Aucun squelette';
560
        }
561
 
562
        $id = 'gs_fichier_squelette';
563
        $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
564
        $label = '<label for="'.$id.'">'.'Squelette : '.'</label>';
565
        $s = &$form->createElement('select', $id , $label, "", $aso_attributs);
566
    	$s->loadArray($aso_options,$aso_valeurs['gs_fichier_squelette']);
567
    	$form->addElement($s);
568
 
569
    }
570
 
571
    // Requete pour connaitre les internationalisation dispo
572
 
573
    if (!$aso_valeurs['modification'] && !$aso_valeurs['traduction']) {
574
    	$requete =  'SELECT * '.
575
        	        'FROM gen_i18n ';
576
    }
577
    	else  {
578
 
579
 
580
    		if ($aso_valeurs['traduction']) {
581
 
582
    		// Recherche liste des sites deja traduits
583
 
584
	    		 $requete =  'SELECT distinct gs_ce_i18n  '.
585
                'FROM gen_site_relation, gen_site '.
586
                'WHERE gsr_id_site_01 = ' .$site_ligne['gs_id_site'] .' '.
587
                'AND gs_id_site = gsr_id_site_02  '.
588
                'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
589
 
590
 
591
			    $resultat = $db->query($requete) ;
592
			    if (DB::isError($resultat)) {
593
			        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
594
			    }
595
			    $not_in_langue='';
596
			    if ( $resultat->numRows() == 0 ) {
597
					$not_in_langue="gi_id_i18n not in('".$site_ligne['gs_ce_i18n']."')";
598
			    }
599
			    else {
600
			    	    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
601
    	 					$not_in_langue="'".$ligne->gs_ce_i18n."'".",".$not_in_langue;
602
    	 					$end="'".$ligne->gs_ce_i18n."'";
603
    					}
604
    					if ($not_in_langue) {
605
			    			$not_in_langue="'".$site_ligne['gs_ce_i18n']."'".",".$not_in_langue;
606
			    			$not_in_langue=' gi_id_i18n not in('.$not_in_langue.$end.')';
607
			    		}
608
			    		else {
609
			    			$not_in_langue="gi_id_i18n not in('".$site_ligne['gs_ce_i18n']."')";
610
			    		}
611
			    }
612
				$resultat->free();
613
 
614
	    		$requete =  "SELECT * FROM gen_i18n where ".$not_in_langue;
615
    		}
616
    		else
617
    		{
618
    			$requete =  "SELECT * FROM gen_i18n where  gi_id_i18n =('".$site_ligne['gs_ce_i18n']."')";
619
    		}
620
    }
621
    $resultat = $db->query($requete) ;
622
    if (DB::isError($resultat)) {
623
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
624
    }
625
    $aso_options = array();
626
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
627
        $aso_options[$ligne->gi_id_i18n] = $ligne->gi_id_i18n;
628
    }
629
    $resultat->free();
630
    $id = 'gs_ce_i18n';
631
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++);
632
    $label = '<label for="'.$id.'">'.'Langue : '.'</label>';
633
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
634
 
635
    $id = 'defaut';
636
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++);
637
    if (isset($aso_valeurs[$id]) && $aso_valeurs[$id] === true) {
638
        $aso_attributs['checked'] = 'checked';
639
    }
640
    $label = '<label for="'.$id.'">'.'En faire le site par d&eacute;faut : '.'</label>';
641
    $form->addElement('checkbox', $id, $label, null, $aso_attributs);
642
 
643
    // Groupe site externe
644
    $tab_type = GEN_retournerTableauTypeSiteExterne($db);
645
    $aso_options = array('0' => 'Aucun');
646
    foreach ($tab_type as $cle => $val) {
647
        $aso_options[$val['id']] = $val['intitule'];
648
    }
649
 
650
    $id = 'type_site_externe';
651
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
652
    $label = '<label>'.'Type de site externe : '.'</label>';
653
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
654
 
655
    $id = 'gs_url';
656
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++,'size' => 35, 'maxlength' => 255, 'value' => 'http://');
657
    $label = '<label>'.'URL du site externe : '.'</label>';
658
    $form->addElement('text', $id, $label, $aso_attributs);
659
 
660
    $partie_site_fin = "\n".'</fieldset>'."\n";
661
    $form->addElement('html', $partie_site_fin);
662
 
663
    $partie_entete_debut = '<fieldset>'."\n".'<legend>Ent&egrave;te par d&eacute;faut des pages du site</legend>'."\n";
664
    $form->addElement('html', $partie_entete_debut);
665
 
666
    $id = 'gs_titre';
667
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 35, 'maxlength' => 255, 'value' => ADSI_TITRE_SITE);
668
    $label = '<label for="'.$id.'">'.ADSI_TITRE_SITE.' : '.'</label>';
669
    $form->addElement('text', $id, $label, $aso_attributs);
670
    $form->addRule('gs_titre', 'Un titre est requis pour le site !', 'required', '', 'client');
671
 
672
    $id = 'gs_mots_cles';
673
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'rows' => 3, 'cols' => 45);
674
    $label = '<label for="'.$id.'">'.'Mots-cl&eacute;s : '.'</label>';
675
    $zone_mots_cles = $form->createElement('textarea', $id, $label, $aso_attributs);
676
    $zone_mots_cles->setValue('mots-cl&eacute;s du site');
677
    $form->addElement($zone_mots_cles);
678
    $form->addRule($id, 'Des mots cl&eacute;s sont requis pour le site !', 'required', '', 'client');
679
 
680
    $id = 'gs_description';
681
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'rows' => 3, 'cols' => 45);
682
    $label = '<label for="'.$id.'">'.'Description du contenu : '.'</label>';
683
    $zone = $form->createElement('textarea', $id, $label, $aso_attributs);
684
    $zone->setValue('description du site');
685
    $form->addElement($zone);
686
    $form->addRule($id, 'Une description est requise pour le site !', 'required', '', 'client');
687
 
688
    $id = 'gs_auteur';
689
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 35, 'maxlength' => 255, 'value' => 'auteur du site');
690
    $label = '<label for="'.$id.'">'.'Auteur du site : '.'</label>';
691
    $form->addElement('text', $id, $label, $aso_attributs);
692
    $form->addRule('gs_auteur', 'Un auteur est requis pour le site !', 'required', '', 'client');
693
 
694
    $partie_entete_fin = "\n".'</fieldset>'."\n";
695
    $form->addElement('html', $partie_entete_fin);
696
 
697
    if ($aso_valeurs['modification'] ||  $aso_valeurs['traduction']) {
698
        // Requete pour connaitre les informations sur l'administrateur ayant fait la derni�re modif
699
        $requete_admin =    'SELECT * '.
700
                            'FROM gen_annuaire '.
701
                            'WHERE ga_id_administrateur = '.$aso_valeurs['gs_ce_admin'];
702
        $resultat_admin = $db->query($requete_admin);
703
        if (DB::isError($resultat_admin)) {
704
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_admin->getMessage(), $requete_admin));
705
        }
706
        $ligne_admin = $resultat_admin->fetchRow(DB_FETCHMODE_OBJECT);
707
        if (isset($ligne_admin)) {
708
        	$info_admin =   '<p class="info">Site cr&eacute;&eacute; le '.$aso_valeurs['gs_date_creation'].'. Derni&egrave;re modification par '.
709
                        $ligne_admin->ga_prenom.' '.$ligne_admin->ga_nom.'.'.'</p>';
710
        	$form->addElement('html', $info_admin);
711
        	$form->addElement('hidden', 'gs_ce_admin');
712
        	$form->addElement('hidden', 'gs_date_creation');
713
        }
714
 
715
        // Titre de la page:
716
        if ($aso_valeurs['modification']) {
717
        	$titre = 'Modifier un site';
718
        	$bouton_validation = '<input type="submit" id="site_modifier" name="site_modifier" value="Enregistrer" />';
719
        }
720
        else {
721
        	$titre = 'Traduire un site';
722
        	$bouton_validation = '<input type="submit" id="site_traduire" name="site_traduire" value="Enregistrer" />';
723
        }
724
 
725
    } else {
726
        // Titre de la page:
727
        $titre = 'Ajouter un site';
728
        // Bouton validant le formulaire
729
        $bouton_validation = '<input type="submit" id="site_enregistrer" name="site_enregistrer" value="Enregistrer" />';
730
    }
731
    $bouton_annuler =   '<input type="submit" id="form_annuler" name="form_annuler" value="Annuler" />';
732
    $bouton_effacer =   '<input type="reset" id="effacer" name="effacer" value="Effacer" />';
733
    $boutons =  '<p>'."\n".
734
                $bouton_validation."\n".
735
                $bouton_annuler."\n".
736
                $bouton_effacer."\n".
737
                '</p>'."\n";
738
    $form->addElement('html', $boutons);
739
 
740
    // Instanciation des valeurs par defaut du formulaire
741
    $form->setDefaults($aso_valeurs);
742
 
743
    // Javascript pour la validation cote client
744
    $regles_javascript = $form->getValidationScript();
745
 
746
    // Note de fin de formulaire
747
    $form->setRequiredNote('Indique les champs obligatoires');
748
    $sortie .= $form->toHTML()."\n";
749
 
750
    // Construction de la page.
751
    return ADMIN_contruirePage($titre, $sortie, $message);
752
}
753
 
754
/** Fonction ADMIN_validerFormAjouterSite() - Valide les donnees issues du formulaire pour gen_site.
755
*
756
* Cette fonction valide les donnees a ajouter dans la table gen_site.
757
*
758
* @param  string   l'objet pear de connexion a la base de donn�es.
759
* @param  string   le tableau contenant les valeurs du formulaire.
760
* @return string   retourne les messages d'erreurs sinon rien.
761
*/
762
function ADMIN_validerFormSite(&$db, $aso_valeurs)
763
{
764
    $message = '';
765
 
766
    // Validation des donnees du formulaire
767
    if (empty($aso_valeurs['gs_nom'])) {
768
        $message .= '<p class="pap_erreur">Le champ "Nom" ne doit pas &ecirc;tre vide.</p>';
769
    }
770
    if (empty($aso_valeurs['gs_code_alpha'])) {
771
        $message .= '<p class="pap_erreur">Le champ "Code alphanum&eacute;rique" ne doit pas &ecirc;tre vide.</p>';
772
    }
773
    if ($aso_valeurs['gs_code_num'] == '') {
774
        // Note: ne pas utilisez empty() car si on veut saisir 0, cela est conscid�r� comme vide!
775
        $message .= '<p class="pap_erreur">Le champ "Code num&eacute;rique" ne doit pas &ecirc;tre vide.</p>';
776
    }
777
    if (preg_match('/^[0-9]+$/',$aso_valeurs['gs_code_num']) == 0) {
778
        $message .= '<p class="pap_erreur">Le champ "Code num&eacute;rique" doit contenir un nombre.</p>';
779
    }
780
 
781
    // Requete pour verifier l'absence du code numerique et alphanumerique de la table gen_site
782
    // en mode creation uniquement !
783
 
784
 
785
    if (!isset($aso_valeurs['site_modifier'])) $aso_valeurs['site_modifier']=0;
786
    if (!isset($aso_valeurs['site_traduire'])) $aso_valeurs['site_traduire']=0;
787
 
788
    if (@!$aso_valeurs['site_modifier'] && @!$aso_valeurs['site_traduire'] ) {
789
 
790
	    $requete =  'SELECT gs_code_alpha, gs_code_num '.
791
	                'FROM gen_site, gen_site_relation '.
792
	                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
793
	                'AND gsr_id_site_01 = gs_id_site '.
794
	                'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe"
795
	    $requete .= (isset($aso_valeurs['gs_id_site'])) ? 'AND gs_id_site != '.$aso_valeurs['gs_id_site'] : '';
796
 
797
 
798
	    $resultat = $db->query($requete);
799
	    if (DB::isError($resultat)) {
800
	        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
801
	    }
802
 
803
	    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
804
	        if ($ligne->gs_code_num == $aso_valeurs['gs_code_num']) {
805
	            $message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_num'].'" pour le champ "Code num&eacute;rique" existe d&eacute;j&agrave;.</p>';
806
	        }
807
	        if ($ligne->gs_code_alpha == $aso_valeurs['gs_code_alpha']) {
808
	            $message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_alpha'].'" pour le champ "Code alphanum&eacute;rique" existe d&eacute;j&agrave;.</p>';
809
	        }
810
	    }
811
 
812
	    $resultat->free();
813
 
814
    }
815
 
816
    else {
817
    // Refuser si plus de traduction disponible !
818
    }
819
 
820
    if (empty($aso_valeurs['gs_titre'])) {
821
        $message .= '<p class="pap_erreur">Le champ "Titre" ne doit pas &ecirc;tre vide.</p>';
822
    }
823
    if (empty($aso_valeurs['gs_mots_cles'])) {
824
        $message .= '<p class="pap_erreur">Le champ "Mots cl&eacute;s" ne doit pas &ecirc;tre vide.</p>';
825
    }
826
    if (empty($aso_valeurs['gs_description'])) {
827
        $message .= '<p class="pap_erreur">Le champ "Description" ne doit pas &ecirc;tre vide.</p>';
828
    }
829
    if (empty($aso_valeurs['gs_auteur'])) {
830
        $message .= '<p class="pap_erreur">Le champ "Auteur" ne doit pas &ecirc;tre vide.</p>';
831
    }
832
    if (isset($aso_valeurs['externe']) && $aso_valeurs['externe'] == 1 && (empty($aso_valeurs['gs_url']) || $aso_valeurs['gs_url'] == 'http://')) {
833
        $message .= '<p class="pap_erreur">'.'Vous avez d&eacute;sign&eacute; ce site comme &eacute;tant externe. Il est n&eacute;cessaire de saisir son URL!'.'</p>';
834
    }
835
    if (isset($aso_valeurs['externe']) && $aso_valeurs['externe'] == 0 && (!empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://')) {
836
        $message .= '<p class="pap_erreur">'.'Vous avez saisie une l\'url : '.$aso_valeurs['gs_url'].'<br />'.
837
                    'Vous conscid&eacute;rez donc ce site comme &eacute;tant externe. Il est n&eacute;cessaire de cocher la case "oui"!'.'</p>';
838
    }
839
    return $message;
840
}
841
 
842
/** Fonction ADMIN_enregistrerSite() - Ajoute un site � Papyrus.
843
*
844
* Cette fonction ajoute le site � Papyrus, c'est � dire :
845
* - 1. Cr�ation des r�pertoire du projet en fonction du nom et des sous-r�pertoires.
846
* - 2. Insertion d'une ligne dans la table "gen_site".
847
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables li�es si n�cessaire.
848
*
849
* @param  string   l'objet pear de connexion � la base de donn�es.
850
* @param  string   le tableau contenant les valeurs du formulaire.
851
* @param  int      identifiant de l'administrateur r�alisant cette cr�ation.
852
* @return string retourne un message en cas de succ�s ou d'�chec.
853
*/
854
function ADMIN_enregistrerSite(&$db, $aso_valeurs, $id_admin)
855
{
856
    // Nous verifions si nous avons a faire a un site externe.
857
    $id_type_site = '102';// par defaut on conscid�re que c'est un site "principal"
858
    if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
859
        $id_type_site = '103';// c'est un site "externe"
860
    }
861
 
862
    // Ajout des repertoires des sites "principaux" soit par manipulation de fichier soit par FTP en fonction de la constante definie
863
    // par l'utilisateur dans le fichier de config avancee.
864
    $tab_rep_langue = array(GEN_DOSSIER_GENERIQUE, $aso_valeurs['gs_ce_i18n']);
865
    $tab_rep_site = array(  GEN_DOSSIER_IMAGE,
866
                            GEN_DOSSIER_STYLE,
867
                            GEN_DOSSIER_SCRIPT,
868
                            GEN_DOSSIER_SQUELETTE,
869
                            GEN_DOSSIER_DOC);
870
    if (!GEN_FTP_UTILISE && $id_type_site != '103') {
871
        foreach ($tab_rep_langue as $nom_rep_langue) {
872
            foreach ($tab_rep_site as $nom_rep_site) {
873
                $chemin_repertoire =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
874
                                        $nom_rep_langue.GEN_SEP.$nom_rep_site;
875
                $vieux_umask = umask(0);
876
                $resultat = creerDossier($chemin_repertoire, 0777, GEN_SEP);
877
                umask($vieux_umask);
878
                if ($resultat == false) {
879
                    $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le r&eacute;pertoire.<br />'.
880
                                'R&eacute;pertoire : '. $chemin_repertoire .'<br />'.
881
                                'Ligne n&deg; : '. __LINE__ .'<br />'.
882
                                'Fichier n&deg; : '. __FILE__ .'<br /></p>';
883
                    return $message;
884
                }
885
            }
886
        }
887
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
888
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
889
        $chemin_squelette_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
890
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
891
        if (!copy($chemin_squelette_defaut, $chemin_squelette_site)) {
892
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le fichier de squellete par d&eacute;faut.<br />'.
893
                        'Fichier : '. $chemin_squelette_site .'<br />'.
894
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
895
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
896
            return $message;
897
        }
898
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
899
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
900
        $chemin_style_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
901
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
902
        if (!copy($chemin_style_defaut, $chemin_style_site)) {
903
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le fichier de style par d&eacute;faut.<br />'.
904
                        'Fichier : '. $chemin_style_site .'<br />'.
905
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
906
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
907
            return $message;
908
        }
909
    } else if (GEN_FTP_UTILISE && $id_type_site != '103') {  // 103 est le type "site externe"
910
        // Creation d'une connection ftp avec Net_FTP de PEAR
911
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
912
 
913
        // creation de l'objet pear ftp
914
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
915
        // creation de la connexion
916
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
917
        // identification
918
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
919
        // Gestion des erreurs ftp
920
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
921
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
922
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
923
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
924
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
925
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
926
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
927
                        'Fichier n&deg; : '. __FILE__ .'<br /><p>';
928
            return $message;
929
        }
930
        $resultat = $objet_pear_ftp->mkdir(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha']) ;
931
 
932
       if (PEAR::isError($resultat)) {
933
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr�er le r�pertoire par ftp.<br />'.
934
                        'R&eacute;pertoire : '. PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'] .'<br />'.
935
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
936
                        'Informations de debogage : '.$resultat->getDebugInfo().'<br />'.
937
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
938
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
939
            return $message;
940
        }
941
        //$objet_pear_ftp->cd(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha']) ;
942
        foreach ($tab_rep_langue as $nom_rep_langue) {
943
            $objet_pear_ftp->mkdir(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$nom_rep_langue) ;
944
            foreach ($tab_rep_site as $nom_rep_site) {
945
                $chemin_repertoire =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$nom_rep_langue.GEN_SEP.$nom_rep_site;
946
 
947
                $resultat = $objet_pear_ftp->mkdir($chemin_repertoire) ;
948
                if (PEAR::isError($resultat)) {
949
                    $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le r&eacute;pertoire par ftp.<br />'.
950
                                'R&eacute;pertoire : '. $chemin_repertoire .'<br />'.
951
                                'Erreur origine : '. $resultat->getMessage() .'<br />'.
952
                                'Informations de debogage : '.$resultat->getDebugInfo().'<br />'.
953
                                'Ligne n&deg; : '. __LINE__ .'<br />'.
954
                                'Fichier n&deg; : '. __FILE__ .'<br /></p>';
955
                    return $message;
956
                }
957
            }
958
        }
959
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
960
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
961
        $chemin_squelette_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
962
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
963
        $resultat = $objet_pear_ftp->put($chemin_squelette_defaut, $chemin_squelette_site, true, FTP_BINARY);
964
        if (PEAR::isError($resultat)) {
965
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le squelette defaut par ftp.<br />'.
966
                        'Fichier origine : '. $chemin_squelette_defaut .'<br />'.
967
                        'Fichier copi&eacute; : '. $chemin_squelette_site .'<br />'.
968
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
969
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
970
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
971
                return $message;
972
        }
973
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
974
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
975
        $chemin_style_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
976
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
977
        $resultat = $objet_pear_ftp->put($chemin_style_defaut, $chemin_style_site, true, FTP_BINARY);
978
        if (PEAR::isError($resultat)) {
979
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier les styles defaut par ftp.<br />'.
980
                        'Fichier origine : '. $chemin_style_defaut .'<br />'.
981
                        'Fichier copi&eacute; : '. $chemin_style_site .'<br />'.
982
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
983
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
984
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
985
                return $message;
986
        }
987
 
988
        $chemin_image_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
989
                                GEN_DOSSIER_IMAGE.GEN_SEP;
990
        $chemin_image_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
991
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_IMAGE.GEN_SEP;
992
        $resultat = $objet_pear_ftp->putRecursive($chemin_image_defaut, $chemin_image_site, false, FTP_BINARY);
993
        if (PEAR::isError($resultat)) {
994
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le dossier images par ftp.<br />'.
995
                        'Fichier origine : '. $chemin_image_defaut .'<br />'.
996
                        'Fichier copi&eacute; : '. $chemin_image_site .'<br />'.
997
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
998
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
999
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1000
                return $message;
1001
        }
1002
 
1003
 
1004
 
1005
        $objet_pear_ftp->disconnect();
1006
    }
1007
 
1008
    $id_site = SQL_obtenirNouveauId($db, 'gen_site','gs_id_site');
1009
    if ($id_site == false) {
1010
        $message = '<p class="erreur"> ERREUR papyrus admin : impossible de r&eacute;cup&eacute;rer un identifiant pour la table gen_site.<br />'.
1011
                    'Ligne n&deg; : '. __LINE__ .'<br />'.
1012
                    'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1013
        return $message;
1014
    }
1015
 
1016
    // Modification de la requete si nous avons a faire a un site externe.
1017
    $requete_complement = ', gs_url = NULL';
1018
    if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
1019
        $requete_complement = ', gs_url = "'.$aso_valeurs['gs_url'].'"';
1020
    }
1021
 
1022
    // Requete d'insertion des infos d'un site dans gen_site
1023
    $requete =  'INSERT INTO gen_site '.
1024
                'SET gs_id_site = '.$id_site.', '.
1025
                'gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
1026
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
1027
                'gs_fichier_squelette = "defaut.html", '.
1028
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
1029
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
1030
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
1031
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
1032
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
1033
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
1034
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
1035
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
1036
                'gs_date_creation = "'.date('Y-m-d H:i:s').'", '.
1037
                'gs_ce_admin = '.$id_admin.
1038
                $requete_complement;
1039
    $resultat = $db->query($requete);
1040
    if (DB::isError($resultat)) {
1041
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1042
    }
1043
 
1044
    // Recherche du nouveau numero d'ordre de ce site "principal" ou "externe"
1045
    $requete =  'SELECT MAX(gsr_ordre) AS max_ordre '.
1046
                'FROM gen_site_relation '.
1047
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1048
                'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe"
1049
    $resultat = $db->query($requete) ;
1050
    if (DB::isError($resultat)) {
1051
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1052
    }
1053
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
1054
    $nouvel_ordre = $ligne->max_ordre + 1;
1055
 
1056
    // Requete d'insertion des relations dans gen_site_relation
1057
    $requete =  'INSERT INTO gen_site_relation '.
1058
                'SET gsr_id_site_01 = '.$id_site.', '.
1059
                'gsr_id_site_02 = '.$id_site.', '.
1060
                'gsr_id_valeur = '.$id_type_site.', '.
1061
                'gsr_ordre = '.$nouvel_ordre;
1062
    $resultat = $db->query($requete);
1063
    if (DB::isError($resultat)) {
1064
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1065
    }
1066
 
1067
    // Gestion du site par d�faut
1068
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
1069
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
1070
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1071
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
1072
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
1073
        if (DB::isError($resultat_supr_defaut)) {
1074
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
1075
        }
1076
 
1077
        // Requete d'insertion de la relations site par defaut
1078
        $requete =  'INSERT INTO gen_site_relation '.
1079
                    'SET gsr_id_site_01 = '.$id_site.', '.
1080
                    'gsr_id_site_02 = '.$id_site.', '.
1081
                    'gsr_id_valeur = 101, '.
1082
                    'gsr_ordre = NULL ';
1083
        $resultat = $db->query($requete);
1084
        if (DB::isError($resultat)) {
1085
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1086
        }
1087
    }
1088
 
1089
    // Gestion des sites externes
1090
    if ($id_type_site == '103') {
1091
        // Requete d'insertion des relations dans gen_site_relation
1092
        $requete =  'INSERT INTO gen_site_relation '.
1093
                    'SET gsr_id_site_01 = '.$id_site.', '.
1094
                    'gsr_id_site_02 = '.$id_site.', '.
1095
                    'gsr_id_valeur = '.$aso_valeurs['type_site_externe'].', '.
1096
                    'gsr_ordre = NULL ';
1097
        $resultat = $db->query($requete);
1098
        if (DB::isError($resultat)) {
1099
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1100
        }
1101
    }
1102
 
1103
    $message = '<p class="pap_info">'.'Succ&eacute;s de l\'ajout du site.'.'</p>';
1104
    return $message;
1105
}
1106
 
1107
/** Fonction ADMIN_traduireSite() - Traduire un site papyrus
1108
*
1109
* Cette fonction traduit un site a Papyrus, c'est a dire :
1110
* - 1. Creation des repertoire du projet en fonction du nom et des sous-repertoires.
1111
* - 2. Insertion d'une ligne dans la table "gen_site".
1112
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables liees si necessaire.
1113
*
1114
* @param  string   l'objet pear de connexion a la base de donn�es.
1115
* @param  string   le tableau contenant les valeurs du formulaire.
1116
* @param  int      identifiant de l'administrateur realisant cette cr�ation.
1117
* @return string retourne un message en cas de succes ou d'echec.
1118
*/
1119
 
1120
function ADMIN_traduireSite(&$db, $aso_valeurs, $id_admin)
1121
{
1122
    // Nous verifions si nous avons a faire a un site externe.
1123
    $id_type_site = '102';// par defaut on considere que c'est un site "principal"
1124
    if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
1125
        $id_type_site = '103';// c'est un site "externe"
1126
    }
1127
 
1128
    // Ajout des repertoires des sites "principaux" soit par manipulation de fichier soit par FTP en fonction de la constante definie
1129
    // par l'utilisateur dans le fichier de config avancee.
1130
    $tab_rep_langue = array($aso_valeurs['gs_ce_i18n']);
1131
    $tab_rep_site = array(  GEN_DOSSIER_IMAGE,
1132
                            GEN_DOSSIER_STYLE,
1133
                            GEN_DOSSIER_SCRIPT,
1134
                            GEN_DOSSIER_SQUELETTE,
1135
                            GEN_DOSSIER_DOC);
1136
    if (!GEN_FTP_UTILISE && $id_type_site != '103') {
1137
        foreach ($tab_rep_langue as $nom_rep_langue) {
1138
            foreach ($tab_rep_site as $nom_rep_site) {
1139
                $chemin_repertoire =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1140
                                        $nom_rep_langue.GEN_SEP.$nom_rep_site;
1141
                $vieux_umask = umask(0);
1142
                $resultat = creerDossier($chemin_repertoire, 0777, GEN_SEP);
1143
                umask($vieux_umask);
1144
                if ($resultat == false) {
1145
                    $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le r&eacute;pertoire.<br />'.
1146
                                'R&eacute;pertoire : '. $chemin_repertoire .'<br />'.
1147
                                'Ligne n&deg; : '. __LINE__ .'<br />'.
1148
                                'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1149
                    return $message;
1150
                }
1151
            }
1152
        }
1153
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
1154
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
1155
        $chemin_squelette_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1156
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
1157
        if (!copy($chemin_squelette_defaut, $chemin_squelette_site)) {
1158
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le fichier de squellete par d&eacute;faut.<br />'.
1159
                        'Fichier : '. $chemin_squelette_site .'<br />'.
1160
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1161
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1162
            return $message;
1163
        }
1164
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
1165
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
1166
        $chemin_style_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1167
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
1168
        if (!copy($chemin_style_defaut, $chemin_style_site)) {
1169
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er le fichier de style par d�faut.<br />'.
1170
                        'Fichier : '. $chemin_style_site .'<br />'.
1171
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1172
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1173
            return $message;
1174
        }
1175
 
1176
        $chemin_image_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
1177
                                GEN_DOSSIER_IMAGE.GEN_SEP;
1178
        $chemin_image_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1179
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_IMAGE.GEN_SEP;
1180
 
1181
		if (!copy($chemin_image_defaut, $chemin_image_site)) {
1182
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de cr&eacute;er les fichhiers image par defaut.<br />'.
1183
                        'Fichier : '. $chemin_style_site .'<br />'.
1184
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1185
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1186
            return $message;
1187
        }
1188
 
1189
    } else if (GEN_FTP_UTILISE && $id_type_site != '103') {  // 103 est le type "site externe"
1190
        // Cr�ation d'une connection ftp avec Net_FTP de PEAR
1191
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
1192
 
1193
        // cr�ation de l'objet pear ftp
1194
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1195
        // cr�ation de la connexion
1196
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1197
        // identification
1198
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
1199
        // Gestion des erreurs ftp
1200
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
1201
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
1202
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
1203
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
1204
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
1205
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
1206
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1207
                        'Fichier n&deg; : '. __FILE__ .'<br /><p>';
1208
            return $message;
1209
        }
1210
        $objet_pear_ftp->mkdir(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha']) ;
1211
 
1212
        //$objet_pear_ftp->cd(PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha']) ;
1213
        foreach ($tab_rep_langue as $nom_rep_langue) {
1214
            $objet_pear_ftp->mkdir(PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$nom_rep_langue) ;
1215
            foreach ($tab_rep_site as $nom_rep_site) {
1216
                $chemin_repertoire = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$nom_rep_langue.GEN_SEP.$nom_rep_site;
1217
 
1218
                $resultat = $objet_pear_ftp->mkdir($chemin_repertoire) ;
1219
                if (PEAR::isError($resultat)) {
1220
                    $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire par ftp.<br />'.
1221
                                'R&eacute;pertoire : '. $chemin_repertoire .'<br />'.
1222
                                'Erreur origine : '. $resultat->getMessage() .'<br />'.
1223
                                'Ligne n&deg; : '. __LINE__ .'<br />'.
1224
                                'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1225
                    return $message;
1226
                }
1227
            }
1228
        }
1229
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
1230
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
1231
        $chemin_squelette_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1232
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
1233
        $resultat = $objet_pear_ftp->put($chemin_squelette_defaut, $chemin_squelette_site, true, FTP_BINARY);
1234
        if (PEAR::isError($resultat)) {
1235
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le squelette defaut par ftp.<br />'.
1236
                        'Fichier origine : '. $chemin_squelette_defaut .'<br />'.
1237
                        'Fichier copi&eacute; : '. $chemin_squelette_site .'<br />'.
1238
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
1239
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1240
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1241
                return $message;
1242
        }
1243
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
1244
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
1245
        $chemin_style_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1246
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
1247
        $resultat = $objet_pear_ftp->put($chemin_style_defaut, $chemin_style_site, true, FTP_BINARY);
1248
        if (PEAR::isError($resultat)) {
1249
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier les styles defaut par ftp.<br />'.
1250
                        'Fichier origine : '. $chemin_style_defaut .'<br />'.
1251
                        'Fichier copi&eacute; : '. $chemin_style_site .'<br />'.
1252
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
1253
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1254
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1255
                return $message;
1256
        }
1257
 
1258
        $chemin_image_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
1259
                                GEN_DOSSIER_IMAGE.GEN_SEP;
1260
        $chemin_image_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
1261
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_IMAGE.GEN_SEP;
1262
        $resultat = $objet_pear_ftp->putRecursive($chemin_image_defaut, $chemin_image_site, false, FTP_BINARY);
1263
        if (PEAR::isError($resultat)) {
1264
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le dossier images par ftp.<br />'.
1265
                        'Fichier origine : '. $chemin_image_defaut .'<br />'.
1266
                        'Fichier copi&eacute; : '. $chemin_image_site .'<br />'.
1267
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
1268
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1269
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1270
                return $message;
1271
        }
1272
 
1273
        $objet_pear_ftp->disconnect();
1274
    }
1275
 
1276
    $id_site = SQL_obtenirNouveauId($db, 'gen_site','gs_id_site');
1277
 
1278
    if ($id_site == false) {
1279
        $message = '<p class="erreur"> ERREUR G�n�sia admin : impossible de r�cup�rer un identifiant pour la table gen_site.<br />'.
1280
                    'Ligne n&deg; : '. __LINE__ .'<br />'.
1281
                    'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1282
        return $message;
1283
    }
1284
 
1285
    // Modification de la requete si nous avons � faire � un site externe.
1286
    $requete_complement = ', gs_url = NULL';
1287
    if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
1288
        $requete_complement = ', gs_url = "'.$aso_valeurs['gs_url'].'"';
1289
    }
1290
 
1291
    // Requete d'insertion des infos d'un site dans gen_site
1292
    $requete =  'INSERT INTO gen_site '.
1293
                'SET gs_id_site = '.$id_site.', '.
1294
                'gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
1295
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
1296
                'gs_fichier_squelette = "defaut.html", '.
1297
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
1298
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
1299
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
1300
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
1301
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
1302
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
1303
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
1304
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
1305
                'gs_date_creation = "'.date('Y-m-d H:i:s').'", '.
1306
                'gs_ce_admin = '.$id_admin.
1307
                $requete_complement;
1308
    $resultat = $db->query($requete);
1309
    if (DB::isError($resultat)) {
1310
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1311
    }
1312
 
1313
    // Recherche du nouveau num�ro d'ordre de ce site "principal" ou "externe"
1314
    $requete =  'SELECT MAX(gsr_ordre) AS max_ordre '.
1315
                'FROM gen_site_relation '.
1316
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1317
                'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe"
1318
    $resultat = $db->query($requete) ;
1319
    if (DB::isError($resultat)) {
1320
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1321
    }
1322
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
1323
    $nouvel_ordre = $ligne->max_ordre + 1;
1324
 
1325
    // Requete d'insertion des relations dans gen_site_relation
1326
 
1327
    $requete =  'INSERT INTO gen_site_relation '.
1328
                'SET gsr_id_site_01 = '.$id_site.', '.
1329
                'gsr_id_site_02 = '.$id_site.', '.
1330
                'gsr_id_valeur = '.$id_type_site.', '.
1331
                'gsr_ordre = '.$nouvel_ordre;
1332
    $resultat = $db->query($requete);
1333
    if (DB::isError($resultat)) {
1334
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1335
    }
1336
 
1337
    // Traduction : Requete d'insertion des relations dans gen_site_relation
1338
 
1339
    $requete =  'SELECT MAX(gsr_ordre) AS max_ordre '.
1340
                'FROM gen_site_relation '.
1341
                'WHERE gsr_id_site_01 = ' .$aso_valeurs['gs_id_site'] .' '.
1342
                'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
1343
    $resultat = $db->query($requete) ;
1344
    if (DB::isError($resultat)) {
1345
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1346
    }
1347
    if ( $resultat->numRows() == 0 ) {
1348
	      $nouvel_ordre = 1;
1349
    }
1350
    else {
1351
    	$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
1352
    	$nouvel_ordre = $ligne->max_ordre + 1;
1353
    }
1354
 
1355
    // 1 : insertion information traduction pere (si inexistant)
1356
 
1357
    $requete =  'SELECT * '.
1358
                'FROM gen_site_relation '.
1359
                'WHERE gsr_id_site_01 = ' .$aso_valeurs['gs_id_site'] .' '.
1360
                'AND gsr_id_site_01 = gsr_id_site_02 '.
1361
                'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
1362
 
1363
    $resultat = $db->query($requete) ;
1364
    if (DB::isError($resultat)) {
1365
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1366
    }
1367
    if ( $resultat->numRows() == 0 ) {
1368
 
1369
		$requete =  'INSERT INTO gen_site_relation '.
1370
		            'SET gsr_id_site_01 = '. $aso_valeurs['gs_id_site'].', '.
1371
		            'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
1372
		            'gsr_id_valeur = 1, '. // 1 = "avoir traduction"
1373
		            'gsr_ordre = 1 ';
1374
		$resultat = $db->query($requete);
1375
		if (DB::isError($resultat)) {
1376
		    die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1377
		}
1378
		$nouvel_ordre = 2;
1379
    }
1380
 
1381
 
1382
    // 2 : insertion information traduction site en cours (si inexistant ?) (et la mise a jour, c'est ailleurs
1383
    // dans les mises � jour
1384
 
1385
    $requete =  'INSERT INTO gen_site_relation '.
1386
                'SET gsr_id_site_01 = '. $aso_valeurs['gs_id_site'].', '.
1387
                'gsr_id_site_02 = '.$id_site.', '.
1388
                'gsr_id_valeur = 1, '. // 1 = "avoir traduction"
1389
                'gsr_ordre = '.$nouvel_ordre;
1390
    $resultat = $db->query($requete);
1391
    if (DB::isError($resultat)) {
1392
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1393
    }
1394
 
1395
 
1396
    // Gestion du site par d�faut
1397
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
1398
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
1399
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1400
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
1401
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
1402
        if (DB::isError($resultat_supr_defaut)) {
1403
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
1404
        }
1405
 
1406
        // Requete d'insertion de la relations site par d�faut
1407
        $requete =  'INSERT INTO gen_site_relation '.
1408
                    'SET gsr_id_site_01 = '.$id_site.', '.
1409
                    'gsr_id_site_02 = '.$id_site.', '.
1410
                    'gsr_id_valeur = 101, '.
1411
                    'gsr_ordre = NULL ';
1412
        $resultat = $db->query($requete);
1413
        if (DB::isError($resultat)) {
1414
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1415
        }
1416
    }
1417
 
1418
    // Gestion des sites externes
1419
    if ($id_type_site == '103') {
1420
        // Requete d'insertion des relations dans gen_site_relation
1421
        $requete =  'INSERT INTO gen_site_relation '.
1422
                    'SET gsr_id_site_01 = '.$id_site.', '.
1423
                    'gsr_id_site_02 = '.$id_site.', '.
1424
                    'gsr_id_valeur = '.$aso_valeurs['type_site_externe'].', '.
1425
                    'gsr_ordre = NULL ';
1426
        $resultat = $db->query($requete);
1427
        if (DB::isError($resultat)) {
1428
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1429
        }
1430
    }
1431
 
1432
    $message = '<p class="pap_info">'.'Succ&eacute;s de l\'ajout du site.'.'</p>';
1433
    return $message;
1434
}
1435
 
1436
 
1437
 
1438
/** Fonction ADMIN_modifierSite() - Modifie un site de Papyrus.
1439
*
1440
* Cette fonction modifie un site g�r� par Papyrus.
1441
* Il faudrait aussi pouvoir renomer le dossier du site si le code alpha change.
1442
*
1443
* @param  string   l'objet pear de connexion � la base de donn�es.
1444
* @param  string   le tableau contenant les valeurs du formulaire.
1445
* @param  int      identifiant de l'administrateur r�alisant cette modification.
1446
* @return string retourne un message en cas de succ�s ou d'�chec.
1447
*/
1448
function ADMIN_modifierSite(&$db, $aso_valeurs, $id_admin)
1449
{
1450
    // Initialisation de variables
1451
    $message_complement = '';
1452
 
1453
    // R�cup�ration de l'ancien code alphanum�rique
1454
    $requete =  'SELECT gs_code_alpha '.
1455
                'FROM gen_site '.
1456
                'WHERE gs_id_site = '.$aso_valeurs['gs_id_site'];
1457
    $ancien_code_alphnum = $db->getOne($requete);
1458
    if (DB::isError($ancien_code_alphnum)) {
1459
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $ancien_code_alphnum->getMessage(), $requete) );
1460
    }
1461
 
1462
    // Nous v�rifions si nous avons � faire � un site externe.
1463
    $id_type_site = '102';// par d�faut on conscid�re que c'est un site "principal"
1464
    $requete_complement = ', gs_url = NULL ';
1465
    if (isset($aso_valeurs['type_site_externe']) && $aso_valeurs['type_site_externe'] > 0 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
1466
        $requete_complement = ', gs_url = "'.$aso_valeurs['gs_url'].'" ';
1467
        $id_type_site = '103';// c'est un site "externe"
1468
    }
1469
 
1470
    // Si le code alphanum�rique � chang� et que nous n'avons pas � faire � un site externe.
1471
    if ($aso_valeurs['gs_code_alpha'] != $ancien_code_alphnum && $id_type_site != 103) {
1472
        if (!GEN_FTP_UTILISE) {
1473
            $chemin_site_ancien = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
1474
            $chemin_site_nouveau = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP;
1475
            if (!rename($chemin_site_ancien, $chemin_site_nouveau)) {
1476
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de changer le nom du dossier du site.<br />'.
1477
                            'Ancien nom : '. $chemin_site_ancien .'<br />'.
1478
                            'Nouveau nom : '. $chemin_site_nouveau .'<br />'.
1479
                            'Ligne n&deg; : '. __LINE__ .'<br />'.
1480
                            'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1481
                return $message;
1482
            }
1483
        } else {
1484
            $chemin_site_ancien = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
1485
            $chemin_site_nouveau = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP;
1486
            // Cr�ation d'une connection ftp avec Net_FTP de PEAR
1487
            // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
1488
            // cr�ation de l'objet pear ftp
1489
            $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1490
            // cr�ation de la connexion
1491
            $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1492
            // identification
1493
            $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
1494
            // Gestion des erreurs ftp
1495
            if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
1496
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
1497
                            'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
1498
                            'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
1499
                            'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
1500
                            'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
1501
                            'Ligne n&deg; : '. __LINE__ .'<br />'.
1502
                            'Fichier n&deg; : '. __FILE__ .'<br /><p>';
1503
                return $message;
1504
            }
1505
            $resultat = $objet_pear_ftp->putRecursive($chemin_site_ancien, $chemin_site_nouveau, false, FTP_BINARY);
1506
            if (PEAR::isError($resultat)) {
1507
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier l\'ancien dossier du site.<br />'.
1508
                            'Dossier site ancien : '. $chemin_site_ancien .'<br />'.
1509
                            'Dossier site nouveau : '. $chemin_site_nouveau .'<br />'.
1510
                            'Erreur origine : '. $resultat->getMessage() .'<br />'.
1511
                            'Ligne n&deg; : '. __LINE__ .'<br />'.
1512
                            'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1513
                    return $message;
1514
            }
1515
            // On utilise la racine FTP pour rm
1516
            $chemin_site_ancien = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
1517
            // Changement du niveau d'erreur pour �viter les Notices PHP dues � Net_FTP
1518
            error_reporting(E_PARSE);
1519
            $resultat = $objet_pear_ftp->rm($chemin_site_ancien, true);
1520
            if (PEAR::isError($resultat)) {
1521
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer l\'ancien dossier du site.<br />'.
1522
                            'Dossier site ancien : '. $chemin_site_ancien .'<br />'.
1523
                            'Erreur origine : '. $resultat->getMessage() .'<br />'.
1524
                            'Ligne n&deg; : '. __LINE__ .'<br />'.
1525
                            'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1526
                    return $message;
1527
            }
1528
            // Retour au niveau d'erreur d�finit dans le fichier de config de Papyrus
1529
            error_reporting(GEN_DEBOGAGE_NIVEAU);
1530
            $objet_pear_ftp->disconnect();
1531
        }
1532
    }
1533
 
1534
    // Requete de mise � jour des infos d'un site dans gen_site
1535
    $requete =  'UPDATE gen_site '.
1536
                'SET gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
1537
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
1538
                'gs_fichier_squelette = "'.$aso_valeurs['gs_fichier_squelette'].'", '.
1539
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
1540
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
1541
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
1542
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
1543
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
1544
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
1545
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
1546
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
1547
                'gs_date_creation = "'.$aso_valeurs['gs_date_creation'].'", '.
1548
                'gs_ce_admin = '.$id_admin.' '.
1549
                $requete_complement.
1550
                'WHERE gs_id_site = '.$aso_valeurs['gs_id_site'];
1551
    $resultat = $db->query($requete) ;
1552
    if (DB::isError($resultat)) {
1553
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1554
    }
1555
    // Gestion du site externe
1556
    if ($id_type_site == 103) {
1557
        // V�rification pour voir si nous avons � faire � une transformation d'un site "principal" en site "externe"
1558
        $requete =  'SELECT COUNT(gsr_id_site_01) AS nbre_relation '.
1559
                    'FROM gen_site_relation '.
1560
                    'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1561
                    'AND gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].' '.
1562
                    'AND gsr_id_valeur = 102 ';// 102 = site "principal"
1563
        $nbre_relation = $db->getOne($requete);
1564
        if (DB::isError($nbre_relation)) {
1565
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $nbre_relation->getMessage(), $requete) );
1566
        }
1567
 
1568
        // Nous supprimons l'ancienne relation si n�cessaire
1569
        if ($nbre_relation >= 1) {
1570
            $requete_supr_ext = 'DELETE FROM gen_site_relation '.
1571
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1572
                                'AND gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].' '.
1573
                                'AND gsr_id_valeur = 102 ';// 102 = site "principal"
1574
            $resultat_supr_ext = $db->query($requete_supr_ext);
1575
            if (DB::isError($resultat_supr_ext)) {
1576
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_ext->getMessage(), $requete_supr_ext));
1577
            }
1578
            $message_complement =   'Le site "principal" a �t� transform� en site "externe". Si n�cessaire, veuillez '.
1579
                                    'supprimer manuellement par FTP, le dossier contenant les fichiers de ce site sur '.
1580
                                    'le serveur!';
1581
        }
1582
 
1583
        // V�rification pour voir si le site est d�j� "externe"
1584
        $requete =  'SELECT COUNT(gsr_id_site_01) AS nbre_relation '.
1585
                    'FROM gen_site_relation '.
1586
                    'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1587
                    'AND gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].' '.
1588
                    'AND gsr_id_valeur = 103 ';// 103 = site "externe"
1589
        $nbre_relation = $db->getOne($requete);
1590
        if (DB::isError($nbre_relation)) {
1591
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $nbre_relation->getMessage(), $requete) );
1592
        }
1593
        if ($nbre_relation == 0) {
1594
            // Requete d'insertion de la relations site "externe"
1595
            $requete =  'INSERT INTO gen_site_relation '.
1596
                        'SET gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].', '.
1597
                        'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
1598
                        'gsr_id_valeur = '.$id_type_site.', '.
1599
                        'gsr_ordre = NULL ';
1600
            $resultat = $db->query($requete);
1601
            if (DB::isError($resultat)) {
1602
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1603
            }
1604
        }
1605
 
1606
        // Ajout du type de site externe
1607
        $requete =  'INSERT INTO gen_site_relation '.
1608
                    'SET gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].', '.
1609
                    'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
1610
                    'gsr_id_valeur = '.$aso_valeurs['type_site_externe'].', '.
1611
                    'gsr_ordre = NULL ';
1612
        $resultat = $db->query($requete);
1613
        if (DB::isError($resultat)) {
1614
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1615
        }
1616
 
1617
    }
1618
 
1619
    // Gestion du site par d�faut
1620
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
1621
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
1622
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
1623
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
1624
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
1625
        if (DB::isError($resultat_supr_defaut)) {
1626
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
1627
        }
1628
 
1629
        // Requete d'insertion de la relations site par d�faut
1630
        $requete =  'INSERT INTO gen_site_relation '.
1631
                    'SET gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].', '.
1632
                    'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
1633
                    'gsr_id_valeur = 101, '.
1634
                    'gsr_ordre = NULL ';
1635
        $resultat = $db->query($requete);
1636
        if (DB::isError($resultat)) {
1637
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1638
        }
1639
    }
1640
 
1641
    $message = '<p class="pap_info">'.'Succ�s de la modification du site.'.'</p>';
1642
    $message .= '<p class="pap_info">'.$message_complement.'</p>';
1643
    return $message;
1644
}
1645
 
1646
/** Fonction ADMIN_supprimerSite() - Ajoute un site � Papyrus.
1647
*
1648
* Cette fonction ajoute le site � Papyrus, c'est � dire :
1649
* - 1. Cr�ation des r�pertoire du projet en fonction du nom et des sous-r�pertoires.
1650
* - 2. Insertion d'une ligne dans la table "gen_site".
1651
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables li�es si n�cessaire.
1652
*
1653
* @param  string   l'objet pear de connexion � la base de donn�es.
1654
* @param  string   le tableau contenant les valeurs du formulaire.
1655
* @param  int      identifiant de l'administrateur r�alisant cette cr�ation.
1656
* @return string retourne un message en cas de succ�s ou d'�chec.
1657
*/
1658
function ADMIN_supprimerSite(&$db, $aso_valeurs)
1659
{
1660
    // Recherche du coda alpha du site principal afin de pouvoir d�truire ses r�pertoires
1661
    $requete =  'SELECT gs_code_alpha '.
1662
                'FROM gen_site '.
1663
                'WHERE gs_id_site = '.$aso_valeurs['form_sites_id_site'];
1664
    $code_alpha_site_principal = $db->getOne($requete);
1665
    if (DB::isError($code_alpha_site_principal)) {
1666
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $code_alpha_site_principal->getMessage(), $requete));
1667
    }
1668
 
1669
    // Nous v�rifions que le site n'a pas le code alphanum correspondant au site par d�faut d'administration (admin).
1670
    if ($code_alpha_site_principal == GEN_SITE_DEFAUT) {
1671
        $message =  '<p class="pap_erreur">Si vous voulez vraiment supprimer le site d\'administration par d�faut de '.
1672
                    'Papyrus, veuillez commencer par changer la valeur de son code alphanum&eacute;rique. Vous pourrez '.
1673
                    'ensuite le supprimer via cette interface.</p>';
1674
        return $message;
1675
    }
1676
 
1677
    // Recherche des diff�rents sites li�s � celui que l'on veut d�truire
1678
    // Cela comprend le site � d�truire lui m�me car il poss�de la relations
1679
    // sur lui meme "site principale".
1680
    $requete =  'SELECT gs_id_site '.
1681
                'FROM gen_site, gen_site_relation '.
1682
                'WHERE gsr_id_site_01 = '.$aso_valeurs['form_sites_id_site'].' '.
1683
                'AND gsr_id_site_02 = gs_id_site ';
1684
    $resultat = $db->query($requete);
1685
    if (DB::isError($resultat)) {
1686
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1687
    }
1688
 
1689
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
1690
        // Requete de suppression des sites li�s dans gen_site
1691
        $requete_supr_site =    'DELETE FROM gen_site '.
1692
                                'WHERE gs_id_site = '.$ligne->gs_id_site;
1693
        $resultat_supr_site = $db->query($requete_supr_site);
1694
        if (DB::isError($resultat_supr_site)) {
1695
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_site->getMessage(), $requete_supr_site));
1696
        }
1697
 
1698
        // Requete de suppression des relations des sites � d�truire
1699
        $requete_supr_site_relation =   'DELETE FROM gen_site_relation '.
1700
                                        'WHERE gsr_id_site_01 = '.$ligne->gs_id_site;
1701
        $resultat_supr_site_relation = $db->query($requete_supr_site_relation);
1702
        if (DB::isError($resultat_supr_site_relation)) {
1703
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_site_relation->getMessage(), $requete_supr_site_relation));
1704
        }
1705
 
1706
        // Recherche des diff�rents menus li�s au site � d�truire
1707
        $requete_menu = 'SELECT gm_id_menu '.
1708
                        'FROM gen_menu '.
1709
                        'WHERE gm_ce_site = '.$ligne->gs_id_site;
1710
        $resultat_menu = $db->query($requete_menu) ;
1711
        if (DB::isError($resultat_menu)) {
1712
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_menu->getMessage(), $requete_menu));
1713
        }
1714
        while ($ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT)) {
1715
            // Requete de suppression des des menus
1716
            $requete_supr_menu =   'DELETE FROM gen_menu '.
1717
                                            'WHERE gm_id_menu = '.$ligne_menu->gm_id_menu;
1718
            $resultat_supr_menu = $db->query($requete_supr_menu);
1719
            if (DB::isError($resultat_supr_menu)) {
1720
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu->getMessage(), $requete_supr_menu));
1721
            }
1722
            // Requete de suppression des relations des menus
1723
            $requete_supr_menu_relation =   'DELETE FROM gen_menu_relation '.
1724
                                            'WHERE gmr_id_menu_01 = '.$ligne_menu->gm_id_menu;
1725
            $resultat_supr_menu_relation = $db->query($requete_supr_menu_relation);
1726
            if (DB::isError($resultat_supr_menu_relation)) {
1727
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_relation->getMessage(), $requete_supr_menu_relation));
1728
            }
1729
 
1730
            // Requete de suppression des contenus des menus
1731
            $requete_supr_menu_contenu =   'DELETE FROM gen_menu_contenu '.
1732
                                            'WHERE gmc_ce_menu = '.$ligne_menu->gm_id_menu;
1733
            $resultat_supr_menu_contenu = $db->query($requete_supr_menu_contenu);
1734
            if (DB::isError($resultat_supr_menu_contenu)) {
1735
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_contenu->getMessage(), $requete_supr_menu_contenu));
1736
            }
1737
 
1738
            // Requete de suppression des ulr alternatives des menus
1739
            $requete_supr_menu_url_alt =   'DELETE FROM gen_menu_url_alternative '.
1740
                                            'WHERE gmua_ce_menu = '.$ligne_menu->gm_id_menu;
1741
            $resultat_supr_menu_url_alt = $db->query($requete_supr_menu_url_alt);
1742
            if (DB::isError($resultat_supr_menu_url_alt)) {
1743
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_url_alt->getMessage(), $requete_supr_menu_url_alt));
1744
            }
1745
        }
1746
        $resultat_menu->free();
1747
    }
1748
    $resultat->free();
1749
 
1750
    // Suppression des r�pertoires du site
1751
    if (!GEN_FTP_UTILISE) {
1752
        $chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal;
1753
        $resultat = supprimerDossier($chemin_repertoire, GEN_SEP);
1754
        if (!$resultat) {
1755
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer le r&eacute;pertoire.<br />'.
1756
                        'R&eacute;pertoire : '. $chemin_repertoire .'<br />'.
1757
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1758
                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1759
            return $message;
1760
        }
1761
    } else {
1762
        // Cr�ation d'une connection ftp avec Net_FTP de PEAR
1763
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
1764
 
1765
        // cr�ation de l'objet pear ftp
1766
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1767
        // cr�ation de la connexion
1768
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1769
        // identification
1770
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
1771
        // Gestion des erreurs ftp
1772
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
1773
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
1774
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
1775
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
1776
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
1777
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
1778
                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1779
                        'Fichier n&deg; : '. __FILE__ .'<br /><p>';
1780
            return $message;
1781
        }
1782
        // Changement du niveau d'erreur pour �viter les Notices PHP dues �  Net_FTP
1783
        error_reporting(E_PARSE);
1784
        $chemin_repertoire = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal.'/';
1785
 
1786
        if ($code_alpha_site_principal!='') {
1787
	        $resultat = $objet_pear_ftp->rm($chemin_repertoire, true);
1788
	        if (PEAR::isError($resultat)) {
1789
	            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer le r&eacute;pertoire par ftp.<br />'.
1790
	                        'Erreur ftp : '.$resultat->getMessage().'<br />'.
1791
	                        'R&eacute;pertoire : '. $chemin_repertoire .'<br />'.
1792
	                        'Ligne n&deg; : '. __LINE__ .'<br />'.
1793
	                        'Fichier n&deg; : '. __FILE__ .'<br /></p>';
1794
	            return $message;
1795
	        }
1796
        }
1797
        $objet_pear_ftp->disconnect();
1798
        // Retour au niveau d'erreur d�finit dans le fichier de config de Papyrus
1799
        error_reporting(GEN_DEBOGAGE_NIVEAU);
1800
    }
1801
    $message = '<p class="pap_info">Succ&eacute;s de la suppression du site.</p>';
1802
    return $message;
1803
}
1804
 
1805
 
1806
function ADMIN_verifier_traduction_possible(&$db, $aso_valeurs) {
1807
 
1808
 
1809
	// 	Traduction d'un site principal uniquement :
1810
 
1811
    $requete =  'SELECT gsr_id_site_01, gs_ce_i18n '.
1812
                'FROM gen_site_relation, gen_site '.
1813
                'WHERE gsr_id_site_02 = '.$aso_valeurs['form_sites_id_site'].' '.
1814
                'AND gs_id_site = gsr_id_site_01  '.
1815
                'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
1816
 
1817
    $resultat = $db->query($requete);
1818
 
1819
    if (DB::isError($resultat)) {
1820
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1821
    }
1822
 
1823
    if ( $resultat->numRows() == 0 ) {
1824
    	$site_id = $aso_valeurs['form_sites_id_site'];
1825
    }
1826
    else {
1827
    	$ligne_site = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
1828
        $site_id = $ligne_site->gsr_id_site_01;
1829
    }
1830
 
1831
 
1832
	 $requete =  'SELECT distinct gs_ce_i18n '.
1833
    'FROM gen_site_relation, gen_site '.
1834
    'WHERE gsr_id_site_01 = ' . $site_id .' '.
1835
    'AND gs_id_site = gsr_id_site_02  '.
1836
    'AND gsr_id_valeur =1  '; // 1 = "avoir traduction"
1837
 
1838
    $resultat = $db->query($requete) ;
1839
    if (DB::isError($resultat)) {
1840
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1841
    }
1842
    $not_in_langue='';
1843
    if ( $resultat->numRows() == 0 ) {
1844
		$not_in_langue="gi_id_i18n not in('".$ligne_site->gs_ce_i18n."')";
1845
    }
1846
    else {
1847
    	    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
1848
				$not_in_langue="'".$ligne->gs_ce_i18n."'".",".$not_in_langue;
1849
				$end="'".$ligne->gs_ce_i18n."'";
1850
			}
1851
    		$not_in_langue=' gi_id_i18n not in('.$not_in_langue.$end.')';
1852
    }
1853
	$resultat->free();
1854
 
1855
	$requete =  "SELECT * FROM gen_i18n where ".$not_in_langue;
1856
 
1857
    $resultat = $db->query($requete) ;
1858
    if (DB::isError($resultat)) {
1859
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
1860
    }
1861
 
1862
    $retour = $resultat->numRows();
1863
    $resultat->free();
1864
 
1865
    $message='';
1866
    if ($retour == 0) {
1867
    	  $message = '<p class="pap_erreur">Plus de traduction possible pour ce site </p>';
1868
    }
1869
    return  $message;
1870
}
1871
 
1872
// +- Fin du code source  --------------------------------------------------------------------------------+
1873
/*
1874
* $Log: adsi_site.fonct.php,v $
1875
* Revision 1.42  2007-10-23 13:31:22  ddelon
1876
* Ajout copie images lors traduction d'un site
1877
*
1878
* Revision 1.41  2007-10-21 16:44:37  ddelon
1879
* Pb Pap chemin
1880
*
1881
* Revision 1.40  2007-10-04 12:57:37  ddelon
1882
* retablisssement chemin ftp dans traduction site
1883
*
1884
* Revision 1.39  2007-06-26 14:18:53  florian
1885
* amélioration des formulaires des différentes applis de l'interface d'administration afin de les simplifier
1886
*
1887
* Revision 1.38  2007-06-25 12:15:06  alexandre_tb
1888
* merge from narmer
1889
*
1890
* Revision 1.37  2007/04/24 13:27:57  alexandre_tb
1891
* encodage
1892
*
1893
* Revision 1.36  2007/04/20 13:48:31  alexandre_tb
1894
* nettoyage accent
1895
*
1896
* Revision 1.35  2007/04/20 10:42:42  neiluj
1897
* suite oubli, fix des derniers bugs FTP
1898
*
1899
* Revision 1.34  2007/04/20 09:21:41  neiluj
1900
* correction bug ftp création/suppression/modification de site
1901
* (changé PAP_FTP_RACINE en PAP_CHEMIN_RACINE)
1902
* voir compatibilité chroot() du serveur FTP)
1903
*
1904
* Revision 1.33  2007/04/19 15:34:35  neiluj
1905
* préparration release (livraison) "Narmer" - v0.25
1906
*
1907
* Revision 1.32  2006/10/16 15:49:06  ddelon
1908
* Refactorisation code mulitlinguisme et gestion menu invisibles
1909
*
1910
* Revision 1.31  2006/09/12 09:54:02  ddelon
1911
* Affichage des identifications disponibles lors de la création d'un site. Un bug faisait que l'affichage de l'identification par défaut ne fonctionnait plus en creation.
1912
*
1913
* Revision 1.30  2006/07/19 13:57:35  ddelon
1914
* Bug suppression de site
1915
*
1916
* Revision 1.29  2006/03/23 20:24:58  ddelon
1917
* *** empty log message ***
1918
*
1919
* Revision 1.28  2006/03/15 23:44:19  ddelon
1920
* Gestion site
1921
*
1922
* Revision 1.27  2006/03/15 23:35:25  ddelon
1923
* Gestion site
1924
*
1925
* Revision 1.26  2006/03/02 10:49:49  ddelon
1926
* Fusion branche multilinguisme dans branche principale
1927
*
1928
* Revision 1.25.2.2  2006/02/28 14:02:10  ddelon
1929
* Finition multilinguisme
1930
*
1931
* Revision 1.25.2.1  2006/01/19 21:26:20  ddelon
1932
* Multilinguisme site + bug ftp
1933
*
1934
* Revision 1.25  2005/10/17 13:48:59  jp_milcent
1935
* Ajout d'un espace apr�s le texte "Derni�re modification par".
1936
*
1937
* Revision 1.24  2005/09/23 14:32:54  florian
1938
* compatibilité XHTML + correction interface
1939
*
1940
* Revision 1.23  2005/09/20 17:01:22  ddelon
1941
* php5 et bugs divers
1942
*
1943
* Revision 1.22  2005/05/27 16:06:16  jpm
1944
* Gestion des infos sur l'admin modifiant les infos.
1945
*
1946
* Revision 1.21  2005/04/08 13:29:04  jpm
1947
* Utiliation de r�f�rences.
1948
* Correction du double &amp; dans les urls du formulaire.
1949
*
1950
* Revision 1.20  2005/03/08 11:17:47  jpm
1951
* Suppression de l'inclusion d'un fichier inutile.
1952
*
1953
* Revision 1.19  2005/02/28 11:07:00  jpm
1954
* Modification des auteurs.
1955
*
1956
* Revision 1.18  2005/02/28 10:59:07  jpm
1957
* Modification des commentaires et copyright.
1958
*
1959
* Revision 1.17  2005/02/17 17:51:11  florian
1960
* Correction bug FTP
1961
*
1962
* Revision 1.16  2005/02/17 16:44:55  florian
1963
* correction du bug sur les sites par d�faut
1964
*
1965
* Revision 1.15  2005/01/04 19:52:50  alex
1966
* correction de bug de copie de r�pertoire r�cursif de PEAR.
1967
*
1968
* Revision 1.14  2004/12/03 19:22:53  jpm
1969
* Gestion des types de sites externes g�r�s par Papyrus.
1970
*
1971
* Revision 1.13  2004/12/03 16:37:34  jpm
1972
* Correction d'un bogue qui emp�cher la mise � jour des url des sites externes.
1973
*
1974
* Revision 1.12  2004/12/01 17:22:58  jpm
1975
* Ajout d'une confirmation javascript pour la suppression d'un site.
1976
*
1977
* Revision 1.11  2004/11/30 16:43:51  jpm
1978
* Correction de bogues.
1979
*
1980
* Revision 1.10  2004/11/29 17:05:28  jpm
1981
* Correction d'un bogue concernat les cases � cocher.
1982
*
1983
* Revision 1.9  2004/11/26 13:13:51  jpm
1984
* Mise en commentaire de variable pass�e dans un message d'erreur car elles semblent provoquer un bogue et ne sont pas obligatoire.
1985
*
1986
* Revision 1.8  2004/11/03 17:59:59  jpm
1987
* Corrections bogues erreurs variable inconnue.
1988
*
1989
* Revision 1.7  2004/10/26 18:41:28  jpm
1990
* Gestion des sites externes � Papyrus.
1991
*
1992
* Revision 1.6  2004/10/22 17:25:31  jpm
1993
* Changement du nom de la class CSS d'erreur.
1994
*
1995
* Revision 1.5  2004/10/19 15:57:55  jpm
1996
* Am�lioration de la gestion des fichiers sur le serveur.
1997
* Ajout d'une contrainte pour �viter la suppression par erreur du site par d�faut.
1998
*
1999
* Revision 1.4  2004/10/18 18:27:41  jpm
2000
* Correction probl�mes FTP et manipulation de fichiers.
2001
*
2002
* Revision 1.3  2004/09/23 16:51:27  jpm
2003
* Ajout d'informations suppl�mentaires sur les messages d'erreur.
2004
*
2005
* Revision 1.2  2004/07/06 17:08:01  jpm
2006
* Modification de la documentation pour une mailleur analyse par PhpDocumentor.
2007
*
2008
* Revision 1.1  2004/06/16 14:28:46  jpm
2009
* Changement de nom de G�n�sia en Papyrus.
2010
* Changement de l'arborescence.
2011
*
2012
* Revision 1.20  2004/05/10 14:32:14  jpm
2013
* Changement du titre.
2014
*
2015
* Revision 1.19  2004/05/10 12:23:39  jpm
2016
* Modification formulaire.
2017
*
2018
* Revision 1.18  2004/05/07 16:33:53  jpm
2019
* Am�lioration des formulaires.
2020
*
2021
* Revision 1.17  2004/05/07 07:22:51  jpm
2022
* Ajout de la gestion des modification et suppression de site.
2023
* Am�lioration de la cr�ation des sites.
2024
*
2025
* Revision 1.16  2004/04/30 16:22:53  jpm
2026
* Poursuite de l'administration des sites.
2027
*
2028
* Revision 1.14  2004/04/02 15:58:39  jpm
2029
* Modification fonction liste des projets.
2030
*
2031
* Revision 1.13  2004/04/01 11:21:41  jpm
2032
* Ajout et modification de commentaires pour PhpDocumentor.
2033
*
2034
* Revision 1.12  2004/03/24 20:01:02  jpm
2035
* Traduction, mise en forme, ajout de commentaire pour les fonctions listProjects() et updateProject().
2036
*
2037
* Revision 1.11  2004/03/24 10:06:01  jpm
2038
* Ajout des commentaires d'ent�te.
2039
* D�but mise en conformit� avec la convention de codage.
2040
* D�but traitement de la fonction listant les projets.
2041
*
2042
*
2043
*/
2044
?>