Subversion Repositories Sites.tela-botanica.org

Rev

Rev 376 | Rev 383 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 376 Rev 380
Line 67... Line 67...
67
	public function executer()
67
	public function executer()
68
	{ 
68
	{ 
69
		$this->poursuivreVers('config_fichier');
69
		$this->poursuivreVers('config_fichier');
70
	}
70
	}
Line -... Line 71...
-
 
71
	
-
 
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
	}
71
	
95
	
72
	public function executerConfigFichier()
96
	public function executerConfigFichier()
73
	{
97
	{
74
		// Initialisation des variables
98
		// Initialisation des variables
75
		$this->setChrono('debut');
99
		$this->setChrono('debut');
Line 76... Line 100...
76
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
100
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
77
		
101
		
78
		// Gestion de l'url de l'envoie de mail
102
		// Gestion de l'url de l'envoie de mail
79
		$url = clone $GLOBALS['_SCRIPT_']['url'];
103
		$url = clone $GLOBALS['_SCRIPT_']['url'];
80
		$url->addQueryString('module', 'wikini');
104
		$url->addQueryString('module', 'wikini');
Line 81... Line 105...
81
		$url->addQueryString('action', 'maj_fichier');
105
		$url->addQueryString('action', 'config_fichier_maj');
82
		$aso_donnees['url'] = $url->getUrl();
106
		$aso_donnees['url'] = $url->getUrl();
83
			
107
			
84
		// Attribution des données pour remplir le squelette
108
		// Attribution des données pour remplir le squelette
Line 85... Line 109...
85
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
109
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
86
		$this->setChrono('fin');
110
		$this->setChrono('fin');
87
	}
111
	}
88
	
112
	
89
	public function executerMajFichier()
-
 
Line 90... Line 113...
90
	{
113
	public function executerConfigFichierMaj()
91
		// Initialisation des variables
-
 
92
		$this->setChrono('debut');
114
	{
93
		$asso_donnees = array();
-
 
-
 
115
		// Initialisation des variables
94
		
116
		$this->setChrono('debut');
95
		// Récupération des infos pour conpléter le squelette du courriel
-
 
96
		if (isset($_POST['sc_chemin'])) {
117
		
97
			$chemin = $_POST['sc_chemin'];
-
 
98
			if (is_dir($chemin)) {
-
 
-
 
118
		// Récupération des infos pour conpléter le squelette du courriel
99
				foreach (scandir($chemin) as $dossier) {
119
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigFichier');
100
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
-
 
101
						$arrFile = file($fichier);
-
 
102
						$handle = fopen($fichier, 'w');
-
 
103
						if($handle != false){
-
 
104
							// Set counters
-
 
105
							$currentLine = 0;
-
 
106
							$cntFile = count($arrFile);// Nombre de ligne
-
 
107
							// Write contents, inserting $item as first item
-
 
108
							while ($currentLine <= $cntFile){
-
 
109
							    if (isset($arrFile[$currentLine])) {
-
 
110
								    foreach ($_POST as $cle => $val) {
-
 
111
								    	if ($val != '') {
-
 
112
								    		if(preg_match('/"'.preg_replace('/^sc_/', '', $cle).'" =>/', $arrFile[$currentLine])) {
-
 
113
								    			$arrFile[$currentLine] = preg_replace('/=> ".*"/', '=> "'.$val.'"', $arrFile[$currentLine]);
-
 
114
									    	}
120
		
115
								    	}
-
 
116
								    } 
-
 
117
								    fwrite($handle, $arrFile[$currentLine]);
-
 
118
								    if (preg_match('/^\?>$/', $arrFile[$currentLine])) {
-
 
119
								    	fclose($handle); 
121
		// Nous ajoutons une action à éxecuter avant de rendre la main
120
								    	$currentLine = $cntFile;
-
 
121
								    }
-
 
122
							    }
-
 
Line -... Line 122...
-
 
122
		$this->poursuivreVers('config_fichier');
-
 
123
		
-
 
124
		// Fin de l'action
-
 
125
		$this->setChrono('fin');
-
 
126
	}
-
 
127
	
-
 
128
	private function modifierConfigFichier($fichier)
-
 
129
	{
-
 
130
		if (file_exists($fichier)) {
-
 
131
			$aso_donnees = array();
-
 
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])) {
123
							    $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]);
124
							}						
149
					    if (preg_match('/^\?>$/', $arrFile[$currentLine])) {
125
	    				} else {
150
					    	fclose($handle); 
126
	    					trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
151
					    	$currentLine = $cntFile;
127
	    				}
152
					    }
-
 
153
				    }
-
 
154
				    $currentLine++;
128
	
155
				}						
