aboutsummaryrefslogtreecommitdiffstats
path: root/functions/parse/parse_tzs.php
diff options
context:
space:
mode:
authorJim Hu <jimhu@users.sourceforge.net>2008-12-11 23:48:39 +0000
committerJim Hu <jimhu@users.sourceforge.net>2008-12-11 23:48:39 +0000
commitb1aaa3b6ca8894ac0422fb3aeadded29c2b83972 (patch)
tree7689417eb311569ffe966c5f60aeb7a8e9ff2035 /functions/parse/parse_tzs.php
parentb8fa9f6a3a0d0bad52babec3573899ba37873477 (diff)
downloadphpicalendar-b1aaa3b6ca8894ac0422fb3aeadded29c2b83972.tar.gz
phpicalendar-b1aaa3b6ca8894ac0422fb3aeadded29c2b83972.tar.bz2
phpicalendar-b1aaa3b6ca8894ac0422fb3aeadded29c2b83972.zip
add new files
Diffstat (limited to 'functions/parse/parse_tzs.php')
-rw-r--r--functions/parse/parse_tzs.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/functions/parse/parse_tzs.php b/functions/parse/parse_tzs.php
new file mode 100644
index 0000000..85ab929
--- /dev/null
+++ b/functions/parse/parse_tzs.php
@@ -0,0 +1,64 @@
+<?php
+$ifile = @fopen($filename, "r");
+if ($ifile == FALSE) exit(error($lang['l_error_cantopen'], $filename));
+$nextline = fgets($ifile, 1024);
+if (trim($nextline) != 'BEGIN:VCALENDAR') exit(error($lang['l_error_invalidcal'], $filename));
+
+// read file in line by line
+// XXX end line is skipped because of the 1-line readahead
+while (!feof($ifile)) {
+ $line = $nextline;
+ $nextline = fgets($ifile, 1024);
+ $nextline = ereg_replace("[\r\n]", "", $nextline);
+ #handle continuation lines that start with either a space or a tab (MS Outlook)
+ while (isset($nextline{0}) && ($nextline{0} == " " || $nextline{0} == "\t")) {
+ $line = $line . substr($nextline, 1);
+ $nextline = fgets($ifile, 1024);
+ $nextline = ereg_replace("[\r\n]", "", $nextline);
+ }
+ $line = trim($line);
+
+ switch ($line) {
+ case 'BEGIN:VTIMEZONE':
+ unset($tz_name, $offset_from, $offset_to, $tz_id);
+ break;
+ case 'BEGIN:STANDARD':
+ unset ($offset_s);
+ break;
+ case 'END:STANDARD':
+ $offset_s = $offset_to;
+ break;
+ case 'BEGIN:DAYLIGHT':
+ unset ($offset_d);
+ break;
+ case 'END:DAYLIGHT':
+ $offset_d = $offset_to;
+ break;
+ case 'END:VTIMEZONE':
+ $tz_array[$tz_id] = array($offset_s, $offset_d); #echo "<pre>$tz_id"; print_r($tz_array[$tz_id]);echo"</pre>";
+ break;
+ default:
+ unset ( $data, $prop_pos, $property);
+ if (ereg ("([^:]+):(.*)", $line, $line)){
+ $property = $line[1];
+ $data = $line[2];
+ $prop_pos = strpos($property,';');
+ if ($prop_pos !== false) $property = substr($property,0,$prop_pos);
+ $property = strtoupper($property);
+
+ switch ($property) {
+ case 'TZID':
+ $tz_id = $data;
+ break;
+ case 'TZOFFSETFROM':
+ $offset_from = $data;
+ break;
+ case 'TZOFFSETTO':
+ $offset_to = $data;
+ break;
+ }
+ }
+ }
+}
+
+?> \ No newline at end of file

© 2014-2024 Faster IT GmbH | imprint | privacy policy