Rev 215 | Blame | Last modification | View Log | RSS feed
<?php
class Versions {
private $parametres = null;
private $ressources = null;
private $bdd = null;
private $projetNom = null;
private $versionsDispo = array();
private $versionCourrante = array();
public function __construct(Parametres $parametres, Ressources $ressources, Bdd $bdd) {
$this->parametres = $parametres;
$this->ressources = $ressources;
$this->bdd = $bdd;
$this->projetNom = $this->ressources->getProjetNom();
$this->versionsDispo = $this->chargerVersionsDisponibles();
}
private function chargerVersionsDisponibles() {
$tableMeta = $this->projetNom.'_meta';
$requete = "SELECT version FROM $tableMeta";
$resultat = $this->bdd->recupererTous($requete);
if ($resultat == '') {
//cas ou la requete comporte des erreurs
$message = "La requête SQL de versionnage formée comporte une erreur : $requete";
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
} elseif ($resultat === false) {
$message = "Versions introuvables dans la table des méta-données";
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
} else {
foreach ($resultat as $version) {
$versionsDispo[] = $version['version'];
}
}
return $versionsDispo;
}
public function getVersions() {
$versions = array();
$versionDemandee = $this->parametres->get('version.projet');
if ($versionDemandee == '+') {
$versions[] = end($this->versionsDispo);
} else if (is_numeric($versionDemandee)) {
if (in_array($versionDemandee, $this->versionsDispo)) {
$versions[] = $versionDemandee;
}
} else if ($versionDemandee == '*') {
$versions = $this->versionsDispo;
}
$versions = $this->remplacerPointParUnderscore($versions);
return $versions;
}
private function remplacerPointParUnderscore($versions) {
if (count($versions) > 0) {
foreach ($versions as $cle => $valeur) {
$versions[$cle] = str_replace('.', '_', $valeur);
}
}
return $versions;
}
}
?>