129
					}
-
 
130
				}
-
 
131
			} else {
-
 
132
				trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
-
 
133
			}
-
 
134
		}
-
 
135
		
-
 
136
		// Attribution des données pour remplir le squelette
156
			} else {
Line 137... Line 157...
137
		$this->getRegistre()->set('squelette_donnees', $asso_donnees);
157
				trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
138
		$this->setChrono('fin');
158
			}
139
 
159
			// Attribution des données pour remplir le squelette
Line 148... Line 168...
148
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
168
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
Line 149... Line 169...
149
		
169
		
150
		// Gestion de l'url de l'envoie de mail
170
		// Gestion de l'url de l'envoie de mail
151
		$url = clone $GLOBALS['_SCRIPT_']['url'];
171
		$url = clone $GLOBALS['_SCRIPT_']['url'];
152
		$url->addQueryString('module', 'wikini');
172
		$url->addQueryString('module', 'wikini');
153
		$url->addQueryString('action', 'maj_utilisateur');
173
		$url->addQueryString('action', 'supprimer_utilisateur_maj');
Line 154... Line 174...
154
		$aso_donnees['url'] = $url->getUrl();
174
		$aso_donnees['url'] = $url->getUrl();
155
			
175
			
156
		// Attribution des données pour remplir le squelette
176
		// Attribution des données pour remplir le squelette
157
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
177
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
Line 158... Line 178...
158
		$this->setChrono('fin');
178
		$this->setChrono('fin');
159
	}
179
	}
160
	
180
	
161
	public function executerMajUtilisateur()
181
	public function executerSupprimerUtilisateurMaj()
