Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2435 → Rev 2436

/trunk/scripts/modules/code_insee_commune/bibliotheque/Dao.php
1,8 → 1,8
<?php
class Dao extends Bdd {
 
private $temps_derniere_requete = 0;
 
public function rechercherCoordonnees() {
$requete = "SELECT longitude, latitude ".
"FROM cel_obs ".
11,18 → 11,18
$this->reinitialiserTempsDerniereRequete();
return $resultat;
}
 
public function rechercherCoordonneesSansCorrespondances() {
$requete = 'SELECT longitude, latitude '.
'FROM cel_obs '.
"WHERE code_insee_calcule = '' ".
' AND DATE_ADD(date_modification, INTERVAL 25 HOUR) >= CURDATE() '.
' AND DATE_ADD(date_modification, INTERVAL 25 HOUR) >= CURDATE() '.
'GROUP BY longitude , latitude ';
$resultat = $this->recupererTous($requete);
$this->reinitialiserTempsDerniereRequete();
return $resultat;
}
 
public function creerColonneCodeInseeCalcule() {
$create = 'ALTER TABLE cel_obs '.
'ADD code_insee_calcule VARCHAR(5) NOT NULL ';
29,7 → 29,7
$this->requeter($create);
$this->reinitialiserTempsDerniereRequete();
}
 
public function ajouterCodeInseeCalcule($latitude, $longitude, $code_insee) {
$insert = 'UPDATE cel_obs '.
"SET code_insee_calcule = ".$this->proteger($code_insee)." ".
38,10 → 38,10
$this->requeter($insert);
$this->reinitialiserTempsDerniereRequete();
}
 
public function modifierCodeInseeEtZoneGeo($coordonnees) {
$update = "UPDATE cel_obs ".
"SET ce_zone_geo = concat('INSEE-C:' , code_insee_calcule), ".
"SET ce_zone_geo = CONCAT('INSEE-C:' , code_insee_calcule), ".
"zone_geo = ".$this->proteger($coordonnees['nom'])." ".
"WHERE ce_zone_geo = '' AND zone_geo = '' ".
" AND latitude = ".$this->proteger($coordonnees['latitude'])." ".
49,7 → 49,7
$this->requeter($update);
$this->reinitialiserTempsDerniereRequete();
}
 
// Il peut se passer assez de temps sans qu'aucune requete ne soit effectuée
// (cas d'un grand nombre d'enregistrements à la suite pour lesquels on ne trouve
// aucun département). Pour éviter cela on teste régulièrement la connection
61,9 → 61,8
$this->reinitialiserTempsDerniereRequete();
}
}
 
private function reinitialiserTempsDerniereRequete() {
$this->temps_derniere_requete = microtime(true);
}
}
?>
}
/trunk/scripts/modules/generation_images/GenerationImages.php
59,9 → 59,10
}
 
private function genererMiniaturesEnAttente() {
$req = "SELECT id_image FROM cel_images WHERE ".
"date_creation >= DATE_SUB(NOW(), INTERVAL 15 MINUTE)";
$images_attente = $this->bdd->recupererTous($req);
$requete = 'SELECT id_image '.
'FROM cel_images '.
'WHERE date_creation >= DATE_SUB(NOW(), INTERVAL 15 MINUTE)';
$images_attente = $this->bdd->recupererTous($requete);
 
if (!empty($images_attente)) {
// iterer sur config pour formats
/trunk/scripts/modules/migration_mots_cles/MigrationMotsCles.php
31,13 → 31,11
case 'obs':
$this->mode = $cmd;
$this->migrerMotsClesObservations();
break;
 
break;
case 'images':
$this->mode = $cmd;
$this->migrerMotsClesImages();
break;
 
break;
default:
echo 'Méthode inconnue, les méthodes possibles sont obs et images'."\n";
}
54,7 → 52,6
}
 
