Subversion Repositories Applications.papyrus

Rev

Rev 55 | Rev 75 | 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
// +------------------------------------------------------------------------------------------------------+
72 jpm 23
// CVS : $Id: adsi_site.fonct.php,v 1.4 2004-10-18 18:27:41 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
72 jpm 38
*@version       $Revision: 1.4 $ $Date: 2004-10-18 18:27:41 $
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';
72 jpm 50
if (GEN_SAFE_MODE) {
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_valeur = 102 '.
74
                'AND gsr_id_site_01 = gs_id_site '.
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();
102
    $id = 'form_sites_id_site';
103
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
104
    $label = '<label for="'.$id.'">'.'Listes des sites : '.'</label>';
105
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
106
 
107
    $partie_site_fin =  '</ul>'."\n".
108
                        '</fieldset>'."\n";
109
    $form->addElement('html', $partie_site_fin);
110
 
111
    $liste_bouton_debut = '<ul class="liste_bouton">'."\n";
112
    $form->addElement('html', $liste_bouton_debut);
113
 
114
    $form->addElement('submit', 'form_sites_ajouter', 'Ajouter');
115
    $form->addElement('submit', 'form_sites_modifier', 'Modifier');
116
    $form->addElement('submit', 'form_sites_supprimer', 'Supprimer');
117
 
118
    $liste_bouton_fin = '</ul>'."\n";
119
    $form->addElement('html', $liste_bouton_fin);
120
 
121
    $sortie = $form->toHTML()."\n";
122
 
123
    // Titre de la page:
124
    $titre = 'Configuration des sites';
125
 
126
    // Construction de la page.
127
    return ADMIN_contruirePage($titre, $sortie, $message);
128
}
129
 
130
/** Fonction ADMIN_validerFormListesSites() - Valide les données issues du formulaire de liste de sites.
131
*
132
* Cette fonction valide les données du formulaire de liste de site.
133
*
134
* @param  string   l'objet pear de connexion à la base de données.
135
* @param  string   le tableau contenant les valeurs du formulaire.
136
* @return string   retourne les messages d'erreurs sinon rien.
137
*/
138
function ADMIN_validerFormListesSites($db, $aso_valeurs)
139
{
140
    $message = '';
141
 
142
    // Validation des données du formulaire
143
    if (empty($aso_valeurs['form_sites_id_site'])) {
144
        $message .= '<p class="genesia_erreur">Vous devez d\'abord sélectionner un site.</p>';
145
    }
146
 
147
    return $message;
148
}
149
 
150
/** Fonction ADMIN_afficherFormSite()- Génére un formulaire pour gen_site.
151
*
152
* Cette fonction retourne un formulaire pour modification ou pour ajout.
153
*
154
* @param  string   l'objet pear de connexion à la base de données.
155
* @param  string   l'url à laquelle renvoyer le formulaire.
156
* @param  string   le tableau contenant les valeurs du formulaire.
157
* @param  string   un message à destination de l'utilisateur.
158
* return  string   le code XHTML à retourner.
159
*/
160
function ADMIN_afficherFormSite($db, $url, $aso_valeurs = array(), $message = '')
161
{
162
 
163
    // Nous cherchons à savoir si nous somme en modification
164
    $aso_valeurs['modification'] = false;
165
    if (isset($aso_valeurs['form_sites_modifier'])) {
166
        // Requete pour récupérer les informations sur le site à modifier
167
        $requete =  'SELECT * '.
168
                    'FROM gen_site '.
169
                    'WHERE gs_id_site = '.$aso_valeurs['form_sites_id_site'];
170
        $resultat = $db->query($requete);
171
        if (DB::isError($resultat)) {
172
            die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
173
        }
174
        $aso_valeurs = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
175
        $aso_valeurs['modification'] = true;
176
    } else if (isset($aso_valeurs['gs_id_site'])) {
177
        $aso_valeurs['modification'] = true;
178
    }
179
 
180
    //----------------------------------------------------------------------------
181
    // Création du formulaire
182
    $form =& new HTML_QuickForm('site', 'post', $url);
183
    $tab_index = 1000;
184
    $squelette =& $form->defaultRenderer();
185
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
186
    $squelette->setElementTemplate(  '<li>'."\n".
187
                                    '{label}'."\n".
188
                                    '{element}'."\n".
189
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
190
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
191
                                    '</li>'."\n");
192
    $squelette->setRequiredNoteTemplate("\n".'<p><span class="symbole_obligatoire">*</span> {requiredNote}</p>'."\n");
193
 
194
    $partie_site_debut = '<fieldset>'."\n".'<legend>Configuration du site</legend>'."\n".'<ul>'."\n";
195
    $form->addElement('html', $partie_site_debut);
196
 
197
    if ($aso_valeurs['modification']) {
198
        $form->addElement('hidden', 'gs_id_site');
199
    }
200
 
201
    $id = 'gs_nom';
202
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 100, 'value' => 'nom du site');
203
    $label = '<label for="'.$id.'">'.'Nom du site : '.'</label>';
204
    $form->addElement('text', $id, $label, $aso_attributs);
205
    $form->addRule($id, 'Un nom est requis pour le site !', 'required', '', 'client');
206
 
207
    $id = 'gs_code_alpha';
