/opt/lamp/bin/php cli.php nettoyage -a (voir méthode executer) * * @category CEL * @package Scripts * @subpackage Nettoyage * @author Delphine CAUQUIL * @license GPL v3 * @license CECILL v2 * @copyright 1999-2016 Tela Botanica */ class Nettoyage extends Script { protected $bdd; protected $colonnes; protected $bd_cel = "tb_nettoye_cel"; protected $bd_del = "tb_del"; protected $bd_flore = "tb_eflore"; public function __construct($script_nom, $parametres_cli) { parent::__construct($script_nom, $parametres_cli); $this->bdd = new Bdd(); $this->bd_cel = Config::get('nettoyage.cel_nettoye'); $this->bd_del = Config::get('nettoyage.del'); $this->bd_flore = Config::get('nettoyage.flore'); } public function executer() { $cmd = $this->getParametre('a'); $requete_colonnes = "SELECT column_name FROM information_schema.columns WHERE table_name = 'cel_obs' AND table_schema='".$this->bd_cel."';"; $this->colonnes = $this->bdd->recupererTous($requete_colonnes); try { switch ($cmd) { case 'tout' : $this->supprimerRetourLigne(); $this->supprimerAntislash(); $this->supprimerGuillemet(); $this->unifierNull(); $this->unifierNomReferentiel(); $this->unifierCertitude(); //$this->supprimerCertitudeAutre(); $this->analyserMotsCles(); $this->changerSensible(); $this->unifierUtilisateur(); $this->unifierPhenologie(); $this->verifierCodeInsee(); $this->verifierGeodatum(); $this->supprimerInfosLiesObsInexistante(); $this->supprimerImagesetTagAnonymes(); $this->unifierNull(); break; case 'supprimerRetourLigne' : $this->supprimerRetourLigne(); break; case 'supprimerAntislash' : $this->supprimerAntislash(); break; case 'supprimerGuillemet' : $this->supprimerGuillemet(); break; case 'unifierNomReferentiel' : $this->unifierNomReferentiel(); break; case 'unifierCertitude' : $this->unifierCertitude(); break; case 'supprimerCertitudeAutre' : // après unifier certitude si les autres valeurs sont bien à supprimer $this->supprimerCertitudeAutre(); break; case 'analyserMotsCles' : // après unifier certitude si les autres valeurs sont bien à supprimer $this->analyserMotsCles(); break; case 'verifierGeodatum' : $this->verifierGeodatum(); break; case 'verifierCodeInsee' : $this->verifierCodeInsee(); break; case 'sensible' : $this->changerSensible(); break; case 'unifierNull' : // lancer en dernier pour bien réussir $this->unifierNull(); break; case 'supprimerImagesetTagAnonymes' : $this->supprimerImagesetTagAnonymes(); break; case 'supprimerInfosLiesObsInexistante' : $this->supprimerInfosLiesObsInexistante(); break; case 'unifierUtilisateur' : $this->unifierUtilisateur(); break; case 'unifierInfosEspece' : $this->unifierInfosEspeces(); break; case 'unifierPhenologie' : $this->unifierPhenologie(); break; case 'unifierTag' : $this->unifierUtilisateurTag("cel_arbre_mots_cles_obs"); $this->unifierUtilisateurTag("cel_arbre_mots_cles_images"); break; default : $msg = "Erreur : la commande '$cmd' n'existe pas!\n". "Commandes existantes : regenererMotsClesTexteObs, regenererMotsClesTexteImages" . ", regenererMotsClesTexteObsTout, regenererMotsClesTexteImagesTout" . ", viderMotsClesTexteImagesSansMotsCles, viderMotsClesTexteObsSansMotsCles" . ", regenererChampsTailleImage, reparerLiaisonsOublieesObs, reparerLiaisonsOublieesImages" . ", reparerLiaisonsObsParMotsClesTexte, reductionMotsClesImages, reductionMotsClesImagesUtil" . ", reduireEtNormaliserMotsClesImagesUtil, reduireEtNormaliserMotsClesImages" . ", reductionMotsClesObs, reductionMotsClesObsUtil, reduireEtNormaliserMotsClesObsUtil" . ", reduireEtNormaliserMotsClesObs"; throw new Exception($msg); } } catch (Exception $e) { $this->traiterErreur($e->getMessage()); } } private function supprimerRetourLigne() { foreach ($this->colonnes as $id=>$colonne) { echo "Suppression des retour ligne dans la colonne ".$colonne['column_name']." ..."; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\n", "")'; $this->bdd->requeter($requete); echo "effectuée \n"; } } private function supprimerAntislash() { foreach ($this->colonnes as $id=>$colonne) { echo "Suppression des antislash dans la colonne ".$colonne['column_name']." ..."; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].', "\\\", "")'; $this->bdd->requeter($requete); echo "effectuée \n"; } } private function supprimerGuillemet() { foreach ($this->colonnes as $id=>$colonne) { echo "Suppression des guillements dans la colonne ".$colonne['column_name']." ..."; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = REPLACE(".$colonne['column_name'].',"\"", "")'; $this->bdd->requeter($requete); echo "effectuée \n"; } } private function unifierNull() { foreach ($this->colonnes as $id=>$colonne) { echo "Suppression des vides dans la colonne ".$colonne['column_name']." ..."; $dsl = array( 'transmission', 'altitude'); if (isset($dsl[$colonne['column_name']])) { $requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = '' and ".$colonne['column_name']." != '0'"; } else { $requete = "UPDATE ".$this->bd_cel.".cel_obs SET ".$colonne['column_name']." = NULL WHERE trim(".$colonne['column_name'].") = '' OR ".$colonne['column_name']." IN ('INSEE-C:', '0000-00-00 00:00:00', '0.00000')"; } $this->bdd->requeter($requete); echo "effectuée \n"; } } private function unifierCertitude() { echo "Uniformisation du champ certitude/identification"; $certitude = array("A déterminer" => "à déterminer", "À déterminer, voir photo" => "à déterminer", "A déterminer" => "à déterminer", "aDeterminer" => "à déterminer", "déterminer" => "à déterminer", "Inconnue" => "à déterminer", "Ceraine" => "certain", "certain" => "certain", "Certainaaua" => "certain", "Certaine" => "certain", "Certaine K- rhizines blanche" => "certain", "Certaine ( mais voir notes)" => "certain", "Certaine (à 99%)" => "certain", "Certaine Anett" => "certain", "Certaine Anette" => "certain", "Certaine Valériane officinale" => "certain", "Certaine, Faite et confirmée par JM BERAUD" => "certain", "Certaine, par Jean Lebail" => "certain", "Certaine, subsp. minus" => "certain", "Certainea" => "certain", "Certaineanno" => "certain", "Certainearia n" => "certain", "Certainee" => "certain", "Certainej" => "certain", "Certainel" => "certain", "CertaineNom de travai" => "certain", "CertaineNom de travail" => "certain", "Certainesites" => "certain", "Certainesous-bois de feuillus en versant sud à sud-ouest" => "certain", "Certaineu" => "certain", "sure" => "certain", "validée sur forum Naturalistes de l'ouest" => "certain", "à confirmer" => "douteux", "à approfondir" => "douteux", "à cofirmer" => "douteux", "À confiermer" => "douteux", "A confirlmer" => "douteux", "A confirmer" => "douteux", "à confirmer vs. pumilum" => "douteux", "à conirmer" => "douteux", "à vérifier" => "douteux", "douteuse" => "douteux", "Douteuse (canadensis ?)" => "douteux", "Douteuse ?" => "douteux", "Douteuse à confirmer" => "douteux", "Douteuse peut-être cordata" => "douteux", "Douteuse, fleurs rouges" => "douteux", "douteux" => "douteux", "espèce bisannuelle mais non bien déterminée" => "douteux", "Incertaine" => "douteux", "Pavot douteux" => "douteux", "Potentille ansérine, supposé" => "douteux", "presque certaine" => "douteux", "Quasi Certaine" => "douteux", "ssp déterminer" => "douteux", "subsp à vérifier" => "douteux", "subsp. microphyllum ?" => "douteux", "très douteuse" => "douteux", "Très probable" => "douteux"); foreach ($certitude as $valeur=>$saisie) { $requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET commentaire = concat(commentaire, " Certitude : ", certitude), certitude = "'.$saisie.'" WHERE certitude ="'.$valeur.'"'; $this->bdd->requeter($requete); echo "effectuée \n"; } $requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL"; $verif = $this->bdd->recupererTous($requete_verif); if ($verif != array()) print_r($verif); } private function supprimerCertitudeAutre() { echo "suppression des valeurs non compréhensible du champ certitude/identification"; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET commentaire = case isnull(commentaire) when 1 THEN certitude ELSE concat(commentaire, ' Certitude : ', certitude) END, certitude = '' WHERE `certitude` NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL"; $this->bdd->requeter($requete); echo "effectuée \n"; $requete_verif = "SELECT certitude FROM ".$this->bd_cel.".cel_obs WHERE certitude NOT IN ('douteux', 'certain', 'à déterminer', '') and certitude is not NULL"; $verif = $this->bdd->recupererTous($requete_verif); if ($verif != array()) print_r($verif); } private function unifierPhenologie() { echo "Uniformisation du champ phenologie"; /*$phenologie = array("2" => "00-09: germination, développement des bourgeons", "5" => "00-09: germination, développement des bourgeons", "5" => "00-09: germination, développement des bourgeons", "8" => "00-09: germination, développement des bourgeons", "8" => "00-09: germination, développement des bourgeons", "9" => "00-09: germination, développement des bourgeons", "00-09" => "00-09: germination, développement des bourgeons", "Germination, développement des bourgeons" => "00-09: germination, développement des bourgeons", "10" => "10-19: développement des feuilles", "11" => "10-19: développement des feuilles", "12" => "10-19: développement des feuilles", "14" => "10-19: développement des feuilles", "15" => "10-19: développement des feuilles", "16" => "10-19: développement des feuilles", "17" => "10-19: développement des feuilles", "18" => "10-19: développement des feuilles", "19" => "10-19: développement des feuilles", "10-19" => "10-19: développement des feuilles", "10-19: développement des feui" => "10-19: développement des feuilles", "10-19: développement des feuilles" => "10-19: développement des feuilles", "15: environ % des feuilles épanouies" => "10-19: développement des feuilles", "19 environ 50% des feuilles épanouies" => "10-19: développement des feuilles", "en feuilles" => "10-19: développement des feuilles", "Feuille" => "10-19: développement des feuilles", "feuille peu dvt, a confirmer" => "10-19: développement des feuilles", "feuilles seulement" => "10-19: développement des feuilles", "20" => "20-29: formation de pousses latérales, tallage", "Formation de pousses latérales, tallage" => "20-29: formation de pousses latérales, tallage", "30" => "30-39: développement des tiges, croissance des rosettes", "35" => "30-39: développement des tiges, croissance des rosettes", "36" => "30-39: développement des tiges, croissance des rosettes", "38" => "30-39: développement des tiges, croissance des rosettes", "39" => "30-39: développement des tiges, croissance des rosettes", "3: développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes", "Développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes", "40" => "40-49: développement des organes de propagation végétative", "43" => "40-49: développement des organes de propagation végétative", "45" => "40-49: développement des organes de propagation végétative", "46" => "40-49: développement des organes de propagation végétative", "48" => "40-49: développement des organes de propagation végétative", "49" => "40-49: développement des organes de propagation végétative", "40-49" => "40-49: développement des organes de propagation végétative", "40-49: développement des organes de propagation végétative" => "40-49: développement des organes de propagation végétative", "40-49: développement des organes de propagation végétativegt" => "40-49: développement des organes de propagation végétative", "40-49: développement des organes de propagation végétativepas d'inflorescence" => "40-49: développement des organes de propagation végétative", "50" => "50-59 : apparition de l’inflorescence", "56" => "50-59 : apparition de l’inflorescence", "57" => "50-59 : apparition de l’inflorescence", "58" => "50-59 : apparition de l’inflorescence", "59" => "50-59 : apparition de l’inflorescence", "10x En bouton" => "50-59 : apparition de l’inflorescence", "14x En bouton" => "50-59 : apparition de l’inflorescence", "20x En bouton" => "50-59 : apparition de l’inflorescence", "30-39" => "50-59 : apparition de l’inflorescence", "50-59" => "50-59 : apparition de l’inflorescence", "50-59: apparition de l'inflorescence, épiais" => "50-59 : apparition de l’inflorescence", "50-59: apparition de l'inflorescence, épiaison" => "50-59 : apparition de l’inflorescence", "59: apparition de l'inflorescence, épiaison" => "50-59 : apparition de l’inflorescence", "8x En bouton" => "50-59 : apparition de l’inflorescence", "60" => "60-69 : floraison", "62" => "60-69 : floraison", "63" => "60-69 : floraison", "64" => "60-69 : floraison", "66" => "60-69 : floraison", "67" => "60-69 : floraison", "68" => "60-69 : floraison", "69" => "60-69 : floraison", " floraison " => "60-69 : floraison", "-69: floraison" => "60-69 : floraison", "10x Fin de floraison" => "60-69 : floraison", "12x Pleine floraison" => "60-69 : floraison", "14x Début de floraison" => "60-69 : floraison", "150x Pleine floraison" => "60-69 : floraison", "17x Fin de floraison" => "60-69 : floraison", "1x Début de floraison" => "60-69 : floraison", "1x En fleur" => "60-69 : floraison", "1x Fin de floraison" => "60-69 : floraison", "1x Pleine floraison" => "60-69 : floraison", "20x Début de floraison" => "60-69 : floraison", "20x Pleine floraison" => "60-69 : floraison", "25x Pleine floraison" => "60-69 : floraison", "27x En fleur" => "60-69 : floraison", "30x Fin de floraison" => "60-69 : floraison", "35x Début de floraison" => "60-69 : floraison", "35x Fin de floraison" => "60-69 : floraison", "35x Pleine floraison" => "60-69 : floraison", "3x Fin de floraison" => "60-69 : floraison", "3x Pleine floraison" => "60-69 : floraison", "40x Début de floraison" => "60-69 : floraison", "44x Pleine floraison" => "60-69 : floraison", "48x Pleine floraison" => "60-69 : floraison", "4x Pleine floraison" => "60-69 : floraison", "50x Pleine floraison" => "60-69 : floraison", "5x Pleine floraison" => "60-69 : floraison", "6: floraison" => "60-69 : floraison", "60 : floraison en amorce, pétales jaunes, corolle non ouverte encore" => "60-69 : floraison", "60-" => "60-69 : floraison", "60-6: floraison" => "60-69 : floraison", "60-65" => "60-69 : floraison", "60-69" => "60-69 : floraison", "60-69 floraison" => "60-69 : floraison", "60-69 floraison +70-79: fructification" => "60-69 : floraison", "60-69: florai" => "60-69 : floraison", "60-69: florais" => "60-69 : floraison", "60-69: floraison" => "60-69 : floraison", "60-69: floraison - fructification" => "60-69 : floraison", "60-69: floraison (8" => "60-69 : floraison", "60-69: floraison 1 individu fleuri sur une trentaine" => "60-69 : floraison", "60-69: floraison à 50 pour" => "60-69 : floraison", "60-69: floraison Fleurs déjà fanées ou en cours de l'être" => "60-69 : floraison", "60-69: floraison floraison" => "60-69 : floraison", "60-69: floraison pour le 09/04/2019" => "60-69 : floraison", "60-69: floraison5" => "60-69 : floraison", "60-69: floraison6" => "60-69 : floraison", "60-69: floraisondi" => "60-69 : floraison", "60-69: floraisonentre les pierres du mur des quai" => "60-69 : floraison", "60-69: floraisonfleurs et fruit" => "60-69 : floraison", "60-69: floraisonl" => "60-69 : floraison", "60-69: floraisonvi" => "60-69 : floraison", "60-69: fructification" => "60-69 : floraison", "60: floraison" => "60-69 : floraison", "63: floraison" => "60-69 : floraison", "63: environ 3% des fleurs épanouies" => "60-69 : floraison", "64: floraison" => "60-69 : floraison", "66, avec quelques fruits" => "60-69 : floraison", "66: floraison" => "60-69 : floraison", "67 : floraison" => "60-69 : floraison", "67 Nbses fleurs épanouies," => "60-69 : floraison", "67: floraison" => "60-69 : floraison", "67: environ 70% des fleurs épanouies + formation de gousses." => "60-69 : floraison", "68: environ 0% des fleurs épanouies" => "60-69 : floraison", "68: floraison" => "60-69 : floraison", "68: environ 50% des fleurs épanouies" => "60-69 : floraison", "68: environ 80% des fleurs épanouies + formation des gousses." => "60-69 : floraison", "68floraison" => "60-69 : floraison", "69 (floraison de toutes fleurs)" => "60-69 : floraison", "69-70" => "60-69 : floraison", "69-70: fin de floraisonfructification" => "60-69 : floraison", "69-70n" => "60-69 : floraison", "69: 100% des fleurs épanouies" => "60-69 : floraison", "69s" => "60-69 : floraison", "82x Pleine floraison" => "60-69 : floraison", "9: floraison" => "60-69 : floraison", "début de ffloraison" => "60-69 : floraison", "début floraison" => "60-69 : floraison", "en fleurs" => "60-69 : floraison", "environ 30% des fleurs épanouies" => "60-69 : floraison", "environ 950% des fleurs épanouies" => "60-69 : floraison", "fin d floraison" => "60-69 : floraison", "fin de floraison" => "60-69 : floraison", "fin floraison" => "60-69 : floraison", "fl" => "60-69 : floraison", "fl2" => "60-69 : floraison", "fleur" => "60-69 : floraison", "Fleurs" => "60-69 : floraison", "fleurs épanouies; fin" => "60-69 : floraison", "floraison" => "60-69 : floraison", "Nombreux plants en début de floraison" => "60-69 : floraison", "61" => "61: environ 10% des fleurs épanouies", "10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies", "61 :" => "61: environ 10% des fleurs épanouies", "61 : environ 10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies", "61: début defloraison" => "61: environ 10% des fleurs épanouies", "61: floraison" => "61: environ 10% des fleurs épanouies", "61: environ 10% des fleurs épanouie" => "61: environ 10% des fleurs épanouies", "61: environ 10% des fleurs épanouies" => "61: environ 10% des fleurs épanouies", "61: environ 10% des fleurs épanouies63" => "61: environ 10% des fleurs épanouies", "61: environ 10% des fleurs épanouies68" => "61: environ 10% des fleurs épanouies", "61: environ 2% des fleurs épanouies" => "61: environ 10% des fleurs épanouies", "61: environ20% des fleurs épanouies" => "61: environ 10% des fleurs épanouies", "Fleurs (environ 10% des fleurs épanouies)" => "61: environ 10% des fleurs épanouies", "65" => "65: environ 50% des fleurs épanouies", "65" => "65: environ 50% des fleurs épanouies", "6: environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies", "65 , avec quelques fruits" => "65: environ 50% des fleurs épanouies", "65 : environ 80% des fleurs épanouies" => "65: environ 50% des fleurs épanouies", "65 : environ 10% des fleurs ép" => "65: environ 50% des fleurs épanouies", "65 : environ 50% des fleurs épa" => "65: environ 50% des fleurs épanouies", "65 : environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies", "65 : environ 50% des fleurs épanouies-75" => "65: environ 50% des fleurs épanouies", "65-6: floraison" => "65: environ 50% des fleurs épanouies", "65-69: floraison" => "65: environ 50% des fleurs épanouies", "65-7: floraison" => "65: environ 50% des fleurs épanouies", "65-72" => "65: environ 50% des fleurs épanouies", "65:" => "65: environ 50% des fleurs épanouies", "65: floraison" => "65: environ 50% des fleurs épanouies", "65: environ 10% des fleurs épanouies" => "65: environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanoui" => "65: environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouie6" => "65: environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies et fructification" => "65: environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies75" => "65: environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies78" => "65: environ 50% des fleurs épanouies", "65:-70" => "65: environ 50% des fleurs épanouies", "65:-75" => "65: environ 50% des fleurs épanouies", "avec quelques fruits, 65" => "65: environ 50% des fleurs épanouies", "nviron 50% des fleurs épanouies" => "65: environ 50% des fleurs épanouies", "70" => "70-79: fructification", "71" => "70-79: fructification", "72" => "70-79: fructification", "73" => "70-79: fructification", "74" => "70-79: fructification", "75" => "70-79: fructification", "76" => "70-79: fructification", "77" => "70-79: fructification", "78" => "70-79: fructification", "79" => "70-79: fructification", "7: fructification" => "70-79: fructification", "70-: fructification" => "70-79: fructification", "70-71" => "70-79: fructification", "70-79" => "70-79: fructification", "70-79: floraison" => "70-79: fructification", "70-79: fructification" => "70-79: fructification", "70-79: fructification ?" => "70-79: fructification", "70-79: fructification +floraison" => "70-79: fructification", "70-79: fructification Entre autre" => "70-79: fructification", "70-79: fructification, mais fruits verts" => "70-79: fructification", "70-79: fructificationfleurs et fruit" => "70-79: fructification", "70-79:fin floraison fructification" => "70-79: fructification", "709: fructification" => "70-79: fructification", "75: fructification" => "70-79: fructification", "Début de ruits" => "70-79: fructification", "fin floraison et fructification" => "70-79: fructification", "fleur, fruit" => "70-79: fructification", "fleurs e fructification" => "70-79: fructification", "Fleurs et début fruits" => "70-79: fructification", "Fleurs et début ruits" => "70-79: fructification", "Fleurs et fructification" => "70-79: fructification", "floraison - fructification" => "70-79: fructification", "floraison zet fructification" => "70-79: fructification", "Floraison, fructification" => "70-79: fructification", "floraison(fin) fructification" => "70-79: fructification", "floraison+ ou - finie" => "70-79: fructification", "fr1" => "70-79: fructification", "quelques fruits rares" => "70-79: fructification", "stérile70-79: fructification" => "70-79: fructification", "toutes les fleurs épanouies et début fructification" => "70-79: fructification", "fleurs et fruits" => "70-79: fructification", "Fleurs et jeunes fruits" => "70-79: fructification", "floraison + fructification" => "70-79: fructification", "Fructificaiton" => "70-79: fructification", "fleurs et quelques fruits" => "70-79: fructification", "Fleurs et surtout début defruits" => "70-79: fructification", "floraison et fructification" => "70-79: fructification", "fructification" => "70-79: fructification", "Fleurs/fruits" => "70-79: fructification", "fructification ?" => "70-79: fructification", "80" => "80-89: maturité des fruits et des graines", "81" => "80-89: maturité des fruits et des graines", "82" => "80-89: maturité des fruits et des graines", "83" => "80-89: maturité des fruits et des graines", "84" => "80-89: maturité des fruits et des graines", "86" => "80-89: maturité des fruits et des graines", "87" => "80-89: maturité des fruits et des graines", "88" => "80-89: maturité des fruits et des graines", "89" => "80-89: maturité des fruits et des graines", "-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "80-89" => "80-89: maturité des fruits et des graines", "80-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "80-89: maturité des fruits et des graines,début sénescence" => "80-89: maturité des fruits et des graines", "80-95" => "80-89: maturité des fruits et des graines", "88 maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "floraison et fructification, graines mûres" => "80-89: maturité des fruits et des graines", "floraison et maturation des graines" => "80-89: maturité des fruits et des graines", "fructification passée" => "80-89: maturité des fruits et des graines", "Fruit" => "80-89: maturité des fruits et des graines", "Fruits" => "80-89: maturité des fruits et des graines", "85" => "85: 50% des fruits matures", "50% des fruits matures (fructification d'Août)î" => "85: 50% des fruits matures", "85, mais avec encore des fleurs" => "85: 50% des fruits matures", "85:" => "85: 50% des fruits matures", "85: fruits matures 20" => "85: 50% des fruits matures", "85: 50% des fruits mature8" => "85: 50% des fruits matures", "85: 50% des fruits matures" => "85: 50% des fruits matures", "85: 50% des fruits matures0" => "85: 50% des fruits matures", "85: 50% des fruits matures56" => "85: 50% des fruits matures", "85: 50% des fruits matures88" => "85: 50% des fruits matures", "88: 50% des fruits matures" => "85: 50% des fruits matures", "90" => "90-99: sénescence et dormance", "91" => "90-99: sénescence et dormance", "92" => "90-99: sénescence et dormance", "94" => "90-99: sénescence et dormance", "95" => "90-99: sénescence et dormance", "97" => "90-99: sénescence et dormance", "98" => "90-99: sénescence et dormance", "99" => "90-99: sénescence et dormance", "100% de feuilles jaunes" => "90-99: sénescence et dormance", "80% feuillage d'automne" => "90-99: sénescence et dormance", "90-99" => "90-99: sénescence et dormance", "90-99: sénescence et dormance" => "90-99: sénescence et dormance", "95: environ 9% des feuilles jaunes" => "90-99: sénescence et dormance" );*/ $phenologie = array("95: par ex, environ 9% des feuilles jaunes" => "91: par ex, environ 10% des feuilles jaunes", "90-99: sénescence et dormance" => "90-99: sénescence et dormance", "85: 50% des fruits matures" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits mature8" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures0" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures56" => "85: par ex, 50% des fruits matures", "85: par ex, 50% des fruits matures88" => "85: par ex, 50% des fruits matures", "88: par ex, 50% des fruits matures" => "85: par ex, 50% des fruits matures", "80-89: maturité des fruits et des graines" => "80-89: maturité des fruits et des graines", "80-89: maturité des fruits et des graines." => "80-89: maturité des fruits et des graines", "70-79: fructification" => "70-79: fructification", "70-79: fructification fruis non mure" => "70-79: fructification", "Fructificati" => "70-79: fructification", " 65" => "65: par ex, environ 50% des fleurs épanouies", "10: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanoui" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouie6" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies et fructification" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies75" => "65: par ex, environ 50% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies78" => "65: par ex, environ 50% des fleurs épanouies", "67: par ex, environ 70% des fleurs épanouies + formation de gousses." => "65: par ex, environ 50% des fleurs épanouies", "68: par ex, environ 50% des fleurs épanouies" => "65: par ex, environ 50% des fleurs épanouies", "68: par ex, environ 80% des fleurs épanouies + formation des gousses." => "65: par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 10% des fleurs ép" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épa" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épanouies" => "65 : par ex, environ 50% des fleurs épanouies", "65 : par ex, environ 50% des fleurs épanouies-75" => "65 : par ex, environ 50% des fleurs épanouies", "61: environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouie" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies63" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 10% des fleurs épanouies68" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ 2% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "61: par ex, environ20% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "63: par ex, environ 3% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "65: par ex, environ 10% des fleurs épanouies" => "61: par ex, environ 10% des fleurs épanouies", "59-65" => "60-69: floraison", "60-69: floraison et fructificatio" => "60-69: floraison", "60-69 : floraison" => "60-69: floraison", "60-70" => "60-69: floraison", "65: par ex, environ 100% des fleurs épanouies" => "60-69: floraison", " épiaison" => "50-59: apparition de l'inflorescence, épiaison", "50-59: développement des bourgeons" => "50-59: apparition de l'inflorescence, épiaison", "50-59 : apparition de l’inflorescence" => "50-59: apparition de l'inflorescence, épiaison", "50-60" => "50-59: apparition de l'inflorescence, épiaison", "59-60" => "50-59: apparition de l'inflorescence, épiaison", "Apparition de l'inflorescence, épiaison" => "50-59: apparition de l'inflorescence, épiaison", "40-49: développement des organes de propagation végétative" => "40-49: développement des organes de propagation végétative", "30-39: développement des tiges, croissance des rosettes" => "30-39: développement des tiges, croissance des rosettes", "20-29" => "20-29: formation de pousses latérales, tallage", "20-29: formation de pousses latérales, tallage" => "20-29: formation de pousses latérales, tallage", "25" => "20-29: formation de pousses latérales, tallage", "Environ Formation de pousses latérales, tallage0% des feuilles épanouies" => "20-29: formation de pousses latérales, tallage", "Environ Formation de pousses latérales, tallage0% des fleurs épanouies" => "20-29: formation de pousses latérales, tallage", "15: par ex, environ % des feuilles épanouies" => "15: par ex, environ 50% des feuilles épanouies", "10-19: développement des feuilles" => "10-19: développement des feuilles", "10-19: développement des feuillesCry" => "10-19: développement des feuilles", "Développement des feuilles, début du débourrement, sortie de terre (géophytes)" => "10-19: développement des feuilles", "00-09: germination, développement des bourgeons" => "00-09: germination, développement des bourgeons", "bourgeon" => "00-09: germination, développement des bourgeons", "Environ Germination, développement des bourgeons0% des fleurs épanouies" => "00-09: germination, développement des bourgeons"); foreach ($phenologie as $valeur=>$saisie) { $requete = 'UPDATE '.$this->bd_cel.'.cel_obs SET phenologie = "'.$saisie.'" WHERE phenologie ="'.$valeur.'"'; $this->bdd->requeter($requete); echo "effectuée \n"; } $requete_verif = "SELECT distinct phenologie FROM ".$this->bd_cel.'.cel_obs WHERE phenologie NOT IN ("00-09: germination, développement des bourgeons", "10-19: développement des feuilles", "11: par ex, environ 10% des feuilles épanouies", "15: par ex, environ 50% des feuilles épanouies", "20-29: formation de pousses latérales, tallage", "30-39: développement des tiges, croissance des rosettes", "40-49: développement des organes de propagation végétative", "50-59: apparition de l\'inflorescence, épiaison", "60-69: floraison", "61: par ex, environ 10% des fleurs épanouies", "65: par ex, environ 50% des fleurs épanouies", "70-79: fructification", "80-89: maturité des fruits et des graines", "85: par ex, 50% des fruits matures", "90-99: sénescence et dormance", "91: par ex, environ 10% des feuilles jaunes", "95: par ex, environ 50% des feuilles jaunes")'; $verif = $this->bdd->recupererTous($requete_verif); if ($verif != array()) print_r($verif); } private function unifierUtilisateur() { echo "vérification de la présence de l'annuaire \n"; $requete = "SELECT * FROM ".$this->bd_cel.".`users`;"; $result = $this->bdd->requeter($requete); if ($result === NULL) {echo $requete; echo "Il manque la table annuaire (à recopier de telaorg users\n"; exit; } echo "suppression de le colonne ordre \n"; $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX id_obs;"; $this->bdd->requeter($requete); $requete = "ALTER TABLE ".$this->bd_cel.".cel_obs DROP INDEX ordre;"; $this->bdd->requeter($requete); $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` DROP IF EXISTS `ordre`;"; $this->bdd->requeter($requete); $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS pseudo varchar(250);"; $this->bdd->requeter($requete); echo "modification des observations ayant une adresse mail en identifiant"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` right join ".$this->bd_cel.".`users` ON `user_email` = ce_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename, `courriel_utilisateur` = `user_email` WHERE ce_utilisateur like '%@%'"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "modification des observations ayant une adresse mail mais pas d'identifiant"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON `user_email` = courriel_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename, `courriel_utilisateur` = `user_email` WHERE (ce_utilisateur IS NULL OR CHAR_LENGTH(ce_utilisateur) > 6 OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "modification des observations ayant un identifiant"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename, `courriel_utilisateur` = `user_email` WHERE !(ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "suppression des autres valeurs ce_utilisateur"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_obs` SET ce_utilisateur = NULL, courriel_utilisateur = if (ce_utilisateur like '%@%'and (courriel_utilisateur is null or courriel_utilisateur='') , ce_utilisateur, courriel_utilisateur) WHERE ce_utilisateur IS NOT NULL AND char_length(ce_utilisateur) > 6"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "suppression des obs anonymes"; $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_obs` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6 OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')"; $this->bdd->requeter($requete_anonyme); $requete_verif = "SELECT `ce_utilisateur`, `prenom_utilisateur`, `nom_utilisateur`, `courriel_utilisateur` FROM ".$this->bd_cel.".cel_obs WHERE ce_utilisateur IS NOT NULL OR char_length(ce_utilisateur) > 6"; $verif = $this->bdd->recupererTous($requete_verif); if ($verif != array()) print_r($verif); echo "effectuée \n"; $this->unifierUtilisateurTag("cel_arbre_mots_cles_obs"); $this->unifierUtilisateurTag("cel_arbre_mots_cles_images"); } private function unifierUtilisateurTag($table) { echo "séparation des identifiants en ce_utilisateur et courriel"; $requete = "ALTER TABLE ".$this->bd_cel.".".$table." ADD courriel varchar(255);"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".".$table." SET courriel = id_utilisateur, id_utilisateur = 0 WHERE id_utilisateur like '%@%';"; $this->bdd->requeter($requete); echo "recherche des identifiants pour les tags ayant que des courriels dans users"; $requete = "UPDATE ".$this->bd_cel.".".$table." join ".$this->bd_cel.".`users` ON `user_email` = courriel SET `id_utilisateur` = `ID` WHERE courriel like '%@%';"; $this->bdd->requeter($requete); echo "recherche des identifiants pour les tags ayant que des courriels dans obs"; $requete = "UPDATE ".$this->bd_cel.".".$table." t join ".$this->bd_cel.".`cel_obs` o ON `courriel` = courriel_utilisateur SET t.`id_utilisateur` = o.`ce_utilisateur` WHERE courriel_utilisateur like '%@%';"; $this->bdd->requeter($requete); echo "suppression des tags sans identifiant"; $requete_anonyme = "DELETE FROM ".$this->bd_cel.".".$table." WHERE (id_utilisateur IS NULL OR trim(id_utilisateur) = '') OR char_length(id_utilisateur) > 6"; $this->bdd->requeter($requete_anonyme); if ($table == "cel_arbre_mots_cles_obs") { $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_element_lie` not in (SELECT `id_observation` FROM ".$this->bd_cel.".`cel_obs`) OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs`);"; $this->bdd->requeter($requete_anonyme); } else { $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_element_lie` not in (SELECT `id_image` FROM ".$this->bd_cel.".`cel_images`) OR `id_mot_cle` NOT IN (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images`);"; $this->bdd->requeter($requete_anonyme); } } private function unifierInfosEspeces() { echo "maj infos espèces \n"; /*$requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD infosnn varchar(2), ADD bd_nom_sci varchar(250), ADD bd_num_nom int(11), ADD bd_nom_sci_retenu varchar(250), ADD bd_num_nom_retenu int(11) ;"; $this->bdd->requeter($requete); */ $liste_referentiels = array("bdtfx" => "bdtfx_v6_00", "bdtre" => "bdtre_v1_00", "isfan" => "isfan_v2013", "apd" => "apd_v3_4_0", "bdtxa" => "bdtxa_v1_01", "aublet" => "aublet_v2016_09", "florical" => "florical_v2016_04_22", "lbf" => "lbf_v1_00"); $this->unifierInfosEspecesBDTFX(); foreach ($liste_referentiels as $ref => $version) { //Num nom et nom sci sont les mêmes // chercher les versions $requete = "UPDATE ".$this->bd_cel.".`cel_obs` join (SELECT `num_nom`, `num_nom_retenu`, `nom_sci`, case when annee = '' THEN concat(`nom_sci`, ' ', auteur) ELSE concat(`nom_sci`, ' ', auteur, ' [',annee,']') END as nom_sci_complet, nom_sci_complet_ret FROM ".$this->bd_flore.".".$version. 'left join (select `num_nom` as nn, `nom_sci` as nom_sci_ret, case when annee = "" THEN concat(`nom_sci`, " ", auteur) ELSE concat(`nom_sci`, " ", auteur, " [",annee,"]") END as nom_sci_complet_ret from ".$this->bd_flore.".".$version." where `num_nom` = `num_nom_retenu`) ret on `num_nom_retenu` = nn) bdtfx on `nom_sel_nn` = num_nom and `nom_sel` like concat(nom_sci,"%") SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_sci_complet_ret, `nom_ret_nn` = num_nom_retenu, infosnn = 1 WHERE nom_referentiel = "'.$ref.'"'; $this->bdd->requeter($requete); //Num nom id, nom sci != $requete = "UPDATE ".$this->bd_cel.".`cel_obs` join (SELECT `num_nom`, `num_nom_retenu`, `nom_sci`, case when annee = '' THEN concat(`nom_sci`, ' ', auteur) ELSE concat(`nom_sci`, ' ', auteur, ' [',annee,']') END as nom_sci_complet, nom_sci_complet_ret FROM ".$this->bd_flore.".".$version. 'left join (select `num_nom` as nn, `nom_sci` as nom_sci_ret, case when annee = "" THEN concat(`nom_sci`, " ", auteur) ELSE concat(`nom_sci`, " ", auteur, " [",annee,"]") END as nom_sci_complet_ret from ".$this->bd_flore.".".$version." where `num_nom` = `num_nom_retenu`) ret on `num_nom_retenu` = nn) bdtfx on `nom_sel_nn` = num_nom and and (nom_sel like concat(nom_sci,"%") and nom_ret like concat(nom_sci,"%")) and (nom_sel like concat(nom_sci_ret,"%") and nom_ret like concat(nom_sci_ret,"%")) SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_sci_complet_ret, `nom_ret_nn` = num_nom_retenu, infosnn = 2 WHERE nom_referentiel = "'.$ref.'" and infosnn != 1'; $this->bdd->requeter($requete); // } } private function unifierInfosEspecesBDTFX() { echo "maj infos espèces \n"; /*$requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD infosnn varchar(2), ADD bd_nom_sci varchar(250), ADD bd_num_nom int(11), ADD bd_nom_sci_retenu varchar(250), ADD bd_num_nom_retenu int(11) ;"; $this->bdd->requeter($requete); */ //Num nom et nom sci sont les mêmes // chercher les versions $requete = "UPDATE ".$this->bd_cel.".`cel_obs`" .' join '.$this->bd_flore.'bdtfx on `nom_sel_nn` = num_nom and `nom_sel` like concat(nom_sci, "%") SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_ret_complet, `nom_ret_nn` = num_nom_retenu, infosnn = 1 where `nom_referentiel` = "bdtfx" '; $this->bdd->requeter($requete); //Num nom id, nom sci +-= $requete = "UPDATE ".$this->bd_cel.".`cel_obs`" .' join '.$this->bd_flore.'bdtfx on `nom_sel_nn` = num_nom and and (nom_sel like concat(nom_sci,"%") and nom_ret like concat(nom_sci,"%")) and (nom_sel like concat(nom_sci_ret,"%") and nom_ret like concat(nom_sci_ret,"%")) SET `nom_sel` = nom_sci_complet, `nom_sel_nn` = num_nom , `nom_ret` = nom_ret_complet, `nom_ret_nn` = num_nom_retenu, infosnn = 2 where `nom_referentiel` = "bdtfx" and infosnn != "1"'; $this->bdd->requeter($requete); //Num nom id, nom sci +-= $requete = "UPDATE ".$this->bd_cel.".`cel_obs`" .' join '.$this->bd_flore.'bdtfx on `nom_sel_nn` = num_nom and and (nom_sel not like concat(nom_sci,"%") and nom_ret not like concat(nom_sci,"%")) and (nom_sel not like concat(nom_sci_ret,"%") and nom_ret not like concat(nom_sci_ret,"%")) SET `bd_nom_sci` = nom_sci_complet, `bd_num_nom` = num_nom , `bd_nom_sci_retenu` = nom_ret_complet, `bd_num_nom_retenu` = num_nom_retenu, infosnn = 3 where `nom_referentiel` = "bdtfx" and infosnn not in ("1", "2")'; $this->bdd->requeter($requete); } private function supprimerImagesetTagAnonymes() { echo "vérification de la présence de l'annuaire \n"; $requete = "SELECT * FROM ".$this->bd_cel.".`users`;"; $result = $this->bdd->requeter($requete); if ($result === NULL) { echo $requete; echo "Il manque la table annuaire (à recopier de telaorg users\n"; exit; } echo "suppression de le colonne ordre \n"; $requete = "ALTER TABLE ".$this->bd_cel.".cel_images DROP INDEX id_img;"; $this->bdd->requeter($requete); $requete = "ALTER TABLE ".$this->bd_cel.".`cel_images` DROP IF EXISTS `ordre`;"; $this->bdd->requeter($requete); $requete = "ALTER TABLE ".$this->bd_cel.".`cel_images` ADD IF NOT EXISTS pseudo varchar(250);"; $this->bdd->requeter($requete); echo "modification des images ayant une adresse mail en identifiant"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` right join ".$this->bd_cel.".`users` ON `user_email` = ce_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename, `courriel_utilisateur` = `user_email` WHERE ce_utilisateur like '%@%'"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "modification des images ayant une adresse mail mais pas d'identifiant"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` join ".$this->bd_cel.".`users` ON `user_email` = courriel_utilisateur SET `ce_utilisateur` = `ID`, pseudo = user_nicename, `courriel_utilisateur` = `user_email` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6 OR ce_utilisateur = 0) and courriel_utilisateur like '%@%'"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "modification des images ayant un identifiant"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` join ".$this->bd_cel.".`users` ON ID = ce_utilisateur SET pseudo = user_nicename, `courriel_utilisateur` = `user_email` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6) and (courriel_utilisateur is null or courriel_utilisateur='')"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "suppression des autres valeurs ce_utilisateur"; $requete_annu_mail = "UPDATE ".$this->bd_cel.".`cel_images` SET ce_utilisateur = NULL, courriel_utilisateur = if (ce_utilisateur like '%@%'and (courriel_utilisateur is null or courriel_utilisateur='') , ce_utilisateur, courriel_utilisateur) WHERE ce_utilisateur IS NOT NULL AND (LENGTH(ce_utilisateur) > 6 OR trim(ce_utilisateur) = '')"; $utilisateur_mail = $this->bdd->recupererTous($requete_annu_mail); echo "suppression des images\n"; $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_images` WHERE (ce_utilisateur IS NULL OR char_length(ce_utilisateur) > 6 OR ce_utilisateur = 0) and (`courriel_utilisateur` is null or `courriel_utilisateur` not like '%@%')"; $this->bdd->requeter($requete_anonyme); /* echo "suppression des tags obs anonymes"; $requete_create = "CREATE TABLE ".$this->bd_cel.".user_mot_cle_absent AS SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur not in (SELECT distinct id_utilisateur FROM ".$this->bd_cel.".cel_arbre_mots_cles_obs WHERE id_utilisateur in (select distinct ce_utilisateur from ".$this->bd_cel.".cel_obs) or id_utilisateur in (SELECT distinct courriel_utilisateur FROM ".$this->bd_cel.".cel_obs))"; $this->bdd->requeter($requete_create); $requete_index = "ALTER TABLE ".$this->bd_cel.".`user_mot_cle_absent` ADD PRIMARY KEY(`id_utilisateur`);"; $this->bdd->requeter($requete_index); $requete_anonyme = "DELETE FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs` WHERE `id_utilisateur` in (SELECT * FROM ".$this->bd_cel.".`user_mot_cle_absent`);"; $this->bdd->requeter($requete_anonyme); $requete_anonyme = "DROP TABLE ".$this->bd_cel.".user_mot_cle_absent;"; $this->bdd->requeter($requete_anonyme); $requete_anonyme = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` a join ".$this->bd_cel.".cel_obs b on a.`id_utilisateur` = b.courriel_utilisateur SET a.`id_utilisateur` = b.ce_utilisateur WHERE b.ce_utilisateur IS NOT NULL AND b.ce_utilisateur != ''"; $this->bdd->requeter($requete_anonyme);*/ } private function unifierNomReferentiel() { echo "Uniformisation du nom de référentiel"; $referentiels = array("bdtfx", "bdtre", "bdtxa", "apd", "lbf", "isfan"); foreach ($referentiels as $referentiel) { $requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = '".$referentiel."' WHERE nom_referentiel like '".$referentiel."%'"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'Autre/inconnu' WHERE nom_sel_nn IS NULL or nom_sel_nn = '0'"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'apd' WHERE nom_referentiel like 'bdtao%'"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'bdtfx' WHERE nom_referentiel like 'bdnff%'"; $this->bdd->requeter($requete); echo "effectuée \n"; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET nom_referentiel = 'Autre/inconnu' WHERE nom_referentiel IS NULL or nom_referentiel = ''"; $this->bdd->requeter($requete); echo "effectuée \n"; } $requete_verif = "SELECT nom_referentiel FROM ".$this->bd_cel.".cel_obs WHERE nom_referentiel NOT IN ('".implode("', '", $referentiels)."', 'Autre/inconnu')"; $verif = $this->bdd->recupererTous($requete_verif); if ($verif != array()) print_r($verif); } private function supprimerInfosLiesObsInexistante() { echo "Supprimer infos liés à obs inexistante"; $requete = "DELETE FROM ".$this->bd_cel.".`cel_obs_etendues` WHERE `id_observation` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);"; $this->bdd->requeter($requete); $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_element_lie` not in (select `id_observation` from ".$this->bd_cel.".cel_obs);"; $this->bdd->requeter($requete); $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_obs_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_obs`);"; $this->bdd->requeter($requete); $requete = "DELETE FROM ".$this->bd_cel.".`cel_images` WHERE `ce_observation` is not null and `ce_observation` not in (select id_observation from ".$this->bd_cel.".cel_obs)"; $this->bdd->requeter($requete); $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_element_lie` not in (select `id_image` from ".$this->bd_cel.".cel_images);"; $this->bdd->requeter($requete); $requete = "DELETE FROM ".$this->bd_cel.".`cel_mots_cles_images_liaison` WHERE `id_mot_cle` not in (SELECT `id_mot_cle` FROM ".$this->bd_cel.".`cel_arbre_mots_cles_images`);"; $this->bdd->requeter($requete); echo "effectuée \n"; } private function verifierGeodatum() { echo "Uniformisation du geodatum"; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = 'WGS84' WHERE (latitude IS NOT NULL or latitude != '0.00000') AND geodatum IS NULL"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET geodatum = NULL WHERE (latitude IS NULL or latitude = '0.00000')"; $this->bdd->requeter($requete); echo "effectuée \n"; echo "Suppression des coordonnées fausses : "; $requete = "UPDATE ".$this->bd_cel.".cel_obs SET latitude = NULL, longitude = NULL WHERE latitude < -90 OR latitude > 90 OR longitude < -180 OR longitude > 180"; $this->bdd->requeter($requete); echo "effectuée \n"; } private function verifierCodeInsee() { echo "Mise à jour des valeurs code_insee"; $requete = 'UPDATE '.$this->bd_cel.'.`cel_obs` SET `ce_zone_geo` = NULL, commentaire = concat(if(commentaire is null, "", concat(commentaire, ", ")), if(ce_zone_geo is null, "", concat("Zone geo : ",ce_zone_geo))) where `ce_zone_geo` not like "insee-c%"'; $this->bdd->requeter($requete); $requete = 'UPDATE '.$this->bd_cel.'.`cel_obs` SET `ce_zone_geo` = substr(`ce_zone_geo`, 9, 5) where `ce_zone_geo` like "insee-c:%"'; $this->bdd->requeter($requete); $requete = 'UPDATE '.$this->bd_cel.'.`cel_obs` SET `ce_zone_geo` = NULL where trim(`ce_zone_geo`) = ""'; $this->bdd->requeter($requete); echo "effectuée \n"; echo "Vérification du code insee"; $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `locality_consistency` INT(1) ;"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '0' WHERE ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and replace(`ce_zone_geo`, 'INSEE-C:', '') != `code_insee_calcule`"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET locality_consistency = '1' WHERE ((ce_zone_geo != 'INSEE-C:' and ce_zone_geo like 'INSEE-C:%') and code_insee_calcule != '') and replace(`ce_zone_geo`, 'INSEE-C:', '') = `code_insee_calcule`"; $this->bdd->requeter($requete); $requete_verif = "SELECT `ce_zone_geo`, `code_insee_calcule`, `locality_consistency` FROM `cel_obs` WHERE `locality_consistency` IS NOT NULL"; $verif = $this->bdd->recupererTous($requete_verif); if ($verif != array()) print_r($verif); echo "effectuée \n"; } private function analyserMotsCles(){ echo "Input source \n"; $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `input_source` VARCHAR(15)"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'PlantNet' WHERE `mots_cles_texte` like '%plantnet%'"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'autre' WHERE `mots_cles_texte` like '%MobileSauvages%'"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'widget' WHERE `mots_cles_texte` like '%Projets coopératifs%' and (input_source = '' OR input_source IS NULL)"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'widget' WHERE `mots_cles_texte` like '%widget%' and (input_source = '' OR input_source IS NULL)"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET input_source = 'CEL' WHERE input_source = '' OR input_source IS NULL"; $this->bdd->requeter($requete); echo "Suppression motcle du chemin \n"; $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_obs` SET chemin = if(CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`) = 2, '\/', substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-2))"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".`cel_arbre_mots_cles_images` SET chemin = substr(`chemin`, 1, CHAR_LENGTH(chemin)-CHAR_LENGTH(`mot_cle`)-1)"; $this->bdd->requeter($requete); echo "Certitude à certaine quand obs validée sur ip \n"; $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join (SELECT distinct `ce_observation`, `nom_sel_nn` FROM ".$this->bd_del.".`del_commentaire` WHERE `proposition_retenue` = 1) d on `ce_observation` = `id_observation` SET `certitude` = 'certain' WHERE (c.`mots_cles_texte` LIKE '%adeterminer%' or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` = d.`nom_sel_nn`"; $this->bdd->requeter($requete); echo "Certitude à douteux quand obs validée sur ip mais num_nom diff entre ip et cel \n"; $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c left join (SELECT distinct `ce_observation`, `nom_sel_nn` FROM ".$this->bd_del.".`del_commentaire` WHERE `proposition_retenue` = 1 ) d on `ce_observation` = `id_observation` SET `certitude` = 'douteux' WHERE (c.`mots_cles_texte` LIKE '%adeterminer%' or c.`certitude` = 'à déterminer') and c.`nom_sel_nn` != d.`nom_sel_nn`"; $this->bdd->requeter($requete); echo "Certitude à aDeterminer quand obs non validée sur ip \n"; $requete = "UPDATE ".$this->bd_cel.".`cel_obs` c SET `certitude` = 'à déterminer' WHERE c.`mots_cles_texte` LIKE '%adeterminer%' AND (c.`certitude` = '' or c.certitude IS NULL)"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".`cel_obs` SET `mots_cles_texte` = REPLACE(`mots_cles_texte`, 'aDeterminer,', '') WHERE `mots_cles_texte` LIKE '%adeterminer,%'"; $this->bdd->requeter($requete); } private function changerSensible(){ echo "Sensible \n"; $requete = "ALTER TABLE ".$this->bd_cel.".`cel_obs` ADD IF NOT EXISTS `published_location` varchar(50)"; $this->bdd->requeter($requete); $requete = "UPDATE ".$this->bd_cel.".cel_obs SET published_location = 'localité' WHERE `mots_cles_texte` like '%sensible%'"; $this->bdd->requeter($requete); } }