Commit d8ec16238fd8c36b0daf77df7a6219cad1062ab2

Authored by Nathanaël Jourdane
1 parent 139a8045

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   -?>
... ...