Subversion Repositories Sites.tela-botanica.org

Rev

Rev 609 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
376 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 5.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 1999-2006 Tela Botanica (accueil@tela-botanica.org)                                    |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of eflore_bp.                                                                         |
9
// |                                                                                                      |
10
// | eflore_bp 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
// | eflore_bp 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
// +------------------------------------------------------------------------------------------------------+
24
// CVS : $Id: RecueilDeDonnees.class.php,v 1.5 2007-07-25 17:45:19 jp_milcent Exp $
25
/**
26
* eflore_bp - ReccueilDeDonnee.php
27
*
28
* Description :
29
*
30
*@package eflore_bp
31
//Auteur original :
32
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
33
//Autres auteurs :
34
*@author        Aucun
35
*@copyright     Tela-Botanica 1999-2007
36
*@version       $Revision: 1.5 $ $Date: 2007-07-25 17:45:19 $
37
// +------------------------------------------------------------------------------------------------------+
38
*/
39
 
40
// +------------------------------------------------------------------------------------------------------+
41
// |                                            ENTÊTE du PROGRAMME                                       |
42
// +------------------------------------------------------------------------------------------------------+
43
 
44
 
45
// +------------------------------------------------------------------------------------------------------+
46
// |                                            CORPS du PROGRAMME                                        |
47
// +------------------------------------------------------------------------------------------------------+
48
class Wikini extends aModule {
49
 
50
	private $bdd_principale = SC_BDD_NOM_PRINCIPALE;
51
	private $bdd_options = array('debug' => 3);
52
	private $bdd_dsn = SC_DSN_PRINCIPAL;
53
	private $connexion = null;
54
	private $sites = array('http://www.tela-botanica.org', 'http://www.outils-reseaux.org');
55
 
56
	public function __construct()
57
	{
58
		$this->connexion = DB::connect($this->bdd_dsn, $this->bdd_options);
59
		if (PEAR::isError($this->connexion)) {
60
			$e = $this->connexion->getMessage();
61
			trigger_error($e, E_USER_ERROR);
62
		}
63
		parent::__construct();
64
	}
65
 
66
	// La méthode executer est appellé par défaut
67
	public function executer()
68
	{
69
		$this->poursuivreVers('config_fichier');
70
	}
71
 
380 jpm 72
	private function rechercherWikini($chemin = null, $methode)
73
	{
74
		if (isset($chemin)) {
75
			if (preg_match('/wakka\.config\.php$/', $chemin)) {
76
				$this->$methode($chemin);
77
			} else if (is_dir($chemin)) {
78
				// Nettoyage et ajout d'un slash final
79
				$chemin = rtrim(trim($chemin), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
80
				// Nous vérifions que le dossier indiqué est un dossier de wikini
81
				$fichier = $chemin.'wakka.config.php';
82
				$this->$methode($fichier);
83
				// Nous regardons si le dossier indiqué contient d'autres dossiers wikini
84
				foreach (scandir($chemin) as $dossier) {
85
					if (is_dir($chemin.$dossier.DIRECTORY_SEPARATOR) && $dossier != '..' &&  $dossier != '.') {
86
						$fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php';
87
						$this->$methode($fichier);
88
					}
89
				}
90
			} else {
91
				trigger_error('Le chemin suivant n\'est ni un dossier, ni un fichier wakka.config.php :'.$chemin, E_USER_WARNING);
92
			}
93
		}
94
	}
95
 
376 jpm 96
	public function executerConfigFichier()
97
	{
98
		// Initialisation des variables
99
		$this->setChrono('debut');
100
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
101
 
102
		// Gestion de l'url de l'envoie de mail
103
		$url = clone $GLOBALS['_SCRIPT_']['url'];
104
		$url->addQueryString('module', 'wikini');
380 jpm 105
		$url->addQueryString('action', 'config_fichier_maj');
376 jpm 106
		$aso_donnees['url'] = $url->getUrl();
107
 
108
		// Attribution des données pour remplir le squelette
109
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
110
		$this->setChrono('fin');
111
	}
112
 
380 jpm 113
	public function executerConfigFichierMaj()
376 jpm 114
	{
115
		// Initialisation des variables
116
		$this->setChrono('debut');
117
 
118
		// Récupération des infos pour conpléter le squelette du courriel
380 jpm 119
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigFichier');
120
 
121
		// Nous ajoutons une action à éxecuter avant de rendre la main
122
		$this->poursuivreVers('config_fichier');
123
 
124
		// Fin de l'action
125
		$this->setChrono('fin');
126
	}
376 jpm 127
 
380 jpm 128
	private function modifierConfigFichier($fichier)
129
	{
130
		if (file_exists($fichier)) {
385 jpm 131
			$aso_donnees = $this->getRegistre()->get('squelette_donnees');
380 jpm 132
			$arrFile = file($fichier);
133
			$handle = fopen($fichier, 'w');
134
			if($handle != false){
135
				// Définition des compteurs
136
				$currentLine = 0;
137
				$cntFile = count($arrFile);// Nombre de ligne
138
				// Write contents, inserting $item as first item
139
				while ($currentLine <= $cntFile){
140
				    if (isset($arrFile[$currentLine])) {
141
					    foreach ($_POST as $cle => $val) {
142
					    	if ($val != '') {
143
					    		if(preg_match('/"'.preg_replace('/^sc_/', '', $cle).'" =>/', $arrFile[$currentLine])) {
144
					    			$arrFile[$currentLine] = preg_replace('/=> ".*"/', '=> "'.$val.'"', $arrFile[$currentLine]);
145
						    	}
146
					    	}
147
					    }
148
					    fwrite($handle, $arrFile[$currentLine]);
149
					    if (preg_match('/^\?>$/', $arrFile[$currentLine])) {
150
					    	fclose($handle);
151
					    	$currentLine = $cntFile;
152
					    }
153
				    }
154
				    $currentLine++;
155
				}
376 jpm 156
			} else {
380 jpm 157
				trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
376 jpm 158
			}
380 jpm 159
			// Attribution des données pour remplir le squelette
160
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
376 jpm 161
		}
162
	}
163
 
164
	public function executerSupprimerUtilisateur()
165
	{
166
		// Initialisation des variables
167
		$this->setChrono('debut');
168
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
169
 
170
		// Gestion de l'url de l'envoie de mail
171
		$url = clone $GLOBALS['_SCRIPT_']['url'];
172
		$url->addQueryString('module', 'wikini');
380 jpm 173
		$url->addQueryString('action', 'supprimer_utilisateur_maj');
376 jpm 174
		$aso_donnees['url'] = $url->getUrl();
175
 
176
		// Attribution des données pour remplir le squelette
177
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
178
		$this->setChrono('fin');
179
	}
180
 
380 jpm 181
	public function executerSupprimerUtilisateurMaj()
376 jpm 182
	{
183
		// Initialisation des variables
184
		$this->setChrono('debut');
185
 
186
		// Récupération des infos pour conpléter le squelette du courriel
380 jpm 187
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierSupprimerUtilisateur');
188
 
189
		// Nous ajoutons une action à éxecuter avant de rendre la main
190
		$this->poursuivreVers('supprimer_utilisateur');
191
 
192
		// Fin de l'action
193
		$this->setChrono('fin');
194
	}
195
 
196
	private function modifierSupprimerUtilisateur($fichier)
197
	{
198
		if (file_exists($fichier)) {
199
			// Initialisation de variables
385 jpm 200
			$aso_donnees = $this->getRegistre()->get('squelette_donnees');
380 jpm 201
			$wakka_config = array();
202
			$requetes = array();
203
 
204
			// Récupération de la config du wikini
205
			$tab_fichier = file($fichier);
206
			foreach ($tab_fichier as $ligne_num => $ligne) {
207
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
208
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
209
		    		$wakka_config[$match[1]] = $match[2];
210
			    }
211
			}
212
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
213
			if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
214
				// Connexion à la base de données
215
				$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
216
				$this->connexion = DB::connect($dsn, $this->bdd_options);
217
				if (PEAR::isError($this->connexion)) {
218
					$e = $this->connexion->getMessage();
219
					trigger_error($e, E_USER_ERROR);
376 jpm 220
				}
380 jpm 221
 
222
				// Traitement de la chaine utilisateur
223
				$tab_utilisateurs = explode(',', trim($_POST['sc_utilisateur']));
224
				$chaine_utilisateur = '';
225
				foreach ($tab_utilisateurs as $utilisateur) {
226
					$chaine_utilisateur .= '"'.trim($utilisateur).'", ';
227
				}
228
				$chaine_utilisateur = trim($chaine_utilisateur, ', ');
229
 
230
				// Suppression de l'utilisateur
231
 
232
				$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'users '.
233
							'WHERE name IN ('.$chaine_utilisateur.')';
234
				$requetes[] = $requete."\n";
235
				$res = $this->connexion->query($requete);
236
				if (PEAR::isError($res)) {
237
					$requetes[] = $res->getMessage().$res->getDebugInfo();
238
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
239
				}
240
 
241
				// Stockage des requetes
242
				if (count($requetes) > 0 ) {
243
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
244
														'nom' => $wakka_config['wakka_name'],
245
														'version' =>  $wakka_config['wikini_version'],
246
														'requetes' => $requetes);
247
				}
376 jpm 248
			} else {
380 jpm 249
				trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
376 jpm 250
			}
380 jpm 251
			// Attribution des données pour remplir le squelette
252
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
376 jpm 253
		}
