Rev 2095 | Rev 2102 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass Maintenance extends Script {protected $bdd;public function __construct($script_nom, $parametres_cli) {parent::__construct($script_nom, $parametres_cli);$this->bdd = new Bdd();}public function executer() {$cmd = $this->getParametre('a');try {switch ($cmd) {case 'regenererMotsClesTexteObs' :$this->regenererMotsClesTexteObs();break;case 'regenererMotsClesTexteImages' :$this->regenererMotsClesTexteImages();break;case 'viderMotsClesTexteImagesSansMotsCles' :$this->viderMotsClesTexteImagesSansMotsCles();break;case 'viderMotsClesTexteObsSansMotsCles' :$this->viderMotsClesTexteObsSansMotsCles();break;case 'regenererChampsTailleImage' :$this->regenererChampsTailleImage();break;default :$msg = "Erreur : la commande '$cmd' n'existe pas!\n"."Commandes existantes : regenererMotsClesTexteImages, regenererMotsClesTexteObs";throw new Exception($msg);}} catch (Exception $e) {$this->traiterErreur($e->getMessage());}}// 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 erreurprotected 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)";$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);}}// 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 erreurprotected 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)";$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'] . "'";$this->bdd->requeter($req);}}// Vide le champ "mots_cles_texte" pour toutes les images n'ayant aucun mot cléprotected function viderMotsClesTexteImagesSansMotsCles() {$req = "UPDATE cel_images SET mots_cles_texte = NULL WHERE id_image NOT IN (SELECT id_element_lie FROM cel_mots_cles_images_liaison)";$res = $this->bdd->requeter($req);echo "$res images mises à jour\n";}// Vide le champ "mots_cles_texte" pour toutes les obs n'ayant aucun mot cléprotected function viderMotsClesTexteObsSansMotsCles() {$req = "UPDATE cel_obs SET mots_cles_texte = NULL WHERE id_observation NOT IN (SELECT id_element_lie FROM cel_mots_cles_obs_liaison)";$res = $this->bdd->requeter($req);echo "$res observations mises à jour\n";}protected function regenererChampsTailleImage() {$req = "SELECT id_image FROM cel_images WHERE hauteur = 0 OR largeur = 0";$res = $this->bdd->recupererTous($req);echo count($res)." images concernees \n";echo "Début du traitement \n";$images_maj = 0;$image_meta_ratees = 0;$images_inexistantes = 0;foreach($res as $image) {$chemin = $this->getCheminImage($image['id_image']);if(file_exists($chemin)) {list($largeur, $hauteur) = @getimagesize($chemin);if(is_numeric($largeur) && is_numeric($hauteur)) {$req_maj = "UPDATE cel_images SET hauteur = '".$hauteur."', largeur = '".$largeur."' "."WHERE id_image = '".$image['id_image']."'";$maj_taille_image = $this->bdd->requeter($req_maj);if($maj_taille_image) {$images_maj++;}} else {$image_meta_ratees++;}} else {$images_inexistantes++;}$this->afficherAvancement("\tImages traitées : ", 1);}echo "\n";echo "Fin de la régénération des tailles des images à partir des metadonnées \n";echo $images_maj." images ont vu leur infos de taille régénérées \n";echo $image_meta_ratees." images ont raté l'extraction de metadonnées \n";echo $images_inexistantes." images n'existent pas en tant que fichier \n";}private function getCheminImage($id) {$chemin_base = Config::get('dossierImages');$id = sprintf('%09s', $id);$id = wordwrap($id, 3 , '_', true);list($dossierNiveau1, $dossierNiveau2) = explode('_', $id);$chemin = $chemin_base.$dossierNiveau1.'/'.$dossierNiveau2.'/O/'.$id.'_O.jpg';return $chemin;}}?>