Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
434 ddelon 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 file is part of Papyrus.                                                                        |
9
// |                                                                                                      |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
11
// | it under the terms of the GNU General Public License as published by                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
832 florian 24
// CVS : $Id: adwi_wikini.fonct.php,v 1.6 2006-04-28 12:41:26 florian Exp $
434 ddelon 25
/**
26
* Contient les fonctions de l'application gestion des Wikini
27
*
28
*
29
*
30
*
31
*@package Admin_Wikini
32
*@subpackage Fonctions
33
//Auteur original :
34
*@author        David Delon <david.delon@tela-botanica.org>
35
//Autres auteurs :
36
*@author        Aucun
37
*@copyright     Tela-Botanica 2000-2004
832 florian 38
*@version       $Revision: 1.6 $
434 ddelon 39
// +------------------------------------------------------------------------------------------------------+
40
*/
41
 
42
// +------------------------------------------------------------------------------------------------------+
43
// |                                           LISTE de FONCTIONS                                         |
44
// +------------------------------------------------------------------------------------------------------+
45
 
46
/* CRUD */
47
 
48
/**
49
 *
50
 * D du CRUD
51
 * @return
52
 */
53
 
54
function adwi_supprimer_wikini($id_wikini, &$db) {
439 ddelon 55
 
56
// Suppression enregistrement
57
 
58
	$valeur = adwi_valeurs_par_defaut($id_wikini,$db );
59
 
434 ddelon 60
    $requete = "delete from gen_wikini where gewi_id_wikini =$id_wikini" ;
61
    $resultat = $db->query ($requete) ;
439 ddelon 62
 
63
// Suppression tables Wikini ...
436 ddelon 64
 
439 ddelon 65
    include_once ADWI_CHEMIN_BIBLIOTHEQUE.'gestion_wikini.class.php' ;
66
 
67
    $g_wikini = new gestion_wikini($db);
68
 
69
	if ((!isset($valeur['table_prefix'])) || (empty($config_wikini['$valeur'])))  {
70
		$valeur['table_prefix'] = $valeur['code_alpha_wikini'];
71
	}
72
 
73
 	$g_wikini->suppression_tables ($valeur['table_prefix']);
74
 
75
	if (GEN_FTP_UTILISE) {
76
	    /** Inclusion bibliothèque de PEAR gérant le FTP.*/
77
	    require_once ADWI_CHEMIN_BIBLIOTHEQUE_PEAR.'Net/FTP.php';
78
 
79
	    // création de l'objet pear ftp
80
	    $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
81
	    // création de la connexion
82
	    $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
83
	    // identification
84
	    $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
85
 
86
	    // Gestion des erreurs ftp
87
	    if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
88
	        $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
89
	                    'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
90
	                    'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
91
	                    'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
92
	                    'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
93
	                    'Ligne n° : '. __LINE__ .'<br />'.
94
	                    'Fichier n° : '. __FILE__ .'<br /><p>';
95
	        print  $message;
96
	    }
97
 
98
	    $chemin_wikini = PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini'].GEN_SEP;
99
 
100
	    $resultat = $objet_pear_ftp->rm($chemin_wikini, $chemin_wikini, true);
101
 
102
	    if (PEAR::isError($resultat)) {
103
	        $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le wikini de reference par ftp.<br />'.
104
	                    'Wikini : '. $chemin_wikini .'<br />'.
105
	                    'Erreur origine : '. $resultat->getMessage() .'<br />'.
106
	                    'Ligne n° : '. __LINE__ .'<br />'.
107
	                    'Fichier n° : '. __FILE__ .'<br /></p>';
108
	            print $message;
109
	    }
110
	}
111
 
112
// else {
113
 
114
// Gestion sans FTP à faire
115
 
116
	//}
117
 
118
 
119
 
434 ddelon 120
}
121
 
122
/**
123
 *
124
 *
125
 * @return
126
 */
127
 