254
	}
255
 
256
	public function executerConfigBdd()
257
	{
258
		// Initialisation des variables
259
		$this->setChrono('debut');
260
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
261
 
262
		// Gestion de l'url de l'envoie de mail
263
		$url = clone $GLOBALS['_SCRIPT_']['url'];
264
		$url->addQueryString('module', 'wikini');
380 jpm 265
		$url->addQueryString('action', 'config_bdd_maj');
376 jpm 266
		$aso_donnees['url'] = $url->getUrl();
380 jpm 267
 
376 jpm 268
		// Attribution des données pour remplir le squelette
269
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
380 jpm 270
 
271
		// Fin de l'action
376 jpm 272
		$this->setChrono('fin');
273
	}
274
 
380 jpm 275
	public function executerConfigBddMaj()
376 jpm 276
	{
277
		// Initialisation des variables
278
		$this->setChrono('debut');
279
 
280
		// Récupération des infos pour conpléter le squelette du courriel
380 jpm 281
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigBdd');
282
 
283
		// Nous ajoutons une action à éxecuter avant de rendre la main
284
		$this->poursuivreVers('config_bdd');
285
 
286
		// Fin de l'action
287
		$this->setChrono('fin');
288
	}
289
 
290
	private function modifierConfigBdd($fichier)
