Subversion Repositories Applications.papyrus

Rev

Rev 198 | Rev 205 | 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) 2001 Laurent COUDOUNEAU (lc@gsite.org)                                                 |
7
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
8
// +------------------------------------------------------------------------------------------------------+
9
// | This library is free software; you can redistribute it and/or                                        |
10
// | modify it under the terms of the GNU Lesser General Public                                           |
11
// | License as published by the Free Software Foundation; either                                         |
12
// | version 2.1 of the License, or (at your option) any later version.                                   |
13
// |                                                                                                      |
14
// | This library is distributed in the hope that it will be useful,                                      |
15
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
17
// | Lesser General Public License for more details.                                                      |
18
// |                                                                                                      |
19
// | You should have received a copy of the GNU Lesser General Public                                     |
20
// | License along with this library; if not, write to the Free Software                                  |
21
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// +------------------------------------------------------------------------------------------------------+
201 jpm 23
// CVS : $Id: adsi_site.fonct.php,v 1.13 2004-12-03 16:37:34 jpm Exp $
6 jpm 24
/**
25
* Bibliothèque de fonctions d'admininistration des projets
26
*
27
* Contient un ensemble de fonctions permettant à l'application Administrateur de Papyrus, de modifier des informations
28
* sur les projets (=sites gérés par Papyrus).
29
*
25 jpm 30
*@package Admin_site
6 jpm 31
*@subpackage Fonctions
32
//Auteur original :
33
*@author        Laurent COUDOUNEAU <lc@gsite.org>
34
//Autres auteurs :
35
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
36
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
37
*@copyright     Tela-Botanica 2000-2004
201 jpm 38
*@version       $Revision: 1.13 $ $Date: 2004-12-03 16:37:34 $
6 jpm 39
// +------------------------------------------------------------------------------------------------------+
40
*/
41
 
42
// +------------------------------------------------------------------------------------------------------+
43
// |                                            ENTÊTE du PROGRAMME                                       |
44
// +------------------------------------------------------------------------------------------------------+
45
 
46
/** Inclusion de la classe Formulaire.
47
* Elle permet la création rapide de formulaire basé sur les tables Mysql.
48
*/
49
require_once ADSI_CHEMIN_BIBLIOTHEQUE_API.'formulaire_1.0/FORM_Form.class.php';
75 jpm 50
if (GEN_FTP_UTILISE) {
72 jpm 51
    /** Inclusion bibliothèque de PEAR gérant le FTP.*/
52
    require_once ADSI_CHEMIN_BIBLIOTHEQUE_PEAR.'Net/FTP.php';
53
}
6 jpm 54
 
55
// +------------------------------------------------------------------------------------------------------+
56
// |                                            CORPS du PROGRAMME                                        |
57
// +------------------------------------------------------------------------------------------------------+
58
/** Fonction ADMIN_afficherListeSites()- Génére le xhtml permettant de choisir un site parmis une liste.
59
*
60
* Cette fonction fournie une liste des sites principaux gérés par Génésia.
61
*
62
* @param  string   l'objet Pear DB.
63
* @param  string   l'url de la page à laquelle renvoyer le formulaire.
64
* @param  string   un message important à destination de l'utilisateur.
65
* return  string   le code XHTML à retourner.
66
*/
67
function ADMIN_afficherFormListeSites($db, $url, $message = '')
68
{
69
    // Liste des sites principaux
70
    $requete =  'SELECT * '.
71
                'FROM gen_site, gen_site_relation '.
72
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
73
                'AND gsr_id_site_01 = gs_id_site '.
115 jpm 74
                'AND gsr_id_valeur IN (102, 103) '.
6 jpm 75
                'ORDER BY gsr_ordre';
76
 
77
    $resultat = $db->query($requete);
78
    (DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
79
 
80
    //----------------------------------------------------------------------------
81
    // Création du formulaire
82
    $form =& new HTML_QuickForm('form_sites', 'post', $url);
83
    $tab_index = 1000;
84
    $squelette =& $form->defaultRenderer();
85
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
86
    $squelette->setElementTemplate( '<li>'."\n".'{label}'."\n".'{element}'."\n".
87
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
88
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
89
                                    '</li>'."\n");
90
    $squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n");
91
 
92
    $partie_site_debut =    '<fieldset>'."\n".
93
                            '<legend>Listes des sites</legend>'."\n".
94
                            '<ul>'."\n";
95
    $form->addElement('html', $partie_site_debut);
96
 
97
    $aso_options = array();
98
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
99
        $aso_options[$ligne->gs_id_site] = htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')');
100
    }
101
    $resultat->free();
198 jpm 102
 
6 jpm 103
    $id = 'form_sites_id_site';
104
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
105
    $label = '<label for="'.$id.'">'.'Listes des sites : '.'</label>';
106
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
107
 
108
    $partie_site_fin =  '</ul>'."\n".
109
                        '</fieldset>'."\n";
110
    $form->addElement('html', $partie_site_fin);
111
 
112
    $liste_bouton_debut = '<ul class="liste_bouton">'."\n";
113
    $form->addElement('html', $liste_bouton_debut);
114
 
198 jpm 115
    $id = 'form_sites_ajouter';
116
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
117
    $label = 'Ajouter';
118
    $form->addElement('submit', $id, $label, $aso_attributs);
6 jpm 119
 
198 jpm 120
    $id = 'form_sites_modifier';
121
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
122
    $label = 'Modifier';
123
    $form->addElement('submit', $id, $label, $aso_attributs);
124
 
125
    $id = 'form_sites_supprimer';
126
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'onclick' => 'javascript:return confirm(\''.'Êtes vous sûr de vouloir supprimer ce site ?'.'\');');
127
    $label = 'Supprimer';
128
    $form->addElement('submit', $id, $label, $aso_attributs);
129
 
6 jpm 130
    $liste_bouton_fin = '</ul>'."\n";
131
    $form->addElement('html', $liste_bouton_fin);
132
 
133
    $sortie = $form->toHTML()."\n";
134
 
135
    // Titre de la page:
136
    $titre = 'Configuration des sites';
137
 
138
    // Construction de la page.
139
    return ADMIN_contruirePage($titre, $sortie, $message);
140
}
141
 
142
/** Fonction ADMIN_validerFormListesSites() - Valide les données issues du formulaire de liste de sites.
143
*
144
* Cette fonction valide les données du formulaire de liste de site.
145
*
146
* @param  string   l'objet pear de connexion à la base de données.
147
* @param  string   le tableau contenant les valeurs du formulaire.
148
* @return string   retourne les messages d'erreurs sinon rien.
149
*/
150
function ADMIN_validerFormListesSites($db, $aso_valeurs)
151
{
152
    $message = '';
153
 
154
    // Validation des données du formulaire
155
    if (empty($aso_valeurs['form_sites_id_site'])) {
96 jpm 156
        $message .= '<p class="pap_erreur">Vous devez d\'abord sélectionner un site.</p>';
6 jpm 157
    }
158
 
159
    return $message;
160
}
161
 
