Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 579 | Rev 612 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 579 Rev 596
Line 22... Line 22...
22
 
22
 
Line 23... Line 23...
23
 
23
 
24
class Informations extends Commun {
24
class Informations extends Commun {
25
	
25
	
26
	protected $limite_requete = array( 'depart' => 0, 'limite' => 10);
26
	protected $limite_requete = array( 'depart' => 0, 'limite' => 10);
27
	private $table = "";
27
	private $tables;
28
	private $champs_recherches = '*';
28
	private $champs_recherches = '*';
29
	private $requete_jointure = "";
29
	private $requete_jointure = "";
Line 36... Line 36...
36
			$this->parametres =  $parametres;
36
			$this->parametres =  $parametres;
37
			$versionResultat = null;
37
			$versionResultat = null;
38
			if (empty($this->ressources)){
38
			if (empty($this->ressources)){
39
				$this->traiterParametres();
39
				$this->traiterParametres();
40
			}
40
			}
-
 
41
			$this->definirTables(array ('index' => config::get('bdd_table_index'),
-
 
42
										'baseflor' => config::get('bdd_table'),
-
 
43
										'rangSup' => config::get('bdd_table_rang_sup')
-
 
44
										)
-
 
45
								);
41
			$this->traiterRessources();
46
			$this->traiterRessources();
42
			$requete = $this->assemblerLaRequete();
47
			$requete = $this->assemblerLaRequete();
43
			$resultat = $this->Bdd->recupererTous($requete);
48
			$resultat = $this->Bdd->recupererTous($requete);
44
			$versionResultat = $this->renvoyerResultat($resultat);
49
			$versionResultat = $this->renvoyerResultat($resultat);
45
			if ($versionResultat == null) {
50
			if ($versionResultat == null) {
Line 51... Line 56...
51
	}
56
	}
Line 52... Line 57...
52
 
57
 
53
	public function __construct() {
58
	public function __construct() {
54
		$Conteneur = new Conteneur();
59
		$Conteneur = new Conteneur();
55
		$this->Bdd = $Conteneur ->getBdd();
-
 
56
		$prefixe_table = array ('index' => config::get('bdd_table_index'),
-
 
57
								'baseflor' => config::get('bdd_table'),
-
 
58
								'rangSup' => config::get('bdd_table_rang_sup'));
-
 
59
		$this->tables = $this->definirTables($prefixe_table);
-
 
60
		$this->table = $this->tables['index'];
60
		$this->Bdd = $Conteneur ->getBdd();
Line 61... Line 61...
61
	}
61
	}
62
	
62
	
63
	public function renvoyerResultat($resultat) {
63
	public function renvoyerResultat($resultat) {
Line 77... Line 77...
77
	//+--------------------------traitement ressources ou paramètres  -------------------------------------+
77
	//+--------------------------traitement ressources ou paramètres  -------------------------------------+
Line 78... Line 78...
78
	
78
	
79
 
79
 
80
	public function traiterRessources() {
-
 
81
		if (empty($this->ressources)) {	
80
	public function traiterRessources() {
82
			
81
		if (empty($this->ressources)) {	
83
			$this->requete_jointure = array(
82
			$this->requete_jointure = array(
84
				'LEFT JOIN '. $this->tables['baseflor'].' ON '
83
				'LEFT JOIN '. $this->tables['baseflor'].' ON '
85
				.$this->tables['baseflor'].".cle =".$this->table.".baseflor",
84
				.$this->tables['baseflor'].".cle =".$this->tables['index'].".baseflor",
Line 86... Line 85...
86
				'LEFT JOIN '. $this->tables['rangSup'].' ON '
85
				'LEFT JOIN '. $this->tables['rangSup'].' ON '
87
				.$this->tables['rangSup'].".cle = ".$this->table.".RangSup");
86
				.$this->tables['rangSup'].".cle = ".$this->tables['index'].".RangSup");
88
			
87
			
89
			$this->champs_recherches = " {$this->tables['baseflor']}.num_nomen as 'baseflor.nn',
88
			$this->champs_recherches = " {$this->tables['baseflor']}.num_nomen as 'baseflor.nn',
90
						{$this->tables['baseflor']}.BDNT as 'baseflor.bdnt', 
89
						{$this->tables['baseflor']}.BDNT as 'baseflor.bdnt', 
91
						{$this->tables['baseflor']}.catminat_code,
90
						{$this->tables['baseflor']}.catminat_code,
92
						{$this->tables['baseflor']}.num_taxon , 
91
						{$this->tables['baseflor']}.num_taxon , 
93
						{$this->tables['rangSup']}.num_nomen as 'rangSup.nn', 
92
						{$this->tables['rangSup']}.num_nomen as 'rangSup.nn', 
94
						{$this->tables['rangSup']}.bdnt as 'rangSup.bdnt',
93
						{$this->tables['rangSup']}.bdnt as 'rangSup.bdnt',
95
						{$this->table}.cle as 'index.cle' ";
94
						{$this->tables['index']}.cle as 'index.cle' ";
96
		} else {
95
		} else {
97
			if(preg_match('/^(.+)\.nn:([0-9]+)$/', $this->ressources[0], $retour)){
96
			if(preg_match('/^(.+)\.nn:([0-9]+)$/', $this->ressources[0], $retour)){
Line 115... Line 114...
115
						$this->definirNavigationDepart($valeur);
114
						$this->definirNavigationDepart($valeur);
116
						break;
115
						break;
117
					case 'navigation.limite'  :
116
					case 'navigation.limite'  :
118
						$this->definirNavigationLimite($valeur);
117
						$this->definirNavigationLimite($valeur);
119
						break;
118
						break;
120
					case 'version.projet' :
119
					case 'version.projet' : 
121
						$this->traiterVersion($valeur);
120
						$this->traiterVersion($valeur);
122
						break;
121
						break;
123
					default :
122
					default :
124
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
123
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
125
					.$param.' " n\'existe pas.';
124
					.$param.' " n\'existe pas.';
Line 145... Line 144...
145
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
144
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
146
			throw new Exception($message, $code);
145
			throw new Exception($message, $code);
147
		}
146
		}
148
	}
147
	}
Line 149... Line 148...
149
	
148
	
150
	public function DefinirTables($prefixe_table) {
149
	public function definirTables($prefixe_table) {
151
		$table_num_version = $this->recupererVersionDisponible();
150
		$table_num_version = $this->recupererVersionDisponible();
152
		foreach ($prefixe_table as $nom => $prefixe ) {
151
		foreach ($prefixe_table as $nom => $prefixe ) {
153
			if ( in_array($this->version_projet,$table_num_version) ) {
152
			if ( in_array($this->version_projet,$table_num_version) ) {
154
				$tables[$nom] = $prefixe.'_v'.$this->version_projet;
153
				$tables[$nom] = $prefixe.'_v'.$this->version_projet;
Line 158... Line 157...
158
			} else {
157
			} else {
159
				$e = "Erreur : La version est inconnue.";
158
				$e = "Erreur : La version est inconnue.";
160
				throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
159
				throw new Exception($e, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
161
			}
160
			}
162
		}
161
		}
163
		return $tables;
162
		$this->tables = $tables;
164
	}
163
	}
Line 165... Line 164...
165
	
164
	
Line 213... Line 212...
213
	
212
	
Line 214... Line 213...
214
	//+-------------------------------------assemblage de requête------------------------------------//
213
	//+-------------------------------------assemblage de requête------------------------------------//
215
	
214
	
216
	
215
	
217
	public function assemblerLaRequete() {
216
	public function assemblerLaRequete() {
218
		$requete = 	' SELECT '.$this->champs_recherches.' FROM '.$this->table.' '
217
		$requete = 	' SELECT '.$this->champs_recherches.' FROM '.$this->tables['index'].' '
219
		.$this->retournerRequeteJointure().' '.$this->retournerRequeteCondition().
218
		.$this->retournerRequeteJointure().' '.$this->retournerRequeteCondition().
Line 229... Line 228...
229
		return $condition;
228
		return $condition;
230
	}
229
	}
Line 231... Line 230...
231
	
230
	
232
	
231
	
233
	public function calculerTotalResultat() {
232
	public function calculerTotalResultat() {
234
		$requete = 'SELECT count(*) as nombre FROM '.$this->table;
233
		$requete = 'SELECT count(*) as nombre FROM '.$this->tables['index'];
235
		$res = $this->getBdd()->recuperer($requete);
234
		$res = $this->getBdd()->recuperer($requete);
236
		if ($res) {
235
		if ($res) {
237
			$this->total_resultat = $res['nombre'];
236
			$this->total_resultat = $res['nombre'];