Rev 602 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass BaseflorVerif extends VerificateurDonnees {private $type_bio = array();private $ss_type_bio = array();private $signes_seuls = array();// basés sur valeurs trouvées (--> pas de légende !)private $signes_nn_seuls = array();// basés sur valeurs trouvées (--> pas de légende !)private $intervalles = array();private $motifs = array();//obligatoirepublic function definirTraitementsColonnes() {$this->initialiserParametresVerif() ;if (( $this->colonne_num > 0 && $this->colonne_num < 15 )|| $this->colonne_num == 16|| ($this->colonne_num > 18 && $this->colonne_num < 23)|| $this->colonne_num > 39) {$this->verifierColonne();} elseif ($this->colonne_num == 15) {$this->verifierTypeBio();} elseif ($this->colonne_num >= 23 && $this->colonne_num <= 32) {$this->verifierIntervalles($this->colonne_valeur);} elseif ($this->colonne_num >= 33 && $this->colonne_num < 41) {$this->verifierValeursIndic();}}private function initialiserParametresVerif() {$this->type_bio = $this->getParametreTableau('Parametres.typesBio');$this->ss_type_bio = $this->getParametreTableau('Parametres.sousTypesBio');$this->signes_seuls = $this->getParametreTableau('Parametres.signesSeuls');$this->signes_nn_seuls = $this->getParametreTableau('Parametres.signesNonSeuls');$this->intervalles = $this->inverserTableau($this->getParametreTableau('Parametres.intervalles'));$this->motifs = $this->inverserTableau($this->getParametreTableau('Parametres.motifs'));}//++---------------------------------traitements des colonnes baseflor------------------------------------++private function verifierColonne(){$motif = $this->motifs[$this->colonne_num];if (preg_match($motif, $this->colonne_valeur) == 0 && $this->verifierSiVide() == false){$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}}private function verifierSiVide(){$vide = ($this->colonne_valeur == '') ? true : false;return $vide;}private function verifierTypeBio(){if (preg_match("/(.+)\((.+)\)$/", $this->colonne_valeur, $retour) == 1) {$this->verifierTypeEtSsType($retour[1]);$this->verifierTypeEtSsType($retour[2]);} else {$this->verifierTypeEtSsType($this->colonne_valeur);}}private function verifierTypeEtSsType($chaine_a_verif){if (preg_match("/^([a-zA-Zé]+)\-(.+)$|^([a-zA-Zé]+[^\-])$/", $chaine_a_verif, $retour) == 1) {$type = (isset($retour[3])) ? $retour[3] : $retour[1];$this->verifierType($type);$sousType = $retour[2];$this->verifierSousType($sousType);}}private function verifierType($type) {if (in_array($type, $this->type_bio) == false) {$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}}private function verifierSousType($sousType) {if ($sousType != ''){$ss_type = explode('-', $sousType);foreach ($ss_type as $sst) {if (in_array($sst, $this->ss_type_bio) == false) {$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}}}}private function verifierIntervalles($valeur){if ($valeur != '') {list($min, $max) = explode('-', $this->intervalles[$this->colonne_num]);if ($valeur < $min || $valeur > $max){$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}}}private function verifierValeursIndic(){if (preg_match("/^([^0-9])*([0-9]+)([^0-9])*$/", $this->colonne_valeur, $retour) == 1){$this->verifierIntervalles($retour[2]);if (isset($retour[3]) && in_array($retour[3], $this->signes_nn_seuls) == false){$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}if ($retour[1] != '-' && $retour[1] != ''){$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}} elseif (in_array( $this->colonne_valeur, $this->signes_seuls) == false && $this->verifierSiVide() == false) {$this->erreurs_ligne[$this->colonne_num] = $this->colonne_valeur;}}/*--------------------------------------------OUtils-------------------------------------------*/private function getParametreTableau($cle) {$tableau = array();$parametre = Config::get($cle);if (empty($parametre) === false) {$tableauPartiel = explode(',', $parametre);$tableauPartiel = array_map('trim', $tableauPartiel);foreach ($tableauPartiel as $champ) {if (strpos($champ, '=') !== false && strlen($champ) >= 3) {list($cle, $val) = explode('=', $champ);$tableau[trim($cle)] = trim($val);} else {$tableau[] = trim($champ);}}}return $tableau;}private function inverserTableau($tableau) {$inverse = array();foreach ($tableau as $cle => $valeurs) {$valeurs = explode(';', $valeurs);foreach ($valeurs as $valeur) {$inverse[$valeur] = $cle;}}return $inverse;}}?>