162
/** Fonction ADMIN_afficherFormSite()- Génére un formulaire pour gen_site.
163
*
164
* Cette fonction retourne un formulaire pour modification ou pour ajout.
165
*
166
* @param  string   l'objet pear de connexion à la base de données.
167
* @param  string   l'url à laquelle renvoyer le formulaire.
168
* @param  string   le tableau contenant les valeurs du formulaire.
169
* @param  string   un message à destination de l'utilisateur.
170
* return  string   le code XHTML à retourner.
171
*/
172
function ADMIN_afficherFormSite($db, $url, $aso_valeurs = array(), $message = '')
173
{
174
 
175
    // Nous cherchons à savoir si nous somme en modification
176
    $aso_valeurs['modification'] = false;
177
    if (isset($aso_valeurs['form_sites_modifier'])) {
190 jpm 178
        $site_id = $aso_valeurs['form_sites_id_site'];
6 jpm 179
        // Requete pour récupérer les informations sur le site à modifier
180
        $requete =  'SELECT * '.
181
                    'FROM gen_site '.
190 jpm 182
                    'WHERE gs_id_site = '.$site_id;
6 jpm 183
        $resultat = $db->query($requete);
184
        if (DB::isError($resultat)) {
185
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
186
        }
187
        $aso_valeurs = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
190 jpm 188
        $resultat->free();
189
 
190
        // Requete pour récupérer les informations issues des relations du site à modifier
191
        $requete =    'SELECT * '.
192
                        'FROM gen_site_relation '.
193
                        'WHERE gsr_id_site_01 = '.$site_id;
194
        $resultat = $db->query($requete);
195
        if (DB::isError($resultat)) {
196
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
197
        }
201 jpm 198
        $aso_valeurs['defaut'] = 0;
199
        $aso_valeurs['externe'] = 0;
190 jpm 200
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
201
            if ($ligne->gsr_id_valeur == 101) {// 101 = site par défaut
202
                $aso_valeurs['defaut'] = true;
203
            }
204
            if ($ligne->gsr_id_valeur == 103) {// 103 = site externe à Papyrus
205
                $aso_valeurs['externe'] = true;
206
            }
207
        }
208
        $resultat->free();
209
 
6 jpm 210
        $aso_valeurs['modification'] = true;
211
    } else if (isset($aso_valeurs['gs_id_site'])) {
212
        $aso_valeurs['modification'] = true;
213
    }
190 jpm 214
    // Débogage :
215
    //$GLOBALS['_DEBOGAGE_'] .= '<pre>'.print_r($aso_valeurs, true).'</pre>';
6 jpm 216
 
217
    //----------------------------------------------------------------------------
218
    // Création du formulaire
219
    $form =& new HTML_QuickForm('site', 'post', $url);
220
    $tab_index = 1000;
221
    $squelette =& $form->defaultRenderer();
222
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
223
    $squelette->setElementTemplate(  '<li>'."\n".
224
                                    '{label}'."\n".
225
                                    '{element}'."\n".
226
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
227
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
228
                                    '</li>'."\n");
115 jpm 229
    $squelette->setGroupElementTemplate('{label}'."\n".
230
                                        '{element}'."\n".
231
                                        '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
232
                                        '&nbsp;'."\n"
233
                                        , 'double');
6 jpm 234
    $squelette->setRequiredNoteTemplate("\n".'<p><span class="symbole_obligatoire">*</span> {requiredNote}</p>'."\n");
235
 
236
    $partie_site_debut = '<fieldset>'."\n".'<legend>Configuration du site</legend>'."\n".'<ul>'."\n";
237
    $form->addElement('html', $partie_site_debut);
238
 
239
    if ($aso_valeurs['modification']) {
240
        $form->addElement('hidden', 'gs_id_site');
241
    }
242
 
243
    $id = 'gs_nom';
244
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 100, 'value' => 'nom du site');
245
    $label = '<label for="'.$id.'">'.'Nom du site : '.'</label>';
246
    $form->addElement('text', $id, $label, $aso_attributs);
247
    $form->addRule($id, 'Un nom est requis pour le site !', 'required', '', 'client');
248
 
249
    $id = 'gs_code_alpha';
250
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 20, 'maxlength' => 20, 'value' => 'site_01');
251
    $label = '<label for="'.$id.'">'.'Code alphanumérique : '.'</label>';
252
    $form->addElement('text', $id, $label, $aso_attributs);
253
    $form->addRule('gs_code_alpha', 'Un code alphanumérique est requis pour le site !', 'required', '', 'client');
254
 
255
    $id = 'gs_code_num';
256
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 20, 'maxlength' => 20, 'value' => 1);
257
    $label = '<label for="'.$id.'">'.'Code numérique : '.'</label>';
258
    $form->addElement('text', $id, $label, $aso_attributs);
259
    $form->addRule('gs_code_num', 'Un code numérique est requis pour le site !', 'required', '', 'client');
260
 
261
    $id = 'gs_raccourci_clavier';
262
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'size' => 1, 'maxlength' => 1, 'value' => 'Z');
263
    $label = '<label for="'.$id.'">'.'Raccourci clavier : '.'</label>';
264
    $form->addElement('text', $id, $label, $aso_attributs);
265
 
266
    // Requete pour connaitre les identifications dispo
267
    $requete =  'SELECT * '.
268
                'FROM gen_site_auth '.
269
                'WHERE gsa_id_auth != 0';
270
    $resultat = $db->query($requete) ;
271
    if (DB::isError($resultat)) {
272
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
273
    }
274
    $aso_options = array();
275
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
276
        // Test pour connaître le type d'authentification.
277
        $type = '';
278
        if ($ligne->gsa_ce_type_auth == '1' ) {
279
            $type = 'Base de données';
280
        } else if ($ligne->gsa_ce_type_auth == '2' ) {
281
            $type = 'LDAP';
282
        }
283
        $aso_options[$ligne->gsa_id_auth] = $ligne->gsa_nom.' ('.$type.')';
284
    }
285
    $resultat->free();
286
    $id = 'gs_ce_auth';
287
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
288
    $label = '<label for="'.$id.'">'.'Identification : '.'</label>';
289
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
290
 
291
    // En modification nous affichons la liste des squelettes disponiblent dans
292
    // le dossier du site.
293
    if ($aso_valeurs['modification']) {
294
        $aso_options = array();
75 jpm 295
        if (!GEN_FTP_UTILISE) {
72 jpm 296
            $chemin_squelettes =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
297
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
298
            $dossier = opendir($chemin_squelettes);
299
            while(($fichier = readdir($dossier)) !== false) {
300
                if ($fichier != '.' && $fichier != '..') {
301
                    $chemin_type = $chemin_squelettes.GEN_SEP.$fichier;
302
                    if (filetype($chemin_type) != 'dir') {
303
                        $aso_options[$fichier] = $fichier;
304
                    }
305
                }
6 jpm 306
            }
72 jpm 307
        } else {
308
            // ouverture des squelettes présent dans le dossier du site
309
            // création de l'objet pear ftp
310
            $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
311
            // création de la connexion
312
            $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
313
            // identification
314
            $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
315
            // Gestion des erreurs ftp
316
            if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
190 jpm 317
                die('ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
72 jpm 318
                    'Serveur : '. GEN_FTP_SERVEUR .'<br />'.
319
                    'Utilisateur : '. GEN_FTP_UTILISATEUR .'<br />'.
320
                    'Ligne n° : '. __LINE__ .'<br />'.
183 jpm 321
                    'Fichier n° : '. __FILE__ .'<br />');
322
                    //'Message erreur de connection : '.$ftp_conn->getMessage().'<br />'.
323
                    //'Message erreur de login : '.$ftp_login_result->getMessage());
72 jpm 324
            }
325
            $chemin_squelettes =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
326
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
327
            $tab_squelettes = $objet_pear_ftp->ls($chemin_squelettes);
328
            $aso_options = array();
329
            for ($i = 0; $i < count($tab_squelettes) ; $i++) {
330
                if ($tab_squelettes[$i]['is_dir'] == false) {
331
                    $aso_options[$tab_squelettes[$i]['name']] = $tab_squelettes[$i]['name'];
332
                }
333
            }
334
            $objet_pear_ftp->disconnect();
6 jpm 335
        }