291
	{
292
		if (file_exists($fichier)) {
293
			// Initialisation de variables
385 jpm 294
			$aso_donnees = $this->getRegistre()->get('squelette_donnees');
380 jpm 295
			$wakka_config = array();
296
			$requetes = array();
297
 
298
			// Récupération de la config du wikini
299
			$tab_fichier = file($fichier);
300
			foreach ($tab_fichier as $ligne_num => $ligne) {
301
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
302
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
303
		    		$wakka_config[$match[1]] = $match[2];
304
			    }
305
			}
306
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
307
			if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
308
				// Connexion à la base de données
309
				$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
310
				$this->connexion = DB::connect($dsn, $this->bdd_options);
311
				if (PEAR::isError($this->connexion)) {
312
					$e = $this->connexion->getMessage();
313
					trigger_error($e, E_USER_ERROR);
314
				}
315
 
316
				// Mise à jour des droits
317
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
318
							'SET list = "'.$wakka_config['default_write_acl'].'" '.
319
							'WHERE privilege = "write" ';
320
				$requetes[] = $requete."\n";
321
				$res = $this->connexion->query($requete);
322
				if (PEAR::isError($res)) {
323
					$requetes[] = $res->getMessage().$res->getDebugInfo();
324
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
325
				}
376 jpm 326
 
380 jpm 327
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
328
							'SET list = "'.$wakka_config['default_read_acl'].'" '.
329
							'WHERE privilege = "read" ';
330
				$requetes[] = $requete."\n";
331
				$res = $this->connexion->query($requete);
332
				if (PEAR::isError($res)) {
333
					$requetes[] = $res->getMessage().$res->getDebugInfo();
334
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
335
				}
376 jpm 336
 
380 jpm 337
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
338
							'SET list = "'.$wakka_config['default_comment_acl'].'" '.
339
							'WHERE privilege = "comment" ';
340
				$requetes[] = $requete."\n";
341
				$res = $this->connexion->query($requete);
342
				if (PEAR::isError($res)) {
343
					$requetes[] = $res->getMessage().$res->getDebugInfo();
344
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
376 jpm 345
				}
380 jpm 346
 
347
				$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'acls '.
348
							'WHERE page_tag = "ParametresUtilisateur"';
349
				$requetes[] = $requete."\n";
350
				$res = $this->connexion->query($requete);
351
				if (PEAR::isError($res)) {
352
					$requetes[] = $res->getMessage().$res->getDebugInfo();
353
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
354
				}
355
 
356
				$requete = 	'INSERT INTO '.$wakka_config['table_prefix'].'acls '.
357
							'VALUES ("ParametresUtilisateur", "write", "*") ';
358
				$requetes[] = $requete."\n";
359
				$res = $this->connexion->query($requete);
360
				if (PEAR::isError($res)) {
361
					$requetes[] = $res->getMessage().$res->getDebugInfo();
362
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
363
				}
364
 
365
 
366
				// Stockage des requetes
367
				if (count($requetes) > 0 ) {
368
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
369
														'nom' => $wakka_config['wakka_name'],
370
														'version' =>  $wakka_config['wikini_version'],
371
														'requetes' => $requetes);
372
				}
