Subversion Repositories eFlore/Applications.cel

Rev

Rev 2131 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2083 aurelien 1
<?php
2135 mathias 2
class CelImageFormat {
2083 aurelien 3
 
2135 mathias 4
	private $config;
5
	private $formats = array('CRX2S','CRXS','CXS','CS','CRS','XS','S','M','L','XL','X2L','X3L','O');
6
 
7
	// Pas besoin d'étendre Cel ici, surtout que le constructeur
8
	// de la classe Cel instancie toujours une connexion à la bdd
9
	// dont on a pas besoin ici. Ceci évite de planter le service
10
	// quand la bdd est surchargée.
11
	public function __construct($config) {
12
		$this->config = $config;
13
	}
14
 
2083 aurelien 15
	/**
16
	* Méthode appelée avec une requête de type GET.
17
	*/
18
	public function getElement($params) {
2135 mathias 19
		// suppression des 0 non significatifs à gauche
2083 aurelien 20
		$id = ltrim($params[0],'0');
21
		$format = isset($_GET['format']) ? $_GET['format'] : 'M';
22
 
2135 mathias 23
		if($this->verifierParametres($id, $format)) {
24
			$gestion_formats_images = new ImageRecreation($this->config);
25
			$image_binaire = $gestion_formats_images->creerOuRenvoyerImage($params[0], $format);
26
 
27
			if($image_binaire) {
28
				header('Content-Type: image/jpeg');
29
				echo $image_binaire;
30
				exit;
31
			} else {
32
				header("HTTP/1.0 404 Not Found");
33
				echo 'Aucune image ne correspond à cet identifiant';
34
			}
35
		}
36
	}
37
 
38
	private function verifierParametres($id, $format) {
39
		$ok = true;
40
		$message = '';
41
		if(!is_numeric($id)) {
42
			$message .= "L'identifiant de format doit être un entier. ";
43
			$ok = false;
44
		}
2083 aurelien 45
 
2135 mathias 46
		if(!in_array($format, $this->formats)) {
47
			$message .= "Le format d'image est inconnu, les formats acceptés sont ".implode(',', $this->formats).". ";
48
			$ok = false;
2083 aurelien 49
		}
2135 mathias 50
 
51
		if(!empty($message)) {
52
			header("HTTP/1.0 400 Bad Request");
53
			echo $message;
54
		}
55
 
56
		return $ok;
2083 aurelien 57
	}
58
}