2,6 → 2,9 |
class Maintenance extends Script { |
|
protected $bdd; |
protected $parametres_autorises = array( |
'-mc' => array(false, '1', 'Mot clef à chercher pour régénérer les machins') |
); |
|
public function __construct($script_nom, $parametres_cli) { |
parent::__construct($script_nom, $parametres_cli); |
39,6 → 42,10 |
case 'reparerLiaisonsOublieesImages' : |
$this->reparerLiaisonsOublieesImages(); |
break; |
case 'reparerLiaisonsObsParMotsClesTexte' : |
$mot_clef = $this->getParametre('mc'); |
$this->reparerLiaisonsObsParMotsClesTexte($mot_clef); |
break; |
default : |
$msg = "Erreur : la commande '$cmd' n'existe pas!\n". |
"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs"; |
334,5 → 341,58 |
} |
echo "\n"; |
} |
|
private function reparerLiaisonsObsParMotsClesTexte($mot_cle_texte_recherche) { |
$ancienne_table_obs = Config::get('table_obs_recup'); |
$requete_anciens_mots_cles_texte = "SELECT ce_utilisateur, id_observation, mots_cles_texte ". |
"FROM ".$ancienne_table_obs." WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%'"; |
$obs_a_mot_cle = $this->bdd->recupererTous($requete_anciens_mots_cles_texte); |
|
$requete_nouveaux_mots_cle = "SELECT * FROM cel_arbre_mots_cles_obs ". |
"WHERE id_utilisateur IN ". |
"(SELECT id_utilisateur FROM ".$ancienne_table_obs." ". |
"WHERE mots_cles_texte LIKE '%".$mot_cle_texte_recherche."%')"; |
$nouveaux_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cle); |
|
$mots_cles_indexes = array(); |
foreach($nouveaux_mots_cles as $mot_cle) { |
$mots_cles_indexes[$mot_cle['id_utilisateur']][strtolower($mot_cle['mot_cle'])] = $mot_cle; |
} |
|
$liaisons_a_inserer = array(); |
$utilFoirax = 0; |
$mcFoirax = 0; |
foreach($obs_a_mot_cle as $obs) { |
$mots_cles_texte_tab = explode(',', $obs['mots_cles_texte']); |
$id_observation = $obs['id_observation']; |
$id_utilisateur = $obs['ce_utilisateur']; |
foreach($mots_cles_texte_tab as $mot_cle_t) { |
if($mot_cle_t == $mot_cle_texte_recherche) { |
if (isset($mots_cles_indexes[$id_utilisateur])) { |
if (isset($mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)])) { |
$id_nouveau_mot_cle = $mots_cles_indexes[$id_utilisateur][strtolower($mot_cle_t)]['id_mot_cle']; |
} else { |
$mcFoirax++; |
} |
} else { |
$utilFoirax++; |
} |
$liaisons_a_inserer[] = array('id_element_lie' => $id_observation, 'id_mot_cle' => $id_nouveau_mot_cle); |
} |
} |
} |
echo "Utilisateurs pas dans le tableau: $utilFoirax\n"; |
echo "Motf-clefs pas dans le tableau: $mcFoirax\n"; |
//echo '<pre>'.print_r($liaisons_a_inserer, true).'</pre>'; |
echo "Liaisons à insérer: " . count($liaisons_a_inserer) . " \n"; |
|
$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ". |
"VALUES "; |
foreach($liaisons_a_inserer as $l) { |
$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),"; |
} |
$requete_insertion = rtrim($requete_insertion, ','); |
$insertion = $this->bdd->requeter($requete_insertion); |
} |
} |
?> |