Subversion Repositories Sites.tela-botanica.org

Rev

Rev 376 | Rev 383 | Go to most recent revision | Show entire file | Regard 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
114
	{
-
 
115
		// Initialisation des variables
-
 
116
		$this->setChrono('debut');
92
		$this->setChrono('debut');
117
		
-
 
118
		// Récupération des infos pour conpléter le squelette du courriel
-
 
119
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigFichier');
93
		$asso_donnees = array();
120
		
-
 
121
		// Nous ajoutons une action à éxecuter avant de rendre la main
-
 
122
		$this->poursuivreVers('config_fichier');
94
		
123
		
-
 
124
		// Fin de l'action
95
		// Récupération des infos pour conpléter le squelette du courriel
125
		$this->setChrono('fin');
-
 
126
	}
96
		if (isset($_POST['sc_chemin'])) {
127
	
97
			$chemin = $_POST['sc_chemin'];
128
	private function modifierConfigFichier($fichier)
98
			if (is_dir($chemin)) {
129
	{
99
				foreach (scandir($chemin) as $dossier) {
130
		if (file_exists($fichier)) {
100
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
131
			$aso_donnees = array();
101
						$arrFile = file($fichier);
132
			$arrFile = file($fichier);
102
						$handle = fopen($fichier, 'w');
133
			$handle = fopen($fichier, 'w');
103
						if($handle != false){
134
			if($handle != false){
104
							// Set counters
135
				// Définition des compteurs
Line 123... Line 154...
123
							    $currentLine++;
154
				    $currentLine++;
124
							}						
155
				}						
125
	    				} else {
156
			} else {
126
	    					trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
157
				trigger_error('Fichier '.$fichier.' impossible à ouvrir', E_USER_WARNING);
127
	    				}
158
			}
128
	
-
 
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
159
			// Attribution des données pour remplir le squelette
137
		$this->getRegistre()->set('squelette_donnees', $asso_donnees);
160
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
138
		$this->setChrono('fin');
-
 
139
 
161
		}
140
		// Nous ajoutons une action à éxecuter avant de rendre la main
-
 
141
		$this->poursuivreVers('config_fichier');
-
 
142
	}
162
	}
Line 143... Line 163...
143
	
163
	
144
	public function executerSupprimerUtilisateur()
164
	public function executerSupprimerUtilisateur()
145
	{
165
	{
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');
165
		$asso_donnees = array();
185
		
166
		
-
 
167
		// 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
168
		if (isset($_POST['sc_chemin'])) {
-
 
Line -... Line 187...
-
 
187
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierSupprimerUtilisateur');
-
 
188
		
169
			$chemin = $_POST['sc_chemin'];
189
		// Nous ajoutons une action à éxecuter avant de rendre la main
-
 
190
		$this->poursuivreVers('supprimer_utilisateur');
-
 
191
		
-
 
192
		// Fin de l'action
170
			if (is_dir($chemin)) {
193
		$this->setChrono('fin');
171
				foreach (scandir($chemin) as $dossier) {
194
	}
-
 
195
	
172
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
196
	private function modifierSupprimerUtilisateur($fichier)
173
						
197
	{
Line 174... Line 198...
174
					}
198
		if (file_exists($fichier)) {
175
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
199
			// Initialisation de variables
Line 214... Line 238...
214
								trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
238
					trigger_error($res->getMessage().$res->getDebugInfo(), E_USER_WARNING);
215
							}
239
				}
Line 216... Line 240...
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,
243
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
220
																	'nom' => $wakka_config['wakka_name'],
244
														'nom' => $wakka_config['wakka_name'],
221
																	'version' =>  $wakka_config['wikini_version'], 
245
														'version' =>  $wakka_config['wikini_version'], 
222
																	'requetes' => $requetes);
246
														'requetes' => $requetes);
223
							}
247
				}
224
						} else {
248
			} else {
225
							trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
249
				trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
226
						}
-
 
227
					}
-
 
228
				}
-
 
229
			} else {
-
 
230
				trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
-
 
231
			}
-
 