208
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 20, 'maxlength' => 20, 'value' => 'site_01');
209
    $label = '<label for="'.$id.'">'.'Code alphanumérique : '.'</label>';
210
    $form->addElement('text', $id, $label, $aso_attributs);
211
    $form->addRule('gs_code_alpha', 'Un code alphanumérique est requis pour le site !', 'required', '', 'client');
212
 
213
    $id = 'gs_code_num';
214
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 20, 'maxlength' => 20, 'value' => 1);
215
    $label = '<label for="'.$id.'">'.'Code numérique : '.'</label>';
216
    $form->addElement('text', $id, $label, $aso_attributs);
217
    $form->addRule('gs_code_num', 'Un code numérique est requis pour le site !', 'required', '', 'client');
218
 
219
    $id = 'gs_raccourci_clavier';
220
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'size' => 1, 'maxlength' => 1, 'value' => 'Z');
221
    $label = '<label for="'.$id.'">'.'Raccourci clavier : '.'</label>';
222
    $form->addElement('text', $id, $label, $aso_attributs);
223
 
224
    $id = 'defaut';
225
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++);
226
    $label = '<label for="'.$id.'">'.'En faire le site par défaut : '.'</label>';
227
    $form->addElement('checkbox', $id, $label, '', $aso_attributs);
228
 
229
    // Requete pour connaitre les identifications dispo
230
    $requete =  'SELECT * '.
231
                'FROM gen_site_auth '.
232
                'WHERE gsa_id_auth != 0';
233
    $resultat = $db->query($requete) ;
234
    if (DB::isError($resultat)) {
235
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
236
    }
237
    $aso_options = array();
238
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
239
        // Test pour connaître le type d'authentification.
240
        $type = '';
241
        if ($ligne->gsa_ce_type_auth == '1' ) {
242
            $type = 'Base de données';
243
        } else if ($ligne->gsa_ce_type_auth == '2' ) {
244
            $type = 'LDAP';
245
        }
246
        $aso_options[$ligne->gsa_id_auth] = $ligne->gsa_nom.' ('.$type.')';
247
    }
248
    $resultat->free();
249
    $id = 'gs_ce_auth';
250
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
251
    $label = '<label for="'.$id.'">'.'Identification : '.'</label>';
252
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
253
 
254
    // En modification nous affichons la liste des squelettes disponiblent dans
255
    // le dossier du site.
256
    if ($aso_valeurs['modification']) {
257
        $aso_options = array();
72 jpm 258
        if (!GEN_SAFE_MODE) {
259
            $chemin_squelettes =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
260
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
261
            $dossier = opendir($chemin_squelettes);
262
            while(($fichier = readdir($dossier)) !== false) {
263
                if ($fichier != '.' && $fichier != '..') {
264
                    $chemin_type = $chemin_squelettes.GEN_SEP.$fichier;
265
                    if (filetype($chemin_type) != 'dir') {
266
                        $aso_options[$fichier] = $fichier;
267
                    }
268
                }
6 jpm 269
            }
72 jpm 270
        } else {
271
            // ouverture des squelettes présent dans le dossier du site
272
            // création de l'objet pear ftp
273
            $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
274
            // création de la connexion
275
            $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
276
            // identification
277
            $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
278
            // Gestion des erreurs ftp
279
            if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
280
                die('ERREUR Génésia admin : impossible de se connecter par ftp.<br />'.
281
                    'Serveur : '. GEN_FTP_SERVEUR .'<br />'.
282
                    'Utilisateur : '. GEN_FTP_UTILISATEUR .'<br />'.
283
                    'Ligne n° : '. __LINE__ .'<br />'.
284
                    'Fichier n° : '. __FILE__ .'<br />'.
285
                    'Message erreur de connection : '.$ftp_conn->getMessage().'<br />'.
286
                    'Message erreur de login : '.$ftp_login_result->getMessage());
287
            }
288
            $chemin_squelettes =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
289
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP;
290
            $tab_squelettes = $objet_pear_ftp->ls($chemin_squelettes);
291
            $aso_options = array();
292
            for ($i = 0; $i < count($tab_squelettes) ; $i++) {
293
                if ($tab_squelettes[$i]['is_dir'] == false) {
294
                    $aso_options[$tab_squelettes[$i]['name']] = $tab_squelettes[$i]['name'];
295
                }
296
            }
297
            $objet_pear_ftp->disconnect();
6 jpm 298
        }
299
        $id = 'gs_fichier_squelette';
300
        $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
301
        $label = '<label for="'.$id.'">'.'Squelette : '.'</label>';
302
        $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
303
    }
304
 
305
    // Requete pour connaitre les internationalisation dispo
306
    $requete =  'SELECT * '.
307
                'FROM gen_i18n ';
308
    $resultat = $db->query($requete) ;
309
    if (DB::isError($resultat)) {
310
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
311
    }
312
    $aso_options = array();
313
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
314
        $aso_options[$ligne->gi_id_i18n] = $ligne->gi_id_i18n;
315
    }
316
    $resultat->free();
317
    $id = 'gs_ce_i18n';
318
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
319
    $label = '<label for="'.$id.'">'.'Langue : '.'</label>';
320
    $form->addElement('select', $id, $label, $aso_options, $aso_attributs);
