From: Jan Schneider Date: Wed, 18 Nov 2009 22:22:31 +0000 (+0100) Subject: Everybody but the U.S. (and other major countries like Belize) is using X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=d690f3c4ed7d992a98b11fdfbe0f7588dbad34c5;p=horde.git Everybody but the U.S. (and other major countries like Belize) is using Celcius. Try to guess the user's country. Use translations (coming next). Indention, cleanup, prepare for fixes in Services_Weather. --- diff --git a/timeobjects/lib/Driver/Weatherdotcom.php b/timeobjects/lib/Driver/Weatherdotcom.php index 9f3d2e111..3b93b6fe5 100644 --- a/timeobjects/lib/Driver/Weatherdotcom.php +++ b/timeobjects/lib/Driver/Weatherdotcom.php @@ -1,9 +1,10 @@ hasInterface('contacts')) { $contact = $GLOBALS['registry']->contacts->ownContact(); if (!is_a($contact, 'PEAR_Error')) { - $params['location'] = !empty($contact['homeCity']) - ? $contact['homeCity'] + if (!empty($contact['homeCountry'])) { + $country = $contact['homeCountry']; + } elseif (!empty($contact['workCountry'])) { + $country = $contact['workCountry']; + } + if (!empty($contact['homeCity'])) { + $params['location'] = $contact['homeCity'] . (!empty($contact['homeProvince']) ? ', ' . $contact['homeProvince'] : '') - . (!empty($contact['homeCountry']) ? ', ' . $contact['homeCountry'] : '') - : $contact['workCity'] + . (!empty($contact['homeCountry']) ? ', ' . $contact['homeCountry'] : ''); + } else { + $params['location'] = $contact['workCity'] . (!empty($contact['workProvince']) ? ', ' . $contact['workProvince'] : '') . (!empty($contact['workCountry']) ? ', ' . $contact['workCountry'] : ''); + } } } - // TODO: Try some other way, maybe a hook or a new preference in Horde - // to set your current location, maybe with a google map? + // TODO: Try some other way, maybe a hook or a new preference in + // Horde to set your current location, maybe with a google + // map? + } + + if ($country != 'US') { + $params['units'] = 'metric'; } parent::__construct($params); @@ -49,16 +63,11 @@ class TimeObjects_Driver_Weatherdotcom extends TimeObjects_Driver */ public function ensure() { - if (!class_exists('Services_Weather') || - !class_exists('Cache') || - empty($this->_params['location']) || - empty($GLOBALS['conf']['weatherdotcom']['partner_id']) || - empty($GLOBALS['conf']['weatherdotcom']['license_key'])) { - - return false; - } - - return true; + return class_exists('Services_Weather') && + class_exists('Cache') && + !empty($this->_params['location']) && + !empty($GLOBALS['conf']['weatherdotcom']['partner_id']) && + !empty($GLOBALS['conf']['weatherdotcom']['license_key']); } /** @@ -112,9 +121,8 @@ class TimeObjects_Driver_Weatherdotcom extends TimeObjects_Driver } $weatherDotCom = &Services_Weather::service('WeatherDotCom', $options); - $weatherDotCom->setAccountData( - (isset($conf['weatherdotcom']['partner_id']) ? $conf['weatherdotcom']['partner_id'] : ''), - (isset($conf['weatherdotcom']['license_key']) ? $conf['weatherdotcom']['license_key'] : '')); + $weatherDotCom->setAccountData($conf['weatherdotcom']['partner_id'], + $conf['weatherdotcom']['license_key']); $cacheDir = Horde::getTempDir(); if (!$cacheDir) { @@ -182,40 +190,61 @@ class TimeObjects_Driver_Weatherdotcom extends TimeObjects_Driver // For day 0, the day portion isn't available after a certain time // simplify and just check for it's presence or use night. - $title = sprintf("%s %d%s/%d%s", (!empty($data['day']['condition']) ? $data['day']['condition'] : $data['night']['condition']), - $data['temperatureHigh'], - Horde_String::upper($units['temp']), - $data['temperatureLow'], - Horde_String::upper($units['temp'])); + if (empty($data['day']['condition']) || + $data['day']['condition'] == 'N/A') { + $condition = $data['night']['condition']; + } else { + $condition = $data['day']['condition']; + } + $condition = implode(' / ', array_map('_', explode(' / ', $condition))); + if ($data['temperatureHigh'] == 'N/A') { + $title = sprintf('%s %d°%s', + $condition, + $data['temperatureLow'], + Horde_String::upper($units['temp'])); + } else { + $title = sprintf('%s %d°%s/%d°%s', + $condition, + $data['temperatureHigh'], + Horde_String::upper($units['temp']), + $data['temperatureLow'], + Horde_String::upper($units['temp'])); + } $daytime = sprintf(_("Conditions: %s\nHigh: %d%s\nPrecipitation: %d%%\nHumidity: %d%%\nWinds: From the %s at %d%s"), - $data['day']['condition'], - $data['temperatureHigh'], Horde_String::upper($units['temp']), - $data['day']['precipitation'], - $data['day']['humidity'], - $data['day']['windDirection'], - $data['day']['wind'], - Horde_String::upper($units['wind'])); - if (!empty($data['day']['windGust']) && $data['day']['windgust'] > 0) { - $daytime .= sprintf(_(" gusting %d%s"), $data['day']['windgust'], Horde_String::upper($units['wind'])); - } - $nighttime = sprintf(_("Conditions: %s\nLow: %d%s\nPrecipitation: %d%%\nHumidity: %d%%\nWinds: From the %s at %d%s"), - $data['night']['condition'], - $data['temperatureLow'], Horde_String::upper($units['temp']), - $data['night']['precipitation'], - $data['night']['humidity'], - $data['night']['windDirection'], - $data['night']['wind'], - Horde_String::upper($units['wind'])); - if (!empty($data['night']['windGust']) && $data['night']['windgust'] > 0) { - $nighttime .= sprintf(_(" gusting %d%s"), $data['night']['windgust'], Horde_String::upper($units['wind'])); - } + $data['day']['condition'], + $data['temperatureHigh'], Horde_String::upper($units['temp']), + $data['day']['precipitation'], + $data['day']['humidity'], + $data['day']['windDirection'], + $data['day']['wind'], + Horde_String::upper($units['wind'])); + if (!empty($data['day']['windGust']) && + $data['day']['windgust'] > 0) { + $daytime .= sprintf(_(" gusting %d%s"), + $data['day']['windgust'], + Horde_String::upper($units['wind'])); + } + $nighttime = sprintf(_("Conditions: %s\nLow: %d%s\nPrecipitation: %d%%\nHumidity: %d%%\nWinds: From the %s at %d%s"), + $data['night']['condition'], + $data['temperatureLow'], + Horde_String::upper($units['temp']), + $data['night']['precipitation'], + $data['night']['humidity'], + $data['night']['windDirection'], + $data['night']['wind'], + Horde_String::upper($units['wind'])); + if (!empty($data['night']['windGust']) && + $data['night']['windgust'] > 0) { + $nighttime .= sprintf(_(" gusting %d%s"), + $data['night']['windgust'], + Horde_String::upper($units['wind'])); + } $description = sprintf(_("Location: %s\nSunrise: %sAM Sunset: %sPM\n\nDay:\n%s\n\nEvening:\n%s"), $location['name'], $data['sunrise'], $data['sunset'], $daytime, - $nighttime - ); + $nighttime); $objects[] = array('id' => $day->timestamp(), //??? 'title' => $title, 'description' => $description, @@ -227,11 +256,10 @@ class TimeObjects_Driver_Weatherdotcom extends TimeObjects_Driver $day_end->year, $day_end->month, $day_end->mday), - 'recurrence' => Horde_Date_Recurrence::RECUR_NONE, - 'params' => array(), - 'link' => '#', - 'icon' => Horde::url($GLOBALS['registry']->getImageDir('horde') . '/block/weatherdotcom/23x23/' . ($data['day']['conditionIcon'] == '-' ? 'na' : $data['day']['conditionIcon']) . '.png', true, false) - ); + 'recurrence' => Horde_Date_Recurrence::RECUR_NONE, + 'params' => array(), + 'link' => '#', + 'icon' => Horde::url($GLOBALS['registry']->getImageDir('horde') . '/block/weatherdotcom/23x23/' . ($data['day']['conditionIcon'] == '-' ? 'na' : $data['day']['conditionIcon']) . '.png', true, false)); } return $objects;