436 ddelon 128
function adwi_valeurs_par_code_alpha($code_alpha_wikini, &$db) {
129
 
130
	$requete = "select * from gen_wikini where gewi_code_alpha_wikini='". $code_alpha_wikini."'" ;
131
    $resultat = $db->query ($requete) ;
132
 	if (DB::isError ($resultat)) {
133
        $GLOBALS['_GEN_commun']['debogage_erreur']->gererErreur(E_USER_WARNING, "Echec de la requete : $requete<br />".$resultat->getMessage(),
134
                                                                        __FILE__, __LINE__, 'admin_wikini')   ;
135
        return ;
136
    }
137
 
138
 
139
	$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
140
	$resultat->free();
141
	unset ($requete, $resultat);
142
	return adwi_valeurs_par_defaut($ligne->gewi_id_wikini,$db);
439 ddelon 143
 
436 ddelon 144
}
145
 
146
 
434 ddelon 147
function adwi_valeurs_par_defaut($id_wikini, &$db) {
439 ddelon 148
 
434 ddelon 149
 
150
    // requete sur gen_wikin
151
 
152
    $requete = "select * from gen_wikini where gewi_id_wikini=$id_wikini" ;
153
    $resultat = $db->query ($requete) ;
154
    if (DB::isError ($resultat)) {
155
        trigger_error("Echec de la requete : $requete<br />".$resultat->getMessage(), E_USER_WARNING) ;
156
        return ;
157
    }
158
    $tableau_retour = array () ;
159
    $ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT) ;
160
 
161
    $tableau_retour['code_alpha_wikini'] = $ligne->gewi_code_alpha_wikini;
162
    $tableau_retour['bdd_hote'] = $ligne->gewi_bdd_hote ;
163
    $tableau_retour['bdd_nom'] = $ligne->gewi_bdd_nom;
164
    $tableau_retour['bdd_utilisateur'] = $ligne->gewi_bdd_utilisateur;
165
    $tableau_retour['bdd_mdp'] = $ligne->gewi_bdd_mdp;
166
    $tableau_retour['table_prefix'] = $ligne->gewi_table_prefix ;
167
    $tableau_retour['page'] = $ligne->gewi_page;
437 ddelon 168
    $tableau_retour['chemin'] = $ligne->gewi_chemin ;
434 ddelon 169
 
170
    unset ($requete, $resultat);
171
    return $tableau_retour ;
172
}
173
 
174
/**
175
 *
176
 * C du CRUD
177
 * @return
178
 */
179
 
180
 