162
	{
-
 
Line 163... Line 182...
163
		// Initialisation des variables
182
	{
164
		$this->setChrono('debut');
183
		// Initialisation des variables
-
 
184
		$this->setChrono('debut');
-
 
185
		
165
		$asso_donnees = array();
186
		// Récupération des infos pour conpléter le squelette du courriel
-
 
187
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierSupprimerUtilisateur');
166
		
188
		
167
		// Récupération des infos pour conpléter le squelette du courriel
189
		// Nous ajoutons une action à éxecuter avant de rendre la main
168
		if (isset($_POST['sc_chemin'])) {
-
 
-
 
190
		$this->poursuivreVers('supprimer_utilisateur');
169
			$chemin = $_POST['sc_chemin'];
191
		
-
 
192
		// Fin de l'action
170
			if (is_dir($chemin)) {
193
		$this->setChrono('fin');
171
				foreach (scandir($chemin) as $dossier) {
194
	}
172
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
195
	
-
 
196
	private function modifierSupprimerUtilisateur($fichier)
173
						
197
	{
174
					}
198
		if (file_exists($fichier)) {
175
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
199
			// Initialisation de variables
176
						// Initialisation de variables
200
			$aso_donnees = array();
177
						$wakka_config = array();
201
			$wakka_config = array();
178
						$requetes = array();
202
			$requetes = array();
179
						
203
			
180
						// Récupération de la config du wikini
204
			// Récupération de la config du wikini
181
						$tab_fichier = file($fichier);
205
			$tab_fichier = file($fichier);
182
						foreach ($tab_fichier as $ligne_num => $ligne) {
206
			foreach ($tab_fichier as $ligne_num => $ligne) {
183
					    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
207
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
184
					    		//trigger_error(print_r($match, true), E_USER_NOTICE);
208
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
185
					    		$wakka_config[$match[1]] = $match[2];
209
		    		$wakka_config[$match[1]] = $match[2];
186
						    }
210
			    }
187
						}
211
			}
188
						//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
212
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
189
						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'])) {
190
							// Connexion à la base de données
214
				// Connexion à la base de données
191
							$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'];
192
							$this->connexion = DB::connect($dsn, $this->bdd_options);
216
				$this->connexion = DB::connect($dsn, $this->bdd_options);
193
							if (PEAR::isError($this->connexion)) {
217
				if (PEAR::isError($this->connexion)) {
194
								$e = $this->connexion->getMessage();
218
					$e = $this->connexion->getMessage();
195
								trigger_error($e, E_USER_ERROR);
219
					trigger_error($e, E_USER_ERROR);
196
							}
220
				}
197
							
221
				
198
							// Traitement de la chaine utilisateur
222
				// Traitement de la chaine utilisateur
199
							$tab_utilisateurs = explode(',', trim($_POST['sc_utilisateur']));
223
				$tab_utilisateurs = explode(',', trim($_POST['sc_utilisateur']));
200
							$chaine_utilisateur = '';
224
				$chaine_utilisateur = '';
201
							foreach ($tab_utilisateurs as $utilisateur) {
225
				foreach ($tab_utilisateurs as $utilisateur) {
202
								$chaine_utilisateur .= '"'.trim($utilisateur).'", ';
226
					$chaine_utilisateur .= '"'.trim($utilisateur).'", ';
203
							}
227
				}
204
							$chaine_utilisateur = trim($chaine_utilisateur, ', ');
228
				$chaine_utilisateur = trim($chaine_utilisateur, ', ');
205
							
229
				
206
							// Suppression de l'utilisateur
230
				// Suppression de l'utilisateur
207
							
231
				
208
							$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'users '.
232
				$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'users '.
209
										'WHERE name IN ('.$chaine_utilisateur.')';
233
							'WHERE name IN ('.$chaine_utilisateur.')';
210
							$requetes[] = $requete."\n";
234
				$requetes[] = $requete."\n";
211
							$res = $this->connexion->query($requete);
235
				$res = $this->connexion->query($requete);
212
							if (PEAR::isError($res)) {
236
				if (PEAR::isError($res)) {
213
								$requetes[] = $res->getMessage().$res->getDebugInfo();
237
					$requetes[] = $res->getMessage().$res->getDebugInfo();
214
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
238
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
215
							}
239
				}
216
							
240
				
217
							// Stockage des requetes
241
				// Stockage des requetes
218
							if (count($requetes) > 0 ) {
242
				if (count($requetes) > 0 ) {
219
								$aso_donnees['wikinis'][] = array( 	'dossier' => $dossier,
-
 
220
																	'nom' => $wakka_config['wakka_name'],
-
 
221
																	'version' =>  $wakka_config['wikini_version'], 
-
 
222
																	'requetes' => $requetes);
-
 
223
							}
-
 
224
						} else {
243
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
225
							trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
244
														'nom' => $wakka_config['wakka_name'],
226
						}
245
														'version' =>  $wakka_config['wikini_version'], 
227
					}
246
														'requetes' => $requetes);
-
 
247
				}
-
 
248
			} else {
228
				}
249
				trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
229
			} else {
-
 
230
				trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
-
 
231
			}
-
 
232
		}
-
 
233
		
-
 
234
		// Attribution des données pour remplir le squelette
-
 
235
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
-
 
236
		$this->setChrono('fin');
250
			}
Line 237... Line 251...
237
 
251
			// Attribution des données pour remplir le squelette
238
		// Nous ajoutons une action à éxecuter avant de rendre la main