321
 
322
    $partie_site_fin = '</ul>'."\n".'</fieldset>'."\n";
323
    $form->addElement('html', $partie_site_fin);
324
 
325
    $partie_entete_debut = '<fieldset>'."\n".'<legend>Entête par défaut des pages du site</legend>'."\n".'<ul>'."\n";
326
    $form->addElement('html', $partie_entete_debut);
327
 
328
    $id = 'gs_titre';
329
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 255, 'value' => 'titre du site');
330
    $label = '<label for="'.$id.'">'.'Titre du site : '.'</label>';
331
    $form->addElement('text', $id, $label, $aso_attributs);
332
    $form->addRule('gs_titre', 'Un titre est requis pour le site !', 'required', '', 'client');
333
 
334
    $id = 'gs_mots_cles';
335
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'rows' => 3, 'cols' => 45);
336
    $label = '<label for="'.$id.'">'.'Mots-clés : '.'</label>';
337
    $zone_mots_cles = $form->createElement('textarea', $id, $label, $aso_attributs);
338
    $zone_mots_cles->setValue('mots-clés du site');
339
    $form->addElement($zone_mots_cles);
340
    $form->addRule($id, 'Des mots clés sont requis pour le site !', 'required', '', 'client');
341
 
342
    $id = 'gs_description';
343
    $aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++, 'rows' => 3, 'cols' => 45);
344
    $label = '<label for="'.$id.'">'.'Description du contenu : '.'</label>';
345
    $zone = $form->createElement('textarea', $id, $label, $aso_attributs);
346
    $zone->setValue('description du site');
347
    $form->addElement($zone);
348
    $form->addRule($id, 'Une description est requise pour le site !', 'required', '', 'client');
349
 
350
    $id = 'gs_auteur';
351
    $aso_attributs = array('id'=>$id, 'tabindex' => $tab_index++, 'size' => 45, 'maxlength' => 255, 'value' => 'auteur du site');
352
    $label = '<label for="'.$id.'">'.'Auteur du site : '.'</label>';
353
    $form->addElement('text', $id, $label, $aso_attributs);
354
    $form->addRule('gs_auteur', 'Un auteur est requis pour le site !', 'required', '', 'client');
355
 
356
    $partie_entete_fin = '</ul>'."\n".'</fieldset>'."\n";
357
    $form->addElement('html', $partie_entete_fin);
358
 
359
    if ($aso_valeurs['modification']) {
360
        // Requete pour connaitre les informations sur l'administrateur ayant fait la dernière modif
361
        $requete_admin =    'SELECT * '.
362
                            'FROM gen_annuaire '.
363
                            'WHERE ga_id_administrateur = '.$aso_valeurs['gs_ce_admin'];
364
        $resultat_admin = $db->query($requete_admin);
365
        if (DB::isError($resultat_admin)) {
366
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_admin->getMessage(), $requete_admin));
367
        }
368
        $ligne_admin = $resultat_admin->fetchRow(DB_FETCHMODE_OBJECT);
369
        $info_admin =   '<p class="info">Dernière modification par'.$ligne_admin->ga_prenom.' '.$ligne_admin->ga_nom.
370
                        ' le '.$aso_valeurs['gs_date_creation'].'</p>';
371
        $form->addElement('html', $info_admin);
372
        $form->addElement('hidden', 'gs_ce_admin');
373
        $form->addElement('hidden', 'gs_date_creation');
374
 
375
        // Titre de la page:
376
        $titre = 'Modifier un site';
377
        // Bouton validant le formulaire
378
        $bouton_validation = '<input type="submit" id="site_modifier" name="site_modifier" value="Enregistrer" />';
379
    } else {
380
        // Titre de la page:
381
        $titre = 'Ajouter un site';
382
        // Bouton validant le formulaire
383
        $bouton_validation = '<input type="submit" id="site_enregistrer" name="site_enregistrer" value="Enregistrer" />';
384
    }
385
    $bouton_annuler =   '<input type="submit" id="form_annuler" name="form_annuler" value="Annuler" />';
386
    $bouton_effacer =   '<input type="reset" id="effacer" name="effacer" value="Effacer" />';
387
    $boutons =  '<p>'."\n".
388
                $bouton_validation."\n".
389
                $bouton_annuler."\n".
390
                $bouton_effacer."\n".
391
                '</p>'."\n";
392
    $form->addElement('html', $boutons);
393
 
394
    // Instanciation des valeurs par défaut du formulaire
395
    $form->setDefaults($aso_valeurs);
396
 
397
    // Javascript pour la validation côté client
398
    $regles_javascript = $form->getValidationScript();
399
    // Suppression des balises déjà créées par GEN_stockerCodeScript()
400
    $regles_javascript = ereg_replace ( '<script type="text\/javascript">', '', $regles_javascript);
401
    $regles_javascript = ereg_replace ( '<!--', '', $regles_javascript);
402
    $regles_javascript = ereg_replace ( '\/\/-->', '', $regles_javascript);
403
    $regles_javascript = ereg_replace ( '<\/script>', '', $regles_javascript);
404
    GEN_stockerCodeScript($regles_javascript);
405
 
406
    // Note de fin de formulaire
407
    $form->setRequiredNote('Indique les champs obligatoires');
