Commit d8ec16238fd8c36b0daf77df7a6219cad1062ab2
1 parent
139a8045
Exists in
master
and in
109 other branches
fix phpcs warnings
Showing
1 changed file
with
237 additions
and
166 deletions
Show diff stats
php/classes/TimeTableMgr.php
... | ... | @@ -7,28 +7,20 @@ |
7 | 7 | * |
8 | 8 | */ |
9 | 9 | |
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 | -} | |
22 | - | |
23 | 10 | class TimeTableMgr extends AmdaObjectMgr |
24 | 11 | { |
25 | - function __construct($user = null, $sharedObject = false) | |
12 | + /** | |
13 | + * TimeTableMgr constructor. | |
14 | + * @param null $user The user | |
15 | + * @param bool $sharedObject Shared object | |
16 | + */ | |
17 | + public function __construct($user = null, $sharedObject = false) | |
26 | 18 | { |
27 | 19 | parent::__construct('Tt.xml'); |
28 | 20 | $this->contentRootId = 'timeTable-treeRootNode'; |
29 | 21 | $this->contentRootTag = 'timetabList'; |
30 | - $this->attributes = array('name' => '', 'intervals' => ''); | |
31 | - $this->optionalAttributes = array(); | |
22 | + $this->attributes = ['name' => '', 'intervals' => '']; | |
23 | + $this->optionalAttributes = []; | |
32 | 24 | $this->objTagName = 'timetab'; |
33 | 25 | $this->id_prefix = 'tt_'; |
34 | 26 | |
... | ... | @@ -40,7 +32,7 @@ class TimeTableMgr extends AmdaObjectMgr |
40 | 32 | |
41 | 33 | protected function createDom() |
42 | 34 | { |
43 | - $types = array('timetab' => 'timeTable', 'catalog' => 'catalog'); | |
35 | + $types = ['timetab' => 'timeTable', 'catalog' => 'catalog']; | |
44 | 36 | |
45 | 37 | $rootElement = $this->contentDom->createElement('ws'); |
46 | 38 | |
... | ... | @@ -55,12 +47,13 @@ class TimeTableMgr extends AmdaObjectMgr |
55 | 47 | $this->contentDom->save($this->xmlName); |
56 | 48 | } |
57 | 49 | |
58 | - /* | |
59 | - * rename Time Table in id.xml | |
60 | - */ | |
61 | - | |
62 | - | |
63 | - function getObject($id, $nodeType) | |
50 | + /** | |
51 | + * Get object | |
52 | + * @param $id | |
53 | + * @param $nodeType | |
54 | + * @return array | |
55 | + */ | |
56 | + public function getObject($id, $nodeType = null) | |
64 | 57 | { |
65 | 58 | if (substr($nodeType, 0, 6) == 'shared') { |
66 | 59 | //Shared object |
... | ... | @@ -71,11 +64,11 @@ class TimeTableMgr extends AmdaObjectMgr |
71 | 64 | } |
72 | 65 | |
73 | 66 | if (!file_exists($path)) { |
74 | - return array('error' => NO_OBJECT_FILE); | |
67 | + return ['error' => NO_OBJECT_FILE]; | |
75 | 68 | } |
76 | 69 | $this->objectDom->load($path); |
77 | 70 | if (!($objToGet = $this->objectDom->getElementById($id))) { |
78 | - return array('error' => NO_SUCH_ID); | |
71 | + return ['error' => NO_SUCH_ID]; | |
79 | 72 | } |
80 | 73 | $attributesToReturn['id'] = $objToGet->getAttribute('xml:id'); |
81 | 74 | $attributes = $objToGet->childNodes; |
... | ... | @@ -98,12 +91,16 @@ class TimeTableMgr extends AmdaObjectMgr |
98 | 91 | } |
99 | 92 | } |
100 | 93 | } |
101 | - | |
102 | 94 | $attributesToReturn['nbIntervals'] = $nbInt; |
103 | 95 | |
104 | 96 | return $attributesToReturn; |
105 | 97 | } |
106 | 98 | |
99 | + /** | |
100 | + * Modify an object | |
101 | + * @param $p | |
102 | + * @return array | |
103 | + */ | |
107 | 104 | public function modifyObject($p) |
108 | 105 | { |
109 | 106 | $folder = $this->getObjectFolder($p->id); |
... | ... | @@ -127,21 +124,23 @@ class TimeTableMgr extends AmdaObjectMgr |
127 | 124 | if ($tmpFileExist) { |
128 | 125 | unlink($ttFilePath . ".tmp"); |
129 | 126 | } |
130 | - return array('id' => $p->id, 'info' => $result['info']); | |
131 | - } catch (Exception $e) { | |
127 | + return ['id' => $p->id, 'info' => $result['info']]; | |
128 | + } catch (Exception $exception) { | |
132 | 129 | //Restore TT file |
133 | 130 | if ($tmpFileExist) { |
134 | 131 | copy($ttFilePath . ".tmp", $ttFilePath); |
135 | 132 | unlink($ttFilePath . ".tmp"); |
136 | 133 | } |
137 | - return array('error' => $e->getMessage()); | |
134 | + return ['error' => $exception->getMessage()]; | |
138 | 135 | } |
139 | 136 | } |
140 | 137 | |
141 | - /* | |
142 | - * Check if difference is name and info only | |
143 | - */ | |
144 | - | |
138 | + /** | |
139 | + * Create an object | |
140 | + * @param $p | |
141 | + * @param $folder | |
142 | + * @return array | |
143 | + */ | |
145 | 144 | public function createObject($p, $folder) |
146 | 145 | { |
147 | 146 | if ($p->leaf) { |
... | ... | @@ -154,25 +153,26 @@ class TimeTableMgr extends AmdaObjectMgr |
154 | 153 | $resultSaveInt = $cacheMgr->saveInTT($result['id'], "update", $p->cacheToken); |
155 | 154 | if (!$resultSaveInt['success']) { |
156 | 155 | if ($resultSaveInt['message']) { |
157 | - return array('error' => $resultSaveInt['message']); | |
156 | + return ['error' => $resultSaveInt['message']]; | |
158 | 157 | } else { |
159 | - return array('error' => 'Unknown error during intervals save'); | |
158 | + return ['error' => 'Unknown error during intervals save']; | |
160 | 159 | } |
161 | 160 | } |
162 | 161 | } |
163 | 162 | return $result; |
164 | - } | |
165 | - // else return $this->createFolder($p); | |
166 | - //TODO check if this is possible? | |
167 | - else { | |
168 | - return array('error' => 'createFolder should be called from RENAME'); | |
163 | + } else { | |
164 | + return ['error' => 'createFolder should be called from RENAME']; | |
165 | + // return $this->createFolder($p); | |
166 | + // TODO check if this is possible? | |
169 | 167 | } |
170 | 168 | } |
171 | 169 | |
172 | - /* | |
173 | - * In case of catalogs | |
174 | - */ | |
175 | - | |
170 | + /** | |
171 | + * Create parameter (in case of catalogs) | |
172 | + * @param $p | |
173 | + * @param $folder | |
174 | + * @return array | |
175 | + */ | |
176 | 176 | protected function createParameter($p, $folder) |
177 | 177 | { |
178 | 178 | if ($this->objectExistsByName($p->name)) { |
... | ... | @@ -183,11 +183,11 @@ class TimeTableMgr extends AmdaObjectMgr |
183 | 183 | $this->id = $this->setId(); |
184 | 184 | $this->created = date('Y-m-d\TH:i:s'); |
185 | 185 | if (!$this->id) { |
186 | - return array('error' => ID_CREATION_ERROR); | |
186 | + return ['error' => ID_CREATION_ERROR]; | |
187 | 187 | } |
188 | 188 | |
189 | 189 | $this->resFileName = USERTTDIR . $this->id . '.xml'; |
190 | - //TODO catalog root element = 'timetable' | |
190 | + // TODO catalog root element = 'timetable' | |
191 | 191 | $rootElement = $this->objectDom->createElement('timetable'); |
192 | 192 | $rootElement->setAttribute('xml:id', $this->id); |
193 | 193 | |
... | ... | @@ -203,7 +203,6 @@ class TimeTableMgr extends AmdaObjectMgr |
203 | 203 | if ($paramsElement) { |
204 | 204 | $rootElement->appendChild($paramsElement); |
205 | 205 | } |
206 | - | |
207 | 206 | } else { |
208 | 207 | if ($key != 'intervals') { |
209 | 208 | $rootElement->appendChild($this->objectDom->createElement($key, htmlspecialchars($value))); |
... | ... | @@ -219,18 +218,28 @@ class TimeTableMgr extends AmdaObjectMgr |
219 | 218 | $obj->name = $p->name; |
220 | 219 | $obj->intervals = $p->nbIntervals; |
221 | 220 | $this->addToContent($obj, $folder); |
222 | - return array('id' => $this->id, 'created' => $this->created, 'info' => $obj->intervals . ' intervals'); | |
221 | + // FIXME field created is undefined | |
222 | + return ['id' => $this->id, 'created' => $this->created, 'info' => $obj->intervals . ' intervals']; | |
223 | 223 | } |
224 | 224 | |
225 | - | |
226 | - /* | |
227 | - * Create Time Table | |
225 | + /** | |
226 | + * Set parameter description | |
227 | + * TODO | |
228 | + * @param $param string The parameter | |
229 | + * @return DOMNode | |
228 | 230 | */ |
229 | - | |
230 | 231 | protected function setParamDescription($param) |
231 | 232 | { |
233 | + return new DOMNode(); | |
232 | 234 | } |
233 | 235 | |
236 | + /** | |
237 | + * Get uploaded object | |
238 | + * @param $name | |
239 | + * @param $format | |
240 | + * @param bool $onlyDescription | |
241 | + * @return mixed | |
242 | + */ | |
234 | 243 | public function getUploadedObject($name, $format, $onlyDescription = false) |
235 | 244 | { |
236 | 245 | if (strpos($name, '.txt') !== false || strpos($name, '.asc') !== false || strpos($name, '.') == false) { |
... | ... | @@ -255,13 +264,13 @@ class TimeTableMgr extends AmdaObjectMgr |
255 | 264 | } |
256 | 265 | |
257 | 266 | if (!file_exists(USERTEMPDIR . $name . '.xml')) { |
258 | - return array('error' => 'no such name'); | |
267 | + return ['error' => 'no such name']; | |
259 | 268 | } |
260 | 269 | |
261 | 270 | $this->objectDom->load(USERTEMPDIR . $name . '.xml'); |
262 | 271 | if (!($objToGet = $this->objectDom->getElementsByTagName('timetable')->item(0)) && |
263 | 272 | !($objToGet = $this->objectDom->getElementsByTagName('TimeTable')->item(0))) { |
264 | - return array('error' => 'no time table'); | |
273 | + return ['error' => 'no time table']; | |
265 | 274 | } |
266 | 275 | |
267 | 276 | $attributes = $objToGet->childNodes; |
... | ... | @@ -269,28 +278,29 @@ class TimeTableMgr extends AmdaObjectMgr |
269 | 278 | $attributesToReturn['objName'] = $name; |
270 | 279 | $attributesToReturn['objFormat'] = $format; |
271 | 280 | |
281 | + /** @var DOMElement $attribute */ | |
272 | 282 | foreach ($attributes as $attribute) { |
273 | 283 | if ($attribute->nodeType == XML_ELEMENT_NODE) { |
274 | 284 | if ($attribute->tagName == 'intervals') { |
275 | 285 | $start = $attribute->getElementsByTagName('start')->item(0)->nodeValue; |
276 | 286 | $stop = $attribute->getElementsByTagName('stop')->item(0)->nodeValue; |
277 | 287 | if (!$onlyDescription) { |
278 | - $attributesToReturn['intervals'][] = array('start' => $start, 'stop' => $stop); | |
288 | + $attributesToReturn['intervals'][] = ['start' => $start, 'stop' => $stop]; | |
279 | 289 | } |
280 | 290 | } else { |
281 | 291 | if ($attribute->tagName == 'Interval') { |
282 | 292 | $start = $attribute->getElementsByTagName('Start')->item(0)->nodeValue; |
283 | 293 | $stop = $attribute->getElementsByTagName('Stop')->item(0)->nodeValue; |
284 | 294 | if (!$onlyDescription) { |
285 | - $attributesToReturn['intervals'][] = array('start' => $start, 'stop' => $stop); | |
295 | + $attributesToReturn['intervals'][] = ['start' => $start, 'stop' => $stop]; | |
286 | 296 | } |
287 | 297 | } else { |
288 | 298 | switch (strtolower($attribute->tagName)) { |
289 | - case 'created' : | |
299 | + case 'created': | |
290 | 300 | $attributesToReturn['created'] = $attribute->nodeValue; |
291 | 301 | break; |
292 | - case 'chain' : | |
293 | - case 'source' : | |
302 | + case 'chain': | |
303 | + case 'source': | |
294 | 304 | $attributesToReturn['description'] = $attribute->nodeValue; |
295 | 305 | break; |
296 | 306 | default: |
... | ... | @@ -307,6 +317,12 @@ class TimeTableMgr extends AmdaObjectMgr |
307 | 317 | * Uploaded text file => convert to array |
308 | 318 | */ |
309 | 319 | |
320 | + /** | |
321 | + * Convert text to AMDA attributes | |
322 | + * @param $tmp_file | |
323 | + * @param bool $onlyDescription | |
324 | + * @return mixed | |
325 | + */ | |
310 | 326 | protected function text2amda($tmp_file, $onlyDescription = false) |
311 | 327 | { |
312 | 328 | $suffix = explode('.', basename($tmp_file)); |
... | ... | @@ -340,12 +356,12 @@ class TimeTableMgr extends AmdaObjectMgr |
340 | 356 | $tempStop = $date[$dateLength]; |
341 | 357 | |
342 | 358 | if ($dateLength > 1) { |
343 | - for ($i = 1; $i < $dateLength; $i++) { | |
344 | - $tempStart .= $date[$i]; | |
359 | + for ($iDate = 1; $iDate < $dateLength; $iDate++) { | |
360 | + $tempStart .= $date[$iDate]; | |
345 | 361 | } |
346 | 362 | |
347 | - for ($i = $dateLength + 1; $i < $dateLength * 2; $i++) { | |
348 | - $tempStop .= $date[$i]; | |
363 | + for ($iDate = $dateLength + 1; $iDate < $dateLength * 2; $iDate++) { | |
364 | + $tempStop .= $date[$iDate]; | |
349 | 365 | } |
350 | 366 | } |
351 | 367 | |
... | ... | @@ -353,11 +369,11 @@ class TimeTableMgr extends AmdaObjectMgr |
353 | 369 | $stopDate = date('Y-m-d\TH:i:s', strtotime($tempStop)); |
354 | 370 | |
355 | 371 | if (!$onlyDescription) { |
356 | - $attributesToReturn['intervals'][] = array('start' => $startDate, 'stop' => $stopDate); | |
372 | + $attributesToReturn['intervals'][] = ['start' => $startDate, 'stop' => $stopDate]; | |
357 | 373 | } |
358 | 374 | } else { |
359 | 375 | if (!$onlyDescription) { |
360 | - $attributesToReturn['intervals'][] = array('start' => trim($date[0]), 'stop' => trim($date[1])); | |
376 | + $attributesToReturn['intervals'][] = ['start' => trim($date[0]), 'stop' => trim($date[1])]; | |
361 | 377 | } |
362 | 378 | } |
363 | 379 | } |
... | ... | @@ -373,9 +389,12 @@ class TimeTableMgr extends AmdaObjectMgr |
373 | 389 | return $attributesToReturn; |
374 | 390 | } |
375 | 391 | |
376 | - /* | |
377 | - * Uploaded vot TT => convert to array | |
378 | - */ | |
392 | + /** | |
393 | + * Convert VOTable time table to AMDA attributes | |
394 | + * @param $tmp_file | |
395 | + * @param bool $onlyDescription | |
396 | + * @return mixed | |
397 | + */ | |
379 | 398 | protected function vot2amda($tmp_file, $onlyDescription = false) |
380 | 399 | { |
381 | 400 | // Load Time table |
... | ... | @@ -383,19 +402,22 @@ class TimeTableMgr extends AmdaObjectMgr |
383 | 402 | $objToGet = $this->objectDom->getElementsByTagName('TABLEDATA')->item(0); |
384 | 403 | $attributesToReturn['name'] = $tmp_file; |
385 | 404 | $attributes = $objToGet->childNodes; |
405 | + | |
406 | + /** @var DOMElement $attribute */ | |
386 | 407 | foreach ($attributes as $attribute) { |
387 | 408 | if ($attribute->tagName == 'TR') { |
388 | 409 | $start = $attribute->getElementsByTagName('TD')->item(0)->nodeValue; |
389 | 410 | $stop = $attribute->getElementsByTagName('TD')->item(1)->nodeValue; |
390 | 411 | if (!$onlyDescription) { |
391 | - $attributesToReturn['intervals'][] = array('start' => $start, 'stop' => $stop); | |
412 | + $attributesToReturn['intervals'][] = ['start' => $start, 'stop' => $stop]; | |
392 | 413 | } |
393 | 414 | } |
394 | 415 | } |
395 | 416 | $suffix = explode('.', basename($tmp_file)); |
396 | 417 | $attributesToReturn['name'] = basename($tmp_file, '.' . $suffix[1]); |
397 | 418 | $attributesToReturn['created'] = date('Y-m-d') . "T" . date('H:i:s'); |
398 | - $attributesToReturn['description'] = htmlspecialchars($this->objectDom->getElementsByTagName('DESCRIPTION')->item(0)->nodeValue); | |
419 | + $description = $this->objectDom->getElementsByTagName('DESCRIPTION')->item(0)->nodeValue; | |
420 | + $attributesToReturn['description'] = htmlspecialchars($description); | |
399 | 421 | return ($attributesToReturn); |
400 | 422 | } |
401 | 423 | |
... | ... | @@ -410,14 +432,14 @@ class TimeTableMgr extends AmdaObjectMgr |
410 | 432 | { |
411 | 433 | $filePath = USERWORKINGDIR . $folderId . '/' . $name . '.xml'; |
412 | 434 | if (!file_exists($filePath)) { |
413 | - return array('error' => 'Cannot find result file'); | |
435 | + return ['error' => 'Cannot find result file']; | |
414 | 436 | } |
415 | 437 | |
416 | 438 | $dom = new DomDocument('1.0'); |
417 | 439 | $dom->formatOutput = true; |
418 | 440 | |
419 | 441 | if (!$dom->load($filePath)) { |
420 | - return array('error' => 'Cannot load result file'); | |
442 | + return ['error' => 'Cannot load result file']; | |
421 | 443 | } |
422 | 444 | |
423 | 445 | $descNodes = $dom->getElementsByTagName('description'); |
... | ... | @@ -440,25 +462,32 @@ class TimeTableMgr extends AmdaObjectMgr |
440 | 462 | |
441 | 463 | if (!$onlyDescription) { |
442 | 464 | $intNodes = $dom->getElementsByTagName('intervals'); |
465 | + | |
466 | + /** @var DOMElement $intNode */ | |
443 | 467 | foreach ($intNodes as $intNode) { |
444 | 468 | $startNodes = $intNode->getElementsByTagName('start'); |
445 | 469 | if ($startNodes->length <= 0) { |
446 | - return array('error' => 'Error detected in result file'); | |
470 | + return ['error' => 'Error detected in result file']; | |
447 | 471 | } |
448 | 472 | $stopNodes = $intNode->getElementsByTagName('stop'); |
449 | 473 | if ($stopNodes->length <= 0) { |
450 | - return array('error' => 'Error detected in result file'); | |
474 | + return ['error' => 'Error detected in result file']; | |
451 | 475 | } |
452 | - $attributesToReturn['intervals'][] = array( | |
476 | + $attributesToReturn['intervals'][] = [ | |
453 | 477 | 'start' => $startNodes->item(0)->nodeValue, |
454 | 478 | 'stop' => $stopNodes->item(0)->nodeValue |
455 | - ); | |
479 | + ]; | |
456 | 480 | } |
457 | 481 | } |
458 | 482 | |
459 | 483 | return $attributesToReturn; |
460 | 484 | } |
461 | 485 | |
486 | + /** | |
487 | + * Merge time tables | |
488 | + * @param $obj | |
489 | + * @return array | |
490 | + */ | |
462 | 491 | public function merge($obj) |
463 | 492 | { |
464 | 493 | /** |
... | ... | @@ -468,47 +497,45 @@ class TimeTableMgr extends AmdaObjectMgr |
468 | 497 | */ |
469 | 498 | |
470 | 499 | $intervals = 0; |
471 | - | |
472 | - for ($i = 0; $i < count($obj->ids); $i++) { | |
473 | - $table[$i] = $this->loadIntervalsFromTT($obj->ids[$i]); | |
474 | - for ($j = 0; $j < count($table[$i]['intervals']); $j++) { | |
475 | - $interval[$i][$j][0] = $table[$i]['intervals'][$j]['start']; | |
476 | - $interval[$i][$j][1] = $table[$i]['intervals'][$j]['stop']; | |
500 | + for ($iId = 0; $iId < count($obj->ids); $iId++) { | |
501 | + $table[$iId] = $this->loadIntervalsFromTT($obj->ids[$iId]); | |
502 | + for ($jId = 0; $jId < count($table[$iId]['intervals']); $jId++) { | |
503 | + $interval[$iId][$jId][0] = $table[$iId]['intervals'][$jId]['start']; | |
504 | + $interval[$iId][$jId][1] = $table[$iId]['intervals'][$jId]['stop']; | |
477 | 505 | } |
478 | - $intervals += count($interval[$i]); | |
506 | + $intervals += count($interval[$iId]); | |
479 | 507 | } |
480 | 508 | if ($intervals > 10000) { |
481 | 509 | set_time_limit(1800); |
482 | 510 | } |
483 | 511 | |
484 | - $final = array(); | |
485 | - for ($i = 0; $i < count($obj->ids); $i++) { | |
486 | - $final = array_merge($final, $interval[$i]); | |
512 | + $final = []; | |
513 | + for ($iId = 0; $iId < count($obj->ids); $iId++) { | |
514 | + $final = array_merge($final, $interval[$iId]); | |
487 | 515 | } |
488 | 516 | sort($final); |
489 | 517 | |
490 | 518 | // Algorithm of union |
491 | 519 | $line = 0; |
492 | - $i = 0; | |
493 | - $a = $final[$i][0]; | |
494 | - while ($i < count($final) - 1) { | |
495 | - if ($final[$i + 1][1] <= $final[$i][1]) { | |
496 | - array_splice($final, $i + 1, 1); | |
520 | + $iId = 0; | |
521 | + $val = $final[$iId][0]; | |
522 | + while ($iId < count($final) - 1) { | |
523 | + if ($final[$iId + 1][1] <= $final[$iId][1]) { | |
524 | + array_splice($final, $iId + 1, 1); | |
497 | 525 | } else { |
498 | - if (($final[$i + 1][0] <= $final[$i][1]) && ($final[$i + 1][1] >= $final[$i][1])) { | |
499 | - $i++; | |
526 | + if (($final[$iId + 1][0] <= $final[$iId][1]) && ($final[$iId + 1][1] >= $final[$iId][1])) { | |
527 | + $iId++; | |
500 | 528 | } else { |
501 | - $start[$line] = $a; | |
502 | - $stop[$line] = $final[$i][1]; | |
503 | - $i++; | |
529 | + $start[$line] = $val; | |
530 | + $stop[$line] = $final[$iId][1]; | |
531 | + $iId++; | |
504 | 532 | $line++; |
505 | - $a = $final[$i][0]; | |
533 | + $val = $final[$iId][0]; | |
506 | 534 | } |
507 | 535 | } |
508 | 536 | } |
509 | - $start[$line] = $a; | |
510 | - $stop[$line] = $final[$i][1]; | |
511 | - $line++; | |
537 | + $start[$line] = $val; | |
538 | + $stop[$line] = $final[$iId][1]; | |
512 | 539 | |
513 | 540 | $objTT = new stdClass(); |
514 | 541 | $objTT->name = $obj->name; |
... | ... | @@ -516,28 +543,34 @@ class TimeTableMgr extends AmdaObjectMgr |
516 | 543 | $objTT->leaf = true; |
517 | 544 | $objTT->created = null; |
518 | 545 | $objTT->history = $obj->history; |
519 | - for ($i = 0; $i < count($start); $i++) { | |
546 | + for ($iId = 0; $iId < count($start); $iId++) { | |
520 | 547 | $inter = new stdClass(); |
521 | - $inter->start = $start[$i]; | |
522 | - $inter->stop = $stop[$i]; | |
548 | + $inter->start = $start[$iId]; | |
549 | + $inter->stop = $stop[$iId]; | |
523 | 550 | $objTT->intervals[] = $inter; |
524 | 551 | } |
525 | 552 | $objTT->nbIntervals = count($start); |
526 | 553 | $this->objectDom = new DomDocument('1.0'); |
527 | 554 | $this->objectDom->formatOutput = true; |
528 | 555 | |
529 | - $res = $this->createParameter($objTT, $folder); | |
556 | + $res = $this->createParameter($objTT, $folder); // FIXME $folder is undefined | |
530 | 557 | if ($res['error']) { |
531 | 558 | return $res; |
532 | 559 | } |
533 | 560 | |
534 | 561 | $this->saveIntervals($res['id'], $objTT->intervals, 'merge'); |
535 | - | |
536 | 562 | return $res; |
537 | - | |
538 | 563 | } |
539 | 564 | |
540 | - public function loadIntervalsFromTT($id, $typeTT, $start = null, $limit = null) | |
565 | + /** | |
566 | + * Load intervals from time table | |
567 | + * @param $id | |
568 | + * @param $typeTT | |
569 | + * @param null $start | |
570 | + * @param null $limit | |
571 | + * @return array | |
572 | + */ | |
573 | + public function loadIntervalsFromTT($id, $typeTT = '', $start = null, $limit = null) | |
541 | 574 | { |
542 | 575 | if ($typeTT == 'sharedtimeTable') { |
543 | 576 | //Shared object |
... | ... | @@ -549,59 +582,68 @@ class TimeTableMgr extends AmdaObjectMgr |
549 | 582 | |
550 | 583 | //load intervals from TT id |
551 | 584 | if (!file_exists($path)) { |
552 | - return array('success' => false, 'message' => "Cannot find TT file " . $id); | |
585 | + return ['success' => false, 'message' => "Cannot find TT file " . $id]; | |
553 | 586 | } |
554 | 587 | |
555 | 588 | $this->objectDom->load($path); |
556 | 589 | if (!($objToGet = $this->objectDom->getElementById($id))) { |
557 | - return array('success' => false, 'message' => NO_SUCH_ID . " " . $id); | |
590 | + return ['success' => false, 'message' => NO_SUCH_ID . " " . $id]; | |
558 | 591 | } |
559 | 592 | |
560 | 593 | $xpath = new DOMXPath($this->objectDom); |
561 | 594 | $intervals = $xpath->query('//intervals'); |
562 | 595 | |
563 | - $result = array(); | |
596 | + $result = []; | |
564 | 597 | |
565 | 598 | if (!isset($start) || !isset($limit)) { |
599 | + | |
600 | + /** @var DOMElement $interval */ | |
566 | 601 | foreach ($intervals as $interval) { |
567 | 602 | $startTime = $interval->getElementsByTagName('start')->item(0)->nodeValue; |
568 | 603 | $stopTime = $interval->getElementsByTagName('stop')->item(0)->nodeValue; |
569 | - array_push($result, array('start' => $startTime, 'stop' => $stopTime)); | |
604 | + array_push($result, ['start' => $startTime, 'stop' => $stopTime]); | |
570 | 605 | } |
571 | 606 | } else { |
572 | - for ($i = 0; $i < $limit; ++$i) { | |
573 | - if ($start + $i >= $intervals->length) { | |
607 | + for ($iInt = 0; $iInt < $limit; ++$iInt) { | |
608 | + if ($start + $iInt >= $intervals->length) { | |
574 | 609 | break; |
575 | 610 | } |
576 | - $startTime = $intervals->item($start + $i)->getElementsByTagName('start')->item(0)->nodeValue; | |
577 | - $stopTime = $intervals->item($start + $i)->getElementsByTagName('stop')->item(0)->nodeValue; | |
578 | - array_push($result, array('start' => $startTime, 'stop' => $stopTime)); | |
611 | + $startTime = $intervals->item($start + $iInt)->getElementsByTagName('start')->item(0)->nodeValue; | |
612 | + $stopTime = $intervals->item($start + $iInt)->getElementsByTagName('stop')->item(0)->nodeValue; | |
613 | + array_push($result, ['start' => $startTime, 'stop' => $stopTime]); | |
579 | 614 | } |
580 | 615 | } |
581 | 616 | |
582 | - return array( | |
617 | + return [ | |
583 | 618 | 'totalCount' => $intervals->length, |
584 | 619 | 'intervals' => $result, |
585 | 620 | 'start' => isset($start) ? $start : 0, |
586 | 621 | 'limit' => isset($limit) ? $limit : 0, |
587 | 622 | 'success' => true |
588 | - ); | |
623 | + ]; | |
589 | 624 | } |
590 | 625 | |
626 | + /** | |
627 | + * Save intervals | |
628 | + * @param $id | |
629 | + * @param $intervals | |
630 | + * @param $action | |
631 | + * @return array | |
632 | + */ | |
591 | 633 | public function saveIntervals($id, $intervals, $action) |
592 | 634 | { |
593 | 635 | if (substr($id, 0, 6) == 'shared') { |
594 | - return array('success' => false, 'message' => "Cannot save shared TimeTable"); | |
636 | + return ['success' => false, 'message' => "Cannot save shared TimeTable"]; | |
595 | 637 | } else { |
596 | 638 | $path = USERTTDIR . $id . '.xml'; |
597 | 639 | } |
598 | 640 | if (!file_exists($path)) { |
599 | - return array('success' => false, 'message' => "Cannot find TT file " . $id); | |
641 | + return ['success' => false, 'message' => "Cannot find TT file " . $id]; | |
600 | 642 | } |
601 | 643 | $this->objectDom->load($path); |
602 | 644 | |
603 | 645 | if (!($objToGet = $this->objectDom->getElementById($id))) { |
604 | - return array('success' => false, 'message' => NO_SUCH_ID . " " . $id); | |
646 | + return ['success' => false, 'message' => NO_SUCH_ID . " " . $id]; | |
605 | 647 | } |
606 | 648 | |
607 | 649 | //remove old intervals |
... | ... | @@ -631,9 +673,14 @@ class TimeTableMgr extends AmdaObjectMgr |
631 | 673 | |
632 | 674 | unset($this->objectDom); |
633 | 675 | |
634 | - return array('success' => true, 'action' => $action, 'nbIntervals' => count($intervals)); | |
676 | + return ['success' => true, 'action' => $action, 'nbIntervals' => count($intervals)]; | |
635 | 677 | } |
636 | 678 | |
679 | + /** | |
680 | + * Create interval element | |
681 | + * @param $interval | |
682 | + * @return DOMElement | |
683 | + */ | |
637 | 684 | protected function createIntervalElement($interval) |
638 | 685 | { |
639 | 686 | $newInterval = $this->objectDom->createElement('intervals'); |
... | ... | @@ -642,16 +689,21 @@ class TimeTableMgr extends AmdaObjectMgr |
642 | 689 | return $newInterval; |
643 | 690 | } |
644 | 691 | |
692 | + /** | |
693 | + * Intersect time tables | |
694 | + * @param $obj | |
695 | + * @return array|string | |
696 | + */ | |
645 | 697 | public function intersect($obj) |
646 | 698 | { |
647 | - | |
648 | - for ($i = 0; $i < count($obj->ids); $i++) { | |
649 | - $table[$i] = $this->loadIntervalsFromTT($obj->ids[$i]); | |
650 | - for ($j = 0; $j < count($table[$i]['intervals']); $j++) { | |
651 | - $interval[$i][$j][0] = $table[$i]['intervals'][$j]['start']; | |
652 | - $interval[$i][$j][1] = $table[$i]['intervals'][$j]['stop']; | |
699 | + $intervals = 0; | |
700 | + for ($iId = 0; $iId < count($obj->ids); $iId++) { | |
701 | + $table[$iId] = $this->loadIntervalsFromTT($obj->ids[$iId]); | |
702 | + for ($jId = 0; $jId < count($table[$iId]['intervals']); $jId++) { | |
703 | + $interval[$iId][$jId][0] = $table[$iId]['intervals'][$jId]['start']; | |
704 | + $interval[$iId][$jId][1] = $table[$iId]['intervals'][$jId]['stop']; | |
653 | 705 | } |
654 | - $intervals += count($interval[$i]); | |
706 | + $intervals += count($interval[$iId]); | |
655 | 707 | } |
656 | 708 | if ($intervals > 10000) { |
657 | 709 | set_time_limit(1800); |
... | ... | @@ -661,12 +713,12 @@ class TimeTableMgr extends AmdaObjectMgr |
661 | 713 | sort($interval[0]); |
662 | 714 | sort($interval[1]); |
663 | 715 | |
664 | - $i = 0; | |
665 | - $j = 0; | |
716 | + $iId = 0; | |
717 | + $jId = 0; | |
666 | 718 | $line = 0; |
667 | 719 | |
668 | - while (($i < count($interval[0])) && ($j < count($interval[1]))) { | |
669 | - $inter = $this->call_intersection($interval[0][$i], $interval[1][$j]); | |
720 | + while (($iId < count($interval[0])) && ($jId < count($interval[1]))) { | |
721 | + $inter = $this->callIntersection($interval[0][$iId], $interval[1][$jId]); | |
670 | 722 | |
671 | 723 | if ($inter[0][0] != 0 && $inter[0][1] != 0) { |
672 | 724 | $start[$line] = $inter[0][0]; |
... | ... | @@ -674,10 +726,10 @@ class TimeTableMgr extends AmdaObjectMgr |
674 | 726 | $line++; |
675 | 727 | } |
676 | 728 | |
677 | - if ($interval[0][$i][1] < $interval[1][$j][1]) { | |
678 | - $i++; | |
729 | + if ($interval[0][$iId][1] < $interval[1][$jId][1]) { | |
730 | + $iId++; | |
679 | 731 | } else { |
680 | - $j++; | |
732 | + $jId++; | |
681 | 733 | } |
682 | 734 | } |
683 | 735 | |
... | ... | @@ -685,15 +737,15 @@ class TimeTableMgr extends AmdaObjectMgr |
685 | 737 | if ($line == 0) { |
686 | 738 | $result = "empty"; |
687 | 739 | } else { |
688 | - $objTT->name = $obj->name; | |
740 | + $objTT->name = $obj->name; // FIXME $objTT is undefined | |
689 | 741 | $objTT->nodeType = 'timeTable'; |
690 | 742 | $objTT->leaf = true; |
691 | 743 | $objTT->created = null; |
692 | 744 | $objTT->history = $obj->history; |
693 | - for ($i = 0; $i < count($start); $i++) { | |
745 | + for ($iId = 0; $iId < count($start); $iId++) { | |
694 | 746 | $inter = new stdClass(); |
695 | - $inter->start = $start[$i]; | |
696 | - $inter->stop = $stop[$i]; | |
747 | + $inter->start = $start[$iId]; | |
748 | + $inter->stop = $stop[$iId]; | |
697 | 749 | $objTT->intervals[] = $inter; |
698 | 750 | } |
699 | 751 | $objTT->nbIntervals = count($start); |
... | ... | @@ -703,32 +755,37 @@ class TimeTableMgr extends AmdaObjectMgr |
703 | 755 | } else { |
704 | 756 | $this->objectDom = new DomDocument('1.0'); |
705 | 757 | $this->objectDom->formatOutput = true; |
706 | - $result = $this->createObject($objTT, $folder); | |
758 | + $result = $this->createObject($objTT, $folder); // FIXME $folder is undefined | |
707 | 759 | |
708 | 760 | if (!isset($result['error'])) { |
709 | 761 | $this->saveIntervals($result['id'], $objTT->intervals, 'intersect'); |
710 | 762 | } |
711 | - | |
712 | 763 | } |
713 | 764 | } |
714 | 765 | return $result; |
715 | 766 | } |
716 | 767 | |
717 | - protected function call_intersection($fst, $snd) | |
768 | + /** | |
769 | + * Call intersection | |
770 | + * @param $fst | |
771 | + * @param $snd | |
772 | + * @return array | |
773 | + */ | |
774 | + protected function callIntersection($fst, $snd) | |
718 | 775 | { |
719 | 776 | $inf = ($fst[0] > $snd[0]) ? $fst[0] : $snd[0]; |
720 | 777 | $sup = ($fst[1] < $snd[1]) ? $fst[1] : $snd[1]; |
721 | - if ($inf >= $sup) { | |
722 | - $inter[] = array(0, 0); | |
723 | - } else { | |
724 | - $inter[] = array($inf, $sup); | |
725 | - } | |
778 | + $inter[] = ($inf >= $sup) ? [0, 0] : [$inf, $sup]; | |
726 | 779 | return $inter; |
727 | 780 | } |
728 | 781 | |
729 | - //TODO getObject only!!!! => change DD_Search output | |
730 | - | |
731 | - function validNameObject($p) | |
782 | + /** | |
783 | + * Valid name object | |
784 | + * TODO getObject only!!!! => change DD_Search output | |
785 | + * @param $p | |
786 | + * @return array | |
787 | + */ | |
788 | + public function validNameObject($p) | |
732 | 789 | { |
733 | 790 | // overwritten |
734 | 791 | $res = parent::validNameObject($p); |
... | ... | @@ -739,16 +796,21 @@ class TimeTableMgr extends AmdaObjectMgr |
739 | 796 | |
740 | 797 | //no space |
741 | 798 | if (strpos($p->name, ' ') === false) { |
742 | - return array('valid' => true); | |
799 | + return ['valid' => true]; | |
743 | 800 | } |
744 | 801 | |
745 | - return array('valid' => false, 'error' => 'Space character is not allowed'); | |
802 | + return ['valid' => false, 'error' => 'Space character is not allowed']; | |
746 | 803 | } |
747 | 804 | |
748 | - /* | |
749 | - * merge time tables | |
750 | - */ | |
751 | - | |
805 | + /** | |
806 | + * Copy time table | |
807 | + * @param $src_path | |
808 | + * @param $dst_path | |
809 | + * @param $newId | |
810 | + * @param $newName | |
811 | + * @param null $newDescription | |
812 | + * @return bool | |
813 | + */ | |
752 | 814 | public function copyTT($src_path, $dst_path, $newId, $newName, $newDescription = null) |
753 | 815 | { |
754 | 816 | if (!file_exists($src_path)) { |
... | ... | @@ -800,21 +862,23 @@ class TimeTableMgr extends AmdaObjectMgr |
800 | 862 | $descriptionNode->nodeValue = $newDescription; |
801 | 863 | } |
802 | 864 | |
803 | - $dst_file_path = $dst_path . "/" . $newId . ".xml"; | |
804 | - if ($dom->save($dst_file_path) === false) { | |
865 | + $dstFilePath = $dst_path . "/" . $newId . ".xml"; | |
866 | + if ($dom->save($dstFilePath) === false) { | |
805 | 867 | return false; |
806 | 868 | } |
807 | 869 | |
808 | - chgrp($dst_file_path, APACHE_USER); | |
809 | - chmod($dst_file_path, 0775); | |
870 | + chgrp($dstFilePath, APACHE_USER); | |
871 | + chmod($dstFilePath, 0775); | |
810 | 872 | |
811 | 873 | return true; |
812 | 874 | } |
813 | 875 | |
814 | - /* | |
815 | - * intersect time tables | |
876 | + /** | |
877 | + * Rename in resource | |
878 | + * @param $name | |
879 | + * @param $id | |
880 | + * @return bool | |
816 | 881 | */ |
817 | - | |
818 | 882 | protected function renameInResource($name, $id) |
819 | 883 | { |
820 | 884 | if (!file_exists(USERTTDIR . $id . '.xml')) { |
... | ... | @@ -831,6 +895,10 @@ class TimeTableMgr extends AmdaObjectMgr |
831 | 895 | return true; |
832 | 896 | } |
833 | 897 | |
898 | + /** | |
899 | + * Delete parameter | |
900 | + * @param $id | |
901 | + */ | |
834 | 902 | protected function deleteParameter($id) |
835 | 903 | { |
836 | 904 | if (file_exists(USERTTDIR . $id . '.xml')) { |
... | ... | @@ -838,11 +906,14 @@ class TimeTableMgr extends AmdaObjectMgr |
838 | 906 | } |
839 | 907 | } |
840 | 908 | |
909 | + /** | |
910 | + * Rename only | |
911 | + * @param $p | |
912 | + * @return bool | |
913 | + */ | |
841 | 914 | protected function renameOnly($p) |
842 | 915 | { |
843 | 916 | //if (!($p->intervals)) return true; |
844 | 917 | return false; |
845 | 918 | } |
846 | 919 | } |
847 | - | |
848 | -?> | ... | ... |