public function getListOfTimezones($offsets, $expectedTimezone = null)
{
if (is_string($offsets)) {
$offsets = self::getOffsetsFromSyncTZ($offsets);
}
$this->_setDefaultStartDate($offsets);
$timezones = array();
foreach (DateTimeZone::listIdentifiers() as $timezoneIdentifier) {
$timezone = new DateTimeZone($timezoneIdentifier);
if (false !== ($matchingTransition = $this->_checkTimezone($timezone, $offsets))) {
if ($timezoneIdentifier == $expectedTimezone) {
$timezones = array($timezoneIdentifier => $matchingTransition['abbr']);
break;
} else {
$timezones[$timezoneIdentifier] = $matchingTransition['abbr'];
}
}
}
if (empty($timezones)) {
throw new Horde_Mapi_Exception('No timezone found for the given offsets');
}
return $timezones;
}