181
function insertion ($valeur, &$db) {
182
 
183
	// Calcul dernier identifiant
184
 
185
    $id_wikini_bdd = SQL_obtenirNouveauId ($db, 'gen_wikini', 'gewi_id_wikini') ;
186
    $requete = "insert into gen_wikini set gewi_id_wikini ="
187
                .$id_wikini_bdd.","
436 ddelon 188
                .requete_wikini($valeur) ;
434 ddelon 189
    $resultat = $db->query ($requete) ;
190
    if (DB::isError ($resultat)) {
191
        trigger_error("Echec de la requete : $requete<br />".$resultat->getMessage(),E_USER_WARNING) ;
192
    }
439 ddelon 193
 
194
	if (GEN_FTP_UTILISE) {
195
	    /** Inclusion bibliothèque de PEAR gérant le FTP.*/
196
	    require_once ADWI_CHEMIN_BIBLIOTHEQUE_PEAR.'Net/FTP.php';
197
 
198
	    // création de l'objet pear ftp
199
	    $objet_pear_ftp = new Net_FTP(PAP_FTP_SERVEUR, PAP_FTP_PORT);
200
	    // création de la connexion
201
	    $ftp_conn = $objet_pear_ftp->connect(PAP_FTP_SERVEUR, PAP_FTP_PORT);
202
	    // identification
203
	    $ftp_login_result = $objet_pear_ftp->login(PAP_FTP_UTILISATEUR, PAP_FTP_MOT_DE_PASSE);
204
 
205
	    // Gestion des erreurs ftp
206
	    if ((PEAR::isError($ftp_conn) || PEAR::isError($ftp_login_result))) {
207
	        $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de se connecter par ftp.<br />'.
208
	                    'Serveur : '. PAP_FTP_SERVEUR .'<br />'.
209
	                    'Utilisateur : '. PAP_FTP_UTILISATEUR .'<br />'.
210
	                    'Erreur connexion : '.$ftp_conn->getMessage().'<br />'.
211
	                    'Erreur login : '.$ftp_login_result->getMessage().'<br />'.
212
	                    'Ligne n° : '. __LINE__ .'<br />'.
213
	                    'Fichier n° : '. __FILE__ .'<br /><p>';
214
	        print  $message;
215
	    }
216
	    $objet_pear_ftp->mkdir(PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini']) ;
217
 
218
	    $chemin_wikini_bibliotheque = ADWI_CHEMIN_BIBLIOTHEQUE_WIKINI;
219
	    $chemin_wikini = PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini'].GEN_SEP;
220
 
481 ddelon 221
	    // Overwrite = fale (3eme parametre)
439 ddelon 222
	    $resultat = $objet_pear_ftp->putRecursive($chemin_wikini_bibliotheque, $chemin_wikini, false, FTP_BINARY);
223
 
224
	    if (PEAR::isError($resultat)) {
225
	        $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le wikini de reference par ftp.<br />'.
226
	                    'Fichier origine : '. $chemin_wikini_bibliotheque .'<br />'.
227
	                    'Fichier copié : '. $chemin_wikini .'<br />'.
228
	                    'Erreur origine : '. $resultat->getMessage() .'<br />'.
229
	                    'Ligne n° : '. __LINE__ .'<br />'.
230
	                    'Fichier n° : '. __FILE__ .'<br /></p>';
231
	            print $message;
232
	    }
233
	}
234
 
235
	// else {
236
 
237
	// Gestion sans FTP à faire
238
 
239
		//}
240
 
241
    // Creation tables wikini
242
 
243
    include_once ADWI_CHEMIN_BIBLIOTHEQUE.'gestion_wikini.class.php' ;
244
 
245
 
246
    $g_wikini = new gestion_wikini($db);
247
 
248
 
249
	if ((!isset($valeur['table_prefix'])) || (empty($config_wikini['$valeur'])))  {
250
		$valeur['table_prefix'] = $valeur['code_alpha_wikini'];
251
	}
252
 
253
 	$g_wikini->creation_tables ($valeur['table_prefix']);
254
 
255
 	// Creation Wakka.config.php
256
 
257
 	$config_wikini = adwi_config_wikini($valeur['code_alpha_wikini'] ,$db );
258
 
259
 
260
	$base_url=parse_url(PAP_URL);
261
	$dirname_base_url=dirname($base_url['path']);
262
	$config_base_url=$dirname_base_url.GEN_SEP.ADWI_CHEMIN_WIKINI.GEN_SEP.$config_wikini['code_alpha_wikini'].GEN_SEP."wakka.php?wiki=";
263
	$config_base_url = str_replace("//", "/", $config_base_url);
264
 
265
 
266
	$config = array(
267
    "wakka_version" => "0.1.1",
268
	"wikini_version" => "0.4.3",
269
    'mysql_host'            => $config_wikini['bdd_hote'],
270
    'mysql_database'        => $config_wikini['bdd_nom'],
271
    'mysql_user'            => $config_wikini['bdd_utilisateur'],
272
    'mysql_password'        => $config_wikini['bdd_mdp'],
273
    'table_prefix'          => $config_wikini['table_prefix'],
274
    'root_page'             => $config_wikini['page'],
275
    'wakka_name'            => $config_wikini['code_alpha_wikini'],
276
    'base_url'              => $config_base_url,
277
    'rewrite_mode'          => '0',
278
    'meta_keywords'         => '',
279
    'meta_description'      => '',
280
    'action_path'           => 'actions',
281
    'handler_path'          => 'handlers',
282
    'header_action'         => 'header',
283
    'footer_action'         => 'footer',
284
    'navigation_links'      => 'DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur',
285
    'referrers_purge_time'  => 24,
286
    'pages_purge_time'      => 90,
287
    'default_write_acl'     => '*',
288
    'default_read_acl'      => '*',
289
    'default_comment_acl'   => '*',
290
    'preview_before_save'   => '0');
291
 
292
 
293
 
294
	// convert config array into PHP code
295
	$configCode = "<?php\n// wakka.config.php cr&eacute;&eacute;e ".strftime("%c")."\n// ne changez pas la wikini_version manuellement!\n\n\$wakkaConfig = array(\n";
296
	foreach ($config as $k => $v)
297
	{
298
		$entries[] = "\t\"".$k."\" => \"".$v."\"";
299
	}
300
	$configCode .= implode(",\n", $entries).");\n?>";
301
 
302
 
303
	$tempfn = tempnam("","");
304
	$temp = fopen($tempfn, "w");
305
 
306
	fwrite($temp, $configCode);
307
	fclose($temp);
308
 
309
 
310
	$fichier_config_source = $tempfn;
311
    $fichier_config_cible = PAP_FTP_RACINE.ADWI_CHEMIN_WIKINI.$valeur['code_alpha_wikini'].GEN_SEP."wakka.config.php";
312
 
313
    $resultat = $objet_pear_ftp->put($fichier_config_source, $fichier_config_cible, false, FTP_BINARY);
314
 
315
    if (PEAR::isError($resultat)) {
316
        $message =  '<p class="pap_erreur"> ERREUR Papyrus admin : impossible de copier le wikini de reference par ftp.<br />'.
832 florian 317
                    'Fichier origine : '. $chemin_wikini_bibliotheque .'<br />'.
439 ddelon 318
                    'Fichier copié : '. $chemin_wikini .'<br />'.
319
                    'Erreur origine : '. $resultat->getMessage() .'<br />'.
320
                    'Ligne n° : '. __LINE__ .'<br />'.
321
                    'Fichier n° : '. __FILE__ .'<br /></p>';
322
            print $message;
323
    }
324
 
325
	$objet_pear_ftp->disconnect();
326
 
327
	unlink($tempfn);
328
 
434 ddelon 329
}
330
 
331
/**
332
 *
333
 * U du CRUD
334
 * @return
335
 */
336
 
337
 
338
function mise_a_jour ($valeur, &$db) {
436 ddelon 339
    $requete = "update gen_wikini set ".requete_wikini($valeur)
434 ddelon 340
                .' where gewi_id_wikini ='.$GLOBALS['id_wikini'] ;
341
    $resultat = $db->query ($requete) ;
342
    if (DB::isError ($resultat)) {
343
        trigger_error("Echec de la requete : $requete<br />".$resultat->getMessage(),E_USER_WARNING) ;
344
    }
345
}
346
 
347
/**
348
 *
349
 * Formate code sql pour insertion à partir des valeurs entrees dans le formulaire
350
 *
351
 * @return  string  un morceau de code SQL
352
 */
353
 
436 ddelon 354
function requete_wikini (&$valeur) {
434 ddelon 355
    return   'gewi_code_alpha_wikini ="'.$valeur['code_alpha_wikini'].'", '
356
            .'gewi_bdd_hote ="'.$valeur['bdd_hote'].'", '
357
            .'gewi_bdd_nom="'.$valeur['bdd_nom'].'", '
358
            .'gewi_bdd_utilisateur ="'.$valeur['bdd_utilisateur'].'", '
359
            .'gewi_bdd_mdp="'.$valeur['bdd_mdp'].'", '
360
            .'gewi_table_prefix="'.$valeur['table_prefix'].'", '
437 ddelon 361
            .'gewi_chemin="'.$valeur['chemin'].'", '
434 ddelon 362
            .'gewi_page="'.$valeur['page'].'"';
363
}
364
 
365
 
439 ddelon 366
function adwi_config_wikini($code_alpha_wikini,&$db) {
367
 
368
	$config_wikini = adwi_valeurs_par_code_alpha($code_alpha_wikini,$db );
369
 
370
	// Parametres de base de donnée de Papyrus par défaut
371
 
372
	if ((!isset($config_wikini['bdd_hote'])) || (empty($config_wikini['bdd_hote']))) {
373
	   $config_wikini['bdd_hote'] = PAP_BDD_SERVEUR;
374
	}
375
 
376
	if ((!isset($config_wikini['bdd_nom'])) || (empty($config_wikini['bdd_nom'])))  {
377
	   $config_wikini['bdd_nom'] = PAP_BDD_NOM;
378
	}
379
 
380
	if ((!isset($config_wikini['bdd_utilisateur'])) || (empty($config_wikini['bdd_utilisateur'])))  {
381
	   $config_wikini['bdd_utilisateur'] = PAP_BDD_UTILISATEUR;
382
	}
383
 
384
	if ((!isset($config_wikini['bdd_mdp'])) || (empty($config_wikini['bdd_mdp'])))  {
385
	   $config_wikini['bdd_mdp'] = PAP_BDD_MOT_DE_PASSE;
386
	}
387
 
388
	if ((!isset($config_wikini['table_prefix'])) || (empty($config_wikini['table_prefix'])))  {
389
		$config_wikini['table_prefix'] = $code_alpha_wikini.'_';
390
	}
391
 
392
 
393
	// Ordre de selection de la page de demarrage :
394
 
395
	// Page par defaut du Wiki enregistré
396
	// PagePrincipale
397
 
398
	if ((!isset($config_wikini['page']))  || (empty($config_wikini['page']))) {
399
	   	$config_wikini['page'] = 'PagePrincipale';
400
	}
401
 
402
 
403
	/** Constante stockant le chemin du dossier contenant le site Wikini en cours */
404
 
405
	if ((!isset($config_wikini['chemin'])) || (empty($config_wikini['chemin'])))  {
406
		$config_wikini['chemin'] = GEN_CHEMIN_WIKINI.$config_wikini['code_alpha_wikini'].GEN_SEP;
407
	}
408
 
409
 
410
	return $config_wikini;
411
}
412
 
434 ddelon 413
// +------------------------------------------------------------------------------------------------------+
414
// |                                            PIED du PROGRAMME                                         |
415
// +------------------------------------------------------------------------------------------------------+
416
 
417
 
418
/* +--Fin du code ----------------------------------------------------------------------------------------+
419
*
420
* $Log: not supported by cvs2svn $
832 florian 421
* Revision 1.5  2005/09/28 16:29:39  ddelon
422
* Merge modification projet
423
*
481 ddelon 424
* Revision 1.4  2005/09/09 09:37:17  ddelon
425
* Integrateur Wikini et administration des Wikini
426
*
439 ddelon 427
* Revision 1.3  2005/09/02 11:29:25  ddelon
428
* Integrateur Wikini et administration des Wikini
429
*
437 ddelon 430
* Revision 1.2  2005/08/31 17:34:52  ddelon
431
* Integrateur Wikini et administration des Wikini
432
*
436 ddelon 433
* Revision 1.1  2005/08/25 08:59:12  ddelon
434
* Integrateur Wikini et administration des Wikini
435
*
434 ddelon 436
* Revision 1.1  2005/03/09 10:44:04  jpm
437
* Mise au norme du nom du fichier.
438
*
439
* Revision 1.2  2005/03/09 10:40:33  alex
440
* version initiale
441
*
442
* Revision 1.1  2004/12/13 18:07:28  alex
443
* version initiale
444
*
445
*
446
* +-- Fin du code ----------------------------------------------------------------------------------------+
447
*/
448
?>