* @package Timezone
*/
class Horde_Timezone
{
/**
* Any configuration parameters for this class.
*
* @var array
*/
protected $_params;
/**
* File location of the downloaded timezone database.
*
* @var string
*/
protected $_tmpfile;
/**
* List of all Zone entries parsed into Horde_Timezone_Zone objects.
*
* @var array
*/
protected $_zones = array();
/**
* List of all Rule entries parsed into Horde_Timezone_Rule objects.
*
* @var array
*/
protected $_rules = array();
/**
* Alias map of all Link entries.
*
* @var array
*/
protected $_links = array();
/**
* List to map month descriptions used in the timezone database.
*
* @var array
*/
static protected $_months = array('Jan' => 1,
'Feb' => 2,
'Mar' => 3,
'Apr' => 4,
'May' => 5,
'Jun' => 6,
'Jul' => 7,
'Aug' => 8,
'Sep' => 9,
'Oct' => 10,
'Nov' => 11,
'Dec' => 12);
/**
* Constructor.
*
* @param array $params List of optional class parameters. Possible
* options:
* - location: (string) Location of the timezone
* database, defaults to
* ftp.iana.org/tz/tzdata-latest.tar.gz.
* - client: (Horde_Http_Client) A preconfigured
* HTTP client for downloading via HTTP.
* - temp: (string) Temporary directory.
* - cache: (Horde_Cache) A cache object.
* - cachettl: (integer) Cache lifetime in seconds,
* defaults to 7 days.
*/
public function __construct(array $params = array())
{
$this->_params = array_merge(
array('location' => 'ftp://ftp.iana.org/tz/tzdata-latest.tar.gz',
'cachettl' => 604800),
$params);
}
/**
* Returns the month number of a month name.
*
* @param string $month A month name.
*
* @return integer The month's number.
*/
static public function getMonth($month)
{
return self::$_months[substr($month, 0, 3)];
}
/**
* Returns an object representing an invidual timezone.
*
* Maps to a "Zone" entry in the timezone database. Works with
* zone aliases too.
*
* @param string $zone A timezone name.
*
* @return Horde_Timezone_Zone A timezone object.
*/
public function getZone($zone)
{
if (!$this->_zones) {
$this->_extractAndParse();
}
$alias = isset($this->_links[$zone]) ? $this->_links[$zone] : $zone;
if (!isset($this->_zones[$alias])) {
throw new Horde_Timezone_Exception(sprintf('Timezone %s not found', $zone));
}
$this->_zones[$alias]->setTzid($zone);
return $this->_zones[$alias];
}
/**
* Returns an object representing a set of named transition rules.
*
* Maps to a list Rule entries of the same name in the timezone database.
*
* @param string $rule A rule name.
*
* @return Horde_Timezone_Rule A rule object.
*/
public function getRule($rule)
{
if (!$this->_rules) {
$this->_extractAndParse();
}
if (!isset($this->_rules[$rule])) {
throw new Horde_Timezone_Exception(sprintf('Timezone rule %s not found', $rule));
}
return $this->_rules[$rule];
}
/**
* Downloads a timezone database.
*
* @throws Horde_Timezone_Exception if downloading fails.
*/
protected function _download()
{
$url = @parse_url($this->_params['location']);
if (!isset($url['scheme'])) {
throw new Horde_Timezone_Exception('"location" parameter is missing an URL scheme.');
}
if (!in_array($url['scheme'], array('http', 'ftp', 'file'))) {
throw new Horde_Timezone_Exception(sprintf('Unsupported URL scheme "%s"', $url['scheme']));
}
if ($url['scheme'] == 'http') {
if (isset($this->_params['client'])) {
$client = $this->_params['client'];
} else {
$client = new Horde_Http_Client();
}
$response = $client->get($this->_params['location']);
$this->_tmpfile = Horde_Util::getTempFile(
'', true,
isset($this->_params['temp']) ? $this->_params['temp'] : '');
stream_copy_to_stream($response->getStream(), fopen($this->_tmpfile, 'w'));
return;
}
try {
if ($url['scheme'] == 'ftp') {
$vfs = new Horde_Vfs_Ftp(array('hostspec' => $url['host'],
'username' => 'anonymous',
'password' => 'anonymous'));
} else {
$vfs = new Horde_Vfs_File();
}
$this->_tmpfile = $vfs->readFile(dirname($url['path']),
basename($url['path']));
} catch (Horde_Vfs_Exception $e) {
throw new Horde_Timezone_Exception($e);
}
}
/**
* Unpacks the downloaded timezone database and parses all files.
*/
protected function _extractAndParse()
{
if (isset($this->_params['cache'])) {
$result = @unserialize(
$this->_params['cache']->get(
'horde_timezone',
$this->_params['cachettl'])
);
if ($result) {
$this->_zones = $result['zones'];
$this->_rules = $result['rules'];
$this->_links = $result['links'];
return;
}
}
if (!$this->_tmpfile) {
$this->_download();
}
$tar = new Archive_Tar($this->_tmpfile);
foreach ($tar->listContent() as $file) {
if ($file['typeflag'] != 0) {
continue;
}
$this->_parse($tar->extractInString($file['filename']));
}
if (isset($this->_params['cache'])) {
$this->_params['cache']->set(
'horde_timezone',
serialize(array(
'zones' => $this->_zones,
'rules' => $this->_rules,
'links' => $this->_links
)),
$this->_params['cachettl']);
}
}
/**
* Parses a file from the timezone database.
*
* @param string $file A file location.
*/
protected function _parse($file)
{
$stream = new Horde_Support_StringStream($file);
$fp = $stream->fopen();
$zone = null;
while (($line = fgets($fp)) !== false) {
$line = trim($line);
if (!strlen($line) || $line[0] == '#') {
continue;
}
$column = preg_split('/\s+/', preg_replace('/#.*$/', '', $line));
switch ($column[0]) {
case 'Rule':
if (!isset($this->_rules[$column[1]])) {
$this->_rules[$column[1]] = new Horde_Timezone_Rule($column[1]);
}
$this->_rules[$column[1]]->add($column);
$zone = null;
break;
case 'Link':
$this->_links[$column[2]] = $column[1];
$zone = null;
break;
case 'Zone':
$zone = $column[1];
$this->_zones[$zone] = new Horde_Timezone_Zone($zone, $this);
array_splice($column, 0, 2);
// Fall through.
default:
if (empty($zone) || !isset($this->_zones[$zone])) {
break;
}
$this->_zones[$zone]->add($column);
break;
}
}
}
}
Horde_Timezone-1.0.4/test/Horde/Timezone/fixtures/etcetera 0000664 0001750 0001750 00000005613 12233442633 021744 0 ustar jan jan #
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
# These entries are mostly present for historical reasons, so that
# people in areas not otherwise covered by the tz files could "zic -l"
# to a time zone that was right for their area. These days, the
# tz files cover almost all the inhabited world, and the only practical
# need now for the entries that are not on UTC are for ships at sea
# that cannot use POSIX TZ settings.
Zone Etc/GMT 0 - GMT
Zone Etc/UTC 0 - UTC
Zone Etc/UCT 0 - UCT
# The following link uses older naming conventions,
# but it belongs here, not in the file `backward',
# as functions like gmtime load the "GMT" file to handle leap seconds properly.
# We want this to work even on installations that omit the other older names.
Link Etc/GMT GMT
Link Etc/UTC Etc/Universal
Link Etc/UTC Etc/Zulu
Link Etc/GMT Etc/Greenwich
Link Etc/GMT Etc/GMT-0
Link Etc/GMT Etc/GMT+0
Link Etc/GMT Etc/GMT0
# We use POSIX-style signs in the Zone names and the output abbreviations,
# even though this is the opposite of what many people expect.
# POSIX has positive signs west of Greenwich, but many people expect
# positive signs east of Greenwich. For example, TZ='Etc/GMT+4' uses
# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
# (i.e. west of Greenwich) even though many people would expect it to
# mean 4 hours ahead of UTC (i.e. east of Greenwich).
#
# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
# TZ='+4'; if you want time zone abbreviations conforming to
# ISO 8601 you can use TZ='<-0400>+4'. Thus the commonly-expected
# offset is kept within the angle bracket (and is used for display)
# while the POSIX sign is kept outside the angle bracket (and is used
# for calculation).
#
# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
# GMT but uses the completely misleading abbreviation "GMT".
# Earlier incarnations of this package were not POSIX-compliant,
# and had lines such as
# Zone GMT-12 -12 - GMT-1200
# We did not want things to change quietly if someone accustomed to the old
# way does a
# zic -l GMT-12
# so we moved the names into the Etc subdirectory.
Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT
Zone Etc/GMT-13 13 - GMT-13
Zone Etc/GMT-12 12 - GMT-12
Zone Etc/GMT-11 11 - GMT-11
Zone Etc/GMT-10 10 - GMT-10
Zone Etc/GMT-9 9 - GMT-9
Zone Etc/GMT-8 8 - GMT-8
Zone Etc/GMT-7 7 - GMT-7
Zone Etc/GMT-6 6 - GMT-6
Zone Etc/GMT-5 5 - GMT-5
Zone Etc/GMT-4 4 - GMT-4
Zone Etc/GMT-3 3 - GMT-3
Zone Etc/GMT-2 2 - GMT-2
Zone Etc/GMT-1 1 - GMT-1
Zone Etc/GMT+1 -1 - GMT+1
Zone Etc/GMT+2 -2 - GMT+2
Zone Etc/GMT+3 -3 - GMT+3
Zone Etc/GMT+4 -4 - GMT+4
Zone Etc/GMT+5 -5 - GMT+5
Zone Etc/GMT+6 -6 - GMT+6
Zone Etc/GMT+7 -7 - GMT+7
Zone Etc/GMT+8 -8 - GMT+8
Zone Etc/GMT+9 -9 - GMT+9
Zone Etc/GMT+10 -10 - GMT+10
Zone Etc/GMT+11 -11 - GMT+11
Zone Etc/GMT+12 -12 - GMT+12
Horde_Timezone-1.0.4/test/Horde/Timezone/fixtures/etcetera.ics 0000664 0001750 0001750 00000000056 12233442633 022515 0 ustar jan jan BEGIN:VTIMEZONE
TZID:Etc/UTC
END:VTIMEZONE
Horde_Timezone-1.0.4/test/Horde/Timezone/fixtures/europe 0000664 0001750 0001750 00000013554 12233442633 021452 0 ustar jan jan # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
# Summer Time Act, 1916
Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
# S.R.&O. 1917, No. 358
Rule GB-Eire 1917 only - Apr 8 2:00s 1:00 BST
Rule GB-Eire 1917 only - Sep 17 2:00s 0 GMT
# S.R.&O. 1918, No. 274
Rule GB-Eire 1918 only - Mar 24 2:00s 1:00 BST
Rule GB-Eire 1918 only - Sep 30 2:00s 0 GMT
# S.R.&O. 1919, No. 297
Rule GB-Eire 1919 only - Mar 30 2:00s 1:00 BST
Rule GB-Eire 1919 only - Sep 29 2:00s 0 GMT
# S.R.&O. 1920, No. 458
Rule GB-Eire 1920 only - Mar 28 2:00s 1:00 BST
# S.R.&O. 1920, No. 1844
Rule GB-Eire 1920 only - Oct 25 2:00s 0 GMT
# S.R.&O. 1921, No. 363
Rule GB-Eire 1921 only - Apr 3 2:00s 1:00 BST
Rule GB-Eire 1921 only - Oct 3 2:00s 0 GMT
# S.R.&O. 1922, No. 264
Rule GB-Eire 1922 only - Mar 26 2:00s 1:00 BST
Rule GB-Eire 1922 only - Oct 8 2:00s 0 GMT
# The Summer Time Act, 1922
Rule GB-Eire 1923 only - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1923 1924 - Sep Sun>=16 2:00s 0 GMT
Rule GB-Eire 1924 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1925 1926 - Apr Sun>=16 2:00s 1:00 BST
# The Summer Time Act, 1925
Rule GB-Eire 1925 1938 - Oct Sun>=2 2:00s 0 GMT
Rule GB-Eire 1927 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1928 1929 - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1930 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1931 1932 - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1933 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1934 only - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1935 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1936 1937 - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1938 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1939 only - Apr Sun>=16 2:00s 1:00 BST
# S.R.&O. 1939, No. 1379
Rule GB-Eire 1939 only - Nov Sun>=16 2:00s 0 GMT
# S.R.&O. 1940, No. 172 and No. 1883
Rule GB-Eire 1940 only - Feb Sun>=23 2:00s 1:00 BST
# S.R.&O. 1941, No. 476
Rule GB-Eire 1941 only - May Sun>=2 1:00s 2:00 BDST
Rule GB-Eire 1941 1943 - Aug Sun>=9 1:00s 1:00 BST
# S.R.&O. 1942, No. 506
Rule GB-Eire 1942 1944 - Apr Sun>=2 1:00s 2:00 BDST
# S.R.&O. 1944, No. 932
Rule GB-Eire 1944 only - Sep Sun>=16 1:00s 1:00 BST
# S.R.&O. 1945, No. 312
Rule GB-Eire 1945 only - Apr Mon>=2 1:00s 2:00 BDST
Rule GB-Eire 1945 only - Jul Sun>=9 1:00s 1:00 BST
# S.R.&O. 1945, No. 1208
Rule GB-Eire 1945 1946 - Oct Sun>=2 2:00s 0 GMT
Rule GB-Eire 1946 only - Apr Sun>=9 2:00s 1:00 BST
# The Summer Time Act, 1947
Rule GB-Eire 1947 only - Mar 16 2:00s 1:00 BST
Rule GB-Eire 1947 only - Apr 13 1:00s 2:00 BDST
Rule GB-Eire 1947 only - Aug 10 1:00s 1:00 BST
Rule GB-Eire 1947 only - Nov 2 2:00s 0 GMT
# Summer Time Order, 1948 (S.I. 1948/495)
Rule GB-Eire 1948 only - Mar 14 2:00s 1:00 BST
Rule GB-Eire 1948 only - Oct 31 2:00s 0 GMT
# Summer Time Order, 1949 (S.I. 1949/373)
Rule GB-Eire 1949 only - Apr 3 2:00s 1:00 BST
Rule GB-Eire 1949 only - Oct 30 2:00s 0 GMT
# Summer Time Order, 1950 (S.I. 1950/518)
# Summer Time Order, 1951 (S.I. 1951/430)
# Summer Time Order, 1952 (S.I. 1952/451)
Rule GB-Eire 1950 1952 - Apr Sun>=14 2:00s 1:00 BST
Rule GB-Eire 1950 1952 - Oct Sun>=21 2:00s 0 GMT
# revert to the rules of the Summer Time Act, 1925
Rule GB-Eire 1953 only - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1953 1960 - Oct Sun>=2 2:00s 0 GMT
Rule GB-Eire 1954 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1955 1956 - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1957 only - Apr Sun>=9 2:00s 1:00 BST
Rule GB-Eire 1958 1959 - Apr Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1960 only - Apr Sun>=9 2:00s 1:00 BST
# Summer Time Order, 1961 (S.I. 1961/71)
# Summer Time (1962) Order, 1961 (S.I. 1961/2465)
# Summer Time Order, 1963 (S.I. 1963/81)
Rule GB-Eire 1961 1963 - Mar lastSun 2:00s 1:00 BST
Rule GB-Eire 1961 1968 - Oct Sun>=23 2:00s 0 GMT
# Summer Time (1964) Order, 1963 (S.I. 1963/2101)
# Summer Time Order, 1964 (S.I. 1964/1201)
# Summer Time Order, 1967 (S.I. 1967/1148)
Rule GB-Eire 1964 1967 - Mar Sun>=19 2:00s 1:00 BST
# Summer Time Order, 1968 (S.I. 1968/117)
Rule GB-Eire 1968 only - Feb 18 2:00s 1:00 BST
# The British Standard Time Act, 1968
# (no summer time)
# The Summer Time Act, 1972
Rule GB-Eire 1972 1980 - Mar Sun>=16 2:00s 1:00 BST
Rule GB-Eire 1972 1980 - Oct Sun>=23 2:00s 0 GMT
# Summer Time Order, 1980 (S.I. 1980/1089)
# Summer Time Order, 1982 (S.I. 1982/1673)
# Summer Time Order, 1986 (S.I. 1986/223)
# Summer Time Order, 1988 (S.I. 1988/931)
Rule GB-Eire 1981 1995 - Mar lastSun 1:00u 1:00 BST
Rule GB-Eire 1981 1989 - Oct Sun>=23 1:00u 0 GMT
# Summer Time Order, 1989 (S.I. 1989/985)
# Summer Time Order, 1992 (S.I. 1992/1729)
# Summer Time Order 1994 (S.I. 1994/2798)
Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT
# Summer Time Order 1997 (S.I. 1997/2982)
# See EU for rules starting in 1996.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s
0:00 GB-Eire %s 1968 Oct 27
1:00 - BST 1971 Oct 31 2:00u
0:00 GB-Eire %s 1996
0:00 EU GMT/BST
Link Europe/London Europe/Jersey
Link Europe/London Europe/Guernsey
Link Europe/London Europe/Isle_of_Man
Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
-0:25:21 - DMT 1916 May 21 2:00
-0:25:21 1:00 IST 1916 Oct 1 2:00s
0:00 GB-Eire %s 1921 Dec 6 # independence
0:00 GB-Eire GMT/IST 1940 Feb 25 2:00
0:00 1:00 IST 1946 Oct 6 2:00
0:00 - GMT 1947 Mar 16 2:00
0:00 1:00 IST 1947 Nov 2 2:00
0:00 - GMT 1948 Apr 18 2:00
0:00 GB-Eire GMT/IST 1968 Oct 27
1:00 - IST 1971 Oct 31 2:00u
0:00 GB-Eire GMT/IST 1996
0:00 EU GMT/IST
###############################################################################
# Europe
# EU rules are for the European Union, previously known as the EC, EEC,
# Common Market, etc.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
Rule EU 1977 only - Sep lastSun 1:00u 0 -
Rule EU 1978 only - Oct 1 1:00u 0 -
Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
Rule EU 1996 max - Oct lastSun 1:00u 0 -
Horde_Timezone-1.0.4/test/Horde/Timezone/fixtures/europe.ics 0000664 0001750 0001750 00000026367 12233442633 022235 0 ustar jan jan BEGIN:VTIMEZONE
TZID:Europe/Jersey
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19160521T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19161001T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19170408T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19170917T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19180324T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19180930T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19190330T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19190929T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19200328T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19201025T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19210403T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19211003T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19220326T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19221008T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19230422T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19230422T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19230916T020000
RRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19240921T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19240413T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19240413T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19250419T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19260418T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19251004T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=1SU;UNTIL=19381
002T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19270410T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19270410T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19280422T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19290421T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19300413T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19300413T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19310419T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19320417T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19330409T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19330409T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19340422T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19340422T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19350414T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19350414T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19360419T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19370418T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19380410T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19380410T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19390416T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19390416T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19391119T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTI
L=19391119T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19400225T020000
RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=1SU;UNTIL
=19400225T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19410504T010000
RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=1SU;UNTIL=194105
04T00000Z
TZNAME:BDST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19410810T010000
RRULE:FREQ=YEARLY;BYMONTH=8;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19430814T23000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19420405T010000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=1SU;UNTIL=194404
02T00000Z
TZNAME:BDST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19440917T010000
RRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19440916T23000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19450402T010000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=1MO;UNTIL=194504
07T23000Z
TZNAME:BDST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19450715T010000
RRULE:FREQ=YEARLY;BYMONTH=7;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19450714T23000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19451007T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=1SU;UNTIL=19461
006T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19460414T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19460414T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19470316T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19470413T010000
TZNAME:BDST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
DTSTART:19470810T010000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19471102T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19480314T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19481031T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19490403T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19491030T020000
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19500416T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=14,15,16,17,18,19,20;BYDAY=1SU;UNTIL
=19520420T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19501022T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=21,22,23,24,25,26,27;BYDAY=1SU;UNTI
L=19521026T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19530419T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19530419T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19531004T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=2,3,4,5,6,7,8;BYDAY=1SU;UNTIL=19601
002T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19540411T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19540411T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19550417T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19560422T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19570414T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19570414T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19580420T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19590419T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19600410T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=1SU;UNTIL=
19600410T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19610326T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3;UNTIL=19630331T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19611029T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=1SU;UNTI
L=19681027T01000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19640322T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=1SU;UNTIL
=19670319T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19680218T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19681027T000000
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
TZNAME:BST
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
DTSTART:19681027T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=1SU;UNTI
L=19681027T01000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19680218T020000
TZNAME:BST
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
DTSTART:19720319T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=16,17,18,19,20,21,22;BYDAY=1SU;UNTIL
=19800316T02000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19721029T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=1SU;UNTI
L=19801026T02000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19810329T010000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3;UNTIL=19950326T01000Z
TZNAME:BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19811025T010000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=23,24,25,26,27,28,29;BYDAY=1SU;UNTI
L=19891029T01000Z
TZNAME:GMT
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
DTSTART:19901028T010000
RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=22,23,24,25,26,27,28;BYDAY=1SU;UNTI
L=19951022T01000Z
TZNAME:GMT
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0000
TZOFFSETTO:+0100
DTSTART:19960331T010000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3
TZNAME:GMT/BST
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
DTSTART:19961027T010000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:GMT/BST
END:STANDARD
END:VTIMEZONE
Horde_Timezone-1.0.4/test/Horde/Timezone/fixtures/losangeles.ics 0000664 0001750 0001750 00000005071 12233442633 023057 0 ustar jan jan BEGIN:VTIMEZONE
TZID:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
DTSTART:19180331T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3;UNTIL=19190330T10000Z
TZNAME:PDT
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
DTSTART:19181027T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=19191026T10000Z
TZNAME:PST
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
DTSTART:19420209T020000
TZNAME:PWT
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
DTSTART:19450814T230000
TZNAME:PPT
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
DTSTART:19450930T020000
TZNAME:PST
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
DTSTART:19480314T020000
TZNAME:PDT
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
DTSTART:19490101T020000
TZNAME:PST
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
DTSTART:19500430T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4;UNTIL=19660424T10000Z
TZNAME:PDT
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
DTSTART:19500924T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=9;UNTIL=19610924T10000Z
TZNAME:PST
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:-0800
TZOFFSETTO:-0800
DTSTART:19621028T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=19661030T10000Z
TZNAME:PST
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:-0800
TZOFFSETTO:-0800
DTSTART:19671029T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10;UNTIL=20061029T10000Z
TZNAME:PST
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
DTSTART:19670430T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4;UNTIL=19730429T10000Z
TZNAME:PDT
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
DTSTART:19740106T020000
TZNAME:PDT
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
DTSTART:19750223T020000
TZNAME:PDT
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
DTSTART:19760425T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4;UNTIL=19860427T10000Z
TZNAME:PDT
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
DTSTART:19870405T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T10000Z
TZNAME:PDT
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=1SU
TZNAME:PDT
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
TZNAME:PST
END:STANDARD
END:VTIMEZONE
Horde_Timezone-1.0.4/test/Horde/Timezone/fixtures/northamerica 0000664 0001750 0001750 00000001754 12233442633 022626 0 ustar jan jan # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
Rule US 1918 1919 - Oct lastSun 2:00 0 S
Rule US 1942 only - Feb 9 2:00 1:00 W # War
Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace
Rule US 1945 only - Sep 30 2:00 0 S
Rule US 1967 2006 - Oct lastSun 2:00 0 S
Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
Rule US 1974 only - Jan 6 2:00 1:00 D
Rule US 1975 only - Feb 23 2:00 1:00 D
Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
Rule US 2007 max - Nov Sun>=1 2:00 0 S
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
Rule CA 1948 only - Mar 14 2:00 1:00 D
Rule CA 1949 only - Jan 1 2:00 0 S
Rule CA 1950 1966 - Apr lastSun 2:00 1:00 D
Rule CA 1950 1961 - Sep lastSun 2:00 0 S
Rule CA 1962 1966 - Oct lastSun 2:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
-8:00 US P%sT 1946
-8:00 CA P%sT 1967
-8:00 US P%sT
Horde_Timezone-1.0.4/test/Horde/Timezone/AllTests.php 0000664 0001750 0001750 00000000132 12233442633 020607 0 ustar jan jan run();
Horde_Timezone-1.0.4/test/Horde/Timezone/bootstrap.php 0000664 0001750 0001750 00000000143 12233442633 021073 0 ustar jan jan
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @category Horde
* @package Timezone
* @subpackage UnitTests
*/
class Horde_Timezone_IcalendarTest extends Horde_Test_Case
{
public function testEurope()
{
$tz = new Horde_Timezone_Mock('europe');
$this->assertStringEqualsFile(
__DIR__ . '/fixtures/europe.ics',
$tz->getZone('Europe/Jersey')->toVtimezone()->exportVcalendar()
);
}
public function testLosAngeles()
{
$tz = new Horde_Timezone_Mock('northamerica');
$this->assertStringEqualsFile(
__DIR__ . '/fixtures/losangeles.ics',
$tz->getZone('America/Los_Angeles')->toVtimezone()->exportVcalendar()
);
}
public function testEtc()
{
$tz = new Horde_Timezone_Mock('etcetera');
$this->assertStringEqualsFile(
__DIR__ . '/fixtures/etcetera.ics',
$tz->getZone('Etc/UTC')->toVtimezone()->exportVcalendar()
);
}
}
class Horde_Timezone_Mock extends Horde_Timezone
{
protected $_zone;
public function __construct($zone)
{
parent::__construct();
$this->_zone = $zone;
}
protected function _download()
{
}
protected function _extractAndParse()
{
$this->_parse(file_get_contents(__DIR__ . '/fixtures/' . $this->_zone));
}
}
Horde_Timezone-1.0.4/test/Horde/Timezone/phpunit.xml 0000664 0001750 0001750 00000000056 12233442633 020561 0 ustar jan jan