Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 207 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 207 Rev 215
1
<?php
1
<?php
2
class Versions {
2
class Versions {
3
	private $parametres = null;
3
	private $parametres = null;
-
 
4
	private $ressources = null;
4
	private $bdd = null;
5
	private $bdd = null;
5
	private $projetNom = null;
6
	private $projetNom = null;
6
	private $versionsDispo = array();
7
	private $versionsDispo = array();
7
	private $versionCourrante = array();
8
	private $versionCourrante = array();
8
 
9
 
9
	public function __construct(Parametres $parametres, Bdd $bdd,$projetNom) {
10
	public function __construct(Parametres $parametres, Ressources $ressources, Bdd $bdd) {
-
 
11
		$this->parametres = $parametres;
10
		$this->parametres = $parametres;
12
		$this->ressources = $ressources;
11
		$this->bdd = $bdd;
13
		$this->bdd = $bdd;
12
		$this->projetNom = $projetNom;
14
		$this->projetNom = $this->ressources->getProjetNom();
13
		$this->versionsDispo = $this->chargerVersionsDisponibles();
15
		$this->versionsDispo = $this->chargerVersionsDisponibles();
14
	}
16
	}
15
 
17
 
16
	private function chargerVersionsDisponibles() {
18
	private function chargerVersionsDisponibles() {
17
		$tableMeta = $this->projetNom.'_meta';
19
		$tableMeta = $this->projetNom.'_meta';
18
		$requete = "SELECT version FROM $tableMeta";
20
		$requete = "SELECT version FROM $tableMeta";
19
		$resultat = $this->bdd->recupererTous($requete);
21
		$resultat = $this->bdd->recupererTous($requete);
20
		if ($resultat == '') {
22
		if ($resultat == '') {
21
			//cas ou la requete comporte des erreurs
23
			//cas ou la requete comporte des erreurs
22
			$message = "La requête SQL de versionnage formée comporte une erreur : $requete";
24
			$message = "La requête SQL de versionnage formée comporte une erreur : $requete";
23
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
25
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
24
			throw new Exception($message, $code);
26
			throw new Exception($message, $code);
25
		} elseif ($resultat === false) {
27
		} elseif ($resultat === false) {
26
			$message = "Versions introuvables dans la table des méta-données";
28
			$message = "Versions introuvables dans la table des méta-données";
27
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
29
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
28
			throw new Exception($message, $code);
30
			throw new Exception($message, $code);
29
		} else {
31
		} else {
30
			foreach ($resultat as $version) {
32
			foreach ($resultat as $version) {
31
				$versionsDispo[] = $version['version'];
33
				$versionsDispo[] = $version['version'];
32
			}
34
			}
33
		}
35
		}
34
 
36
 
35
		return $versionsDispo;
37
		return $versionsDispo;
36
	}
38
	}
37
 
39
 
38
	public function getVersions() {
40
	public function getVersions() {
39
		$versions = array();
41
		$versions = array();
40
		$versionDemandee = $this->parametres->get('version.projet');
42
		$versionDemandee = $this->parametres->get('version.projet');
41
		if ($versionDemandee == '+') {
43
		if ($versionDemandee == '+') {
42
			$versions[] = end($this->versionsDispo);
44
			$versions[] = end($this->versionsDispo);
43
		} else if (is_numeric($versionDemandee)) {
45
		} else if (is_numeric($versionDemandee)) {
44
			if (in_array($versionDemandee, $this->versionsDispo)) {
46
			if (in_array($versionDemandee, $this->versionsDispo)) {
45
				$versions[] = $versionDemandee;
47
				$versions[] = $versionDemandee;
46
			}
48
			}
47
		} else if ($versionDemandee == '*') {
49
		} else if ($versionDemandee == '*') {
48
			$versions = $this->versionsDispo;
50
			$versions = $this->versionsDispo;
49
		}
51
		}
50
		$versions = $this->remplacerPointParUnderscore($versions);
52
		$versions = $this->remplacerPointParUnderscore($versions);
51
		return $versions;
53
		return $versions;
52
	}
54
	}
53
 
55
 
54
	private function remplacerPointParUnderscore($versions) {
56
	private function remplacerPointParUnderscore($versions) {
55
		foreach ($versions as $cle => $valeur) {
57
		foreach ($versions as $cle => $valeur) {
56
			$versions[$cle] = str_replace('.', '_', $valeur);
58
			$versions[$cle] = str_replace('.', '_', $valeur);
57
		}
59
		}
58
		return $versions;
60
		return $versions;
59
	}
61
	}
60
}
62
}
61
?>
63
?>