408
    $sortie = $form->toHTML()."\n";
409
 
410
    // Construction de la page.
411
    return ADMIN_contruirePage($titre, $sortie, $message);
412
}
413
 
414
/** Fonction ADMIN_validerFormAjouterSite() - Valide les données issues du formulaire pour gen_site.
415
*
416
* Cette fonction valide les données à ajouter dans la table gen_site.
417
*
418
* @param  string   l'objet pear de connexion à la base de données.
419
* @param  string   le tableau contenant les valeurs du formulaire.
420
* @return string   retourne les messages d'erreurs sinon rien.
421
*/
422
function ADMIN_validerFormSite($db, $aso_valeurs)
423
{
424
    $message = '';
425
 
426
    // Validation des données du formulaire
427
    if (empty($aso_valeurs['gs_nom'])) {
428
        $message .= '<p class="genesia_erreur">Le champ "Nom" ne doit pas être vide.</p>';
429
    }
430
    if (empty($aso_valeurs['gs_code_alpha'])) {
431
        $message .= '<p class="genesia_erreur">Le champ "Code alphanumérique" ne doit pas être vide.</p>';
432
    }
433
    if (empty($aso_valeurs['gs_code_num'])) {
434
        $message .= '<p class="genesia_erreur">Le champ "Code numérique" ne doit pas être vide.</p>';
435
    }
436
    if (preg_match('/^[0-9]+$/',$aso_valeurs['gs_code_num']) == 0) {
437
        $message .= '<p class="genesia_erreur">Le champ "Code numérique" doit contenir un nombre.</p>';
438
    }
439
 
440
    // Requete pour vérifier l'abscence du code numérique et alphanumérique de la table gen_site
441
    $requete =  'SELECT gs_code_alpha, gs_code_num '.
442
                'FROM gen_site, gen_site_relation '.
443
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
444
                'AND gsr_id_valeur = 102 '.// 102 = site "principal"
445
                'AND gsr_id_site_01 = gs_id_site ';
446
    $requete .= (isset($aso_valeurs['gs_id_site'])) ? 'AND gs_id_site != '.$aso_valeurs['gs_id_site'] : '';
447
 
448
    $resultat = $db->query($requete);
449
    if (DB::isError($resultat)) {
450
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
451
    }
452
 
453
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ) {
454
        if ($ligne->gs_code_num == $aso_valeurs['gs_code_num']) {
455
            $message .= '<p class="genesia_erreur">La valeur "'.$aso_valeurs['gs_code_num'].'" pour le champ "Code numérique" existe déjà.</p>';
456
        }
457
        if ($ligne->gs_code_alpha == $aso_valeurs['gs_code_alpha']) {
458
            $message .= '<p class="genesia_erreur">La valeur "'.$aso_valeurs['gs_code_alpha'].'" pour le champ "Code alphanumérique" existe déjà.</p>';
459
        }
460
    }
461
    $resultat->free();
462
 
463
    if (empty($aso_valeurs['gs_titre'])) {
464
        $message .= '<p class="genesia_erreur">Le champ "Titre" ne doit pas être vide.</p>';
465
    }
466
    if (empty($aso_valeurs['gs_mots_cles'])) {
467
        $message .= '<p class="genesia_erreur">Le champ "Mots clés" ne doit pas être vide.</p>';
468
    }
469
    if (empty($aso_valeurs['gs_description'])) {
470
        $message .= '<p class="genesia_erreur">Le champ "Description" ne doit pas être vide.</p>';
471
    }
472
    if (empty($aso_valeurs['gs_auteur'])) {
473
        $message .= '<p class="genesia_erreur">Le champ "Auteur" ne doit pas être vide.</p>';
474
    }
475
 
476
    return $message;
477
}
478
 