private function convertirNestedSetVersPathEnum() {
 
$debut = microtime();
 
$this->dao->viderTables();
64,7 → 61,7
 
$liaisons = $this->dao->obtenirLiaisonsMotsClesOriginaux($this->mode);
 
if($this->mode_verbeux) {
if ($this->mode_verbeux) {
echo "-------------------------------------------------------------------\n";
echo " Début de la migration des mots clés ".$this->mode." \n";
echo " ".count($mots_cles_hierarchiques)." mots clés et ".count($liaisons)." liaisons à migrer \n";
76,7 → 73,7
 
$mots_cles_slice = array_chunk($mots_cles_hierarchiques, 800, true);
echo " Insertion des mots clés par paquet de 800 \n";
foreach($mots_cles_slice as &$mots_cles_tranche) {
foreach ($mots_cles_slice as &$mots_cles_tranche) {
$this->dao->insererMotsCles($mots_cles_tranche);
$nb_mots_cles += 800;
if($this->mode_verbeux) {
90,7 → 87,7
 
$liaisons_slice = array_chunk($liaisons, 800, true);
echo " Insertion des mots liaisons par paquet de 800 \n";
foreach($liaisons_slice as &$liaison_tranche) {
foreach ($liaisons_slice as &$liaison_tranche) {
$this->dao->insererLiaisonsMotsCles($mots_cles_hierarchiques, $liaison_tranche, $correspondances);
$nb_liaisons += 800;
if($this->mode_verbeux) {
100,7 → 97,7
echo "\n Insertion des liaisons ".$this->mode." terminée \n";
 
$fin = microtime(true);
if($this->mode_verbeux) {
if ($this->mode_verbeux) {
echo "\n";
echo "-------------------------------------------------------------------\n";
echo " Fin de la migration des mots clés ".$this->mode.", \n";
114,7 → 111,7
 
private function formaterCorrespondanceCheminId($infos_nouveaux_mots_cles) {
$mots_cles_correspondances = array();
foreach($infos_nouveaux_mots_cles as &$mot) {
foreach ($infos_nouveaux_mots_cles as &$mot) {
$cle = $mot['chemin'].'-'.$mot['id_utilisateur'];
$mots_cles_correspondances[$cle] = $mot;
}
126,24 → 123,24
$chemin_traites = array();
$pbs = array('doublons' => array(), 'vides' => array());
 
foreach($mots_cles as &$mot) {
foreach ($mots_cles as &$mot) {
 
if(trim($mot['mot_cle']) != "") {
if (trim($mot['mot_cle']) != "") {
$chemin = '/';
$cle_parent = $mot['parent'].'-'.$mot['id_utilisateur'];
if(isset($mots_cles_hierarchiques[$cle_parent])) {
if (isset($mots_cles_hierarchiques[$cle_parent])) {
$chemin = $mots_cles_hierarchiques[$cle_parent]['chemin'];
}
$chemin .= self::simplifier($mot['mot_cle']).'/';
$chemin = str_replace("//", "/", $chemin);
 
if(!isset($chemin_traites[self::harmoniserPourDoublon($chemin).'-'.$mot['id_utilisateur']])) {
if (!isset($chemin_traites[self::harmoniserPourDoublon($chemin).'-'.$mot['id_utilisateur']])) {
$cle = $mot['id_mot_cle'].'-'.$mot['id_utilisateur'];
 
$mots_cles_hierarchiques[$cle] = array(
'id_utilisateur' => $mot['id_utilisateur'],
'chemin' => $chemin,
'mot_cle' => $mot['mot_cle']
'id_utilisateur' => $mot['id_utilisateur'],
'chemin' => $chemin,
'mot_cle' => $mot['mot_cle']
);
$chemin_traites[self::harmoniserPourDoublon($chemin).'-'.$mot['id_utilisateur']] = 1;
} else {
/trunk/scripts/modules/migration_mots_cles/bibliotheque/Dao.php
57,11 → 57,11
 
public function obtenirLiaisonsMotsClesOriginaux() {
if ($this->mode == 'obs') {
$requete = "SELECT comc.id_observation as id_element_lie, comc.id_mot_cle_obs as id_mot_cle, id_utilisateur as id_utilisateur ".
$requete = "SELECT comc.id_observation AS id_element_lie, comc.id_mot_cle_obs AS id_mot_cle, id_utilisateur AS id_utilisateur ".
"FROM cel_obs_mots_cles comc ".
"INNER JOIN cel_obs o ON o.id_observation = comc.id_observation ";
} else {
$requete = "SELECT comc.id_image as id_element_lie, comc.id_mot_cle_image as id_mot_cle, o.ce_utilisateur as id_utilisateur ".
$requete = "SELECT comc.id_image AS id_element_lie, comc.id_mot_cle_image AS id_mot_cle, o.ce_utilisateur AS id_utilisateur ".
"FROM cel_images_mots_cles comc ".
"INNER JOIN cel_images o ON o.id_image = comc.id_image ";
}
/trunk/scripts/modules/maintenance/Maintenance.php
135,18 → 135,24
// 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($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='')";
$requete = 'SELECT id_image '.
'FROM cel_images '.
'WHERE id_image IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison) ';
if (!$tout) {
$requete .= "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) {
$req = "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 = '" . $image['id_image'] . "') "
. "WHERE id_image = '" . $image['id_image'] . "'";
$this->bdd->requeter($req);
$resultats = $this->bdd->recupererTous($requete);
echo count($resultats)." images trouvées\n";
foreach ($resultats as $image) {
$requete = 'UPDATE cel_images '.
'SET mots_cles_texte = ('.
' SELECT GROUP_CONCAT(mot_cle) '.
' FROM cel_arbre_mots_cles_images AS cm '.
' INNER JOIN cel_mots_cles_images_liaison AS cml '.
" ON (cml.id_mot_cle = cm.id_mot_cle AND cml.id_element_lie = '" . $image['id_image'] . "') ".
') '.
"WHERE id_image = '" . $image['id_image'] . "'";
$this->bdd->requeter($requete);
}
}
 
153,17 → 159,18
// 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($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='')";
$requete = 'SELECT id_observation '.
'FROM cel_obs '.
'WHERE id_observation IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison) ';
if (!$tout) {
$requete .= "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) {
$req = "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 = '" . $image['id_observation'] . "') "
. "WHERE id_observation = '" . $image['id_observation'] . "'";
$resultats = $this->bdd->recupererTous($requete);
echo count($resultats) . " observations trouvées\n";
foreach ($resultats as $image) {
$req = "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 = '" . $image['id_observation'] . "') ".
"WHERE id_observation = '" . $image['id_observation'] . "'";
$this->bdd->requeter($req);
}
}
235,7 → 242,7
// 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 ";
"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);
286,9 → 293,9
$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
'id_element_lie' => $liaison['id_observation'],
'id_mot_cle' => $nouvel_id_mot_cle,
'ancienne_liaison' => $liaison
);
$ids_obs[] = $liaison['id_observation'];
} else {
315,13 → 322,12
$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 ";
$requete = "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 .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'), ";
}
$requete_insertion = rtrim($requete_insertion, ',');
$insertion = $this->bdd->requeter($requete_insertion);
$requete = rtrim($requete, ',');
$insertion = $this->bdd->requeter($requete);
$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
}
echo "\n";
378,9 → 384,9
$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
'id_element_lie' => $liaison['id_image'],
'id_mot_cle' => $nouvel_id_mot_cle,
'ancienne_liaison' => $liaison
);
$ids_imgs[] = $liaison['id_image'];
} else {
406,13 → 412,13
$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 ";
$requete = "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 .= "('".$l['id_element_lie']."', '".$l['id_mot_cle']."'),";
}
$requete_insertion = rtrim($requete_insertion, ',');
$insertion = $this->bdd->requeter($requete_insertion);
$requete = rtrim($requete, ',');
$insertion = $this->bdd->requeter($requete);
$this->afficherAvancement("Liaisons insérées (par paquet de 800) ", 1);
}
echo "\n";
420,15 → 426,18
 
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 = "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);
 
$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);
$requete = '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);
 
$mots_cles_indexes = array();
foreach($nouveaux_mots_cles as $mot_cle) {
543,9 → 552,10
if ($mode == "images" || $mode == "obs") {
$table .= $mode;
}
$q1 = "SELECT id_mot_cle, chemin, mot_cle, (LOCATE(mot_cle, chemin) != 0) as valide FROM `$table`"
. " WHERE id_utilisateur = '$idUtilisateur'"
. " ORDER BY chemin ASC, valide DESC;";
$q1 = 'SELECT id_mot_cle, chemin, mot_cle, (LOCATE(mot_cle, chemin) != 0) AS valide '.
"FROM `$table` ".
"WHERE id_utilisateur = '$idUtilisateur' ".
"ORDER BY chemin ASC, valide DESC ";
$r1 = $this->bdd->requeter($q1);
 
$idsMotsCles = array();
618,8 → 628,8
echo "Fin de la réduction des mots clés $mode \n";
}
 
private function supprimerMajuscules($table, $colonne, $util=null) {
$requete = "UPDATE ".$table." SET ".$colonne." = LOWER(".$colonne.")";
private function supprimerMajuscules($table, $colonne, $util = null) {
$requete = "UPDATE $table SET $colonne = LOWER($colonne)";
if ($util !== null) {
$requete .= " WHERE id_utilisateur = $util";
}
626,8 → 636,7
$this->bdd->requeter($requete);
}
 
private function supprimerAccents($table, $colonne, $util=null) {
 
private function supprimerAccents($table, $colonne, $util = null) {
$requetes = array(
"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'Š','S')",
"UPDATE ".$table." SET ".$colonne." = REPLACE(".$colonne.",'š','s')",
700,7 → 709,7
 
foreach($requetes as $requete) {
if ($util !== null) {
$requete .= " WHERE id_utilisateur = $util";
$requete .= " WHERE id_utilisateur = $util ";
}
$this->bdd->requeter($requete);
}