Subversion Repositories Applications.papyrus

Rev

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