Commit e4fba9d277a65db2c7a1aee5270564d441f8b139

Authored by Nathanaël Jourdane
1 parent d8ec1623

Import tt: parse doy-dates

Showing 1 changed file with 19 additions and 39 deletions   Show diff stats
php/classes/TimeTableMgr.php
@@ -243,7 +243,7 @@ class TimeTableMgr extends AmdaObjectMgr @@ -243,7 +243,7 @@ class TimeTableMgr extends AmdaObjectMgr
243 public function getUploadedObject($name, $format, $onlyDescription = false) 243 public function getUploadedObject($name, $format, $onlyDescription = false)
244 { 244 {
245 if (strpos($name, '.txt') !== false || strpos($name, '.asc') !== false || strpos($name, '.') == false) { 245 if (strpos($name, '.txt') !== false || strpos($name, '.asc') !== false || strpos($name, '.') == false) {
246 - $attributesToReturn = $this->text2amda(USERTEMPDIR . $name, $onlyDescription); 246 + $attributesToReturn = $this->textToAmda(USERTEMPDIR . $name, $onlyDescription);
247 $attributesToReturn['objName'] = $name; 247 $attributesToReturn['objName'] = $name;
248 $attributesToReturn['objFormat'] = $format; 248 $attributesToReturn['objFormat'] = $format;
249 249
@@ -323,7 +323,7 @@ class TimeTableMgr extends AmdaObjectMgr @@ -323,7 +323,7 @@ class TimeTableMgr extends AmdaObjectMgr
323 * @param bool $onlyDescription 323 * @param bool $onlyDescription
324 * @return mixed 324 * @return mixed
325 */ 325 */
326 - protected function text2amda($tmp_file, $onlyDescription = false) 326 + protected function textToAmda($tmp_file, $onlyDescription = false)
327 { 327 {
328 $suffix = explode('.', basename($tmp_file)); 328 $suffix = explode('.', basename($tmp_file));
329 $lines = file($tmp_file, FILE_SKIP_EMPTY_LINES); 329 $lines = file($tmp_file, FILE_SKIP_EMPTY_LINES);
@@ -333,59 +333,39 @@ class TimeTableMgr extends AmdaObjectMgr @@ -333,59 +333,39 @@ class TimeTableMgr extends AmdaObjectMgr
333 $descNumber = 0; 333 $descNumber = 0;
334 334
335 foreach ($lines as $line) { 335 foreach ($lines as $line) {
336 - if ($line[0] == '#') { 336 + $line = trim($line);
  337 + if ($line[0] == '#') { // Comment
337 $description = $description . PHP_EOL . substr($line, 1, -1); 338 $description = $description . PHP_EOL . substr($line, 1, -1);
338 } else { 339 } else {
339 - $date = explode(' ', trim(preg_replace('!\s+!', ' ', $line)));  
340 -  
341 - if (!strtotime(trim($date[0]))) { 340 + $isoFormat = 'Y-m-dTH:i:s';
  341 + $doyFormat = 'Y z H i s';
  342 + $isoRegex = '(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})';
  343 + $doyRegex = '(\d{4}) (\d{3}) (\d{2}) (\d{2}) (\d{2})';
  344 +
  345 + if (preg_match('/^' . $isoRegex . ' ' . $isoRegex . '$/', $line)) {
  346 + $startDate = substr($line, 0, 19);
  347 + $stopDate = substr($line, 20);
  348 + } elseif (preg_match('/^' . $doyRegex . ' ' . $doyRegex . '$/', $line)) {
  349 + $startDate = DateTime::createFromFormat($doyFormat, substr($line, 0, 17))->format($isoFormat);
  350 + $stopDate = DateTime::createFromFormat($doyFormat, substr($line, 18))->format($isoFormat);
  351 + } else {
342 $description = $description . PHP_EOL . $line; 352 $description = $description . PHP_EOL . $line;
343 $descNumber++; 353 $descNumber++;
344 continue; 354 continue;
345 } 355 }
346 - // check if it is ISO format  
347 - if (!isset($isIso)) {  
348 - $isIso = preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})$/', trim($date[0]));  
349 - }  
350 -  
351 - if (!$isIso) {  
352 - // y-m-d h:m:s for example  
353 - $dateLength = count($date) / 2;  
354 -  
355 - $tempStart = $date[0];  
356 - $tempStop = $date[$dateLength];  
357 -  
358 - if ($dateLength > 1) {  
359 - for ($iDate = 1; $iDate < $dateLength; $iDate++) {  
360 - $tempStart .= $date[$iDate];  
361 - }  
362 -  
363 - for ($iDate = $dateLength + 1; $iDate < $dateLength * 2; $iDate++) {  
364 - $tempStop .= $date[$iDate];  
365 - }  
366 - }  
367 -  
368 - $startDate = date('Y-m-d\TH:i:s', strtotime($tempStart));  
369 - $stopDate = date('Y-m-d\TH:i:s', strtotime($tempStop));  
370 356
371 - if (!$onlyDescription) {  
372 - $attributesToReturn['intervals'][] = ['start' => $startDate, 'stop' => $stopDate];  
373 - }  
374 - } else {  
375 - if (!$onlyDescription) {  
376 - $attributesToReturn['intervals'][] = ['start' => trim($date[0]), 'stop' => trim($date[1])];  
377 - } 357 + if (!$onlyDescription) {
  358 + $attributesToReturn['intervals'][] = ['start' => $startDate, 'stop' => $stopDate];
378 } 359 }
379 } 360 }
380 } 361 }
381 if ($recordsNumber == $descNumber) { 362 if ($recordsNumber == $descNumber) {
382 - $description = "Looks like we can not read your time format..." . PHP_EOL . $description; 363 + $description = 'Looks like we can not read your time format...' . PHP_EOL . $description;
383 } 364 }
384 365
385 $attributesToReturn['description'] = $description; 366 $attributesToReturn['description'] = $description;
386 $attributesToReturn['name'] = basename($tmp_file, '.' . $suffix[1]); 367 $attributesToReturn['name'] = basename($tmp_file, '.' . $suffix[1]);
387 $attributesToReturn['created'] = date('Y-m-d\TH:i:s'); 368 $attributesToReturn['created'] = date('Y-m-d\TH:i:s');
388 -  
389 return $attributesToReturn; 369 return $attributesToReturn;
390 } 370 }
391 371