Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 1175 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

class BasevegVerif extends VerificateurDonnees {

        private $synonymes;
        private $niveaux;
        private $motifs;
        

        //obligatoire
        public function definirTraitementsColonnes() {
                $this->initialiserParametresVerif();
                if ($this->colonne_num == 1 ) {
                                                $this->verifierColonne();
                                        } elseif ($this->colonne_num == 2 ) {
                                                $this->verifierColonne();
                                        } elseif ($this->colonne_num == 4 ) {
                                                $this->verifierNiveaux();
                                        }
        }
        
        
        
        public function initialiserParametresVerif() {
                $this->niveaux = array('CLA','ALL','ORD','ASS','GRPT','SUBORD','SUBASS','BC','SUBCLA','DC','SUBALL');
                $this->synonymes = array('incl','=','?','illeg','pp','pmaxp','pminp','compl','ambig','non','inval','nn','ined');
                $this->motifs= $this->inverserTableau(array('/^[0-9]+$/' => 1,
                                                                                                                '/(?:[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));
                //présence de '=' , '= ?' et ',' dans les valeurs des paramètres. ne pas utiliser getParametresTableau.
        }
        
        //++---------------------------------traitements des colonnes baseveg------------------------------------++
        /**
         *
         * verifie le champ niveau
         */
        public function verifierNiveaux(){
                if (preg_match("/^syn(.+)$/", $this->colonne_valeur, $retour) == 1) {
                        $synonymes = explode(' ', trim($retour[1]));
                        foreach($synonymes as $syn){
                                if  (!in_array($syn, $this->synonymes)) {
                                        $this->noterErreur();
                                }
                        }
                } elseif($this->colonne_valeur != '') {
                        if (!in_array($this->colonne_valeur , $this->niveaux)) {
                                $this->noterErreur();
                        }
                }
        }

        
        /**
        *
        * vérifie un motif sur la valeur entière d'une colonne par expression régulière
        *
        */
        public function verifierColonne(){
                $motif = $this->motifs[$this->colonne_num];
                if (preg_match($motif, $this->colonne_valeur) == 0 && $this->verifierSiVide() == false){
                        $this->noterErreur();
                }
        }

        
        /**
         *
         * vérifie si une colonne est vide ou non de valeurs
         *
         */
        public function verifierSiVide(){
                $vide = ($this->colonne_valeur  == '') ? true : false;
                return $vide;
        }
        
        
        
        /*--------------------------------------------OUtils-------------------------------------------*/
        
        //attention , dans les motifs !!
        
        private function inverserTableau($tableau) {
                $inverse = array();
                foreach ($tableau as $cle => $valeurs) {
                        $valeurs = explode(';', $valeurs);
                        foreach ($valeurs as $valeur) {
                                $inverse[$valeur] = $cle;
                        }
                }
                return $inverse;
        }
}

?>