public function weather_es_Aemet::__construct in Weather_es 7
Same name and namespace in other branches
- 6.3 weather_es.inc \weather_es_Aemet::__construct()
File
- ./
weather_es.inc, line 16 - Classes to get the weather information from AEMET
Class
- weather_es_Aemet
- @file Classes to get the weather information from AEMET
Code
public function __construct($cit_cod) {
$this->city_code = $cit_cod;
$this->dom = new DOMDocument('1.0', 'ISO-8859-15');
$this->name = '';
$success = $this->dom
->load(self::$url . 'localidad_' . $this->city_code . '.xml');
if ($success) {
$this->load_ok = TRUE;
$this->name = $this->dom->documentElement
->getElementsByTagName('nombre')
->item(0)->nodeValue;
$dias = $this->dom->documentElement
->getElementsByTagName('prediccion')
->item(0)->childNodes;
$days = array();
foreach ($dias as $dia) {
if ($dia->nodeType == XML_ELEMENT_NODE) {
$date = $dia
->getAttributeNode("fecha")->value;
$datos = $dia->childNodes;
$rain = array();
$snow = array();
$sky = array();
$wind = array();
$windSpeed = array();
$temp = array();
$sens = array();
$hum = array();
$uv = '';
foreach ($datos as $dato) {
if ($dato->nodeType == XML_ELEMENT_NODE) {
if ($dato->nodeName == 'prob_precipitacion') {
if (isset($dato
->getAttributeNode('periodo')->value)) {
$rain[$dato
->getAttributeNode('periodo')->value] = $dato->nodeValue;
}
else {
$rain['00-24'] = $dato->nodeValue;
}
}
elseif ($dato->nodeName == 'cota_nieve_prov') {
if (isset($dato
->getAttributeNode('periodo')->value)) {
$snow[$dato
->getAttributeNode('periodo')->value] = $dato->nodeValue;
}
else {
$snow['00-24'] = $dato->nodeValue;
}
}
elseif ($dato->nodeName == 'estado_cielo') {
if (isset($dato
->getAttributeNode('periodo')->value)) {
$sky[$dato
->getAttributeNode('periodo')->value] = array(
$dato
->getAttributeNode('descripcion')->value => $dato->nodeValue,
);
}
else {
$sky['00-24'] = array(
$dato
->getAttributeNode('descripcion')->value => $dato->nodeValue,
);
}
}
elseif ($dato->nodeName == 'viento') {
if (isset($dato
->getAttributeNode('periodo')->value)) {
$wind[$dato
->getAttributeNode('periodo')->value] = array(
$dato
->getElementsByTagName('direccion')
->item(0)->nodeValue => $dato
->getElementsByTagName('velocidad')
->item(0)->nodeValue,
);
}
else {
$wind['00-24'] = array(
$dato
->getElementsByTagName('direccion')
->item(0)->nodeValue => $dato
->getElementsByTagName('velocidad')
->item(0)->nodeValue,
);
}
}
elseif ($dato->nodeName == 'racha_max') {
if (isset($dato
->getAttributeNode('periodo')->value)) {
$gust[$dato
->getAttributeNode('periodo')->value] = $dato->nodeValue;
}
else {
$gust['00-24'] = $dato->nodeValue;
}
}
elseif ($dato->nodeName == 'temperatura') {
$temp = array(
'maxima' => $dato
->getElementsByTagName('maxima')
->item(0)->nodeValue,
'minima' => $dato
->getElementsByTagName('minima')
->item(0)->nodeValue,
);
foreach ($dato
->getElementsByTagName('dato') as $d) {
$temp[$d
->getAttributeNode('hora')->value] = $d->nodeValue;
}
}
elseif ($dato->nodeName == 'sens_termica') {
$chill = array(
'maxima' => $dato
->getElementsByTagName('maxima')
->item(0)->nodeValue,
'minima' => $dato
->getElementsByTagName('minima')
->item(0)->nodeValue,
);
foreach ($dato
->getElementsByTagName('dato') as $d) {
$chill[$d
->getAttributeNode('hora')->value] = $d->nodeValue;
}
}
elseif ($dato->nodeName == 'humedad_relativa') {
$hum = array(
'maxima' => $dato
->getElementsByTagName('maxima')
->item(0)->nodeValue,
'minima' => $dato
->getElementsByTagName('minima')
->item(0)->nodeValue,
);
foreach ($dato
->getElementsByTagName('dato') as $d) {
$hum[$d
->getAttributeNode('hora')->value] = $d->nodeValue;
}
}
elseif ($dato->nodeName == 'uv_max') {
$uv = $dato->nodeValue;
}
}
}
$this->days[] = array(
'date' => $date,
'rain' => $rain,
'snow' => $snow,
'sky' => $sky,
'wind' => $wind,
'gust' => $gust,
'temp' => $temp,
'chill' => $chill,
'hum' => $hum,
'uv' => $uv,
);
}
}
}
else {
$this->load_ok = FALSE;
}
}