376 jpm 373
			} else {
380 jpm 374
				trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
376 jpm 375
			}
380 jpm 376
			// Attribution des données pour remplir le squelette
377
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
376 jpm 378
		}
380 jpm 379
	}
380
 
381
	public function executerNettoyage()
382
	{
383
		// Initialisation des variables
384
		$this->setChrono('debut');
385
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
376 jpm 386
 
380 jpm 387
		// Gestion de l'url de l'envoie de mail
388
		$url = clone $GLOBALS['_SCRIPT_']['url'];
389
		$url->addQueryString('module', 'wikini');
390
		$url->addQueryString('action', 'nettoyage_maj');
391
		$aso_donnees['url'] = $url->getUrl();
392
 
376 jpm 393
		// Attribution des données pour remplir le squelette
394
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
395
		$this->setChrono('fin');
396
	}
397
 
380 jpm 398
	public function executerNettoyageMaj()
376 jpm 399
	{
400
		// Initialisation des variables
401
		$this->setChrono('debut');
402
 
380 jpm 403
		// Récupération des infos pour conpléter le squelette du courriel
404
		$this->rechercherWikini($_POST['sc_chemin'], 'lancerNettoyage');
376 jpm 405
 
380 jpm 406
		// Nous ajoutons une action à éxecuter avant de rendre la main
407
		$this->poursuivreVers('nettoyage');
408
 
409
		// Fin de l'action
410
		$this->setChrono('fin');
411
	}
412
 
413
	public function lancerNettoyage($fichier)
