Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2103 → Rev 2104

/branches/v2.0-elagueuse/scripts/modules/maintenance/Maintenance.php
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";
}
}
?>
/branches/v2.0-elagueuse/scripts
Property changes:
Modified: svn:mergeinfo
Merged /trunk/scripts:r2102-2103
/branches/v2.0-elagueuse/.
Property changes:
Modified: svn:mergeinfo
Merged /trunk:r2102-2103