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(); //obligatoire public 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; } } ?>