414
	{
415
		if (file_exists($fichier)) {
416
			// Initialisation de variables
385 jpm 417
			$aso_donnees = $this->getRegistre()->get('squelette_donnees');
380 jpm 418
			$wakka_config = array();
376 jpm 419
			$requetes = array();
380 jpm 420
 
421
			// Récupération de la config du wikini
422
			$tab_fichier = file($fichier);
423
			foreach ($tab_fichier as $ligne_num => $ligne) {
424
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
425
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
426
		    		$wakka_config[$match[1]] = $match[2];
427
			    }
428
			}
383 jpm 429
 
380 jpm 430
			if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
431
				// Connexion à la base de données
432
				$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
433
				$this->connexion = DB::connect($dsn, $this->bdd_options);
434
				if (PEAR::isError($this->connexion)) {
435
					$e = $this->connexion->getMessage();
436
					trigger_error($e, E_USER_ERROR);
376 jpm 437
				}
380 jpm 438
 
439
				// Ajout des nouveaux referrers à ceux par défaut
440
				if (!empty($_POST['sc_referrers'])) {
441
					$this->sites = array_merge(preg_split("~,~",  $_POST['sc_referrers'], -1, PREG_SPLIT_NO_EMPTY), $this->sites);
442
				}
443
 
383 jpm 444
				// +---------------------------------------------------------------------------------------------------+
445
				// Referrers
446
				$site_nbre = count($this->sites);
447
				$site_0 = $this->sites[0];
448
				$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'referrers '.
449
							'WHERE referrer NOT LIKE "'.$site_0.'%" ';
450
				for ($i = 1; $i < $site_nbre; $i++) {
451
					$requete .= 'AND referrer NOT LIKE "'.$this->sites[$i].'%" ';
452
				}
453
				$requetes[] = $requete."\n";
454
				$res = $this->connexion->query($requete);
455
				if (PEAR::isError($res)) {
456
					die($res->getMessage());
457
				}
458
 
459
				// +---------------------------------------------------------------------------------------------------+
460
				// Pages : commentaires
461
				$requete = 	'SELECT tag FROM '.$wakka_config['table_prefix'].'pages '.
462
							'WHERE tag LIKE "Comment%" ';
463
				$requetes[] = $requete."\n";
464
				$aso_pages = $this->connexion->getAll($requete, null, DB_FETCHMODE_ASSOC);
465
				if (PEAR::isError($aso_pages)) {
466
					die($aso_pages->getMessage());
467
				}
468
				if (count($aso_pages) > 0) {
469
					$tab_pages = array();
470
					foreach ($aso_pages as $page) {
471
						if (preg_match('/^Comment\d+$/', $page['tag'])){
472
							$tab_pages[] = $page['tag'];
376 jpm 473
						}
383 jpm 474
					}
475
					if (count($tab_pages) > 0) {
476
						$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'pages '.
477
									'WHERE tag IN ("'.implode('","', $tab_pages).'") ';
380 jpm 478
						$requetes[] = $requete."\n";
479
						$res = $this->connexion->query($requete);
480
						if (PEAR::isError($res)) {
481
							die($res->getMessage());
482
						}
383 jpm 483
						// +---------------------------------------------------------------------------------------------------+
484
						// ACLs : commentaires
485
						$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'acls '.
380 jpm 486
									'WHERE page_tag LIKE "Comment%" ';
376 jpm 487
						$requetes[] = $requete."\n";
488
						$res = $this->connexion->query($requete);
489
						if (PEAR::isError($res)) {
490
							die($res->getMessage());
491
						}
380 jpm 492
 
383 jpm 493
						$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
380 jpm 494
									'SET list = "+" '.
495
									'WHERE privilege = "comment" ';
496
						$requetes[] = $requete."\n";
497
						$res = $this->connexion->query($requete);
498
						if (PEAR::isError($res)) {
499
							die($res->getMessage());
500
						}
376 jpm 501
					}
502
				}
383 jpm 503
 
504
				// +---------------------------------------------------------------------------------------------------+
505
				// Stockage des requetes
506
				if (count($requetes) > 0 ) {
507
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
508
														'nom' => $wakka_config['wakka_name'],
509
														'version' =>  $wakka_config['wikini_version'],
510
														'requetes' => $requetes);
511
				}
376 jpm 512
			}
380 jpm 513
			// Attribution des données pour remplir le squelette
514
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
376 jpm 515
		}
516
	}
383 jpm 517
 
518
	public function executerProprietaire()
