Commit 4a438b99da5ded006edce23c875f4dcbc1004e81
1 parent
e82af71b
Exists in
master
and in
112 other branches
catalog draft
Showing
3 changed files
with
263 additions
and
225 deletions
Show diff stats
php/classes/CatalogCacheMgr.php
... | ... | @@ -10,7 +10,8 @@ class CatIntervalCacheObject extends IntervalCacheObject |
10 | 10 | // for catalog |
11 | 11 | private $params = array(); |
12 | 12 | |
13 | - public function toArray() { | |
13 | + public function toArray() | |
14 | + { | |
14 | 15 | $result = array( |
15 | 16 | "cacheId" => $this->id, |
16 | 17 | "start" => $this->getStartToISO(), |
... | ... | @@ -30,26 +31,28 @@ class CatIntervalCacheObject extends IntervalCacheObject |
30 | 31 | } |
31 | 32 | |
32 | 33 | // for catalog |
33 | - public function setParams($params) { | |
34 | - $this->params = $params; | |
35 | - | |
34 | + public function setParams($params) | |
35 | + { | |
36 | + $this->params = $params; | |
36 | 37 | } |
37 | 38 | |
38 | - public function getParams() { | |
39 | + public function getParams() | |
40 | + { | |
39 | 41 | return $this->params; |
40 | 42 | } |
41 | 43 | |
42 | - public function writeBin($handle, $paramsNumber, $paramsSizes) { | |
44 | + public function writeBin($handle, $paramsNumber, $paramsSizes) | |
45 | + { | |
43 | 46 | fwrite($handle,pack('L6',$this->id,$this->index,$this->start,$this->stop,$this->isNew,$this->isModified)); |
44 | 47 | for ($i = 0; $i < $paramsNumber; $i++) { |
45 | 48 | $paramString = $this->params[$i]; |
46 | 49 | $paramArray = explode(',',$this->params[$i]); |
47 | 50 | for ($j = 0; $j < $paramsSizes[$i]; $j++) fwrite($handle,pack('d', $paramArray[$j])); |
48 | - } | |
49 | - | |
51 | + } | |
50 | 52 | } |
51 | 53 | |
52 | - public function loadBin($handle, $paramsNumber, $paramsSizes) { | |
54 | + public function loadBin($handle, $paramsNumber, $paramsSizes) | |
55 | + { | |
53 | 56 | $array = unpack('L6int',fread($handle,6*4)); |
54 | 57 | $this->id = $array['int1']; |
55 | 58 | $this->index = $array['int2']; |
... | ... | @@ -69,7 +72,8 @@ class CatIntervalCacheObject extends IntervalCacheObject |
69 | 72 | |
70 | 73 | } |
71 | 74 | |
72 | - public function dump() { | |
75 | + public function dump() | |
76 | + { | |
73 | 77 | echo " => Interval : id = ".$this->id.", index = ".$this->index.", start = ".$this->start.", stop = ".$this->stop.", isNew = ".$this->isNew.", isModified = ".$this->isModified.PHP_EOL; |
74 | 78 | } |
75 | 79 | } |
... | ... | @@ -79,36 +83,40 @@ class CatalogCacheObject extends TimeTableCacheObject |
79 | 83 | private $paramsNumber; |
80 | 84 | private $paramsSizes = array(); |
81 | 85 | |
82 | - public function addInterval($startIso, $stopIso, $params, $isNew = false, $index = -1) { | |
83 | - $interval = new CatIntervalCacheObject($this->lastId, count($this->intervals)); | |
84 | - ++$this->lastId; | |
85 | - $interval->setStartFromISO($startIso); | |
86 | - $interval->setStopFromISO($stopIso); | |
87 | - // for catalog | |
88 | - $interval->setParams($params); | |
86 | + public function addInterval($startIso, $stopIso, $params, $isNew = false, $index = -1) | |
87 | + { | |
88 | + $interval = new CatIntervalCacheObject($this->lastId, count($this->intervals)); | |
89 | + ++$this->lastId; | |
90 | + $interval->setStartFromISO($startIso); | |
91 | + $interval->setStopFromISO($stopIso); | |
92 | + // for catalog | |
93 | + $interval->setParams($params); | |
89 | 94 | |
90 | - $interval->setIsNew($isNew); | |
91 | - array_push($this->intervals, $interval); | |
92 | - if ($index < 0) | |
93 | - array_push($this->indexes, count($this->intervals) - 1); | |
94 | - else | |
95 | - array_splice($this->indexes, $index, 0, array(count($this->intervals) - 1)); | |
96 | - if ($isNew) | |
97 | - $this->isModified = true; | |
98 | - | |
99 | - return $interval; | |
95 | + $interval->setIsNew($isNew); | |
96 | + array_push($this->intervals, $interval); | |
97 | + if ($index < 0) | |
98 | + array_push($this->indexes, count($this->intervals) - 1); | |
99 | + else | |
100 | + array_splice($this->indexes, $index, 0, array(count($this->intervals) - 1)); | |
101 | + if ($isNew) | |
102 | + $this->isModified = true; | |
103 | + | |
104 | + return $interval; | |
100 | 105 | } |
101 | 106 | |
102 | - public function setParamsNumber($number){ | |
107 | + public function setParamsNumber($number) | |
108 | + { | |
103 | 109 | $this->paramsNumber = $number; |
104 | 110 | } |
105 | 111 | |
106 | - public function setParamsSizes($params){ | |
107 | - for ($i = 0; $i < $this->paramsNumber; $i++) | |
108 | - $this->paramsSizes[$i] = $params[$i]['size']; | |
112 | + public function setParamsSizes($params) | |
113 | + { | |
114 | + for ($i = 0; $i < $this->paramsNumber; $i++) | |
115 | + $this->paramsSizes[$i] = $params[$i]['size']; | |
109 | 116 | } |
110 | 117 | |
111 | - public function writeBin($handle) { | |
118 | + public function writeBin($handle) | |
119 | + { | |
112 | 120 | //Magic key ("TTC") |
113 | 121 | fwrite($handle,pack('C3',ord('T'),ord('T'),ord('C'))); |
114 | 122 | |
... | ... | @@ -206,7 +214,7 @@ class CatalogCacheObject extends TimeTableCacheObject |
206 | 214 | $interval->loadBin($handle, $this->paramsNumber, $this->paramsSizes); |
207 | 215 | array_push($this->intervals, $interval); |
208 | 216 | } |
209 | - | |
217 | + | |
210 | 218 | //Indexes |
211 | 219 | $res = unpack('Ldata',fread($handle,4)); |
212 | 220 | $nbIndexes = $res['data']; |
... | ... | @@ -218,7 +226,6 @@ class CatalogCacheObject extends TimeTableCacheObject |
218 | 226 | |
219 | 227 | return true; |
220 | 228 | } |
221 | - | |
222 | 229 | } |
223 | 230 | |
224 | 231 | class CatalogCacheMgr extends TimeTableCacheMgr |
... | ... | @@ -273,11 +280,12 @@ class CatalogCacheMgr extends TimeTableCacheMgr |
273 | 280 | 'status' => $this->cache->getStatus(), 'parameters' => $paramHeaders); |
274 | 281 | } |
275 | 282 | |
276 | - public function initFromTT($id, $typeTT) { | |
283 | + public function initFromTT($id, $typeTT) | |
284 | + { | |
277 | 285 | //Create new cache |
278 | - $this->cache = new CatalogeCacheObject(); | |
286 | + $this->cache = new CatalogCacheObject(); | |
279 | 287 | |
280 | - //Load intervals from TT file and add to cache | |
288 | + //Load intervals from catalog file and add to cache | |
281 | 289 | $intervals_res = $this->ttMgr->loadIntervalsFromTT($id,$typeTT); |
282 | 290 | |
283 | 291 | if (!$intervals_res['success']) |
... | ... | @@ -286,21 +294,26 @@ class CatalogCacheMgr extends TimeTableCacheMgr |
286 | 294 | foreach ($intervals_res['intervals'] as $interval) |
287 | 295 | { |
288 | 296 | //Add interval |
289 | - $this->cache->addInterval($interval['start'], $interval['stop']); | |
297 | + $this->cache->addInterval($interval['start'], $interval['stop'], $interval['paramTable']); | |
290 | 298 | } |
291 | 299 | |
300 | + $paramHeaders = $intervals_res['parameters']; | |
301 | + | |
302 | + $this->cache->setParamsNumber(count($paramHeaders)); | |
303 | + $this->cache->setParamsSizes($paramHeaders); | |
292 | 304 | unset($intervals_res); |
293 | 305 | |
294 | 306 | //Update cache |
295 | 307 | $this->cache->updateIndexes(); |
296 | 308 | |
297 | 309 | //Save cache file |
298 | - return array('success' => $this->saveToFile(), 'token' => $this->cache->getToken(), 'status' => $this->cache->getStatus()); | |
310 | + return array('success' => $this->saveToFile(), 'token' => $this->cache->getToken(), | |
311 | + 'status' => $this->cache->getStatus(),'parameters' => $paramHeaders); | |
299 | 312 | } |
300 | 313 | |
301 | 314 | |
302 | - protected function loadFromFile() { | |
303 | - | |
315 | + protected function loadFromFile() | |
316 | + { | |
304 | 317 | if (!file_exists($this->getCacheFilePath())) |
305 | 318 | return false; |
306 | 319 | $this->cache = new CatalogCacheObject(); |
... | ... | @@ -313,15 +326,16 @@ class CatalogCacheMgr extends TimeTableCacheMgr |
313 | 326 | $result = true; |
314 | 327 | } |
315 | 328 | fclose($handle); |
316 | - return $result; | |
329 | + return $result; | |
317 | 330 | } |
318 | 331 | |
319 | - protected function getCacheFilePath() { | |
332 | + protected function getCacheFilePath() | |
333 | + { | |
320 | 334 | return USERTTDIR.(self::$cache_file); |
321 | 335 | } |
322 | 336 | |
323 | - public function saveInTT($id, $action, $token) { | |
324 | - | |
337 | + public function saveInTT($id, $action, $token) | |
338 | + { | |
325 | 339 | if (!$this->loadFromFile()) |
326 | 340 | return array('success' => false, 'message' => 'Cannot load cache file'); |
327 | 341 | |
... | ... | @@ -334,11 +348,8 @@ class CatalogCacheMgr extends TimeTableCacheMgr |
334 | 348 | $intervals = $this->cache->getIntervalsArray(NULL,NULL,true); |
335 | 349 | |
336 | 350 | $this->cache->reset(); |
337 | - | |
338 | - return $this->ttMgr->saveIntervals($id, $intervals, $action); | |
339 | - } | |
340 | 351 | |
341 | - | |
342 | - | |
352 | + return $this->ttMgr->saveIntervals($id, $intervals, $action); | |
353 | + } | |
343 | 354 | } |
344 | 355 | ?> |
345 | 356 | \ No newline at end of file |
... | ... |
php/classes/CatalogMgr.php
... | ... | @@ -100,10 +100,8 @@ class CatalogMgr extends TimeTableMgr { |
100 | 100 | $attributesToReturn['parameters'] = $paramsArray; |
101 | 101 | } |
102 | 102 | else |
103 | - return array('error' => 'No information on parameters in result file'); | |
104 | - | |
105 | - | |
106 | - } | |
103 | + return array('error' => 'No information on parameters in result file'); | |
104 | + } | |
107 | 105 | |
108 | 106 | return $attributesToReturn; |
109 | 107 | } |
... | ... | @@ -111,7 +109,6 @@ class CatalogMgr extends TimeTableMgr { |
111 | 109 | |
112 | 110 | public function loadIntervalsFromTT($id, $typeTT, $start = NULL, $limit = NULL) |
113 | 111 | { |
114 | - | |
115 | 112 | if ($typeTT == 'sharedcatalog') { |
116 | 113 | $pathid = SHAREDPATH.'TT/'.$id; |
117 | 114 | } |
... | ... | @@ -120,43 +117,71 @@ class CatalogMgr extends TimeTableMgr { |
120 | 117 | } |
121 | 118 | |
122 | 119 | //load intervals from TT id |
123 | - if (!file_exists($pathid.'.xml')) | |
124 | - return array('success' => false, 'message' => "Cannot find Catalog file ".$id); | |
120 | + if (!file_exists($pathid.'.xml')) | |
121 | + return array('success' => false, 'message' => "Cannot find Catalog file ".$id); | |
125 | 122 | |
126 | 123 | $this->objectDom->load($pathid.'.xml'); |
127 | 124 | |
128 | - if (!($objToGet = $this->objectDom->getElementById($id))) | |
129 | - return array('success' => false, 'message' => NO_SUCH_ID." ".$id); | |
125 | + if (!($objToGet = $this->objectDom->getElementById($id))) | |
126 | + return array('success' => false, 'message' => NO_SUCH_ID." ".$id); | |
130 | 127 | |
131 | 128 | $xpath = new DOMXPath($this->objectDom); |
132 | 129 | $intervals = $xpath->query('//intervals'); |
133 | 130 | |
134 | 131 | $result = array(); |
135 | 132 | |
136 | - if (!isset($start) || !isset($limit)) | |
137 | - { | |
138 | - foreach ($intervals as $interval) | |
139 | - { | |
140 | - $startTime = $interval->getElementsByTagName('start')->item(0)->nodeValue; | |
141 | - $stopTime = $interval->getElementsByTagName('stop')->item(0)->nodeValue; | |
142 | - array_push($result, array('start' => $startTime, 'stop' => $stopTime)); | |
143 | - } | |
144 | - } | |
145 | - else | |
133 | + if (!isset($start) || !isset($limit)) | |
134 | + { | |
135 | + foreach ($intervals as $interval) | |
136 | + { | |
137 | + $startTime = $interval->getElementsByTagName('start')->item(0)->nodeValue; | |
138 | + $stopTime = $interval->getElementsByTagName('stop')->item(0)->nodeValue; | |
139 | + // for catalog | |
140 | + $paramNodes = $interval->getElementsByTagName('param'); | |
141 | + $params = array(); | |
142 | + if ($paramNodes->length > 0) | |
143 | + foreach ( $paramNodes as $paramNode ) $params[] = $paramNode->nodeValue; | |
144 | + | |
145 | + array_push($result, array('start' => $startTime, 'stop' => $stopTime,'paramTable' => $params)); | |
146 | + | |
147 | + } | |
148 | + } | |
149 | + else | |
146 | 150 | { |
147 | - for ($i = 0; $i < $limit; ++$i) | |
148 | - { | |
151 | + for ($i = 0; $i < $limit; ++$i) | |
152 | + { | |
149 | 153 | if ($start+$i >= $intervals->length) |
150 | 154 | break; |
151 | - $startTime = $intervals->item($start+$i)->getElementsByTagName('start')->item(0)->nodeValue; | |
152 | - $stopTime = $intervals->item($start+$i)->getElementsByTagName('stop')->item(0)->nodeValue; | |
153 | - array_push($result, array('start' => $startTime, 'stop' => $stopTime)); | |
154 | - } | |
155 | - } | |
156 | - | |
157 | - return array( | |
155 | + $startTime = $intervals->item($start+$i)->getElementsByTagName('start')->item(0)->nodeValue; | |
156 | + $stopTime = $intervals->item($start+$i)->getElementsByTagName('stop')->item(0)->nodeValue; | |
157 | + // for catalog | |
158 | + $paramNodes = $intervals->item($start+$i)->getElementsByTagName('param'); | |
159 | + $params = array(); | |
160 | + if ($paramNodes->length > 0) | |
161 | + foreach ( $paramNodes as $paramNode ) $params[] = $paramNode->nodeValue; | |
162 | + | |
163 | + array_push($result, array('start' => $startTime, 'stop' => $stopTime,'paramTable' => $params)); | |
164 | + } | |
165 | + } | |
166 | + // for catalog : params header | |
167 | + $paramsNodes = $xpath->query('//parametres/param'); | |
168 | + $paramsArray = array(); | |
169 | + | |
170 | + if ($paramsNodes->length > 0) | |
171 | + { | |
172 | + foreach ($paramsNodes as $paramNode) | |
173 | + { | |
174 | + $oneParam = array(); | |
175 | + foreach ($paramNode->attributes as $attr) | |
176 | + $oneParam[$attr->nodeName] = $attr->nodeValue; | |
177 | + $paramsArray[] = $oneParam; | |
178 | + } | |
179 | + } | |
180 | + | |
181 | + return array( | |
158 | 182 | 'totalCount' => $intervals->length, |
159 | 183 | 'intervals' => $result, |
184 | + 'parameters' => $paramsArray, | |
160 | 185 | 'start' => isset($start) ? $start : 0, |
161 | 186 | 'limit' => isset($limit) ? $limit : 0, |
162 | 187 | 'success' => true |
... | ... | @@ -167,34 +192,36 @@ class CatalogMgr extends TimeTableMgr { |
167 | 192 | /* |
168 | 193 | * catalog header |
169 | 194 | */ |
170 | - protected function setParamDescription($params) { | |
171 | - | |
172 | - $paramsElement = $this->objectDom->createElement('parametres'); | |
173 | - foreach ($params as $param) { | |
174 | - $paramElement = $this->objectDom->createElement('param'); | |
175 | - $attrArray = (array)$param; | |
176 | - foreach ($attrArray as $key => $value) | |
177 | - $paramElement->setAttribute($key, $value); | |
178 | - $paramsElement->appendChild($paramElement); | |
179 | - } | |
180 | - | |
181 | - return $paramsElement; | |
182 | - } | |
183 | - | |
184 | - protected function createIntervalElement($interval) { | |
185 | - $newInterval = $this->objectDom->createElement('intervals'); | |
186 | - $newInterval->appendChild($this->objectDom->createElement('start',$interval['start'])); | |
187 | - $newInterval->appendChild($this->objectDom->createElement('stop',$interval['stop'])); | |
188 | - foreach ($interval as $key =>$value) { | |
189 | - if (substr($key,0,5) == 'param') | |
190 | - $newInterval->appendChild($this->objectDom->createElement('param', $value)); | |
191 | - | |
195 | + protected function setParamDescription($params) | |
196 | + { | |
197 | + $paramsElement = $this->objectDom->createElement('parametres'); | |
198 | + foreach ($params as $param) | |
199 | + { | |
200 | + $paramElement = $this->objectDom->createElement('param'); | |
201 | + $attrArray = (array)$param; | |
202 | + foreach ($attrArray as $key => $value) | |
203 | + $paramElement->setAttribute($key, $value); | |
204 | + $paramsElement->appendChild($paramElement); | |
205 | + } | |
206 | + | |
207 | + return $paramsElement; | |
192 | 208 | } |
209 | + | |
210 | + protected function createIntervalElement($interval) | |
211 | + { | |
212 | + $newInterval = $this->objectDom->createElement('intervals'); | |
213 | + $newInterval->appendChild($this->objectDom->createElement('start',$interval['start'])); | |
214 | + $newInterval->appendChild($this->objectDom->createElement('stop',$interval['stop'])); | |
215 | + foreach ($interval as $key =>$value) { | |
216 | + if (substr($key,0,5) == 'param') | |
217 | + $newInterval->appendChild($this->objectDom->createElement('param', $value)); | |
218 | + | |
219 | + } | |
193 | 220 | return $newInterval; |
194 | 221 | } |
195 | 222 | |
196 | - public function createObject($p, $folder){ | |
197 | - | |
223 | + public function createObject($p, $folder) | |
224 | + { | |
198 | 225 | if ($p -> leaf) |
199 | 226 | { |
200 | 227 | $result = $this->createParameter($p, $folder); |
... | ... |
php/classes/TimeTableMgr.php
... | ... | @@ -7,23 +7,23 @@ |
7 | 7 | * |
8 | 8 | */ |
9 | 9 | |
10 | -function timeFormat($myString) { | |
11 | - if (format == "Y z H i s") { | |
12 | - $tt = getdate(strtotime($myString)); | |
13 | - return sprintf("%04d",$tt["year"])." " | |
14 | - .sprintf("%03d",$tt["yday"]+1)." " | |
15 | - .sprintf("%02d",$tt["hours"])." " | |
16 | - .sprintf("%02d",$tt["minutes"])." " | |
17 | - .sprintf("%02d",$tt["seconds"]); | |
18 | - } | |
19 | - return date(format,strtotime($myString)); | |
20 | - | |
21 | - } | |
22 | - | |
23 | -class TimeTableMgr extends AmdaObjectMgr { | |
24 | - | |
10 | +function timeFormat($myString) | |
11 | +{ | |
12 | + if (format == "Y z H i s") { | |
13 | + $tt = getdate(strtotime($myString)); | |
14 | + return sprintf("%04d",$tt["year"])." " | |
15 | + .sprintf("%03d",$tt["yday"]+1)." " | |
16 | + .sprintf("%02d",$tt["hours"])." " | |
17 | + .sprintf("%02d",$tt["minutes"])." " | |
18 | + .sprintf("%02d",$tt["seconds"]); | |
19 | + } | |
20 | + return date(format,strtotime($myString)); | |
21 | +} | |
25 | 22 | |
26 | - function __construct($user) { | |
23 | +class TimeTableMgr extends AmdaObjectMgr | |
24 | +{ | |
25 | + function __construct($user) | |
26 | + { | |
27 | 27 | parent::__construct('Tt.xml'); |
28 | 28 | $this->contentRootId = 'timeTable-treeRootNode'; |
29 | 29 | $this->contentRootTag = 'timetabList'; |
... | ... | @@ -38,7 +38,6 @@ class TimeTableMgr extends AmdaObjectMgr { |
38 | 38 | } |
39 | 39 | } |
40 | 40 | |
41 | - | |
42 | 41 | protected function createDom() { |
43 | 42 | |
44 | 43 | $types = array('timetab' => 'timeTable', 'catalog' => 'catalog'); |
... | ... | @@ -51,14 +50,15 @@ class TimeTableMgr extends AmdaObjectMgr { |
51 | 50 | $typeElement->setAttribute('xml:id', $contentId); |
52 | 51 | $rootElement->appendChild($typeElement); |
53 | 52 | } |
54 | - $this->contentDom->appendChild($rootElement); | |
53 | + $this->contentDom->appendChild($rootElement); | |
55 | 54 | $this->contentDom->save($this->xmlName); |
56 | 55 | } |
57 | 56 | |
58 | 57 | /* |
59 | - * rename Time Table in id.xml | |
60 | - */ | |
61 | - protected function renameInResource($name, $id) { | |
58 | + * rename Time Table in id.xml | |
59 | + */ | |
60 | + protected function renameInResource($name, $id) | |
61 | + { | |
62 | 62 | if (!file_exists(USERTTDIR.$id.'.xml')) return false; |
63 | 63 | |
64 | 64 | $this->objectDom -> load(USERTTDIR.$id.'.xml'); |
... | ... | @@ -69,13 +69,14 @@ class TimeTableMgr extends AmdaObjectMgr { |
69 | 69 | return true; |
70 | 70 | } |
71 | 71 | |
72 | - protected function deleteParameter($id){ | |
72 | + protected function deleteParameter($id) | |
73 | + { | |
73 | 74 | if (file_exists(USERTTDIR.$id.'.xml')) unlink(USERTTDIR.$id.'.xml'); |
74 | 75 | } |
75 | 76 | |
76 | 77 | /* |
77 | - * Check if difference is name and info only | |
78 | - */ | |
78 | + * Check if difference is name and info only | |
79 | + */ | |
79 | 80 | protected function renameOnly($p) { |
80 | 81 | //if (!($p->intervals)) return true; |
81 | 82 | return false; |
... | ... | @@ -90,7 +91,8 @@ class TimeTableMgr extends AmdaObjectMgr { |
90 | 91 | /* |
91 | 92 | * Create Time Table |
92 | 93 | */ |
93 | - protected function createParameter($p, $folder){ | |
94 | + protected function createParameter($p, $folder) | |
95 | + { | |
94 | 96 | if ($this -> objectExistsByName($p->name)) { |
95 | 97 | $p -> id = $this -> getObjectIdByName($p->name); |
96 | 98 | $this -> deleteObject($p); |
... | ... | @@ -137,119 +139,117 @@ class TimeTableMgr extends AmdaObjectMgr { |
137 | 139 | $obj->intervals = $p->nbIntervals; |
138 | 140 | $this -> addToContent($obj, $folder); |
139 | 141 | return array('id' => $this->id,'created' => $this->created,'info' =>$obj->intervals.' intervals' ); |
140 | - | |
141 | 142 | } |
142 | 143 | |
143 | - protected function call_intersection($fst, $snd) { | |
144 | - $inf = ( $fst[0] > $snd[0] ) ? $fst[0] : $snd[0]; | |
145 | - $sup = ( $fst[1] < $snd[1] ) ? $fst[1] : $snd[1]; | |
146 | - if ( $inf >= $sup ) { $inter[] = array(0,0); } | |
147 | - else {$inter[] = array($inf,$sup); } | |
148 | - return $inter; | |
149 | - } | |
144 | + protected function call_intersection($fst, $snd) | |
145 | + { | |
146 | + $inf = ( $fst[0] > $snd[0] ) ? $fst[0] : $snd[0]; | |
147 | + $sup = ( $fst[1] < $snd[1] ) ? $fst[1] : $snd[1]; | |
148 | + if ( $inf >= $sup ) { $inter[] = array(0,0); } | |
149 | + else {$inter[] = array($inf,$sup); } | |
150 | + return $inter; | |
151 | + } | |
150 | 152 | |
151 | 153 | /* |
152 | 154 | * For TT download : file format in text |
153 | 155 | */ |
154 | - protected function xsl2text($file,$format) { | |
155 | - define("format", $format); | |
156 | - $xslt = new XSLTProcessor(); | |
156 | + protected function xsl2text($file,$format) | |
157 | + { | |
158 | + define("format", $format); | |
159 | + $xslt = new XSLTProcessor(); | |
157 | 160 | |
158 | - // add PHP functions to XSLT functions | |
159 | - $xslt -> registerPHPFunctions(); | |
160 | - | |
161 | - // Load Time table | |
162 | - $xml = new domDocument("1.0"); | |
163 | - $xml->load($file); | |
164 | - | |
165 | - // Load XSL file | |
166 | - $xsl = new domDocument("1.0"); | |
167 | - if ($format == "Y-m-dTH:i:s") $xslName = "xml2iso.xsl"; | |
168 | - else $xslName = "xml2all.xsl"; | |
169 | - $xsl->load(XMLPATH.$xslName); | |
170 | - | |
171 | - // Import XSL and write output file in text format | |
172 | - $xslt -> importStylesheet($xsl); | |
173 | - $filename = $xml->getElementsByTagName('name')->item(0)->nodeValue.".txt"; | |
174 | - $output=fopen(USERWORKINGDIR.$filename, "w"); | |
175 | - fwrite($output, trim($xslt -> transformToDoc($xml)->firstChild->wholeText)); | |
176 | - fclose($output); | |
161 | + // add PHP functions to XSLT functions | |
162 | + $xslt -> registerPHPFunctions(); | |
163 | + | |
164 | + // Load Time table | |
165 | + $xml = new domDocument("1.0"); | |
166 | + $xml->load($file); | |
167 | + | |
168 | + // Load XSL file | |
169 | + $xsl = new domDocument("1.0"); | |
170 | + if ($format == "Y-m-dTH:i:s") $xslName = "xml2iso.xsl"; | |
171 | + else $xslName = "xml2all.xsl"; | |
172 | + $xsl->load(XMLPATH.$xslName); | |
173 | + | |
174 | + // Import XSL and write output file in text format | |
175 | + $xslt -> importStylesheet($xsl); | |
176 | + $filename = $xml->getElementsByTagName('name')->item(0)->nodeValue.".txt"; | |
177 | + $output=fopen(USERWORKINGDIR.$filename, "w"); | |
178 | + fwrite($output, trim($xslt -> transformToDoc($xml)->firstChild->wholeText)); | |
179 | + fclose($output); | |
177 | 180 | |
178 | 181 | return USERWORKINGDIR.$filename; |
179 | 182 | } |
180 | 183 | |
181 | 184 | /* |
182 | - * For TT download : file format in vot | |
185 | + * For TT download : file format in vot | |
183 | 186 | */ |
184 | - public function xsl2vot($file,$format) { | |
187 | + public function xsl2vot($file,$format) | |
188 | + { | |
185 | 189 | $xslt = new XSLTProcessor(); |
186 | 190 | |
187 | - // Load Time table | |
188 | - $xml = new domDocument("1.0"); | |
189 | - $xml->load($file); | |
190 | - | |
191 | - // Load XSL file | |
192 | - $xsl = new domDocument("1.0"); | |
193 | - $xsl->load(XMLPATH.'xml2vot.xsl'); | |
194 | - | |
195 | - // Import XSL and write output file in vot format | |
196 | - $xslt -> importStylesheet($xsl); | |
197 | - $vot = new domDocument("1.0"); | |
198 | - $vot -> loadXML($xslt -> transformToXML($xml)); | |
199 | - $filename = $xml->getElementsByTagName('name')->item(0)->nodeValue.".xml"; | |
200 | - $vot -> save(USERWORKINGDIR.$filename); | |
201 | - | |
202 | - return USERWORKINGDIR.$filename; | |
191 | + // Load Time table | |
192 | + $xml = new domDocument("1.0"); | |
193 | + $xml->load($file); | |
194 | + | |
195 | + // Load XSL file | |
196 | + $xsl = new domDocument("1.0"); | |
197 | + $xsl->load(XMLPATH.'xml2vot.xsl'); | |
198 | + | |
199 | + // Import XSL and write output file in vot format | |
200 | + $xslt -> importStylesheet($xsl); | |
201 | + $vot = new domDocument("1.0"); | |
202 | + $vot -> loadXML($xslt -> transformToXML($xml)); | |
203 | + $filename = $xml->getElementsByTagName('name')->item(0)->nodeValue.".xml"; | |
204 | + $vot -> save(USERWORKINGDIR.$filename); | |
205 | + | |
206 | + return USERWORKINGDIR.$filename; | |
203 | 207 | } |
204 | 208 | |
205 | 209 | /* |
206 | 210 | * Uploaded text file => convert to array |
207 | 211 | */ |
208 | - protected function text2amda($tmp_file, $onlyDescription = false) { | |
209 | - | |
210 | - | |
211 | - $suffix = explode('.', basename($tmp_file)); | |
212 | - | |
213 | - $lines = file($tmp_file,FILE_SKIP_EMPTY_LINES); | |
214 | - | |
215 | - $description="Uploaded Time Table".PHP_EOL; | |
216 | - | |
217 | - foreach ($lines as $line){ | |
218 | - if ($line[0] == '#') $description=$description."\n".substr($line,1,-1); | |
219 | - else { | |
220 | - $date = explode(' ',$line); | |
221 | - if (!strtotime(trim($date[0]))) { | |
222 | - $description=$description."\n".$line; | |
223 | - continue; | |
224 | - } | |
225 | -// check if it is ISO format | |
226 | - if (!isset($isIso)) $isIso = preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/', trim($date[0])); | |
227 | - if (!$isIso) { | |
212 | + protected function text2amda($tmp_file, $onlyDescription = false) | |
213 | + { | |
214 | + $suffix = explode('.', basename($tmp_file)); | |
215 | + $lines = file($tmp_file,FILE_SKIP_EMPTY_LINES); | |
216 | + $description="Uploaded Time Table".PHP_EOL; | |
217 | + | |
218 | + foreach ($lines as $line){ | |
219 | + if ($line[0] == '#') $description=$description."\n".substr($line,1,-1); | |
220 | + else { | |
221 | + $date = explode(' ',$line); | |
222 | + if (!strtotime(trim($date[0]))) { | |
223 | + $description=$description."\n".$line; | |
224 | + continue; | |
225 | + } | |
226 | + // check if it is ISO format | |
227 | + if (!isset($isIso)) $isIso = preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/', trim($date[0])); | |
228 | + if (!$isIso) { | |
228 | 229 | $tempT = strtotime(trim($date[0])); |
229 | 230 | $startDate = date('Y-m-d',$tempT)."T".date('H:i:s',$tempT); |
230 | 231 | $tempT = strtotime(trim($date[1])); |
231 | 232 | $stopDate = date('Y-m-d',$tempT)."T".date('H:i:s',$tempT); |
232 | -//TODO convert time into non standard formats | |
233 | - // $startDate = DateTime::createFromFormat($timeFormat, trim($date[0]); | |
234 | - // $start = $startDate->format('Y-m-d')."T".$startDate->format('H:i:s'); | |
235 | - // $stopDate = DateTime::createFromFormat($timeFormat, trim($date[1]); | |
236 | - // $stop = $stopDate->format('Y-m-d')."T".$stopDate->format('H:i:s'); | |
237 | - if (!$onlyDescription) | |
238 | - $attributesToReturn['intervals'][] = array('start' => $startDate, 'stop' => $stopDate); | |
239 | - } | |
240 | - else { | |
241 | - if (!$onlyDescription) | |
233 | + //TODO convert time into non standard formats | |
234 | + // $startDate = DateTime::createFromFormat($timeFormat, trim($date[0]); | |
235 | + // $start = $startDate->format('Y-m-d')."T".$startDate->format('H:i:s'); | |
236 | + // $stopDate = DateTime::createFromFormat($timeFormat, trim($date[1]); | |
237 | + // $stop = $stopDate->format('Y-m-d')."T".$stopDate->format('H:i:s'); | |
238 | + if (!$onlyDescription) | |
239 | + $attributesToReturn['intervals'][] = array('start' => $startDate, 'stop' => $stopDate); | |
240 | + } | |
241 | + else { | |
242 | + if (!$onlyDescription) | |
242 | 243 | $attributesToReturn['intervals'][] = array('start' => trim($date[0]), 'stop' => trim($date[1])); |
243 | 244 | } |
244 | 245 | } |
245 | 246 | } |
246 | 247 | |
247 | - $attributesToReturn['description'] = $description; | |
248 | - $attributesToReturn['name'] = basename($tmp_file, '.'.$suffix[1]); | |
249 | - $attributesToReturn['created'] = date('Y-m-d')."T".date('H:i:s'); | |
248 | + $attributesToReturn['description'] = $description; | |
249 | + $attributesToReturn['name'] = basename($tmp_file, '.'.$suffix[1]); | |
250 | + $attributesToReturn['created'] = date('Y-m-d')."T".date('H:i:s'); | |
250 | 251 | |
251 | 252 | return $attributesToReturn; |
252 | - | |
253 | 253 | } |
254 | 254 | |
255 | 255 | |
... | ... | @@ -288,7 +288,7 @@ class TimeTableMgr extends AmdaObjectMgr { |
288 | 288 | |
289 | 289 | function getObject($id, $nodeType) { |
290 | 290 | |
291 | - if ($nodeType == 'sharedtimeTable') { | |
291 | + if (substr($nodeType,0,6) == 'shared') { | |
292 | 292 | $pathid = SHAREDPATH.'TT/'.$id; |
293 | 293 | } |
294 | 294 | else { |
... | ... | @@ -303,20 +303,20 @@ class TimeTableMgr extends AmdaObjectMgr { |
303 | 303 | |
304 | 304 | $nbInt = 0; |
305 | 305 | foreach($attributes as $attribute) |
306 | - if($attribute->nodeType == XML_ELEMENT_NODE){ | |
307 | - /*if ($attribute->tagName == 'intervals') { | |
308 | - $start = $attribute -> getElementsByTagName('start')->item(0) -> nodeValue; | |
309 | - $stop = $attribute -> getElementsByTagName('stop')->item(0) -> nodeValue; | |
310 | - $attributesToReturn['intervals'][] = array('start' => $start, 'stop' => $stop); | |
311 | - } | |
312 | - else | |
313 | - $attributesToReturn[$attribute->tagName] = $attribute->nodeValue;*/ | |
314 | - //BRE - load all except intervals - Intervals will be loaded later with 'loadIntervalsFromTT' function | |
315 | - if ($attribute->tagName != 'intervals') | |
316 | - $attributesToReturn[$attribute->tagName] = $attribute->nodeValue; | |
317 | - else | |
318 | - $nbInt++; | |
319 | - } | |
306 | + if($attribute->nodeType == XML_ELEMENT_NODE){ | |
307 | + /*if ($attribute->tagName == 'intervals') { | |
308 | + $start = $attribute -> getElementsByTagName('start')->item(0) -> nodeValue; | |
309 | + $stop = $attribute -> getElementsByTagName('stop')->item(0) -> nodeValue; | |
310 | + $attributesToReturn['intervals'][] = array('start' => $start, 'stop' => $stop); | |
311 | + } | |
312 | + else | |
313 | + $attributesToReturn[$attribute->tagName] = $attribute->nodeValue;*/ | |
314 | + //BRE - load all except intervals - Intervals will be loaded later with 'loadIntervalsFromTT' function | |
315 | + if ($attribute->tagName != 'intervals') | |
316 | + $attributesToReturn[$attribute->tagName] = $attribute->nodeValue; | |
317 | + else | |
318 | + $nbInt++; | |
319 | + } | |
320 | 320 | |
321 | 321 | $attributesToReturn['nbIntervals'] = $nbInt; |
322 | 322 | |
... | ... | @@ -769,7 +769,7 @@ class TimeTableMgr extends AmdaObjectMgr { |
769 | 769 | |
770 | 770 | $transform = "xsl2".$obj->fileformat; |
771 | 771 | $format = $obj->timeformat; |
772 | -// shared or my | |
772 | + // shared or my | |
773 | 773 | |
774 | 774 | |
775 | 775 | for ($i=0; $i < count($obj->list); $i++) { |
... | ... |