201 jpm 336
 
337
        // Vérification de la présence de squelettes
338
        if (count($aso_options) == 0) {
339
            $aso_options['Aucun squelette'] = 'Aucun squelette';
340
        }
341
 
6 jpm 342
        $id = 'gs_fichier_squelette';
343
        $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
344
        $label = '<label for="'.$id.'">'.'Squelette : '.'</label>';
345
        $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
346
    }
347
 
348
    // Requete pour connaitre les internationalisation dispo
349
    $requete =  'SELECT * '.
350
                'FROM gen_i18n ';
351
    $resultat = $db->query($requete) ;
352
    if (DB::isError($resultat)) {
353
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
354
    }
355
    $aso_options = array();
356
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
357
        $aso_options[$ligne->gi_id_i18n] = $ligne->gi_id_i18n;
358
    }
359
    $resultat->free();
360
    $id = 'gs_ce_i18n';
201 jpm 361
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++);
6 jpm 362
    $label = '<label for="'.$id.'">'.'Langue : '.'</label>';
363
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
364
 
115 jpm 365
    $id = 'defaut';
201 jpm 366
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++);
190 jpm 367
    if ($aso_valeurs[$id] === true) {
368
        $aso_attributs['checked'] = 'checked';
369
    }
115 jpm 370
    $label = '<label for="'.$id.'">'.'En faire le site par défaut : '.'</label>';
201 jpm 371
    $form->addElement('checkbox', $id, $label, null, $aso_attributs);
115 jpm 372
 
373
    // Groupe site externe
374
    $id = 'externe';
201 jpm 375
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++);
190 jpm 376
    if ($aso_valeurs[$id] === true) {
377
        $aso_attributs['checked'] = 'checked';
378
    }
201 jpm 379
    $label = 'oui : ';// Les navigateurs gèrent mal les labels au sein d'un même <li>
380
    $groupe[] =& HTML_QuickForm::createElement('checkbox', $id, $label, null, $aso_attributs);
115 jpm 381
 
382
    $id = 'gs_url';
201 jpm 383
    $aso_attributs = array('id' => $id, 'tabindex' => $tab_index++,'size' => 45, 'maxlength' => 255, 'value' => 'http://');
115 jpm 384
    $label = 'url externe : ';// Les navigateurs gères mal les labels au sein d'un même <li>
385
    $groupe[] =& HTML_QuickForm::createElement('text', $id, $label, $aso_attributs);
386
 
387
    $label = '<label>'.'Le site n\'est pas géré par Papyrus : '.'</label>';
388
    $form->addGroup($groupe, 'double', $label, '', false);
389
 
6 jpm 390
    $partie_site_fin = '</ul>'."\n".'</fieldset>'."\n";
391
    $form->addElement('html', $partie_site_fin);
392
 
393
    $partie_entete_debut = '<fieldset>'."\n".'<legend>Entête par défaut des pages du site</legend>'."\n".'<ul>'."\n";
394
    $form->addElement('html', $partie_entete_debut);
395
 
396
    $id = 'gs_titre';
397
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 255, 'value' => 'titre du site');
398
    $label = '<label for="'.$id.'">'.'Titre du site : '.'</label>';
399
    $form->addElement('text', $id, $label, $aso_attributs);
400
    $form->addRule('gs_titre', 'Un titre est requis pour le site !', 'required', '', 'client');
401
 
402
    $id = 'gs_mots_cles';
403
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'rows' => 3, 'cols' => 45);
404
    $label = '<label for="'.$id.'">'.'Mots-clés : '.'</label>';
405
    $zone_mots_cles = $form->createElement('textarea', $id, $label, $aso_attributs);
406
    $zone_mots_cles->setValue('mots-clés du site');
407
    $form->addElement($zone_mots_cles);
408
    $form->addRule($id, 'Des mots clés sont requis pour le site !', 'required', '', 'client');
409
 
410
    $id = 'gs_description';
411
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'rows' => 3, 'cols' => 45);
412
    $label = '<label for="'.$id.'">'.'Description du contenu : '.'</label>';
413
    $zone = $form->createElement('textarea', $id, $label, $aso_attributs);
414
    $zone->setValue('description du site');
415
    $form->addElement($zone);
416
    $form->addRule($id, 'Une description est requise pour le site !', 'required', '', 'client');
417
 
418
    $id = 'gs_auteur';
419
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 255, 'value' => 'auteur du site');
420
    $label = '<label for="'.$id.'">'.'Auteur du site : '.'</label>';
421
    $form->addElement('text', $id, $label, $aso_attributs);
422
    $form->addRule('gs_auteur', 'Un auteur est requis pour le site !', 'required', '', 'client');
423
 
424
    $partie_entete_fin = '</ul>'."\n".'</fieldset>'."\n";
425
    $form->addElement('html', $partie_entete_fin);
426
 
427
    if ($aso_valeurs['modification']) {
428
        // Requete pour connaitre les informations sur l'administrateur ayant fait la dernière modif
429
        $requete_admin =    'SELECT * '.
430
                            'FROM gen_annuaire '.
431
                            'WHERE ga_id_administrateur = '.$aso_valeurs['gs_ce_admin'];
432
        $resultat_admin = $db->query($requete_admin);
433
        if (DB::isError($resultat_admin)) {
434
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_admin->getMessage(), $requete_admin));
435
        }
436
        $ligne_admin = $resultat_admin->fetchRow(DB_FETCHMODE_OBJECT);
437
        $info_admin =   '<p class="info">Dernière modification par'.$ligne_admin->ga_prenom.' '.$ligne_admin->ga_nom.
438
                        ' le '.$aso_valeurs['gs_date_creation'].'</p>';
439
        $form->addElement('html', $info_admin);
440
        $form->addElement('hidden', 'gs_ce_admin');
441
        $form->addElement('hidden', 'gs_date_creation');
442
 
443
        // Titre de la page:
444
        $titre = 'Modifier un site';
445
        // Bouton validant le formulaire
446
        $bouton_validation = '<input type="submit" id="site_modifier" name="site_modifier" value="Enregistrer" />';
447
    } else {
448
        // Titre de la page:
449
        $titre = 'Ajouter un site';
450
        // Bouton validant le formulaire
451
        $bouton_validation = '<input type="submit" id="site_enregistrer" name="site_enregistrer" value="Enregistrer" />';
452
    }
453
    $bouton_annuler =   '<input type="submit" id="form_annuler" name="form_annuler" value="Annuler" />';
454
    $bouton_effacer =   '<input type="reset" id="effacer" name="effacer" value="Effacer" />';
455
    $boutons =  '<p>'."\n".
456
                $bouton_validation."\n".
457
                $bouton_annuler."\n".
458
                $bouton_effacer."\n".
459
                '</p>'."\n";
460
    $form->addElement('html', $boutons);
