New file |
0,0 → 1,149 |
<?php |
|
class 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(); |
|
|
//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; |
} |
} |
|
?> |