Subversion Repositories Applications.papyrus

Rev

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