PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/add-ons/ical/functions/parse_tzs.php

https://github.com/jcplat/console-seolan
PHP | 64 lines | 57 code | 4 blank | 3 comment | 14 complexity | c1b23681bf9975145e1f6a8bf26d4b7e MD5 | raw file
Possible License(s): LGPL-2.0, LGPL-2.1, GPL-3.0, Apache-2.0, BSD-3-Clause
  1. <?php
  2. $ifile = @fopen($filename, "r");
  3. if ($ifile == FALSE) exit(error($lang['l_error_cantopen'], $filename));
  4. $nextline = fgets($ifile, 1024);
  5. if (trim($nextline) != 'BEGIN:VCALENDAR') exit(error($lang['l_error_invalidcal'], $filename));
  6. // read file in line by line
  7. // XXX end line is skipped because of the 1-line readahead
  8. while (!feof($ifile)) {
  9. $line = $nextline;
  10. $nextline = fgets($ifile, 1024);
  11. $nextline = ereg_replace("[\r\n]", "", $nextline);
  12. #handle continuation lines that start with either a space or a tab (MS Outlook)
  13. while (isset($nextline{0}) && ($nextline{0} == " " || $nextline{0} == "\t")) {
  14. $line = $line . substr($nextline, 1);
  15. $nextline = fgets($ifile, 1024);
  16. $nextline = ereg_replace("[\r\n]", "", $nextline);
  17. }
  18. $line = trim($line);
  19. switch ($line) {
  20. case 'BEGIN:VTIMEZONE':
  21. unset($tz_name, $offset_from, $offset_to, $tz_id);
  22. break;
  23. case 'BEGIN:STANDARD':
  24. unset ($offset_s);
  25. break;
  26. case 'END:STANDARD':
  27. $offset_s = $offset_to;
  28. break;
  29. case 'BEGIN:DAYLIGHT':
  30. unset ($offset_d);
  31. break;
  32. case 'END:DAYLIGHT':
  33. $offset_d = $offset_to;
  34. break;
  35. case 'END:VTIMEZONE':
  36. $tz_array[$tz_id] = array($offset_s, $offset_d); #echo "<pre>$tz_id"; print_r($tz_array[$tz_id]);echo"</pre>";
  37. break;
  38. default:
  39. unset ( $data, $prop_pos, $property);
  40. if (ereg ("([^:]+):(.*)", $line, $line)){
  41. $property = $line[1];
  42. $data = $line[2];
  43. $prop_pos = strpos($property,';');
  44. if ($prop_pos !== false) $property = substr($property,0,$prop_pos);
  45. $property = strtoupper($property);
  46. switch ($property) {
  47. case 'TZID':
  48. $tz_id = $data;
  49. break;
  50. case 'TZOFFSETFROM':
  51. $offset_from = $data;
  52. break;
  53. case 'TZOFFSETTO':
  54. $offset_to = $data;
  55. break;
  56. }
  57. }
  58. }
  59. }
  60. ?>