461
 
462
    // Instanciation des valeurs par défaut du formulaire
463
    $form->setDefaults($aso_valeurs);
464
 
465
    // Javascript pour la validation côté client
466
    $regles_javascript = $form->getValidationScript();
467
    // Suppression des balises déjà créées par GEN_stockerCodeScript()
468
    $regles_javascript = ereg_replace ( '<script type="text\/javascript">', '', $regles_javascript);
469
    $regles_javascript = ereg_replace ( '<!--', '', $regles_javascript);
470
    $regles_javascript = ereg_replace ( '\/\/-->', '', $regles_javascript);
471
    $regles_javascript = ereg_replace ( '<\/script>', '', $regles_javascript);
472
    GEN_stockerCodeScript($regles_javascript);
473
 
474
    // Note de fin de formulaire
475
    $form->setRequiredNote('Indique les champs obligatoires');
476
    $sortie = $form->toHTML()."\n";
477
 
478
    // Construction de la page.
479
    return ADMIN_contruirePage($titre, $sortie, $message);
480
}
481
 
482
/** Fonction ADMIN_validerFormAjouterSite() - Valide les données issues du formulaire pour gen_site.
483
*
484
* Cette fonction valide les données à ajouter dans la table gen_site.
485
*
486
* @param  string   l'objet pear de connexion à la base de données.
487
* @param  string   le tableau contenant les valeurs du formulaire.
488
* @return string   retourne les messages d'erreurs sinon rien.
489
*/
490
function ADMIN_validerFormSite($db, $aso_valeurs)
491
{
492
    $message = '';
493
 
494
    // Validation des données du formulaire
495
    if (empty($aso_valeurs['gs_nom'])) {
96 jpm 496
        $message .= '<p class="pap_erreur">Le champ "Nom" ne doit pas être vide.</p>';
6 jpm 497
    }
498
    if (empty($aso_valeurs['gs_code_alpha'])) {
96 jpm 499
        $message .= '<p class="pap_erreur">Le champ "Code alphanumérique" ne doit pas être vide.</p>';
6 jpm 500
    }
75 jpm 501
    if ($aso_valeurs['gs_code_num'] == '') {
502
        // Note: ne pas utilisez empty() car si on veut saisir 0, cela est conscidéré comme vide!
96 jpm 503
        $message .= '<p class="pap_erreur">Le champ "Code numérique" ne doit pas être vide.</p>';
6 jpm 504
    }
505
    if (preg_match('/^[0-9]+$/',$aso_valeurs['gs_code_num']) == 0) {
96 jpm 506
        $message .= '<p class="pap_erreur">Le champ "Code numérique" doit contenir un nombre.</p>';
6 jpm 507
    }
508
 
509
    // Requete pour vérifier l'abscence du code numérique et alphanumérique de la table gen_site
510
    $requete =  'SELECT gs_code_alpha, gs_code_num '.
511
                'FROM gen_site, gen_site_relation '.
512
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
115 jpm 513
                'AND gsr_id_site_01 = gs_id_site '.
514
                'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe"
6 jpm 515
    $requete .= (isset($aso_valeurs['gs_id_site'])) ? 'AND gs_id_site != '.$aso_valeurs['gs_id_site'] : '';
516
 
517
    $resultat = $db->query($requete);
518
    if (DB::isError($resultat)) {
519
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
520
    }
521
 
522
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
523
        if ($ligne->gs_code_num == $aso_valeurs['gs_code_num']) {
96 jpm 524
            $message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_num'].'" pour le champ "Code numérique" existe déjà.</p>';
6 jpm 525
        }
526
        if ($ligne->gs_code_alpha == $aso_valeurs['gs_code_alpha']) {
96 jpm 527
            $message .= '<p class="pap_erreur">La valeur "'.$aso_valeurs['gs_code_alpha'].'" pour le champ "Code alphanumérique" existe déjà.</p>';
6 jpm 528
        }
529
    }
530
    $resultat->free();
531
 
532
    if (empty($aso_valeurs['gs_titre'])) {
96 jpm 533
        $message .= '<p class="pap_erreur">Le champ "Titre" ne doit pas être vide.</p>';
6 jpm 534
    }
535
    if (empty($aso_valeurs['gs_mots_cles'])) {
96 jpm 536
        $message .= '<p class="pap_erreur">Le champ "Mots clés" ne doit pas être vide.</p>';
6 jpm 537
    }
538
    if (empty($aso_valeurs['gs_description'])) {
96 jpm 539
        $message .= '<p class="pap_erreur">Le champ "Description" ne doit pas être vide.</p>';
6 jpm 540
    }
541
    if (empty($aso_valeurs['gs_auteur'])) {
96 jpm 542
        $message .= '<p class="pap_erreur">Le champ "Auteur" ne doit pas être vide.</p>';
6 jpm 543
    }
123 jpm 544
    if (isset($aso_valeurs['externe']) && $aso_valeurs['externe'] == 1 && (empty($aso_valeurs['gs_url']) || $aso_valeurs['gs_url'] == 'http://')) {
115 jpm 545
        $message .= '<p class="pap_erreur">'.'Vous avez désigné ce site comme étant externe. Il est nécessaire de saisir son URL!'.'</p>';
546
    }
123 jpm 547
    if (isset($aso_valeurs['externe']) && $aso_valeurs['externe'] == 0 && (!empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://')) {
115 jpm 548
        $message .= '<p class="pap_erreur">'.'Vous avez saisie une l\'url : '.$aso_valeurs['gs_url'].'<br />'.
549
                    'Vous conscidérez donc ce site comme étant externe. Il est nécessaire de cocher la case "oui"!'.'</p>';
550
    }
6 jpm 551
    return $message;
552
}
553
 