232
		}
-
 
233
		
250
			}
234
		// Attribution des données pour remplir le squelette
251
			// Attribution des données pour remplir le squelette
235
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
-
 
236
		$this->setChrono('fin');
252
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
237
 
-
 
238
		// Nous ajoutons une action à éxecuter avant de rendre la main
-
 
239
		$this->poursuivreVers('supprimer_utilisateur');
253
		}
Line 240... Line 254...
240
	}
254
	}
241
	
255
	
242
	public function executerConfigBdd()
256
	public function executerConfigBdd()
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');
Line 252... Line 266...
252
		$aso_donnees['url'] = $url->getUrl();
266
		$aso_donnees['url'] = $url->getUrl();
253
			
267
		
-
 
268
		// Attribution des données pour remplir le squelette
-
 
269
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
254
		// Attribution des données pour remplir le squelette
270
			
255
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
271
		// Fin de l'action
Line 256... Line 272...
256
		$this->setChrono('fin');
272
		$this->setChrono('fin');
257
	}
273
	}
258
	
274
	
259
	public function executerMajBdd()
275
	public function executerConfigBddMaj()
260
	{
-
 
Line 261... Line 276...
261
		// Initialisation des variables
276
	{
262
		$this->setChrono('debut');
277
		// Initialisation des variables
-
 
278
		$this->setChrono('debut');
263
		$asso_donnees = array();
279
		
264
		
-
 
265
		// 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
266
		if (isset($_POST['sc_chemin'])) {
-
 
Line -... Line 281...
-
 
281
		$this->rechercherWikini($_POST['sc_chemin'], 'modifierConfigBdd');
-
 
282
		
267
			$chemin = $_POST['sc_chemin'];
283
		// Nous ajoutons une action à éxecuter avant de rendre la main
-
 
284
		$this->poursuivreVers('config_bdd');
-
 
285
		
-
 
286
		// Fin de l'action
268
			if (is_dir($chemin)) {
287
		$this->setChrono('fin');
269
				foreach (scandir($chemin) as $dossier) {
288
	}
-
 
289
	
270
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
290
	private function modifierConfigBdd($fichier)
271
						
291
	{
Line 272... Line 292...
272
					}
292
		if (file_exists($fichier)) {
273
					if (file_exists($fichier = $chemin.$dossier.DIRECTORY_SEPARATOR.'wakka.config.php')) {
293
			// Initialisation de variables
Line 343... Line 363...
343
							}
363
				}
Line 344... Line 364...
344
							
364
				
345
							
365
				
346
							// Stockage des requetes
366
				// Stockage des requetes
347
							if (count($requetes) > 0 ) {
367
				if (count($requetes) > 0 ) {
348
								$aso_donnees['wikinis'][] = array( 	'dossier' => $dossier,
368
					$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
349
																	'nom' => $wakka_config['wakka_name'],
369
														'nom' => $wakka_config['wakka_name'],
350
																	'version' =>  $wakka_config['wikini_version'], 
370
														'version' =>  $wakka_config['wikini_version'], 
351
																	'requetes' => $requetes);
371
														'requetes' => $requetes);
352
							}
372
				}
353
						} else {
373
			} else {
-
 
374
				trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
-
 
375
			}
354
							trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
376
			// Attribution des données pour remplir le squelette
355
						}
377
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
356
					}
378
		}
357
				}
379
	}
358
			} else {
380
	
-
 
381
	public function executerNettoyage()
-
 
382
	{
-
 
383
		// Initialisation des variables
359
				trigger_error('Le chemin suivant n\'est pas un dossier :'.$chemin, E_USER_WARNING);
384
		$this->setChrono('debut');
-
 
385
		$aso_donnees = $this->getRegistre()->get('squelette_donnees');
-
 
386
		
-
 
387
		// Gestion de l'url de l'envoie de mail
-
 
388
		$url = clone $GLOBALS['_SCRIPT_']['url'];
-
 
389
		$url->addQueryString('module', 'wikini');
Line 360... Line 390...
360
			}
390
		$url->addQueryString('action', 'nettoyage_maj');
361
		}
