/usr/share/php/Horde/Service/Weather/Period/WeatherUnderground.php is in php-horde-service-weather 2.5.4-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | <?php
/**
* This file contains the Horde_Service_Weather_Period class for abstracting
* access to a single forecast period from Wunderground.
*
* Copyright 2011-2017 Horde LLC (http://www.horde.org/)
*
* @author Michael J Rubinsky <mrubinsk@horde.org>
* @license http://www.horde.org/licenses/bsd BSD
* @category Horde
* @package Service_Weather
*/
/**
* Horde_Service_Weather_Period_WeatherUnderground
*
* @author Michael J Rubinsky <mrubinsk@horde.org>
* @category Horde
* @package Service_Weather
*/
class Horde_Service_Weather_Period_WeatherUnderground extends Horde_Service_Weather_Period_Base
{
/**
* Property Map
*
* @TODO Figure out what to do with the 'skyicon' value - which is sometimes
* different than the icon and icon_url. Also, should add a icon set
* property to allow using other icon sets e.g., {icon_set_url}/{icon}.gif
*
* @var array
*/
protected $_map = array(
'conditions' => 'conditions',
'icon_url' => 'icon_url',
'precipitation_percent' => 'pop',
'period' => 'period',
'humidity' => 'avehumidity',
);
/**
* Accessor so we can lazy-parse the results.
*
* @param string $property The property name.
*
* @return mixed The value of requested property
* @throws Horde_Service_Weather_Exception_InvalidProperty
*/
public function __get($property)
{
switch ($property) {
case 'is_pm':
// Wunderground only supports standard
return false;
case 'hour':
// Wunderground supports this, but we don't.
return false;
case 'date':
$date = new Horde_Date(array(
'year' => $this->_properties['date']->year,
'month' => $this->_properties['date']->month,
'mday' => $this->_properties['date']->day));
$date->hour = $this->_properties['date']->hour;
$date->min = $this->_properties['date']->min;
$date->setTimezone($this->_properties['date']->tz_long);
return $date;
case 'high':
if ($this->_forecast->weather->units == Horde_Service_Weather::UNITS_STANDARD) {
return $this->_properties['high']->fahrenheit !== '' ?
$this->_properties['high']->fahrenheit :
Horde_Service_Weather_Translation::t("N/A");
}
return $this->_properties['high']->celsius;
case 'low':
if ($this->_forecast->weather->units == Horde_Service_Weather::UNITS_STANDARD) {
return $this->_properties['low']->fahrenheit !== '' ?
$this->_properties['low']->fahrenheit :
Horde_Service_Weather_Translation::t("N/A");
}
return $this->_properties['low']->celsius;
case 'icon':
return $this->_forecast->weather->iconMap[$this->_properties['icon']];
case 'wind_direction':
return strlen($this->_properties['avewind']->dir)
? Horde_Service_Weather_Translation::t($this->_properties['avewind']->dir)
: Horde_Service_Weather_Translation::t("N/A");
case 'wind_degrees':
return strlen($this->_properties['avewind']->dir)
? $this->_properties['avewind']->degrees
: Horde_Service_Weather_Translation::t("N/A");
case 'wind_speed':
if (strlen($this->_properties['avewind']->dir)) {
if ($this->_forecast->weather->units == Horde_Service_Weather::UNITS_STANDARD) {
return $this->_properties['avewind']->mph;
}
return $this->_properties['avewind']->kph;
} else {
return Horde_Service_Weather_Translation::t("N/A");
}
case 'wind_gust':
if ($this->_forecast->weather->units == Horde_Service_Weather::UNITS_STANDARD) {
return $this->_properties['maxwind']->mph;
}
return $this->_properties['maxwind']->kph;
case 'rain_total':
if ($this->_forecast->weather->units == Horde_Service_Weather::UNITS_STANDARD) {
return $this->_properties['qpf_allday']->in;
}
return $this->_properties['qpf_allday']->mm;
case 'snow_total':
if ($this->_forecast->weather->units == Horde_Service_Weather::UNITS_STANDARD) {
return $this->_properties['snow_allday']->in;
}
return $this->_properties['snow_allday']->cm;
default:
if (!empty($this->_map[$property])) {
return Horde_Service_Weather_Translation::t($this->_properties[$this->_map[$property]]);
}
throw new Horde_Service_Weather_Exception_InvalidProperty('This provider does not support the "' . $property . '" property');
}
}
}
|