27,6 → 27,12 |
case 'regenererChampsTailleImage' : |
$this->regenererChampsTailleImage(); |
break; |
case 'reparerLiaisonsOublieesObs' : |
$this->reparerLiaisonsOublieesObs(); |
break; |
case 'reparerLiaisonsOublieesImages' : |
$this->reparerLiaisonsOublieesImages(); |
break; |
default : |
$msg = "Erreur : la commande '$cmd' n'existe pas!\n". |
"Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs"; |
129,5 → 135,217 |
|
return $chemin; |
} |
|
protected function reparerLiaisonsOublieesObs() { |
// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car |
// dans la table de liaison il est souvent vide |
$requete_liaisons = "SELECT com.id_observation, com.id_mot_cle_obs, co.ce_utilisateur ". |
"FROM `cel_obs_mots_cles` com INNER JOIN cel_obs co ON co.id_observation = com.id_observation "; |
|
$liaisons = $this->bdd->recupererTous($requete_liaisons); |
$nb_liaisons_originales = count($liaisons); |
|
// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé |
$requete_mots_cles = "SELECT id_mot_cle_obs, id_utilisateur, mot_cle FROM cel_mots_cles_obs "; |
$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles); |
|
$anciens_mots_cles_fmt = array(); |
foreach($anciens_mots_cles as &$ancien_mot_cle) { |
$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur']; |
if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) { |
$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array(); |
} |
$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_obs']] = $ancien_mot_cle; |
} |
|
// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot |
$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_obs"; |
$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles); |
|
$nouveau_mots_cles_fmt = array(); |
foreach($nouveau_mots_cles as &$nouveau_mot_cle) { |
$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur']; |
if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) { |
$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array(); |
} |
$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle; |
} |
|
$anciens_mot_cles_pas_trouves = 0; |
$nouveaux_mot_cles_pas_trouves = 0; |
$utilisateurs_pas_trouves = 0; |
$valeurs_a_inserer = array(); |
|
$ids_obs = array(); |
|
foreach($liaisons as &$liaison) { |
$id_utilisateur_liaison = $liaison['ce_utilisateur']; |
$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_obs']; |
|
if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) { |
if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) { |
$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle']; |
if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) { |
if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) { |
$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle']; |
|
$valeurs_a_inserer[] = array( |
'id_element_lie' => $liaison['id_observation'], |
'id_mot_cle' => $nouvel_id_mot_cle, |
'ancienne_liaison' => $liaison |
); |
$ids_obs[] = $liaison['id_observation']; |
} else { |
$nouveaux_mot_cles_pas_trouves++; |
} |
} else { |
|
} |
|
} else { |
$anciens_mot_cles_pas_trouves++; |
} |
} else { |
$utilisateurs_pas_trouves++; |
} |
} |
|
echo "Anciennes liaisons ".$nb_liaisons_originales." \n"; |
echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n"; |
echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n"; |
echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n"; |
echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n"; |
|
$tranches = array_chunk($valeurs_a_inserer, 800); |
|
foreach($tranches as $tranche) { |
$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_obs_liaison (id_element_lie, id_mot_cle) ". |
"VALUES "; |
foreach($tranche as $l) { |
$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),"; |
} |
$requete_insertion = rtrim($requete_insertion, ','); |
$insertion = $this->bdd->requeter($requete_insertion); |
$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1); |
} |
echo "\n"; |
|
// éventuellement dans le cas ou l'on verrait des mots clés manquants dans l'index texte |
/*echo "\nRegénération de l'index des mots clés pour les obs concernées\n"; |
$ids_obs = array_unique($ids_obs); |
|
foreach($ids_obs as $id_obs_index) { |
$req_index = "UPDATE cel_obs SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_obs cm " |
. "INNER JOIN cel_mots_cles_obs_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '".$id_obs_index."') " |
. "WHERE id_observation = '".$id_obs_index."'"; |
$this->bdd->requeter($req_index); |
$this->afficherAvancement("Index mots clés régénérés ", 1); |
} |
echo "\nFin de la régénération de l'index des mots clés";*/ |
} |
|
private function reparerLiaisonsOublieesImages() { |
// Toutes les liaisons obs-motscles avec l'id utilisateur issu de la table cel obs car |
// dans la table de liaison il est souvent vide |
$requete_liaisons = "SELECT cim.id_image, cim.id_mot_cle_image, ci.ce_utilisateur ". |
"FROM cel_images_mots_cles cim INNER JOIN cel_images ci ON ci.id_image = cim.id_image "; |
|
$liaisons = $this->bdd->recupererTous($requete_liaisons); |
|
// Tous les anciens mots clés, à classer par utilisateur, puis par id mot clé |
$requete_mots_cles = "SELECT id_mot_cle_image, id_utilisateur, mot_cle FROM cel_mots_cles_images "; |
$anciens_mots_cles = $this->bdd->recupererTous($requete_mots_cles); |
|
$anciens_mots_cles_fmt = array(); |
foreach($anciens_mots_cles as &$ancien_mot_cle) { |
$id_utilisateur_ancien = $ancien_mot_cle['id_utilisateur']; |
if(!isset($anciens_mots_cles_fmt[$id_utilisateur_ancien])) { |
$anciens_mots_cles_fmt[$id_utilisateur_ancien] = array(); |
} |
$anciens_mots_cles_fmt[$id_utilisateur_ancien][$ancien_mot_cle['id_mot_cle_image']] = $ancien_mot_cle; |
} |
|
// Tous les nouveau mots clés, à classer par utilisateur, puis par valeur textuelle du mot |
$requete_nouveaux_mots_cles = "SELECT * FROM cel_arbre_mots_cles_images"; |
$nouveau_mots_cles = $this->bdd->recupererTous($requete_nouveaux_mots_cles); |
|
$nouveau_mots_cles_fmt = array(); |
foreach($nouveau_mots_cles as &$nouveau_mot_cle) { |
$id_utilisateur_nouveau = $nouveau_mot_cle['id_utilisateur']; |
if(!isset($nouveau_mots_cles_fmt[$id_utilisateur_nouveau])) { |
$nouveau_mots_cles_fmt[$id_utilisateur_nouveau] = array(); |
} |
$nouveau_mots_cles_fmt[$id_utilisateur_nouveau][$nouveau_mot_cle['mot_cle']] = $nouveau_mot_cle; |
} |
|
$anciens_mot_cles_pas_trouves = 0; |
$nouveaux_mot_cles_pas_trouves = 0; |
$utilisateurs_pas_trouves = 0; |
$valeurs_a_inserer = array(); |
|
foreach($liaisons as &$liaison) { |
$id_utilisateur_liaison = $liaison['ce_utilisateur']; |
$id_mot_cle_ancien_liaison = $liaison['id_mot_cle_image']; |
|
if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison])) { |
if(isset($anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison])) { |
$texte_ancien_mot_cle = $anciens_mots_cles_fmt[$id_utilisateur_liaison][$id_mot_cle_ancien_liaison]['mot_cle']; |
if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison])) { |
if(isset($nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle])) { |
$nouvel_id_mot_cle = $nouveau_mots_cles_fmt[$id_utilisateur_liaison][$texte_ancien_mot_cle]['id_mot_cle']; |
|
$valeurs_a_inserer[] = array( |
'id_element_lie' => $liaison['id_image'], |
'id_mot_cle' => $nouvel_id_mot_cle, |
'ancienne_liaison' => $liaison |
); |
$ids_imgs[] = $liaison['id_image']; |
} else { |
$nouveaux_mot_cles_pas_trouves++; |
} |
} else { |
|
} |
|
} else { |
$anciens_mot_cles_pas_trouves++; |
} |
} else { |
$utilisateurs_pas_trouves++; |
} |
} |
|
echo "Liaisons à insérer ".count($valeurs_a_inserer)."\n"; |
echo "Utilisateurs inconnus ".$utilisateurs_pas_trouves."\n"; |
echo "Anciens mots clés inconnus ".$anciens_mot_cles_pas_trouves."\n"; |
echo "Nouveaux mots clés inconnus ".$nouveaux_mot_cles_pas_trouves."\n"; |
|
$tranches = array_chunk($valeurs_a_inserer, 800); |
|
foreach($tranches as $tranche) { |
$requete_insertion = "INSERT IGNORE INTO cel_mots_cles_images_liaison (id_element_lie, id_mot_cle) ". |
"VALUES "; |
foreach($tranche as $l) { |
$requete_insertion .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),"; |
} |
$requete_insertion = rtrim($requete_insertion, ','); |
$insertion = $this->bdd->requeter($requete_insertion); |
$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1); |
} |
echo "\n"; |
|
// éventuellement dans le cas ou l'on verrait des mots clés manquants dans l'index texte |
/*echo "\nRegénération de l'index des mots clés pour les obs concernées\n"; |
$ids_imgs = array_unique($ids_imgs); |
|
foreach($ids_imgs as $id_image_index) { |
$req_index = "UPDATE cel_images SET mots_cles_texte = (SELECT GROUP_CONCAT(mot_cle) FROM cel_arbre_mots_cles_images cm " |
. "INNER JOIN cel_mots_cles_images_liaison cml ON cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '".$id_image_index."') " |
. "WHERE id_image = '".$id_image_index."'"; |
$this->bdd->requeter($req_index); |
$this->afficherAvancement("Index mots clés régénérés ", 1); |
} |
echo "\nFin de la régénération de l'index des mots clés";*/ |
} |
} |
?> |