diff options
author | Jim Hu <jimhu@users.sourceforge.net> | 2008-12-11 23:48:39 +0000 |
---|---|---|
committer | Jim Hu <jimhu@users.sourceforge.net> | 2008-12-11 23:48:39 +0000 |
commit | b1aaa3b6ca8894ac0422fb3aeadded29c2b83972 (patch) | |
tree | 7689417eb311569ffe966c5f60aeb7a8e9ff2035 /functions/parse/parse_tzs.php | |
parent | b8fa9f6a3a0d0bad52babec3573899ba37873477 (diff) | |
download | phpicalendar-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.php | 64 |
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 |