18,6 → 18,12 |
case 'regenererMotsClesTexteImages' : |
$this->regenererMotsClesTexteImages(); |
break; |
case 'regenererMotsClesTexteObsTout' : |
$this->regenererMotsClesTexteObs(true); |
break; |
case 'regenererMotsClesTexteImagesTout' : |
$this->regenererMotsClesTexteImages(true); |
break; |
case 'viderMotsClesTexteImagesSansMotsCles' : |
$this->viderMotsClesTexteImagesSansMotsCles(); |
break; |
24,6 → 30,12 |
case 'viderMotsClesTexteObsSansMotsCles' : |
$this->viderMotsClesTexteObsSansMotsCles(); |
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"; |
36,9 → 48,12 |
|
// Régénère le champ "mots_cles_texte" pour toutes les images ayant des mots clés mais ayant ce champ |
// vide, suite à une erreur |
protected function regenererMotsClesTexteImages() { |
$req = "SELECT id_image FROM cel_images WHERE (mots_cles_texte IS NULL OR mots_cles_texte='') " |
. "AND id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)"; |
protected function regenererMotsClesTexteImages($tout = false) { |
$req = "SELECT id_image FROM cel_images WHERE ". |
"id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)"; |
if(!$tout) { |
$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')"; |
} |
$res = $this->bdd->recupererTous($req); |
echo count($res) . " images trouvées\n"; |
foreach ($res as $image) { |
51,9 → 66,12 |
|
// Régénère le champ "mots_cles_texte" pour toutes les observations ayant des mots clés mais ayant ce champ |
// vide, suite à une erreur |
protected function regenererMotsClesTexteObs() { |
$req = "SELECT id_observation FROM cel_obs WHERE (mots_cles_texte IS NULL OR mots_cles_texte='') " |
. "AND id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)"; |
protected function regenererMotsClesTexteObs($tout = false) { |
$req = "SELECT id_observation FROM cel_obs WHERE ". |
"id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)"; |
if(!$tout) { |
$req .= " AND (mots_cles_texte IS NULL OR mots_cles_texte='')"; |
} |
$res = $this->bdd->recupererTous($req); |
echo count($res) . " observations trouvées\n"; |
foreach ($res as $image) { |
77,5 → 95,191 |
$res = $this->bdd->requeter($req); |
echo "$res observations mises à jour\n"; |
} |
|
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"; |
} |
|
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"; |
} |
} |
?> |