<?php
/*********************
* Steff / 25.05.2015 *
* nur zu Testzwecken *
* Feedback erwünscht *
*********************/

$weatherid = $_GET["ccat"];

if ($weatherid == "") {
	$weatherid = DE0001020;
}

$homepage = file_get_contents('http://www.wetter.com/wetter_aktuell/wettervorhersage/3_tagesvorhersage/?id='.$weatherid);


$weatherbegin  = '<dd class="dn1"><span class="label"><strong>'; //morgens</strong>
//$slotend = '</strong>';
$iconbegin = '<div class="wstate_medium center '; //d_3_M trigger" 
//--> http://imgs.wetter.com/layout/1/wx_icons/day_s/d_3_b.gif (d_3... = d_3...), d = tagsüber, n = nachts
$forecastbegin = '<dd class="dn3">'; //bedeckt</dd>
$forecastend = '</dd>';
//$temperaturbegin  = '<span class="degree"><span class="lower">'; //11</span> / 15 °C</span>
//$temperaturend = '°C</span>';
$temperaturbegin  = 'var temperatureData =';
$temperaturmin = 'min: ';
$temperaturmax = 'max: ';
$temperaturend = ',';


//Generate XML Response
header ("Content-Type:text/xml");  
$doc = new DOMDocument('1.0', 'UTF-8');
$root = $doc->createElement('forecasts');
$root = $doc->appendChild($root);

$name = $doc->createElement('name','XXX');  //Name fehlt noch! Wird aber von Webby nicht angezeigt
$root->appendChild($name);
$code = $doc->createElement('code',$weatherid);
$root->appendChild($code);
$time = time();
$date_validity = $doc->createElement('date_validity',date('Y-m-d',$time));
$date_validity = $root->appendChild($date_validity);
$estimated_update_time = $doc->createElement('estimated_update_time',date('H:i',$time+3600)); //Update in 1h
$estimated_update_time = $root->appendChild($estimated_update_time);
$lastBuildDate = $doc->createElement('lastBuildDate',date('Y-m-d',$time).'T'.date('H:i:s',$time));
$lastBuildDate = $root->appendChild($lastBuildDate);


for ($i = 0; $i < 3; $i++) { //3 Tage
	$day = $doc->createElement('day');
	$day->setAttribute('num',$i);
	$root->appendChild($day);

	//min und max Temperaturen aus Tabelle holen
	$Tpos0 = strpos($homepage, $temperaturbegin); //zur Kontrolle ob Temperaturtabelle vorhanden ist, Position wird eigentlich nicht gebraucht
	$Tpos1 = strpos($homepage, $temperaturmin, $Tpos22);
	$Tpos11 = strpos($homepage, $temperaturend, $Tpos1);
	$Tpos2 = strpos($homepage, $temperaturmax, $Tpos11);
	$Tpos22 = strpos($homepage, $temperaturend, $Tpos2);

	if ($Tpos0 !== false) {
		$tempmin = substr($homepage, $Tpos1 + strlen($temperaturmin), $Tpos11 - ($Tpos1 + strlen($temperaturmin)));
		$tempmax = substr($homepage, $Tpos2 + strlen($temperaturmax), $Tpos22 - ($Tpos2 + strlen($temperaturmax)));
	}

	$temp_min = $doc->createElement('temp_min',$tempmin); 
	$day->appendChild($temp_min);
	$temp_max = $doc->createElement('temp_max',$tempmax); 
	$day->appendChild($temp_max);
	$temp_perc = $doc->createElement('temp_perc'); //perc?
	$day->appendChild($temp_perc);

	foreach (array('morning', 'afternoon', 'evening', 'night') as $key => $daytime) {
		$pos0 = strpos($homepage, $weatherbegin, $pos3);
		//$pos1 = strpos($homepage, $slotend, $pos0);
		$pos2 = strpos($homepage, $iconbegin, $pos0);
		$pos3 = strpos($homepage, $forecastbegin, $pos2);
		$pos4 = strpos($homepage, $forecastend, $pos3);
		//$pos5 = strpos($homepage, $temperaturbegin, $pos4);
		//$pos6 = strpos($homepage, $temperaturend, $pos5);

		if ($pos0 !== false) {
			//$slot = substr($homepage, $pos0 + strlen($weatherbegin), $pos1 - ($pos0 + strlen($weatherbegin))); //der name wird eigentlich nicht benötigt da hardcoded
			$icon = substr($homepage, $pos2 + strlen($iconbegin), 3); //3 Zeichen benötigt, z.B. d_3
			$forecast = substr($homepage, $pos3 + strlen($forecastbegin), $pos4 - ($pos3 + strlen($forecastbegin))); 
			//$temperatur = substr($homepage, $pos5 + strlen($temperaturbegin), $pos6 - ($pos5 + strlen($temperaturbegin)) - 2); //-2 um °C zu löschen 
		}
		
		$slot = $doc->createElement('slot');
		$slot->setAttribute('start',($key+1)*6-1); //5 11 17 23
		$slot->setAttribute('end',(((3 == $key) ? -1 : $key)+2)*6-1); //11 17 23 5 //$key setzen auf -1 wenn == 3 um auf 5 zu kommen
		$slot->setAttribute('nameSlot',$daytime);
		$day->appendChild($slot);
			$forecastname = $doc->createElement('forecastName',$forecast);
			$slot->appendChild($forecastname);
			$forecasticonsmall = $doc->createElement('forecastURLIconaSmall','http://imgs.wetter.com/layout/1/wx_icons/day_s/'.$icon.'_b.gif');
			$slot->appendChild($forecasticonsmall);
			$forecasticonlarge = $doc->createElement('forecastURLIconaLarge','http://imgs.wetter.com/layout/1/wx_icons/day_s/'.$icon.'_b.gif');
			$slot->appendChild($forecasticonlarge);
			$uvname = $doc->createElement('uvName','1'); //uvName???
			$slot->appendChild($uvname);
	}
}
$cache = $doc->createElement('cache','missed');
$root->appendChild($cache);	

echo $doc->saveXML(); 

?>