554
/** Fonction ADMIN_enregistrerSite() - Ajoute un site à Papyrus.
555
*
556
* Cette fonction ajoute le site à Papyrus, c'est à dire :
557
* - 1. Création des répertoire du projet en fonction du nom et des sous-répertoires.
558
* - 2. Insertion d'une ligne dans la table "gen_site".
559
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables liées si nécessaire.
560
*
561
* @param  string   l'objet pear de connexion à la base de données.
562
* @param  string   le tableau contenant les valeurs du formulaire.
563
* @param  int      identifiant de l'administrateur réalisant cette création.
564
* @return string retourne un message en cas de succès ou d'échec.
565
*/
566
function ADMIN_enregistrerSite($db, $aso_valeurs, $id_admin)
567
{
568
    $id_site = SQL_obtenirNouveauId($db, 'gen_site','gs_id_site');
569
    if ($id_site == false) {
570
        $message = '<p class="erreur"> ERREUR Génésia admin : impossible de récupérer un identifiant pour la table gen_site.<br />'.
571
                    'Ligne n° : '. __LINE__ .'<br />'.
572
                    'Fichier n° : '. __FILE__ .'<br /></p>';
573
        return $message;
574
    }
115 jpm 575
    // Nous vérifions si nous avons à faire à un site externe.
576
    $id_type_site = '102';// par défaut on conscidére que c'est un site "principal"
577
    $requete_complement = ', gs_url = NULL';
123 jpm 578
    if (isset($aso_valeurs['externe']) && $aso_valeurs['externe'] == 1 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
115 jpm 579
        $requete_complement = ', gs_url = "'.$aso_valeurs['gs_url'].'"';
580
        $id_type_site = '103';// c'est un site "externe"
581
    }
582
 
6 jpm 583
    // Requete d'insertion des infos d'un site dans gen_site
584
    $requete =  'INSERT INTO gen_site '.
585
                'SET gs_id_site = '.$id_site.', '.
586
                'gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
587
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
588
                'gs_fichier_squelette = "defaut.html", '.
589
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
590
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
591
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
592
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
593
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
594
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
595
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
596
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
597
                'gs_date_creation = "'.date('Y-m-d H:i:s').'", '.
115 jpm 598
                'gs_ce_admin = '.$id_admin.
599
                $requete_complement;
600
    $resultat = $db->query($requete);
6 jpm 601
    if (DB::isError($resultat)) {
602
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
603
    }
604
 
115 jpm 605
    // Recherche du nouveau numéro d'ordre de ce site "principal" ou "externe"
6 jpm 606
    $requete =  'SELECT MAX(gsr_ordre) AS max_ordre '.
607
                'FROM gen_site_relation '.
608
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
115 jpm 609
                'AND gsr_id_valeur IN (102, 103) ';// 102 = site "principal" et 103 = site "externe"
6 jpm 610
    $resultat = $db->query($requete) ;
611
    if (DB::isError($resultat)) {
612
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
613
    }
614
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
615
    $nouvel_ordre = $ligne->max_ordre + 1;
616
 
617
    // Requete d'insertion des relations dans gen_site_relation
618
    $requete =  'INSERT INTO gen_site_relation '.
619
                'SET gsr_id_site_01 = '.$id_site.', '.
620
                'gsr_id_site_02 = '.$id_site.', '.
115 jpm 621
                'gsr_id_valeur = '.$id_type_site.', '.
6 jpm 622
                'gsr_ordre = '.$nouvel_ordre;
623
    $resultat = $db->query($requete);
624
    if (DB::isError($resultat)) {
625
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
626
    }
627
 
115 jpm 628
    // Gestion du site par défaut
6 jpm 629
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
630
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
631
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
632
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
633
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
634
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
635
        if (DB::isError($resultat_supr_defaut)) {
636
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
637
        }
638
 
639
        // Requete d'insertion de la relations site par défaut
640
        $requete =  'INSERT INTO gen_site_relation '.
641
                    'SET gsr_id_site_01 = '.$id_site.', '.
642
                    'gsr_id_site_02 = '.$id_site.', '.
643
                    'gsr_id_valeur = 101, '.
644
                    'gsr_ordre = NULL ';
645
        $resultat = $db->query($requete);
646
        if (DB::isError($resultat)) {
647
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
648
        }
649
    }
115 jpm 650
    // Ajout des répertoires des sites "principaux" soit par manipulation de fichier soit par FTP en fonction de la constante définie
651
    // par l'utilisateur dans le fichier de config avancée.
75 jpm 652
    $tab_rep_langue = array(GEN_DOSSIER_GENERIQUE, $aso_valeurs['gs_ce_i18n']);
653
    $tab_rep_site = array(  GEN_DOSSIER_IMAGE,
654
                            GEN_DOSSIER_STYLE,
655
                            GEN_DOSSIER_SCRIPT,
656
                            GEN_DOSSIER_SQUELETTE,
657
                            GEN_DOSSIER_DOC);
115 jpm 658
    if (!GEN_FTP_UTILISE && $id_type_site == '101') {
75 jpm 659
        foreach ($tab_rep_langue as $nom_rep_langue) {
660
            foreach ($tab_rep_site as $nom_rep_site) {
661
                $chemin_repertoire =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
662
                                        $nom_rep_langue.GEN_SEP.$nom_rep_site;
663
                $vieux_umask = umask(0);
664
                $resultat = creerDossier($chemin_repertoire, 0755, GEN_SEP);
665
                umask($vieux_umask);
666
                if ($resultat == false) {
96 jpm 667
                    $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire.<br />'.
75 jpm 668
                                'Répertoire : '. $chemin_repertoire .'<br />'.
669
                                'Ligne n° : '. __LINE__ .'<br />'.
670
                                'Fichier n° : '. __FILE__ .'<br /></p>';
671
                    return $message;
672
                }
72 jpm 673
            }
674
        }
675
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
676
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
677
        $chemin_squelette_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
678
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
679
        if (!copy($chemin_squelette_defaut, $chemin_squelette_site)) {
96 jpm 680
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de squellete par défaut.<br />'.
75 jpm 681
                        'Fichier : '. $chemin_squelette_site .'<br />'.
6 jpm 682
                        'Ligne n° : '. __LINE__ .'<br />'.
683
                        'Fichier n° : '. __FILE__ .'<br /></p>';
684
            return $message;
685
        }
72 jpm 686
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
687
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
688
        $chemin_style_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
689
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
690
        if (!copy($chemin_style_defaut, $chemin_style_site)) {
96 jpm 691
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de style par défaut.<br />'.
75 jpm 692
                        'Fichier : '. $chemin_style_site .'<br />'.
72 jpm 693
                        'Ligne n° : '. __LINE__ .'<br />'.
694
                        'Fichier n° : '. __FILE__ .'<br /></p>';
6 jpm 695
            return $message;
72 jpm 696
        }
115 jpm 697
    } else if (GEN_FTP_UTILISE && $id_type_site == '101') {
72 jpm 698
        // Création d'une connection ftp avec Net_FTP de PEAR
699
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
700
 
701
        // création de l'objet pear ftp
702
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
703
        // création de la connexion
704
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
705
        // identification
706
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
707
        // Gestion des erreurs ftp
708
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
709
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
710
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
711
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
712
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
713
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
714
                        'Ligne n° : '. __LINE__ .'<br />'.
715
                        'Fichier n° : '. __FILE__ .'<br /><p>';
6 jpm 716
            return $message;
72 jpm 717
        }
75 jpm 718
        foreach ($tab_rep_langue as $nom_rep_langue) {
719
            foreach ($tab_rep_site as $nom_rep_site) {
720
                $chemin_repertoire =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
721
                                        $nom_rep_langue.GEN_SEP.$nom_rep_site.GEN_SEP;
722
                $resultat = $objet_pear_ftp->mkdir($chemin_repertoire, true) ;
723
                if (PEAR::isError($resultat)) {
724
                    $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire par ftp.<br />'.
725
                                'Répertoire : '. $chemin_repertoire .'<br />'.
726
                                'Erreur origine : '. $resultat->getMessage() .'<br />'.
727
                                'Ligne n° : '. __LINE__ .'<br />'.
728
                                'Fichier n° : '. __FILE__ .'<br /></p>';
729
                    return $message;
730
                }
72 jpm 731
            }
732
        }
733
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
734
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
735
        $chemin_squelette_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
736
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
737
        $resultat = $objet_pear_ftp->put($chemin_squelette_defaut, $chemin_squelette_site, true, FTP_BINARY);
738
        if (PEAR::isError($resultat)) {
739
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le squelette defaut par ftp.<br />'.
740
                        'Fichier origine : '. $chemin_squelette_defaut .'<br />'.
741
                        'Fichier copié : '. $chemin_squelette_site .'<br />'.
742
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
743
                        'Ligne n° : '. __LINE__ .'<br />'.
744
                        'Fichier n° : '. __FILE__ .'<br /></p>';
745
                return $message;
746
        }
747
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
748
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
749
        $chemin_style_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