479
/** Fonction ADMIN_enregistrerSite() - Ajoute un site à Papyrus.
480
*
481
* Cette fonction ajoute le site à Papyrus, c'est à dire :
482
* - 1. Création des répertoire du projet en fonction du nom et des sous-répertoires.
483
* - 2. Insertion d'une ligne dans la table "gen_site".
484
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables liées si nécessaire.
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
* @param  int      identifiant de l'administrateur réalisant cette création.
489
* @return string retourne un message en cas de succès ou d'échec.
490
*/
491
function ADMIN_enregistrerSite($db, $aso_valeurs, $id_admin)
492
{
493
    $id_site = SQL_obtenirNouveauId($db, 'gen_site','gs_id_site');
494
    if ($id_site == false) {
495
        $message = '<p class="erreur"> ERREUR Génésia admin : impossible de récupérer un identifiant pour la table gen_site.<br />'.
496
                    'Ligne n° : '. __LINE__ .'<br />'.
497
                    'Fichier n° : '. __FILE__ .'<br /></p>';
498
        return $message;
499
    }
500
    // Requete d'insertion des infos d'un site dans gen_site
501
    $requete =  'INSERT INTO gen_site '.
502
                'SET gs_id_site = '.$id_site.', '.
503
                'gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
504
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
505
                'gs_fichier_squelette = "defaut.html", '.
506
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
507
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
508
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
509
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
510
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
511
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
512
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
513
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
514
                'gs_date_creation = "'.date('Y-m-d H:i:s').'", '.
515
                'gs_ce_admin = '.$id_admin;
516
    $resultat = $db->query($requete) ;
517
    if (DB::isError($resultat)) {
518
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
519
    }
520
 
521
    // Recherche du nouveau numéro d'ordre de ce site principal
522
    $requete =  'SELECT MAX(gsr_ordre) AS max_ordre '.
523
                'FROM gen_site_relation '.
524
                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
525
                'AND gsr_id_valeur = 102 ';// 102 = site "principal"
526
    $resultat = $db->query($requete) ;
527
    if (DB::isError($resultat)) {
528
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
529
    }
530
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
531
    $nouvel_ordre = $ligne->max_ordre + 1;
532
 
533
    // Requete d'insertion des relations dans gen_site_relation
534
    $requete =  'INSERT INTO gen_site_relation '.
535
                'SET gsr_id_site_01 = '.$id_site.', '.
536
                'gsr_id_site_02 = '.$id_site.', '.
537
                'gsr_id_valeur = 102, '.
538
                'gsr_ordre = '.$nouvel_ordre;
539
    $resultat = $db->query($requete);
540
    if (DB::isError($resultat)) {
541
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
542
    }
543
 
544
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
545
        $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
546
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
547
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
548
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
549
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
550
        if (DB::isError($resultat_supr_defaut)) {
551
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
552
        }
553
 
554
        // Requete d'insertion de la relations site par défaut
555
        $requete =  'INSERT INTO gen_site_relation '.
556
                    'SET gsr_id_site_01 = '.$id_site.', '.
557
                    'gsr_id_site_02 = '.$id_site.', '.
558
                    'gsr_id_valeur = 101, '.
559
                    'gsr_ordre = NULL ';
560
        $resultat = $db->query($requete);
561
        if (DB::isError($resultat)) {
562
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
563
        }
564
    }
72 jpm 565
    // Ajout des répertoires du site soit par manipulation de fichier soit par FTP en fonction de l'activation du safe_mode ou pas
6 jpm 566
    $tableau_repertoires = array(   GEN_DOSSIER_IMAGE,
72 jpm 567
                                        GEN_DOSSIER_STYLE,
568
                                        GEN_DOSSIER_SCRIPT,
569
                                        GEN_DOSSIER_SQUELETTE,
570
                                        GEN_DOSSIER_DOC);
571
    if (!GEN_SAFE_MODE) {
572
        foreach ($tableau_repertoires as $nom_repertoire) {
573
            $chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.$aso_valeurs['gs_ce_i18n'].GEN_SEP.$nom_repertoire;
574
            $vieux_umask = umask(0);
575
            $resultat = creerDossier($chemin_repertoire, 0777, GEN_SEP);
576
            umask($vieux_umask);
577
            if ($resultat == false) {
578
                $message =  '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire.<br />'.
579
                            'Répertoire : '. $chemin_repertoire .'<br />'.
580
                            'Ligne n° : '. __LINE__ .'<br />'.
581
                            'Fichier n° : '. __FILE__ .'<br /></p>';
582
                return $message;
583
            }
584
        }
585
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
586
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
587
        $chemin_squelette_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
588
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
589
        if (!copy($chemin_squelette_defaut, $chemin_squelette_site)) {
590
            $message =  '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de squellete par défaut.<br />'.
591
                        'Fichier : '. $$chemin_squelette_site .'<br />'.
6 jpm 592
                        'Ligne n° : '. __LINE__ .'<br />'.
593
                        'Fichier n° : '. __FILE__ .'<br /></p>';
594
            return $message;
595
        }
72 jpm 596
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
597
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
598
        $chemin_style_site =    PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
599
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
600
        if (!copy($chemin_style_defaut, $chemin_style_site)) {
601
            $message =  '<p class="genesia_erreur"> ERREUR Papyrus admin : impossible de créer le fichier de style par défaut.<br />'.
602
                        'Fichier : '. $$chemin_style_site .'<br />'.
603
                        'Ligne n° : '. __LINE__ .'<br />'.
604
                        'Fichier n° : '. __FILE__ .'<br /></p>';
6 jpm 605
            return $message;
72 jpm 606
        }
607
    } else {
608
        // Création d'une connection ftp avec Net_FTP de PEAR
609
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
610
 
611
        // création de l'objet pear ftp
612
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
613
        // création de la connexion
614
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
615
        // identification
616
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
617
        // Gestion des erreurs ftp
618
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
619
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
620
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
621
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
622
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
623
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
624
                        'Ligne n° : '. __LINE__ .'<br />'.
625
                        'Fichier n° : '. __FILE__ .'<br /><p>';
6 jpm 626
            return $message;
72 jpm 627
        }
628
        foreach ($tableau_repertoires as $nom_repertoire) {
629
            $chemin_repertoire =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
630
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.$nom_repertoire.GEN_SEP;
631
            $resultat = $objet_pear_ftp->mkdir($chemin_repertoire, true) ;
632
            if (PEAR::isError($resultat)) {
633
                $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de créer le répertoire par ftp.<br />'.
634
                            'Répertoire : '. $chemin_repertoire .'<br />'.
635
                            'Erreur origine : '. $resultat->getMessage() .'<br />'.
636
                            'Ligne n° : '. __LINE__ .'<br />'.
637
                            'Fichier n° : '. __FILE__ .'<br /></p>';
638
                return $message;
639
            }
640
        }