252
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
239
		$this->poursuivreVers('supprimer_utilisateur');
253
		}
Line 246... Line 260...
246
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
260
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
Line 247... Line 261...
247
		
261
		
248
		// Gestion de l'url de l'envoie de mail
262
		// Gestion de l'url de l'envoie de mail
249
		$url = clone $GLOBALS['_SCRIPT_']['url'];
263
		$url = clone $GLOBALS['_SCRIPT_']['url'];
250
		$url->addQueryString('module', 'wikini');
264
		$url->addQueryString('module', 'wikini');
251
		$url->addQueryString('action', 'maj_bdd');
265
		$url->addQueryString('action', 'config_bdd_maj');
252
		$aso_donnees['url'] = $url->getUrl();
266
		$aso_donnees['url'] = $url->getUrl();
253
			
267
		
254
		// 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);
-
 
270
			
255
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
271
		// Fin de l'action
256
		$this->setChrono('fin');
272
		$this->setChrono('fin');
Line 257... Line 273...
257
	}
273
	}
258
	
274
	
259
	public function executerMajBdd()
275
	public function executerConfigBddMaj()
260
	{
276
	{
261
		// Initialisation des variables
-
 
Line 262... Line 277...
262
		$this->setChrono('debut');
277
		// Initialisation des variables
263
		$asso_donnees = array();
278
		$this->setChrono('debut');
-
 
279
		
-
 
280
		// Récupération des infos pour conpléter le squelette du courriel
264
		
281
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigBdd');
-
 
282
		
265
		// Récupération des infos pour conpléter le squelette du courriel
283
		// Nous ajoutons une action à éxecuter avant de rendre la main
266
		if (isset($_POST['sc_chemin'])) {
284
		$this->poursuivreVers('config_bdd');
267
			$chemin = $_POST['sc_chemin'];
-
 
-
 
285
		
268
			if (is_dir($chemin)) {
286
		// Fin de l'action
-
 
287
		$this->setChrono('fin');
269
				foreach (scandir($chemin) as $dossier) {
288
	}
270
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
289
	
271
						
290
	private function modifierConfigBdd($fichier)
-
 
291
	{
272
					}
292
		if (file_exists($fichier)) {
273
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
293
			// Initialisation de variables
274
						// Initialisation de variables
294
			$aso_donnees = array();
275
						$wakka_config = array();
295
			$wakka_config = array();
276
						$requetes = array();
296
			$requetes = array();
277
						
297
			
278
						// Récupération de la config du wikini
298
			// Récupération de la config du wikini
279
						$tab_fichier = file($fichier);
299
			$tab_fichier = file($fichier);
280
						foreach ($tab_fichier as $ligne_num => $ligne) {
300
			foreach ($tab_fichier as $ligne_num => $ligne) {
281
					    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
301
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
282
					    		//trigger_error(print_r($match, true), E_USER_NOTICE);
302
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
283
					    		$wakka_config[$match[1]] = $match[2];
303
		    		$wakka_config[$match[1]] = $match[2];
284
						    }
304
			    }
285
						}
305
			}
286
						//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
306
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
287
						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'])) {
288
							// Connexion à la base de données
308
				// Connexion à la base de données
289
							$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'];
290
							$this->connexion = DB::connect($dsn, $this->bdd_options);
310
				$this->connexion = DB::connect($dsn, $this->bdd_options);
291
							if (PEAR::isError($this->connexion)) {
311
				if (PEAR::isError($this->connexion)) {
292
								$e = $this->connexion->getMessage();
312
					$e = $this->connexion->getMessage();
293
								trigger_error($e, E_USER_ERROR);
313
					trigger_error($e, E_USER_ERROR);
294
							}
314
				}
295
							
315
				
296
							// Mise à jour des droits
316
				// Mise à jour des droits
297
							$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
317
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
298
										'SET list = "'.$wakka_config['default_write_acl'].'" '.
318
							'SET list = "'.$wakka_config['default_write_acl'].'" '.
299
										'WHERE privilege = "write" ';
319
							'WHERE privilege = "write" ';
300
							$requetes[] = $requete."\n";
320
				$requetes[] = $requete."\n";
301
							$res = $this->connexion->query($requete);
321
				$res = $this->connexion->query($requete);
302
							if (PEAR::isError($res)) {
322
				if (PEAR::isError($res)) {
Line 303... Line 323...
303
								$requetes[] = $res->getMessage().$res->getDebugInfo();
323
					$requetes[] = $res->getMessage().$res->getDebugInfo();
304
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
324
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
305
							}
325
				}
306
 
326
 
307
							$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
327
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
308
										'SET list = "'.$wakka_config['default_read_acl'].'" '.
328
							'SET list = "'.$wakka_config['default_read_acl'].'" '.
309
										'WHERE privilege = "read" ';
329
							'WHERE privilege = "read" ';
310
							$requetes[] = $requete."\n";
330
				$requetes[] = $requete."\n";
311
							$res = $this->connexion->query($requete);
331
				$res = $this->connexion->query($requete);
Line 312... Line 332...
312
							if (PEAR::isError($res)) {
332
				if (PEAR::isError($res)) {
313
								$requetes[] = $res->getMessage().$res->getDebugInfo();
333
					$requetes[] = $res->getMessage().$res->getDebugInfo();
314
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
334
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
315
							}
335
				}
316
 
336
 
317
							$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
337
				$requete = 	'UPDATE '.$wakka_config['table_prefix'].'acls '.
318
										'SET list = "'.$wakka_config['default_comment_acl'].'" '.
338
							'SET list = "'.$wakka_config['default_comment_acl'].'" '.
319
										'WHERE privilege = "comment" ';
339
							'WHERE privilege = "comment" ';
320
							$requetes[] = $requete."\n";
340
				$requetes[] = $requete."\n";
321
							$res = $this->connexion->query($requete);
341
				$res = $this->connexion->query($requete);
322
							if (PEAR::isError($res)) {
342
				if (PEAR::isError($res)) {
323
								$requetes[] = $res->getMessage().$res->getDebugInfo();
343
					$requetes[] = $res->getMessage().$res->getDebugInfo();
324
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
344
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
325
							}
345
				}
326
							
346
				
327
							$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'acls '.
347
				$requete = 	'DELETE FROM '.$wakka_config['table_prefix'].'acls '.
328
										'WHERE page_tag = "ParametresUtilisateur"';
348
							'WHERE page_tag = "ParametresUtilisateur"';
329
							$requetes[] = $requete."\n";
349
				$requetes[] = $requete."\n";
330
							$res = $this->connexion->query($requete);
350
				$res = $this->connexion->query($requete);
331
							if (PEAR::isError($res)) {
351
				if (PEAR::isError($res)) {
332
								$requetes[] = $res->getMessage().$res->getDebugInfo();
352
					$requetes[] = $res->getMessage().$res->getDebugInfo();
333
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
353
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
334
							}
354
				}
335
							
355
				
336
							$requete = 	'INSERT INTO '.$wakka_config['table_prefix'].'acls '.
356
				$requete = 	'INSERT INTO '.$wakka_config['table_prefix'].'acls '.
337
										'VALUES ("ParametresUtilisateur", "write", "*") ';
357
							'VALUES ("ParametresUtilisateur", "write", "*") ';
338
							$requetes[] = $requete."\n";
358
				$requetes[] = $requete."\n";
339
							$res = $this->connexion->query($requete);
359
				$res = $this->connexion->query($requete);
340
							if (PEAR::isError($res)) {
360
				if (PEAR::isError($res)) {
341
								$requetes[] = $res->getMessage().$res->getDebugInfo();
361
					$requetes[] = $res->getMessage().$res->getDebugInfo();
342
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
362
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
343
							}
363
				}
344
							
364
				
345
							
365
				
346
							// Stockage des requetes
366
				// Stockage des requetes
347
							if (count($requetes) > 0 ) {
-
 
348
								$aso_donnees['wikinis'][] = array( 	'dossier' => $dossier,
-
 
349
																	'nom' => $wakka_config['wakka_name'],
-
 
350
																	'version' =>  $wakka_config['wikini_version'], 
-
 
351
																	'requetes' => $requetes);
-
 
352
							}
367
				if (count($requetes) > 0 ) {
353
						} else {
368
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
354
							trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
369
														'nom' => $wakka_config['wakka_name'],
355
						}
370
														'version' =>  $wakka_config['wikini_version'], 
-
 
371
														'requetes' => $requetes);
-
 
372
				}
356
					}
