Subversion Repositories Applications.papyrus

Rev

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