Subversion Repositories Applications.papyrus

Rev

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

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