Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 880 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
599 mathilde 1
<?php
2
 
3
class BasevegVerif extends VerificateurDonnees {
4
 
5
	private $synonymes;
6
	private $niveaux;
7
	private $motifs;
8
 
9
 
10
	//obligatoire
11
	public function definirTraitementsColonnes() {
12
		$this->initialiserParametresVerif();
13
		if ($this->colonne_num == 1 ) {
14
						$this->verifierColonne();
15
					} elseif ($this->colonne_num == 2 ) {
16
						$this->verifierColonne();
17
					} elseif ($this->colonne_num == 4 ) {
18
						$this->verifierNiveaux();
19
					}
20
	}
21
 
22
 
23
 
24
	public function initialiserParametresVerif() {
25
		$this->niveaux = array('CLA','ALL','ORD','ASS','GRPT','SUBORD','SUBASS','BC','SUBCLA','DC','SUBALL');
26
		$this->synonymes = array('incl','=','?','illeg','pp','pmaxp','pminp','compl','ambig','non','inval','nn','ined');
27
		$this->motifs= $this->inverserTableau(array('/^[0-9]+$/' => 1,
28
														'/(?:[0-9]{2}\/$|[0-9]{2}\/[0-9]\.$|[0-9]{2}\/(?:[0-9]\.){1,5}[0-9]$|[0-9]{2}\/(?:[0-9]\.){4,5}[0-9]\/[0-9]+(?:bis|ter|quater){0,1}$)|incertae sedis/' => 2));
29
		//présence de '=' , '= ?' et ',' dans les valeurs des paramètres. ne pas utiliser getParametresTableau.
30
	}
31
 
32
	//++---------------------------------traitements des colonnes baseveg------------------------------------++
33
	/**
34
	 *
35
	 * verifie le champ niveau
36
	 */
37
	public function verifierNiveaux(){
38
		if (preg_match("/^syn(.+)$/", $this->colonne_valeur, $retour) == 1) {
39
			$synonymes = explode(' ', trim($retour[1]));
40
			foreach($synonymes as $syn){
41
				if  (!in_array($syn, $this->synonymes)) {
42
					$this->noterErreur();
43
				}
44
			}
45
		} elseif($this->colonne_valeur != '') {
46
			if (!in_array($this->colonne_valeur , $this->niveaux)) {
47
				$this->noterErreur();
48
			}
49
		}
50
	}
51
 
52
 
53
	/**
54
	*
55
	* vérifie un motif sur la valeur entière d'une colonne par expression régulière
56
	*
57
	*/
58
	public function verifierColonne(){
59
		$motif = $this->motifs[$this->colonne_num];
60
		if (preg_match($motif, $this->colonne_valeur) == 0 && $this->verifierSiVide() == false){
61
			$this->noterErreur();
62
		}
63
	}
64
 
65
 
66
	/**
67
	 *
68
	 * vérifie si une colonne est vide ou non de valeurs
69
	 *
70
	 */
71
	public function verifierSiVide(){
72
		$vide = ($this->colonne_valeur  == '') ? true : false;
73
		return $vide;
74
	}
75
 
76
 
77
 
78
	/*--------------------------------------------OUtils-------------------------------------------*/
79
 
80
	//attention , dans les motifs !!
81
 
82
	private function inverserTableau($tableau) {
83
		$inverse = array();
84
		foreach ($tableau as $cle => $valeurs) {
85
			$valeurs = explode(';', $valeurs);
86
			foreach ($valeurs as $valeur) {
87
				$inverse[$valeur] = $cle;
88
			}
89
		}
90
		return $inverse;
91
	}
92
}
93
 
94
?>