373
			} else {
-
 
374
				trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
-
 
375
			}
-
 
376
			// Attribution des données pour remplir le squelette
-
 
377
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
-
 
378
		}
-
 
379
	}
-
 
380
	
Line -... Line 381...
-
 
381
	public function executerNettoyage()
-
 
382
	{
-
 
383
		// Initialisation des variables
-
 
384
		$this->setChrono('debut');
-
 
385
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
-
 
386
		
357
				}
387
		// Gestion de l'url de l'envoie de mail
358
			} else {
388
		$url = clone $GLOBALS['_SCRIPT_']['url'];
359
				trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
389
		$url->addQueryString('module', 'wikini');
360
			}
-
 
361
		}
-
 
362
		
-
 
363
		// Attribution des données pour remplir le squelette
390
		$url->addQueryString('action', 'nettoyage_maj');
Line 364... Line 391...
364
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
391
		$aso_donnees['url'] = $url->getUrl();
365
		$this->setChrono('fin');
392
 
366
 
393
		// Attribution des données pour remplir le squelette
367
		// Nous ajoutons une action à éxecuter avant de rendre la main
394
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
368
		$this->poursuivreVers('config_bdd');
-
 
Line 369... Line 395...
369
	}
395
		$this->setChrono('fin');
370
	