641
        $chemin_squelette_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
642
                                    GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
643
        $chemin_squelette_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
644
                                    $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_SQUELETTE.GEN_SEP.GEN_FICHIER_SQUELETTE;
645
        $resultat = $objet_pear_ftp->put($chemin_squelette_defaut, $chemin_squelette_site, true, FTP_BINARY);
646
        if (PEAR::isError($resultat)) {
647
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le squelette defaut par ftp.<br />'.
648
                        'Fichier origine : '. $chemin_squelette_defaut .'<br />'.
649
                        'Fichier copié : '. $chemin_squelette_site .'<br />'.
650
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
651
                        'Ligne n° : '. __LINE__ .'<br />'.
652
                        'Fichier n° : '. __FILE__ .'<br /></p>';
653
                return $message;
654
        }
655
        $chemin_style_defaut =  PAP_CHEMIN_RACINE.GEN_CHEMIN_COMMUN.GEN_DOSSIER_GENERIQUE.GEN_SEP.
656
                                GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
657
        $chemin_style_site =    PAP_FTP_RACINE.GEN_CHEMIN_SITES.$aso_valeurs['gs_code_alpha'].GEN_SEP.
658
                                $aso_valeurs['gs_ce_i18n'].GEN_SEP.GEN_DOSSIER_STYLE.GEN_SEP.GEN_FICHIER_STYLE;
659
        $resultat = $objet_pear_ftp->put($chemin_style_defaut, $chemin_style_site, true, FTP_BINARY);
660
        if (PEAR::isError($resultat)) {
661
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier les styles defaut par ftp.<br />'.
662
                        'Fichier origine : '. $chemin_style_defaut .'<br />'.
663
                        'Fichier copié : '. $chemin_style_site .'<br />'.
664
                        'Erreur origine : '. $resultat->getMessage() .'<br />'.
665
                        'Ligne n° : '. __LINE__ .'<br />'.
666
                        'Fichier n° : '. __FILE__ .'<br /></p>';
667
                return $message;
668
        }
669
        $objet_pear_ftp->disconnect();
6 jpm 670
    }
72 jpm 671
    $message = '<p class="pap_info">'.'Succés de l\'ajout du site.'.'</p>';
6 jpm 672
    return $message;
673
}
674
 
675
/** Fonction ADMIN_modifierSite() - Modifie un site de Papyrus.
676
*
677
* Cette fonction modifie un site géré par Papyrus.
678
* Il faudrait aussi pouvoir renomer le dossier du site si le code alpha change.
679
*
680
* @param  string   l'objet pear de connexion à la base de données.
681
* @param  string   le tableau contenant les valeurs du formulaire.
682
* @param  int      identifiant de l'administrateur réalisant cette modification.
683
* @return string retourne un message en cas de succès ou d'échec.
684
*/
685
function ADMIN_modifierSite($db, $aso_valeurs, $id_admin)
686
{
687
    // Requete de mise à jour des infos d'un site dans gen_site
688
    $requete =  'UPDATE gen_site '.
689
                'SET gs_ce_i18n = "'.$aso_valeurs['gs_ce_i18n'].'", '.
690
                'gs_ce_auth = '.$aso_valeurs['gs_ce_auth'].', '.
691
                'gs_fichier_squelette = "'.$aso_valeurs['gs_fichier_squelette'].'", '.
692
                'gs_code_num = '.$aso_valeurs['gs_code_num'].', '.
693
                'gs_code_alpha = "'.$aso_valeurs['gs_code_alpha'].'", '.
694
                'gs_nom = "'.$aso_valeurs['gs_nom'].'", '.
695
                'gs_raccourci_clavier = "'.$aso_valeurs['gs_raccourci_clavier'].'", '.
696
                'gs_titre = "'.$aso_valeurs['gs_titre'].'", '.
697
                'gs_mots_cles = "'.$aso_valeurs['gs_mots_cles'].'", '.
698
                'gs_description = "'.$aso_valeurs['gs_description'].'", '.
699
                'gs_auteur = "'.$aso_valeurs['gs_auteur'].'", '.
700
                'gs_date_creation = "'.date('Y-m-d H:i:s').'", '.
701
                'gs_ce_admin = '.$id_admin.' '.
702
                'WHERE gs_id_site = '.$aso_valeurs['gs_id_site'];
703
    $resultat = $db->query($requete) ;
704
    if (DB::isError($resultat)) {
705
        die( BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete) );
706
    }
707
 
708
    if (isset($aso_valeurs['defaut']) && $aso_valeurs['defaut'] == 1) {
709
        $requete_supr_defaut =  'DELETE FROM gen_site_relation '.
710
                                'WHERE gsr_id_site_01 = gsr_id_site_02 '.
711
                                'AND gsr_id_valeur = 101 ';// 101 = site par "defaut"
712
        $resultat_supr_defaut = $db->query($requete_supr_defaut);
713
        if (DB::isError($resultat_supr_defaut)) {
714
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_defaut->getMessage(), $requete_supr_defaut));
715
        }
716
 
717
        // Requete d'insertion de la relations site par défaut
