Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 215 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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