-
 
371
	public function executerNettoyage()
-
 
372
	{
-
 
373
		// Initialisation des variables
-
 
374
		$this->setChrono('debut');
-
 
375
		$aso_donnees = array();
396
	}
376
		
-
 
377
		$res = $this->connexion->query('SHOW TABLES');
-
 
Line -... Line 397...
-
 
397
	
-
 
398
	public function executerNettoyageMaj()
-
 
399
	{
-
 
400
		// Initialisation des variables
-
 
401
		$this->setChrono('debut');
-
 
402
		
-
 
403
		// Récupération des infos pour conpléter le squelette du courriel
-
 
404
		$this->rechercherWikini($_POST['sc_chemin'], 'lancerNettoyage');
-
 
405
 
-
 
406
		// Nous ajoutons une action à éxecuter avant de rendre la main
378
		if (PEAR::isError($res)) {
407
		$this->poursuivreVers('nettoyage');
-
 
408
				
-
 
409
		// Fin de l'action
379
			die($res->getMessage());
410
		$this->setChrono('fin');
-
 
411
	}
-
 
412
	
380
		}
413
	public function lancerNettoyage($fichier)
-
 
414
	{
381
		$tab_tables = array();
415
		if (file_exists($fichier)) {
382
		$ligne = '';
416
			// Initialisation de variables
383
		while ($res->fetchInto($ligne)) {
417
			$aso_donnees = array();
-
 
418
			$wakka_config = array();
-
 
419
			$requetes = array();
-
 
420
			
-
 
421
			// Récupération de la config du wikini
384
			$tab_tables[] = $ligne[0];
422
			$tab_fichier = file($fichier);
-
 
423
			foreach ($tab_fichier as $ligne_num => $ligne) {
385
		}
424
		    	if(preg_match('/"(.*)"\s*=>\s*"(.*)"\s*,/', $ligne, $match)) {
386
 
425
		    		//trigger_error(print_r($match, true), E_USER_NOTICE);
387
		foreach ($tab_tables as $table) {
426
		    		$wakka_config[$match[1]] = $match[2];
-
 
427
			    }
388
			$requetes = array();
428
			}
389
			// Referrers
-
 
390
			if (preg_match('/_referrers$/', $table)) {
429
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
391
				$site_nbre = count($this->sites);
430
			if (isset($wakka_config['mysql_user']) && isset($wakka_config['mysql_password']) && isset($wakka_config['mysql_host']) && isset($wakka_config['mysql_database'])) {
392
				$site_0 = $this->sites[0];
431
				// Connexion à la base de données
393
				$requete = 	'DELETE FROM '.$table.' '.
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);
394
							'WHERE referrer NOT LIKE "'.$site_0.'%" ';
437
				}
-
 
438
				$res = $this->connexion->query('SHOW TABLES');
-
 
439
				if (PEAR::isError($res)) {
-
 
440
					die($res->getMessage());
-
 
441
				}
-
 
442
				$tab_tables = array();
-
 
443
				$ligne = '';
-
 
444
				while ($res->fetchInto($ligne)) {
-
 
445
					$tab_tables[] = $ligne[0];
-
 
446
				}
-
 
447
				
-
 
448
				// Ajout des nouveaux referrers à ceux par défaut
-
 
449
				if (!empty($_POST['sc_referrers'])) {
-
 
450
					$this->sites = array_merge(preg_split("~,~",  $_POST['sc_referrers'], -1, PREG_SPLIT_NO_EMPTY), $this->sites);
-
 
451
				}
-
 
452
				
-
 
453
				foreach ($tab_tables as $table) {
-
 
454
					$requetes = array();
-
 
455
					// Referrers
-
 
456
					if (preg_match('/_referrers$/', $table)) {
-
 
457
						$site_nbre = count($this->sites);
-
 
458
						$site_0 = $this->sites[0];
-
 
459
						$requete = 	'DELETE FROM '.$table.' '.
-
 
460
									'WHERE referrer NOT LIKE "'.$site_0.'%" ';
395
				for ($i = 1; $i < $site_nbre; $i++) {
461
						for ($i = 1; $i < $site_nbre; $i++) {
396
					$requete .= 'AND referrer NOT LIKE "'.$this->sites[$i].'%" ';
462
							$requete .= 'AND referrer NOT LIKE "'.$this->sites[$i].'%" ';
397
				}
463
						}
398
				$requetes[] = $requete."\n";
464
						$requetes[] = $requete."\n";
399
				$res = $this->connexion->query($requete);
465
						$res = $this->connexion->query($requete);
400
				if (PEAR::isError($res)) {
466
						if (PEAR::isError($res)) {
401
					die($res->getMessage());
467
							die($res->getMessage());
402
				}
468
						}
403
			}
469
					}
404
 
470
		
405
			// Pages : commentaires
471
					// Pages : commentaires
406
			if (preg_match('/_pages$/', $table)) {
472
					if (preg_match('/_pages$/', $table)) {
407
				$requete = 	'SELECT tag FROM '.$table.' '.
473
						$requete = 	'SELECT tag FROM '.$table.' '.
408
							'WHERE tag LIKE "Comment%" ';
474
									'WHERE tag LIKE "Comment%" ';
409
				$requetes[] = $requete."\n";
475
						$requetes[] = $requete."\n";
-
 
476
						$aso_pages = $this->connexion->getAll($requete, null, DB_FETCHMODE_ASSOC);
-
 
477
						if (PEAR::isError($aso_pages)) {
-
 
478
							die($aso_pages->getMessage());
-
 
479
						}
-
 
480
						if (count($aso_pages) > 0) {
-
 
481
							$tab_pages = array();
-
 
482
							foreach ($aso_pages as $page) {
-
 
483
								if (preg_match('/^Comment\d+$/', $page['tag'])){
-
 
484
									$tab_pages[] = $page['tag'];
-
 
485
								}
-
 
486
							}
410
				$aso_pages = $this->connexion->getAll($requete, null, DB_FETCHMODE_ASSOC);
487
							if (count($tab_pages) > 0) {
411
				if (PEAR::isError($aso_pages)) {
488
								$requete = 	'DELETE FROM '.$table.' '.
-
 
489
											'WHERE tag IN ("'.implode('","', $tab_pages).'") ';
-
 
490
								$requetes[] = $requete."\n";
412
					die($aso_pages->getMessage());
491
								$res = $this->connexion->query($requete);
413
				}
492
								if (PEAR::isError($res)) {
414
				if (count($aso_pages) > 0) {
493
									die($res->getMessage());
-
 
494
								}
-
 
495
							}
-
 
496
						}
-
 
497
					}
-
 
498
					
-
 
499
					// ACLs : commentaires
-
 
500
					if (preg_match('/_acls$/', $table)) {
-
 
501
						$requete = 	'DELETE FROM '.$table.' '.
-
 
502
									'WHERE page_tag LIKE "Comment%" ';
415
					$tab_pages = array();
503
						$requetes[] = $requete."\n";
416
					foreach ($aso_pages as $page) {
504
						$res = $this->connexion->query($requete);
417
						if (preg_match('/^Comment\d+$/', $page['tag'])){
505
						if (PEAR::isError($res)) {
418
							$tab_pages[] = $page['tag'];
506
							die($res->getMessage());
419
						}
507
						}
420
					}
508
						
-
 
509
						$requete = 	'UPDATE '.$table.' '.
-
 
510
									'SET list = "+" '.
-
 
511
									'WHERE privilege = "comment" ';
-
 
512
						$requetes[] = $requete."\n";
-
 
513
						$res = $this->connexion->query($requete);
-
 
514
						if (PEAR::isError($res)) {
-
 
515
							die($res->getMessage());
421
					if (count($tab_pages) > 0) {
516
						}
422
						$requete = 	'DELETE FROM '.$table.' '.
517
					}
423
									'WHERE tag IN ("'.implode('","', $tab_pages).'") ';
-
 
424
						$requetes[] = $requete."\n";
-
 
425
						$res = $this->connexion->query($requete);
-
 
426
						if (PEAR::isError($res)) {
-
 
427
							die($res->getMessage());
-
 
428
						}
-
 
429
					}
518
					// Stockage des requetes
430
				}
-
 
431
			}
-
 
432
			
-
 
433
			// ACLs : commentaires
-
 
434
			if (preg_match('/_acls$/', $table)) {
-
 
435
				$requete = 	'DELETE FROM '.$table.' '.
-
 
436
							'WHERE page_tag LIKE "Comment%" ';
-
 
437
				$requetes[] = $requete."\n";
-
 
438
				$res = $this->connexion->query($requete);
-
 
439
				if (PEAR::isError($res)) {
-
 
440
					die($res->getMessage());
-
 
441
				}
-
 
442
				
-
 
443
				$requete = 	'UPDATE '.$table.' '.
-
 
444
							'SET list = "+" '.
-
 
445
							'WHERE privilege = "comment" ';
-
 
446
				$requetes[] = $requete."\n";
-
 
447
				$res = $this->connexion->query($requete);
519
					if (count($requetes) > 0 ) {
448
				if (PEAR::isError($res)) {
-
 
449
					die($res->getMessage());
520
						$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
450
				}
-
 
451
			}
-
 
452
			// Stockage des requetes
-
 
453
			if (count($requetes) > 0 ) {
-
 
454
				$aso_table['nom'] = $table;
521
															'nom' => $wakka_config['wakka_name'],
455
				$aso_table['requetes'] = $requetes;
522
															'version' =>  $wakka_config['wikini_version'], 
Line 456... Line 523...
456
				$aso_donnees['tables'][] = $aso_table;
523
															'requetes' => $requetes);
457
			}
524
					}