Subversion Repositories Applications.papyrus

Rev

Rev 261 | Rev 285 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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