Subversion Repositories eFlore/Applications.cel

Rev

Rev 2138 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2138 Rev 2141
Line 1... Line 1...
1
<?php
1
<?php
2
class Maintenance extends Script {
2
class Maintenance extends Script {
Line 3... Line 3...
3
 
3
 
-
 
4
	protected $bdd;
-
 
5
	protected $parametres_autorises = array(
-
 
6
		'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins')
Line 4... Line 7...
4
	protected $bdd;
7
	);
5
 
8
 
6
	public function __construct($script_nom, $parametres_cli) {
9
	public function __construct($script_nom, $parametres_cli) {
7
		parent::__construct($script_nom, $parametres_cli);
10
		parent::__construct($script_nom, $parametres_cli);
Line 37... Line 40...
37
					$this->reparerLiaisonsOublieesObs();
40
					$this->reparerLiaisonsOublieesObs();
38
					break;
41
					break;
39
				case 'reparerLiaisonsOublieesImages' :
42
				case 'reparerLiaisonsOublieesImages' :
40
					$this->reparerLiaisonsOublieesImages();
43
					$this->reparerLiaisonsOublieesImages();
41
					break;
44
					break;
-
 
45
				case 'reparerLiaisonsObsParMotsClesTexte' :
-
 
46
					$mot_clef = $this->getParametre('mc');
-
 
47
					$this->reparerLiaisonsObsParMotsClesTexte($mot_clef);
-
 
48
					break;
42
				default :
49
				default :
43
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
50
					$msg = "Erreur : la commande '$cmd' n'existe pas!\n".
44
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
51
						"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";
45
					throw new Exception($msg);
52
					throw new Exception($msg);
46
			}
53
			}
Line 332... Line 339...
332
			$insertion = $this->bdd->requeter($requete_insertion);
339
			$insertion = $this->bdd->requeter($requete_insertion);
333
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
340
			$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
334
		}
341
		}
335
		echo "\n";
342
		echo "\n";
336
	}
343
	}
-
 
344
	
-
 
345
	private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) {
-
 
346
		$ancienne_table_obs = Config::get('table_obs_recup');
-
 
347
		$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ".
-
 
348
											"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'";
-
 
349
		$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte);
-
 
350
		
-
 
351
		$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ".
-
 
352
									"WHERE id_utilisateur IN ". 
-
 
353
									"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ".
-
 
354
									"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')";
-
 
355
		$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle);
-
 
356
		
-
 
357
		$mots_cles_indexes = array();
-
 
358
		foreach($nouveaux_mots_cles as $mot_cle) {
-
 
359
			$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle;
-
 
360
		}
-
 
361
				
-
 
362
		$liaisons_a_inserer = array();
-
 
363
		$utilFoirax = 0;
-
 
364
		$mcFoirax = 0;
-
 
365
		foreach($obs_a_mot_cle as $obs) {
-
 
366
			$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']);
-
 
367
			$id_observation = $obs['id_observation'];
-
 
368
			$id_utilisateur = $obs['ce_utilisateur'];
-
 
369
			foreach($mots_cles_texte_tab as $mot_cle_t) {
-
 
370
				if($mot_cle_t == $mot_cle_texte_recherche) {
-
 
371
					if (isset($mots_cles_indexes[$id_utilisateur])) {
-
 
372
						if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) {
-
 
373
							$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle'];
-
 
374
						} else {
-
 
375
							$mcFoirax++;
-
 
376
						}
-
 
377
					} else {
-
 
378
						$utilFoirax++;
-
 
379
					}
-
 
380
					$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle);
-
 
381
				}
-
 
382
			}
-
 
383
		}
-
 
384
		echo "Utilisateurs pas dans le tableau: $utilFoirax\n";
-
 
385
		echo "Motf-clefs pas dans le tableau: $mcFoirax\n";
-
 
386
		//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>';
-
 
387
		echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n";
-
 
388
 
-
 
389
		$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ".
-
 
390
				"VALUES ";
-
 
391
		foreach($liaisons_a_inserer as $l) {
-
 
392
			$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
-
 
393
		}
-
 
394
		$requete_insertion = rtrim($requete_insertion, ',');
-
 
395
		$insertion = $this->bdd->requeter($requete_insertion);
-
 
396
	}
337
}
397
}
338
?>
398
?>
339
399