750
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
751
        $resultat = $objet_pear_ftp->put($chemin_style_defaut, $chemin_style_site, true, FTP_BINARY);
752
        if (PEAR::isError($resultat)) {
753
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier les styles defaut par ftp.<br />'.
754
                        'Fichier origine : '. $chemin_style_defaut .'<br />'.
755
                        'Fichier copié : '. $chemin_style_site .'<br />'.
756
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
757
                        'Ligne n° : '. __LINE__ .'<br />'.
758
                        'Fichier n° : '. __FILE__ .'<br /></p>';
759
                return $message;
760
        }
761
        $objet_pear_ftp->disconnect();
6 jpm 762
    }
72 jpm 763
    $message = '<p class="pap_info">'.'Succés de l\'ajout du site.'.'</p>';
6 jpm 764
    return $message;
765
}
766
 
767
/** Fonction ADMIN_modifierSite() - Modifie un site de Papyrus.
768
*
769
* Cette fonction modifie un site géré par Papyrus.
770
* Il faudrait aussi pouvoir renomer le dossier du site si le code alpha change.
771
*
772
* @param  string   l'objet pear de connexion à la base de données.
773
* @param  string   le tableau contenant les valeurs du formulaire.
774
* @param  int      identifiant de l'administrateur réalisant cette modification.
775
* @return string retourne un message en cas de succès ou d'échec.
776
*/
777
function ADMIN_modifierSite($db, $aso_valeurs, $id_admin)
778
{
195 jpm 779
    // Initialisation de variables
780
    $message_complement = '';
781
 
75 jpm 782
    // Récupération de l'ancien code alphanumérique
783
    $requete =  'SELECT gs_code_alpha '.
784
                'FROM gen_site '.
785
                'WHERE gs_id_site = '.$aso_valeurs['gs_id_site'];
786
    $ancien_code_alphnum = $db->getOne($requete);
787
    if (DB::isError($ancien_code_alphnum)) {
788
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $ancien_code_alphnum->getMessage(), $requete) );
789
    }
115 jpm 790
 
791
    // Nous vérifions si nous avons à faire à un site externe.
792
    $id_type_site = '102';// par défaut on conscidére que c'est un site "principal"
201 jpm 793
    $requete_complement = ', gs_url = NULL ';
195 jpm 794
    if (isset($aso_valeurs['externe']) && $aso_valeurs['externe'] == 1 && !empty($aso_valeurs['gs_url']) && $aso_valeurs['gs_url'] != 'http://') {
201 jpm 795
        $requete_complement = ', gs_url = "'.$aso_valeurs['gs_url'].'" ';
115 jpm 796
        $id_type_site = '103';// c'est un site "externe"
797
    }
798
 
799
    // Si le code alphanumérique à changé et que nous n'avons pas à faire à un site externe.
800
    if ($aso_valeurs['gs_code_alpha'] != $ancien_code_alphnum && $id_type_site == 102) {
75 jpm 801
        if (!GEN_FTP_UTILISE) {
802
            $chemin_site_ancien = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
803
            $chemin_site_nouveau = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP;
804
            if (!rename($chemin_site_ancien, $chemin_site_nouveau)) {
805
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de changer le nom du dossier du site.<br />'.
806
                            'Ancien nom : '. $chemin_site_ancien .'<br />'.
807
                            'Nouveau nom : '. $chemin_site_nouveau .'<br />'.
808
                            'Ligne n° : '. __LINE__ .'<br />'.
809
                            'Fichier n° : '. __FILE__ .'<br /></p>';
810
                return $message;
811
            }
812
        } else {
813
            $chemin_site_ancien = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
814
            $chemin_site_nouveau = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP;
815
            // Création d'une connection ftp avec Net_FTP de PEAR
816
            // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
817
            // création de l'objet pear ftp
818
            $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
819
            // création de la connexion
820
            $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
821
            // identification
822
            $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
823
            // Gestion des erreurs ftp
824
            if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
825
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
826
                            'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
827
                            'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
828
                            'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
829
                            'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
830
                            'Ligne n° : '. __LINE__ .'<br />'.
831
                            'Fichier n° : '. __FILE__ .'<br /><p>';
832
                return $message;
833
            }
834
            $resultat = $objet_pear_ftp->putRecursive($chemin_site_ancien, $chemin_site_nouveau, false, FTP_BINARY);
835
            if (PEAR::isError($resultat)) {
836
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier l\'ancien dossier du site.<br />'.
837
                            'Dossier site ancien : '. $chemin_site_ancien .'<br />'.
838
                            'Dossier site nouveau : '. $chemin_site_nouveau .'<br />'.
839
                            'Erreur origine : '. $resultat->getMessage() .'<br />'.
840
                            'Ligne n° : '. __LINE__ .'<br />'.
841
                            'Fichier n° : '. __FILE__ .'<br /></p>';
842
                    return $message;
843
            }
844
            // On utilise la racine FTP pour rm
845
            $chemin_site_ancien = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$ancien_code_alphnum.GEN_SEP;
846
            // Changement du niveau d'erreur pour éviter les Notices PHP dues à Net_FTP
847
            error_reporting(E_PARSE);
848
            $resultat = $objet_pear_ftp->rm($chemin_site_ancien, true);
849
            if (PEAR::isError($resultat)) {
850
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer l\'ancien dossier du site.<br />'.
851
                            'Dossier site ancien : '. $chemin_site_ancien .'<br />'.
852
                            'Erreur origine : '. $resultat->getMessage() .'<br />'.
853
                            'Ligne n° : '. __LINE__ .'<br />'.
854
                            'Fichier n° : '. __FILE__ .'<br /></p>';
855
                    return $message;
856
            }
857
            // Retour au niveau d'erreur définit dans le fichier de config de Papyrus
858
            error_reporting(GEN_DEBOGAGE_NIVEAU);
859
            $objet_pear_ftp->disconnect();
860
        }
861
    }
115 jpm 862
 
6 jpm 863
    // Requete de mise à jour des infos d'un site dans gen_site
864
    $requete =  'UPDATE gen_site '.
865
                'SET gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
866
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
867
                'gs_fichier_squelette = "'.$aso_valeurs['gs_fichier_squelette'].'", '.
868
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
869
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
870
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
871
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
872
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
873
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
874
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
875
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
876
                'gs_date_creation = "'.date('Y-m-d H:i:s').'", '.
877
                'gs_ce_admin = '.$id_admin.' '.
201 jpm 878
                $requete_complement.
6 jpm 879
                'WHERE gs_id_site = '.$aso_valeurs['gs_id_site'];
880
    $resultat = $db->query($requete) ;
881
    if (DB::isError($resultat)) {
882
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
883
    }
115 jpm 884
    // Gestion du site externe
885
    if ($id_type_site == 103) {
886
        // Vérification pour voir si nous avons à faire à une transformation d'un site "principal" en site "externe"
887
        $requete =  'SELECT COUNT(gsr_id_site_01) AS nbre_relation '.
888
                    'FROM gen_site_relation '.
889
                    'WHERE gsr_id_site_01 = gsr_id_site_02 '.
890
                    'AND gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].' '.
891
                    'AND gsr_id_valeur = 102 ';// 102 = site "principal"
892
        $nbre_relation = $db->getOne($requete);
893
        if (DB::isError($nbre_relation)) {
894
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $nbre_relation->getMessage(), $requete) );
895
        }