718
        $requete =  'INSERT INTO gen_site_relation '.
719
                    'SET gsr_id_site_01 = '.$aso_valeurs['gs_id_site'].', '.
720
                    'gsr_id_site_02 = '.$aso_valeurs['gs_id_site'].', '.
721
                    'gsr_id_valeur = 101, '.
722
                    'gsr_ordre = NULL ';
723
        $resultat = $db->query($requete);
724
        if (DB::isError($resultat)) {
725
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
726
        }
727
    }
728
    $message = '<p class="genesia_info">'.'Succés de la modification du site.'.'</p>';
729
    return $message;
730
}
731
 
732
/** Fonction ADMIN_supprimerSite() - Ajoute un site à Papyrus.
733
*
734
* Cette fonction ajoute le site à Papyrus, c'est à dire :
735
* - 1. Création des répertoire du projet en fonction du nom et des sous-répertoires.
736
* - 2. Insertion d'une ligne dans la table "gen_site".
737
* - 3. Insertion d'une ligne dans la table "gen_site_auth" et ses tables liées si nécessaire.
738
*
739
* @param  string   l'objet pear de connexion à la base de données.
740
* @param  string   le tableau contenant les valeurs du formulaire.
741
* @param  int      identifiant de l'administrateur réalisant cette création.
742
* @return string retourne un message en cas de succès ou d'échec.
743
*/
744
function ADMIN_supprimerSite($db, $aso_valeurs)
745
{
746
    // Recherche du coda alpha du site principal afin de pouvoir détruire ses répertoires
747
    $requete =  'SELECT gs_code_alpha '.
748
                'FROM gen_site '.
749
                'WHERE gs_id_site = '.$aso_valeurs['form_sites_id_site'];
750
    $code_alpha_site_principal = $db->getOne($requete);
751
    if (DB::isError($code_alpha_site_principal)) {
752
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $code_alpha_site_principal->getMessage(), $requete));
753
    }
754
 
755
    // Recherche des différents sites liés à celui que l'on veut détruire
756
    // Cela comprend le site à détruire lui méme car il posséde la relations
757
    // sur lui meme "site principale".
758
    $requete =  'SELECT gs_id_site '.
759
                'FROM gen_site, gen_site_relation '.
760
                'WHERE gsr_id_site_01 = '.$aso_valeurs['form_sites_id_site'].' '.
761
                'AND gsr_id_site_02 = gs_id_site ';
762
    $resultat = $db->query($requete);
763
    if (DB::isError($resultat)) {
764
        die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete));
765
    }
766
 
767
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
768
        // Requete de suppression des sites liés dans gen_site
769
        $requete_supr_site =    'DELETE FROM gen_site '.
770
                                'WHERE gs_id_site = '.$ligne->gs_id_site;
771
        $resultat_supr_site = $db->query($requete_supr_site);
772
        if (DB::isError($resultat_supr_site)) {
773
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_site->getMessage(), $requete_supr_site));
774
        }
775
 
776
        // Requete de suppression des relations des sites à détruire
777
        $requete_supr_site_relation =   'DELETE FROM gen_site_relation '.
778
                                        'WHERE gsr_id_site_01 = '.$ligne->gs_id_site;
779
        $resultat_supr_site_relation = $db->query($requete_supr_site_relation);
780
        if (DB::isError($resultat_supr_site_relation)) {
781
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_site_relation->getMessage(), $requete_supr_site_relation));
782
        }
783
 
784
        // Recherche des différents menus liés au site à détruire
785
        $requete_menu = 'SELECT gm_id_menu '.
786
                        'FROM gen_menu '.
787
                        'WHERE gm_ce_site = '.$ligne->gs_id_site;
788
        $resultat_menu = $db->query($requete_menu) ;
789
        if (DB::isError($resultat_menu)) {
790
            die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_menu->getMessage(), $requete_menu));
791
        }
792
        while ($ligne_menu = $resultat_menu->fetchRow(DB_FETCHMODE_OBJECT)) {
793
            // Requete de suppression des des menus
794
            $requete_supr_menu =   'DELETE FROM gen_menu '.
795
                                            'WHERE gm_id_menu = '.$ligne_menu->gm_id_menu;
796
            $resultat_supr_menu = $db->query($requete_supr_menu);
797
            if (DB::isError($resultat_supr_menu)) {
798
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu->getMessage(), $requete_supr_menu));
799
            }
800
            // Requete de suppression des relations des menus
801
            $requete_supr_menu_relation =   'DELETE FROM gen_menu_relation '.
802
                                            'WHERE gmr_id_menu_01 = '.$ligne_menu->gm_id_menu;
803
            $resultat_supr_menu_relation = $db->query($requete_supr_menu_relation);
804
            if (DB::isError($resultat_supr_menu_relation)) {
805
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_relation->getMessage(), $requete_supr_menu_relation));
806
            }
807
 
808
            // Requete de suppression des contenus des menus
809
            $requete_supr_menu_contenu =   'DELETE FROM gen_menu_contenu '.
810
                                            'WHERE gmc_ce_menu = '.$ligne_menu->gm_id_menu;
811
            $resultat_supr_menu_contenu = $db->query($requete_supr_menu_contenu);
