Subversion Repositories Sites.tela-botanica.org

Rev

Rev 383 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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