896
 
897
        // Nous supprimons l'ancienne relation si nécessaire
898
        if ($nbre_relation >= 1) {
899
            $requete_supr_ext = 'DELETE FROM gen_site_relation '.
900
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
901
                                'AND gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].' '.
902
                                'AND gsr_id_valeur = 102 ';// 102 = site "principal"
903
            $resultat_supr_ext = $db->query($requete_supr_ext);
904
            if (DB::isError($resultat_supr_ext)) {
905
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_ext->getMessage(), $requete_supr_ext));
906
            }
907
            $message_complement =   'Le site "principal" a été transformé en site "externe". Si nécessaire, veuillez '.
908
                                    'supprimer manuellement par FTP, le dossier contenant les fichiers de ce site sur '.
909
                                    'le serveur!';
910
        }
911
 
201 jpm 912
        // Vérification pour voir si le site est déjà "externe"
913
        $requete =  'SELECT COUNT(gsr_id_site_01) AS nbre_relation '.
914
                    'FROM gen_site_relation '.
915
                    'WHERE gsr_id_site_01 = gsr_id_site_02 '.
916
                    'AND gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].' '.
917
                    'AND gsr_id_valeur = 103 ';// 103 = site "externe"
918
        $nbre_relation = $db->getOne($requete);
919
        if (DB::isError($nbre_relation)) {
920
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $nbre_relation->getMessage(), $requete) );
115 jpm 921
        }
201 jpm 922
        if ($nbre_relation == 0) {
923
            // Requete d'insertion de la relations site "externe"
924
            $requete =  'INSERT INTO gen_site_relation '.
925
                        'SET gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].', '.
926
                        'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
927
                        'gsr_id_valeur = '.$id_type_site.', '.
928
                        'gsr_ordre = NULL ';
929
            $resultat = $db->query($requete);
930
            if (DB::isError($resultat)) {
931
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
932
            }
933
        }
115 jpm 934
    }
6 jpm 935
 
115 jpm 936
    // Gestion du site par défaut
6 jpm 937
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
938
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
939
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
940
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
941
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
942
        if (DB::isError($resultat_supr_defaut)) {
943
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
944
        }
945
 
946
        // Requete d'insertion de la relations site par défaut
947
        $requete =  'INSERT INTO gen_site_relation '.
948
                    'SET gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].', '.
949
                    'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
950
                    'gsr_id_valeur = 101, '.
951
                    'gsr_ordre = NULL ';
952
        $resultat = $db->query($requete);
953
        if (DB::isError($resultat)) {
954
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
955
        }
956
    }
115 jpm 957
 
958
    $message = '<p class="pap_info">'.'Succés de la modification du site.'.'</p>';
959
    $message .= '<p class="pap_info">'.$message_complement.'</p>';
6 jpm 960
    return $message;
961
}
962
 
963
/** Fonction ADMIN_supprimerSite() - Ajoute un site à Papyrus.
964
*
965
* Cette fonction ajoute le site à Papyrus, c'est à dire :
966
* - 1. Création des répertoire du projet en fonction du nom et des sous-répertoires.
967
* - 2. Insertion d'une ligne dans la table "gen_site".
968
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables liées si nécessaire.
969
*
970
* @param  string   l'objet pear de connexion à la base de données.
971
* @param  string   le tableau contenant les valeurs du formulaire.
972
* @param  int      identifiant de l'administrateur réalisant cette création.
973
* @return string retourne un message en cas de succès ou d'échec.
974
*/
975
function ADMIN_supprimerSite($db, $aso_valeurs)
976
{
977
    // Recherche du coda alpha du site principal afin de pouvoir détruire ses répertoires
978
    $requete =  'SELECT gs_code_alpha '.
979
                'FROM gen_site '.
980
                'WHERE gs_id_site = '.$aso_valeurs['form_sites_id_site'];
981
    $code_alpha_site_principal = $db->getOne($requete);
982
    if (DB::isError($code_alpha_site_principal)) {
983
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $code_alpha_site_principal->getMessage(), $requete));
984
    }
985
 
75 jpm 986
    // Nous vérifions que le site n'a pas le code alphanum correspondant au site par défaut d'administration (admin).
987
    if ($code_alpha_site_principal == GEN_SITE_DEFAUT) {
988
        $message =  '<p class="pap_erreur">Si vous voulez vraiment supprimer le site d\'administration par défaut de '.
989
                    'Papyrus, veuillez commencer par changer la valeur de son code alphanumérique. Vous pourrez '.
990
                    'ensuite le supprimer via cette interface.</p>';
991
        return $message;
992
    }
993
 
6 jpm 994
    // Recherche des différents sites liés à celui que l'on veut détruire
995
    // Cela comprend le site à détruire lui méme car il posséde la relations
996
    // sur lui meme "site principale".
997
    $requete =  'SELECT gs_id_site '.
998
                'FROM gen_site, gen_site_relation '.
999
                'WHERE gsr_id_site_01 = '.$aso_valeurs['form_sites_id_site'].' '.
1000
                'AND gsr_id_site_02 = gs_id_site ';
1001
    $resultat = $db->query($requete);
1002
    if (DB::isError($resultat)) {
1003
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
1004
    }
1005
 
1006
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
1007
        // Requete de suppression des sites liés dans gen_site
1008
        $requete_supr_site =    'DELETE FROM gen_site '.
1009
                                'WHERE gs_id_site = '.$ligne->gs_id_site;
1010
        $resultat_supr_site = $db->query($requete_supr_site);
1011
        if (DB::isError($resultat_supr_site)) {
1012
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_site->getMessage(), $requete_supr_site));
1013
        }
1014
 
1015
        // Requete de suppression des relations des sites à détruire
1016
        $requete_supr_site_relation =   'DELETE FROM gen_site_relation '.
1017
                                        'WHERE gsr_id_site_01 = '.$ligne->gs_id_site;
1018
        $resultat_supr_site_relation = $db->query($requete_supr_site_relation);
1019
        if (DB::isError($resultat_supr_site_relation)) {
1020
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_site_relation->getMessage(), $requete_supr_site_relation));
1021
        }
1022
 
1023
        // Recherche des différents menus liés au site à détruire
1024
        $requete_menu = 'SELECT gm_id_menu '.
1025
                        'FROM gen_menu '.
1026
                        'WHERE gm_ce_site = '.$ligne->gs_id_site;
1027
        $resultat_menu = $db->query($requete_menu) ;
1028
        if (DB::isError($resultat_menu)) {
1029
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_menu->getMessage(), $requete_menu));
1030
        }
1031
        while ($ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT)) {
1032
            // Requete de suppression des des menus
1033
            $requete_supr_menu =   'DELETE FROM gen_menu '.
1034
                                            'WHERE gm_id_menu = '.$ligne_menu->gm_id_menu;
1035
            $resultat_supr_menu = $db->query($requete_supr_menu);
1036
            if (DB::isError($resultat_supr_menu)) {
1037
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu->getMessage(), $requete_supr_menu));
1038
            }
1039
            // Requete de suppression des relations des menus
1040
            $requete_supr_menu_relation =   'DELETE FROM gen_menu_relation '.
1041
                                            'WHERE gmr_id_menu_01 = '.$ligne_menu->gm_id_menu;
1042
            $resultat_supr_menu_relation = $db->query($requete_supr_menu_relation);