812
            if (DB::isError($resultat_supr_menu_contenu)) {
813
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_contenu->getMessage(), $requete_supr_menu_contenu));
814
            }
815
 
816
            // Requete de suppression des ulr alternatives des menus
817
            $requete_supr_menu_url_alt =   'DELETE FROM gen_menu_url_alternative '.
818
                                            'WHERE gmua_ce_menu = '.$ligne_menu->gm_id_menu;
819
            $resultat_supr_menu_url_alt = $db->query($requete_supr_menu_url_alt);
820
            if (DB::isError($resultat_supr_menu_url_alt)) {
821
                die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat_supr_menu_url_alt->getMessage(), $requete_supr_menu_url_alt));
822
            }
823
        }
824
        $resultat_menu->free();
825
    }
826
    $resultat->free();
827
 
828
    // Suppression des répertoires du site
72 jpm 829
    if (!GEN_SAFE_MODE) {
830
        $chemin_repertoire = PAP_CHEMIN_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal;
831
        $resultat = supprimerDossier($chemin_repertoire, GEN_SEP);
832
        if (!$resultat) {
833
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer le répertoire.<br />'.
834
                        'Répertoire : '. $chemin_repertoire .'<br />'.
835
                        'Ligne n° : '. __LINE__ .'<br />'.
836
                        'Fichier n° : '. __FILE__ .'<br /></p>';
837
            return $message;
838
        }
839
    } else {
840
        // Création d'une connection ftp avec Net_FTP de PEAR
841
        // voir http://pear.php.net/manual/fr/package.networking.net-ftp.php
842
 
843
        // création de l'objet pear ftp
844
        $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
845
        // création de la connexion
846
        $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
847
        // identification
848
        $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);;
849
        // Gestion des erreurs ftp
850
        if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
851
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
852
                        'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
853
                        'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
854
                        'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
855
                        'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
856
                        'Ligne n° : '. __LINE__ .'<br />'.
857
                        'Fichier n° : '. __FILE__ .'<br /><p>';
858
            return $message;
859
        }
860
        // Changement du niveau d'erreur pour éviter les Notices PHP dues à  Net_FTP
861
        error_reporting(E_PARSE);
862
        $chemin_repertoire = PAP_FTP_RACINE.GEN_CHEMIN_SITES.$code_alpha_site_principal.'/';
863
        $resultat = $objet_pear_ftp->rm($chemin_repertoire, true);
864
        if (PEAR::isError($resultat)) {
865
            $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de supprimer le répertoire par ftp.<br />'.
866
                        'Erreur ftp : '.$resultat->getMessage().'<br />'.
867
                        'Répertoire : '. $chemin_repertoire .'<br />'.
868
                        'Ligne n° : '. __LINE__ .'<br />'.
869
                        'Fichier n° : '. __FILE__ .'<br /></p>';
870
            return $message;
871
        }
872
        $objet_pear_ftp->disconnect();
873
        // Retour au niveau d'erreur définit dans le fichier de config de Papyrus
874
        error_reporting(GEN_DEBOGAGE_NIVEAU);
6 jpm 875
    }
72 jpm 876
    $message = '<p class="pap_info">Succés de la suppression du site.</p>';
6 jpm 877
    return $message;
878
}
879
 
880
// +- Fin du code source  --------------------------------------------------------------------------------+
881
/*
882
* $Log: not supported by cvs2svn $
72 jpm 883
* Revision 1.3  2004/09/23 16:51:27  jpm
884
* Ajout d'informations supplémentaires sur les messages d'erreur.
885
*
55 jpm 886
* Revision 1.2  2004/07/06 17:08:01  jpm
887
* Modification de la documentation pour une mailleur analyse par PhpDocumentor.
888
*
25 jpm 889
* Revision 1.1  2004/06/16 14:28:46  jpm
890
* Changement de nom de Génésia en Papyrus.
891
* Changement de l'arborescence.
892
*
6 jpm 893
* Revision 1.20  2004/05/10 14:32:14  jpm
894
* Changement du titre.
895
*
896
* Revision 1.19  2004/05/10 12:23:39  jpm
897
* Modification formulaire.
898
*
899
* Revision 1.18  2004/05/07 16:33:53  jpm
900
* Amélioration des formulaires.
901
*
902
* Revision 1.17  2004/05/07 07:22:51  jpm
903
* Ajout de la gestion des modification et suppression de site.
904
* Amélioration de la création des sites.
905
*
906
* Revision 1.16  2004/04/30 16:22:53  jpm
907
* Poursuite de l'administration des sites.
908
*
909
* Revision 1.14  2004/04/02 15:58:39  jpm
910
* Modification fonction liste des projets.
911
*
912
* Revision 1.13  2004/04/01 11:21:41  jpm
913
* Ajout et modification de commentaires pour PhpDocumentor.
914
*
915
* Revision 1.12  2004/03/24 20:01:02  jpm
916
* Traduction, mise en forme, ajout de commentaire pour les fonctions listProjects() et updateProject().
917
*
918
* Revision 1.11  2004/03/24 10:06:01  jpm
919
* Ajout des commentaires d'entête.
920
* Début mise en conformité avec la convention de codage.
921
* Début traitement de la fonction listant les projets.
922
*
923
*
924
*/
925
?>