Subversion Repositories Applications.papyrus

Rev

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