519
	{
520
		// Initialisation des variables
521
		$this->setChrono('debut');
522
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
523
 
524
		// Gestion de l'url de l'envoie de mail
525
		$url = clone $GLOBALS['_SCRIPT_']['url'];
526
		$url->addQueryString('module', 'wikini');
527
		$url->addQueryString('action', 'proprietaire_maj');
528
		$aso_donnees['url'] = $url->getUrl();
529
 
530
		// Attribution des données pour remplir le squelette
531
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
532
		$this->setChrono('fin');
533
	}
534
 
535
	public function executerProprietaireMaj()
536
	{
537
		// Initialisation des variables
538
		$this->setChrono('debut');
539
 
540
		// Récupération des infos pour conpléter le squelette du courriel
541
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierProprietaire');
542
 
543
		// Nous ajoutons une action à éxecuter avant de rendre la main
544
		$this->poursuivreVers('proprietaire');
545
 
546
		// Fin de l'action
547
		$this->setChrono('fin');
548
	}
549
 
550
	public function modifierProprietaire($fichier)
551
	{
552
		if (file_exists($fichier)) {
553
			// Initialisation de variables
385 jpm 554
			$aso_donnees = $this->getRegistre()->get('squelette_donnees');
383 jpm 555
			$wakka_config = array();
556
			$requetes = array();
557
 
558
			// Récupération de la config du wikini
559
			$tab_fichier = file($fichier);
560
			foreach ($tab_fichier as $ligne_num => $ligne) {
561
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
562
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
563
		    		$wakka_config[$match[1]] = $match[2];
564
			    }
565
			}
566
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
567
			if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
568
				// Connexion à la base de données
569
				$dsn = 'mysql://'.$wakka_config['mysql_user'].':'.$wakka_config['mysql_password'].'@'.$wakka_config['mysql_host'].'/'.$wakka_config['mysql_database'];
570
				$this->connexion = DB::connect($dsn, $this->bdd_options);
571
				if (PEAR::isError($this->connexion)) {
572
					$e = $this->connexion->getMessage();
573
					trigger_error($e, E_USER_ERROR);
574
				}
575
				// Mise à jour des droits
576
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'pages '.
577
							'SET owner = "'.$_POST['sc_owner'].'" '.
578
							((!empty($_POST['sc_page'])) ? 'WHERE tag IN ("'.implode('","', preg_split("~,~",  $_POST['sc_page'], -1, PREG_SPLIT_NO_EMPTY)).'") ' : '');
579
				$requetes[] = $requete."\n";
580
				$res = $this->connexion->query($requete);
581
				if (PEAR::isError($res)) {
582
					$requetes[] = $res->getMessage().$res->getDebugInfo();
583
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
584
				}
585
 
586
				// Stockage des requetes
587
				if (count($requetes) > 0 ) {
588
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
589
														'nom' => $wakka_config['wakka_name'],
590
														'version' =>  $wakka_config['wikini_version'],
591
														'requetes' => $requetes);
592
				}
593
			}
594
			// Attribution des données pour remplir le squelette
595
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
596
		}
597
	}
376 jpm 598
}
599
 
600
/* +--Fin du code ----------------------------------------------------------------------------------------+
601
*
602
* $Log: RecueilDeDonnees.class.php,v $
603
* Revision 1.5  2007-07-25 17:45:19  jp_milcent
604
* Corrections des champs obligatoires.
605
*
606
* Revision 1.4  2007-07-24 14:31:57  jp_milcent
607
* Ajout dans les fichiers de configuration de l'hôte smtp.
608
*
609
* Revision 1.3  2007-07-11 13:11:06  jp_milcent
610
* Ajout de la vérification des donnés du formulaire côté serveur.
611
*
612
* Revision 1.2  2007-07-10 16:47:30  jp_milcent
613
* Ajout de l'identification et améliorations diverses.
614
*
615
* Revision 1.1  2007-07-09 19:29:26  jp_milcent
616
* Ajout du module Recueil de données
617
*
618
* Revision 1.1  2007-07-09 15:45:59  jp_milcent
619
* Début ajout du module de Reccueil de Données.
620
*
621
*
622
* +-- Fin du code ----------------------------------------------------------------------------------------+
623
*/
624
?>