Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 215 → Rev 216

/trunk/services/bibliotheque/VersionVerificateur.php
New file
0,0 → 1,44
<?php
class VersionVerificateur {
 
private $ressources = null;
private $parametres = null;
private $versions = null;
 
public function __construct(Ressources $ressources, Parametres $parametres, Versions $versions) {
$this->ressources = $ressources;
$this->parametres = $parametres;
$this->versions = $versions;
}
 
public function verifier() {
$this->verifierDispoMultiProjetPourService();
$this->verifierExistance();
}
 
private function verifierDispoMultiProjetPourService() {
$servicesMultiProjet = array('NomDetails');
$classeService = $this->ressources->getServiceClasse();
$versionDemandee = $this->parametres->get('version.projet');
if ($versionDemandee == '*' && in_array($classeService, $servicesMultiProjet) === false) {
$message = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
throw new Exception($message, $code);
}
}
 
private function verifierExistance() {
$versionDemandee = $this->parametres->get('version.projet');
$versionTrouvee = $this->versions->getVersions();
if (is_numeric($versionDemandee)) {
if (count($versionTrouvee) == 0) {
$projet = $this->ressources->getProjetNom();
$message = "La version '$versionDemandee' n'est pas disponible pour le projet '$projet' !";
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
throw new Exception($message, $code);
}
}
 
}
}
?>