Subversion Repositories Applications.papyrus

Rev

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