Révision eb537a36
Ajouté par Jocelyn Delande il y a environ 11 ans
class/site_point.class.php | ||
---|---|---|
1 | 1 |
<?php |
2 | 2 |
require_once(dirname(__FILE__).'/../constants.inc.php'); |
3 |
|
|
4 |
// |
|
5 |
class PanoramaFormatException extends Exception { |
|
6 |
/** If the files organization is not correct for a panorama, we can't let it go... |
|
7 |
*/ |
|
8 |
} |
|
9 |
|
|
3 | 10 |
class site_point { |
4 | 11 |
/** Defines a point, with a panorama |
5 | 12 |
*/ |
... | ... | |
11 | 18 |
|
12 | 19 |
public function __construct($dir) { |
13 | 20 |
// si $dir n'est pas un répertoire il ne s'agit pas d'un panorama. |
14 |
if (!is_dir($dir)) return; |
|
21 |
if (!is_dir($dir)) { |
|
22 |
throw new PanoramaFormatException("$dir does not contain a panorama"); |
|
23 |
} |
|
15 | 24 |
$this->base_dir = $dir; |
16 |
$dir_fd = opendir($this->base_dir); |
|
17 |
|
|
18 |
while (false !== ($file = readdir($dir_fd))) { |
|
19 |
|
|
20 |
if (preg_match('/(.*)_[0-9]+_[0-9]+_[0-9]+\.jpg$/', $file, $reg)) { |
|
21 |
$this->prefix = $reg[1]; |
|
22 |
|
|
23 |
break; |
|
24 |
} |
|
25 |
} |
|
26 |
closedir($dir_fd); |
|
27 |
if ($this->prefix === false) return false; |
|
28 |
$this->parse_and_cache_params(); |
|
25 |
$this->prefix = basename($dir); |
|
29 | 26 |
} |
30 | 27 |
|
31 | 28 |
public function params_path() { |
... | ... | |
34 | 31 |
|
35 | 32 |
private function parse_and_cache_params() { |
36 | 33 |
if (is_file($this->params_path())) { |
37 |
$this->params = @parse_ini_file($this->params_path()); |
|
34 |
$params = parse_ini_file($this->params_path()); |
|
35 |
if ($params) { |
|
36 |
$this->params = $params; |
|
37 |
return $params; |
|
38 |
} |
|
38 | 39 |
} |
40 |
return array(); |
|
39 | 41 |
} |
40 | 42 |
|
41 | 43 |
public function get_params() { |
42 | 44 |
// the params are cached |
43 |
if (isset($this->params)) { |
|
45 |
if (isset($this->params) && $this->params) {
|
|
44 | 46 |
return $this->params; |
45 | 47 |
} else { |
46 |
return parse_and_cache_params(); |
|
48 |
return $this->parse_and_cache_params();
|
|
47 | 49 |
} |
48 | 50 |
} |
49 | 51 |
|
... | ... | |
161 | 163 |
} |
162 | 164 |
|
163 | 165 |
|
164 |
public static function get_all() { |
|
166 |
public static function get_all($only_with_params=false) { |
|
167 |
/** |
|
168 |
* @param $only_with_params : filters out the panoramas which are not parametrized |
|
169 |
*/ |
|
165 | 170 |
$panos = array_diff(scandir(PANORAMA_PATH), array('..', '.')); |
166 | 171 |
$pano_instances = array(); |
172 |
|
|
167 | 173 |
foreach ($panos as $pano_name) { |
168 |
$pano_instances[] = site_point::get($pano_name); |
|
174 |
$pano = site_point::get($pano_name); |
|
175 |
if (! $only_with_params || $pano->has_params() ) { |
|
176 |
$pano_instances[] = $pano; |
|
177 |
} |
|
169 | 178 |
} |
170 | 179 |
return $pano_instances; |
171 | 180 |
} |
Formats disponibles : Unified diff
small fixes arround site_point::get_all() usage