391
		$aso_donnees['url'] = $url->getUrl();
362
		
392
 
363
		// Attribution des données pour remplir le squelette
-
 
364
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
-
 
365
		$this->setChrono('fin');
-
 
366
 
393
		// Attribution des données pour remplir le squelette
Line 367... Line 394...
367
		// Nous ajoutons une action à éxecuter avant de rendre la main
394
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
368
		$this->poursuivreVers('config_bdd');
395
		$this->setChrono('fin');
369
	}
396
	}
370
	
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
-
 
407
		$this->poursuivreVers('nettoyage');
-
 
408
				
-
 
409
		// Fin de l'action
-
 
410
		$this->setChrono('fin');
-
 
411
	}
-
 
412
	
371
	public function executerNettoyage()
413
	public function lancerNettoyage($fichier)
-
 
414
	{
-
 
415
		if (file_exists($fichier)) {
Line -... Line 416...
-
 
416
			// Initialisation de variables
-
 
417
			$aso_donnees = array();
-
 
418
			$wakka_config = array();
-
 
419
			$requetes = array();
-
 
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
			}
-
 
429
			//trigger_error(print_r($wakka_config, true), E_USER_NOTICE);
-
 
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'];
372
	{
433
				$this->connexion = DB::connect($dsn, $this->bdd_options);
373
		// Initialisation des variables
434
				if (PEAR::isError($this->connexion)) {
374
		$this->setChrono('debut');
435
					$e = $this->connexion->getMessage();
375
		$aso_donnees = array();
436
					trigger_error($e, E_USER_ERROR);
376
		
437
				}
377
		$res = $this->connexion->query('SHOW TABLES');
438
				$res = $this->connexion->query('SHOW TABLES');
378
		if (PEAR::isError($res)) {
439
				if (PEAR::isError($res)) {
379
			die($res->getMessage());
440
					die($res->getMessage());
380
		}
441
				}
Line -... Line 442...
-
 
442
				$tab_tables = array();
-
 
443
				$ligne = '';
-
 
444
				while ($res->fetchInto($ligne)) {
-
 
445
					$tab_tables[] = $ligne[0];
-
 
446
				}
381
		$tab_tables = array();
447
				
382
		$ligne = '';
448
				// Ajout des nouveaux referrers à ceux par défaut
383
		while ($res->fetchInto($ligne)) {
449
				if (!empty($_POST['sc_referrers'])) {
384
			$tab_tables[] = $ligne[0];
450
					$this->sites = array_merge(preg_split("~,~",  $_POST['sc_referrers'], -1, PREG_SPLIT_NO_EMPTY), $this->sites);
385
		}
451
				}
Line 449... Line 515...
449
					die($res->getMessage());
515
							die($res->getMessage());
450
				}
516
						}
451
			}
517
					}
452
			// Stockage des requetes
518
					// Stockage des requetes
453
			if (count($requetes) > 0 ) {
519
					if (count($requetes) > 0 ) {
-
 
520
						$aso_donnees['wikinis'][] = array( 	'dossier' => $fichier,
454
				$aso_table['nom'] = $table;
521
															'nom' => $wakka_config['wakka_name'],
455
				$aso_table['requetes'] = $requetes;
522
															'version' =>  $wakka_config['wikini_version'], 
456
				$aso_donnees['tables'][] = $aso_table;
523
															'requetes' => $requetes);
-
 
524
					}
457
			}
525
				}
458
		}
526
			}
459
 
-
 
460
		// Attribution des données pour remplir le squelette
527
			// Attribution des données pour remplir le squelette
461
		$this->getRegistre()->set('squelette_donnees', $aso_donnees);
528
			$this->getRegistre()->set('squelette_donnees', $aso_donnees);
462
		$this->setChrono('fin');
529
		}
463
	}
530
	}
464
}
531
}
Line 465... Line 532...
465
 
532
 
466
/* +--Fin du code ----------------------------------------------------------------------------------------+
533
/* +--Fin du code ----------------------------------------------------------------------------------------+