1043
            if (DB::isError($resultat_supr_menu_relation)) {
1044
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_relation->getMessage(), $requete_supr_menu_relation));
1045
            }
1046
 
1047
            // Requete de suppression des contenus des menus
1048
            $requete_supr_menu_contenu =   'DELETE FROM gen_menu_contenu '.
1049
                                            'WHERE gmc_ce_menu = '.$ligne_menu->gm_id_menu;
1050
            $resultat_supr_menu_contenu = $db->query($requete_supr_menu_contenu);
1051
            if (DB::isError($resultat_supr_menu_contenu)) {
1052
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_contenu->getMessage(), $requete_supr_menu_contenu));
1053
            }
1054
 
1055
            // Requete de suppression des ulr alternatives des menus
1056
            $requete_supr_menu_url_alt =   'DELETE FROM gen_menu_url_alternative '.
1057
                                            'WHERE gmua_ce_menu = '.$ligne_menu->gm_id_menu;
1058
            $resultat_supr_menu_url_alt = $db->query($requete_supr_menu_url_alt);
1059
            if (DB::isError($resultat_supr_menu_url_alt)) {
1060
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_url_alt->getMessage(), $requete_supr_menu_url_alt));
1061
            }
1062
        }
1063
        $resultat_menu->free();
1064
    }
1065
    $resultat->free();
1066
 
1067
    // Suppression des répertoires du site
75 jpm 1068
    if (!GEN_FTP_UTILISE) {
72 jpm 1069
        $chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal;
1070
        $resultat = supprimerDossier($chemin_repertoire, GEN_SEP);
1071
        if (!$resultat) {
1072
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer le répertoire.<br />'.
1073
                        'Répertoire : '. $chemin_repertoire .'<br />'.
1074
                        'Ligne n° : '. __LINE__ .'<br />'.
1075
                        'Fichier n° : '. __FILE__ .'<br /></p>';
1076
            return $message;
1077
        }
1078
    } else {
1079
        // Création d'une connection ftp avec Net_FTP de PEAR
1080
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
1081
 
1082
        // création de l'objet pear ftp
1083
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1084
        // création de la connexion
1085
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
1086
        // identification
75 jpm 1087
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
72 jpm 1088
        // Gestion des erreurs ftp
1089
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
1090
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
1091
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
1092
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
1093
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
1094
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
1095
                        'Ligne n° : '. __LINE__ .'<br />'.
1096
                        'Fichier n° : '. __FILE__ .'<br /><p>';
1097
            return $message;
1098
        }
1099
        // Changement du niveau d'erreur pour éviter les Notices PHP dues à  Net_FTP
1100
        error_reporting(E_PARSE);
1101
        $chemin_repertoire = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal.'/';
1102
        $resultat = $objet_pear_ftp->rm($chemin_repertoire, true);
1103
        if (PEAR::isError($resultat)) {
1104
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer le répertoire par ftp.<br />'.
1105
                        'Erreur ftp : '.$resultat->getMessage().'<br />'.
1106
                        'Répertoire : '. $chemin_repertoire .'<br />'.
1107
                        'Ligne n° : '. __LINE__ .'<br />'.
1108
                        'Fichier n° : '. __FILE__ .'<br /></p>';
1109
            return $message;
1110
        }
1111
        $objet_pear_ftp->disconnect();
1112
        // Retour au niveau d'erreur définit dans le fichier de config de Papyrus
1113
        error_reporting(GEN_DEBOGAGE_NIVEAU);
6 jpm 1114
    }
72 jpm 1115
    $message = '<p class="pap_info">Succés de la suppression du site.</p>';
6 jpm 1116
    return $message;
1117
}
1118
 
1119
// +- Fin du code source  --------------------------------------------------------------------------------+
1120
/*
1121
* $Log: not supported by cvs2svn $
201 jpm 1122
* Revision 1.12  2004/12/01 17:22:58  jpm
1123
* Ajout d'une confirmation javascript pour la suppression d'un site.
1124
*
198 jpm 1125
* Revision 1.11  2004/11/30 16:43:51  jpm
1126
* Correction de bogues.
1127
*
195 jpm 1128
* Revision 1.10  2004/11/29 17:05:28  jpm
1129
* Correction d'un bogue concernat les cases à cocher.
1130
*
190 jpm 1131
* Revision 1.9  2004/11/26 13:13:51  jpm
1132
* Mise en commentaire de variable passée dans un message d'erreur car elles semblent provoquer un bogue et ne sont pas obligatoire.
1133
*
183 jpm 1134
* Revision 1.8  2004/11/03 17:59:59  jpm
1135
* Corrections bogues erreurs variable inconnue.
1136
*
123 jpm 1137
* Revision 1.7  2004/10/26 18:41:28  jpm
1138
* Gestion des sites externes à Papyrus.
1139
*
115 jpm 1140
* Revision 1.6  2004/10/22 17:25:31  jpm
1141
* Changement du nom de la class CSS d'erreur.
1142
*
96 jpm 1143
* Revision 1.5  2004/10/19 15:57:55  jpm
1144
* Amélioration de la gestion des fichiers sur le serveur.
1145
* Ajout d'une contrainte pour éviter la suppression par erreur du site par défaut.
1146
*
75 jpm 1147
* Revision 1.4  2004/10/18 18:27:41  jpm
1148
* Correction problèmes FTP et manipulation de fichiers.
1149
*
72 jpm 1150
* Revision 1.3  2004/09/23 16:51:27  jpm
1151
* Ajout d'informations supplémentaires sur les messages d'erreur.
1152
*
55 jpm 1153
* Revision 1.2  2004/07/06 17:08:01  jpm
1154
* Modification de la documentation pour une mailleur analyse par PhpDocumentor.
1155
*
25 jpm 1156
* Revision 1.1  2004/06/16 14:28:46  jpm
1157
* Changement de nom de Génésia en Papyrus.
1158
* Changement de l'arborescence.
1159
*
6 jpm 1160
* Revision 1.20  2004/05/10 14:32:14  jpm
1161
* Changement du titre.
1162
*
1163
* Revision 1.19  2004/05/10 12:23:39  jpm
1164
* Modification formulaire.
1165
*
1166
* Revision 1.18  2004/05/07 16:33:53  jpm
1167
* Amélioration des formulaires.
1168
*
1169
* Revision 1.17  2004/05/07 07:22:51  jpm
1170
* Ajout de la gestion des modification et suppression de site.
1171
* Amélioration de la création des sites.
1172
*
1173
* Revision 1.16  2004/04/30 16:22:53  jpm
1174
* Poursuite de l'administration des sites.
1175
*
1176
* Revision 1.14  2004/04/02 15:58:39  jpm
1177
* Modification fonction liste des projets.
1178
*
1179
* Revision 1.13  2004/04/01 11:21:41  jpm
1180
* Ajout et modification de commentaires pour PhpDocumentor.
1181
*
1182
* Revision 1.12  2004/03/24 20:01:02  jpm
1183
* Traduction, mise en forme, ajout de commentaire pour les fonctions listProjects() et updateProject().
1184
*
1185
* Revision 1.11  2004/03/24 10:06:01  jpm
1186
* Ajout des commentaires d'entête.
1187
* Début mise en conformité avec la convention de codage.
1188
* Début traitement de la fonction listant les projets.
1189
*
1190
*
1191
*/
1192
?>