From b163d9c0ce7ae4df4684b71da534d94e6fc0a1ab Mon Sep 17 00:00:00 2001 From: frostmakk Date: Sun, 17 Dec 2017 13:32:40 +0100 Subject: [PATCH 1/3] Fixed text forecast --- yr.php | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/yr.php b/yr.php index 1bfc2c3..35faaa4 100644 --- a/yr.php +++ b/yr.php @@ -62,7 +62,7 @@ // 2. Stedsnavnet: Skriv inn navnet på stedet. La stå tom for å falle tilbake til navnet i lenken // Location: The name of the location. Leave empty to fallback to the location in the url. -$yr_name='Hønefoss'; +$yr_name=''; // 3. Bruk header og footer: Velg om du vil ha med header og/eller footer // Use Header and footers: Select to have HTML headers/footers wrapping the content (useful for debugging) @@ -74,7 +74,7 @@ // 4. Deler: Velg delene av varselet du vil ta med! // Parts: Choose which parts of the forecast to include $yr_use_banner=true; //yr.no Banner -$yr_use_text=false; //Tekstvarsel +$yr_use_text=true; //Tekstvarsel $yr_use_links=true; //Lenker til varsel på yr.no $yr_use_table=true; //Tabellen med varselet @@ -301,11 +301,11 @@ private function sanitizeString($in){ //return $in; if(is_array($in))return $in; if(null==$in)return null; - return htmlentities(strip_tags($in)); + return htmlentities(strip_tags($in,'' ),ENT_NOQUOTES,"ISO-8859-15"); // lagt som unntak i strip_tags() . Default character set htmlentities() er nå UTF-8 Dette returnerer nullstreng ved æ-ø-å i teksten. } // Rense tekst data (av sikkerhetshensyn) - public function reviveSafeTags($in){ + public static function reviveSafeTags($in){ //$in=$in.'STRONG UNDERLINE BOLD ITALICS'; return str_ireplace(array('<strong>','</strong>','<u>','</u>','<b>','</b>','<i>','</i>'),array('','','','','','','',''),$in); } @@ -453,7 +453,7 @@ class YRDisplay{ 'vest', 'vest-nordvest','nordvest', 'nord-nordvest', 'nord'); // Hvor hentes bilder til symboler fra? - var $yr_imgpath='https://www.yr.no/grafikk/sym/b38'; + var $yr_imgpath='https://www.yr.no/grafikk/sym/v2017/png/38'; // endret til ny katalog med månesynboler for natt //Generer header for varselet @@ -533,17 +533,21 @@ public function getWeatherText(){ if((isset($this->yr_data['TEXT'])) && (isset($this->yr_data['TEXT'][0]['LOCATION']))&& (isset($this->yr_data['TEXT'][0]['LOCATION'][0]['ATTRIBUTES'])) ){ $yr_place=$this->yr_data['TEXT'][0]['LOCATION'][0]['ATTRIBUTES']['NAME']; if(!isset($this->yr_data['TEXT'][0]['LOCATION'][0]['TIME']))return; + $old = ''; foreach($this->yr_data['TEXT'][0]['LOCATION'][0]['TIME'] as $yr_var2){ // Små bokstaver - $l=(YRComms::convertEncodingUTF($yr_var2['TITLE'][0]['VALUE'])); + $l=ucfirst((YRComms::convertEncodingUTF($yr_var2['TITLE'][0]['VALUE']))); // Stor forbokstav i ukedagsnavnet + if($l <> $old) { // Tekstvarsel kommer ofte dobbelt opp i xml fil. + $old = $l ; // Her fjerner vi duplikatene. // Rettet encoding $e=YRComms::reviveSafeTags(YRComms::convertEncodingUTF($yr_var2['BODY'][0]['VALUE'])); // Spytt ut! $this->ht.=<<$yr_place $l:$e

+

$l:$e

EOT ; + } } } } @@ -557,7 +561,6 @@ public function getLinks($target='_top'){

$this->yr_name på yr.no: Varsel med kart Time for time - Helg Langtidsvarsel

@@ -608,22 +611,28 @@ public function getWeatherTableContent(){ ; list($thisyear, $thismonth, $thisdate)=explode('-', $fromdate); $displaydate=$thisdate.".".$thismonth.".".$thisyear; - $firstcellcont=$displaydate; + // ukedag i tabell + $jd=gregoriantojd($thismonth,$thisdate,$thisyear); + $ukedagnummer= jddayofweek($jd,0); + if ($ukedagnummer == "0") {$ukedag = "Søndag";} + elseif ($ukedagnummer == "1") {$ukedag = "Mandag";} + elseif ($ukedagnummer == "2") {$ukedag = "Tirsdag";} + elseif ($ukedagnummer == "3") {$ukedag = "Onsdag";} + elseif ($ukedagnummer == "4") {$ukedag = "Torsdag";} + elseif ($ukedagnummer == "5") {$ukedag = "Fredag";} + elseif ($ukedagnummer == "6") {$ukedag = "Lørdag";} + else {$ukedag = "";} + $firstcellcont=implode("
",array($ukedag,$displaydate)); $thisdate=$fromdate; ++$dayctr; }else $divider=$firstcellcont=''; // Vis ny dato - if($dayctr<7){ + if($dayctr<11){ // flere dager i varselet $this->ht.=$divider; // Behandle symbol - $imgno=$yr_var3['SYMBOL'][0]['ATTRIBUTES']['NUMBER']; - if($imgno<10)$imgno='0'.$imgno; - switch($imgno){ - case '01': case '02': case '03': case '05': case '06': case '07': case '08': - $imgno.="d"; $do_daynight=1; break; - default: $do_daynight=0; - } + $imgno=$yr_var3['SYMBOL'][0]['ATTRIBUTES']['VAR']; // bruk symboler med måne om natten + // Behandle regn $rain=$yr_var3['PRECIPITATION'][0]['ATTRIBUTES']['VALUE']; if($rain==0.0)$rain="0"; @@ -638,7 +647,7 @@ public function getWeatherTableContent(){ $winddirtext=$this->yr_vindrettninger[$winddir]; // Behandle temperatur $temper=round($yr_var3['TEMPERATURE'][0]['ATTRIBUTES']['VALUE']); - if($temper>=0)$tempclass='pluss'; + if($temper>=1)$tempclass='pluss'; // foretrekker null grader som blå tekst else $tempclass='minus'; // Rund av vindhastighet @@ -698,7 +707,11 @@ private function handleDataDir($clean_datadir=false,$summary=''){ //Main with caching public function generateHTMLCached($url,$name,$xml, $try_curl, $useHtmlHeader=true, $useHtmlFooter=true, $useBanner=true, $useText=true, $useLinks=true, $useTable=true, $maxage=0, $timeout=10, $urlTarget='_top'){ //Default to the name in the url - if(null==$name||''==trim($name))$name=array_pop(explode('/',$url)); + if(!$name) // fikset feilmelding 'Notice: Only variables should be passed by reference' + { + $array = explode('/',$url); + $name = array_pop($array); + } $this->handleDataDir(false,htmlentities("$name.$useHtmlHeader.$useHtmlFooter.$useBanner.$useText.$useLinks.$useTable.$maxage.$timeout.$urlTarget")); $yr_cached = $this->datapath; // Clean name From a9014f515a3dd8af2e24f758a89ba4221dfd74e5 Mon Sep 17 00:00:00 2001 From: Sveinung Larsen Date: Sat, 23 Dec 2017 16:03:54 +0100 Subject: [PATCH 2/3] Update yr-php.css --- css/yr-php.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/css/yr-php.css b/css/yr-php.css index 0ba7b29..7ae397e 100644 --- a/css/yr-php.css +++ b/css/yr-php.css @@ -1,7 +1,7 @@ #yr-varsel { margin: 8px 0 8px 0 !important; padding: 0 0 8px 0 !important; - width: 500px !important; + width: 550px !important; border-bottom: 4px solid #63c6e3; } #yr-varsel * { @@ -22,7 +22,7 @@ padding: 0 !important; margin: 0 0 4px 0 !important; height: 25px !important; - width: 500px !important; + width: 550px !important; font-size: 1px !important; } #yr-varsel h2 { @@ -56,7 +56,7 @@ margin-left: 8px !important; } #yr-varsel table { - width: 500px !important; + width: 550px !important; font-size: 12px !important; margin: 0 !important; } @@ -95,4 +95,4 @@ padding: 0 !important; overflow: hidden !important; background: #63c6e3 !important; - } \ No newline at end of file + } From a240b42a30ece7131474017fe58021ec2883a2f3 Mon Sep 17 00:00:00 2001 From: frostmakk Date: Sat, 23 Dec 2017 16:12:10 +0100 Subject: [PATCH 3/3] Vindpiler --- yr.php | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 136 insertions(+), 6 deletions(-) diff --git a/yr.php b/yr.php index 35faaa4..ef597de 100644 --- a/yr.php +++ b/yr.php @@ -461,8 +461,8 @@ public function getHeader($use_full_html){ // Her kan du endre header til hva du vil. NB! Husk å skru det på, ved å endre instillingene i toppen av dokumentet if($use_full_html){ $this->ht.=<< - + + Værvarsel fra yr.no @@ -579,6 +579,7 @@ public function getWeatherTableHeader(){ Nedbør Temp. Vind + Vindstyrke @@ -604,7 +605,7 @@ public function getWeatherTableContent(){ if($fromdate!=$thisdate){ $divider=<< - + EOT @@ -656,6 +657,134 @@ public function getWeatherTableContent(){ $s=$yr_var3['SYMBOL'][0]['ATTRIBUTES']['NAME']; $w=$yr_var3['WINDSPEED'][0]['ATTRIBUTES']['NAME']; + // Ny seksjon for vindpiler. + // Rund av vindretning til nærmeste null eller fem grader. Retningsdelen av filnavnet. + $vindretning = round($yr_var3['WINDDIRECTION'][0]['ATTRIBUTES']['DEG']); + $sistetall = substr($vindretning, - 1, 1); + if ($sistetall == "0") + { + $modvindretning = $vindretning; + } + elseif ($sistetall == "1") + { + $modvindretning = $vindretning - "1"; + } + elseif ($sistetall == "2") + { + $modvindretning = $vindretning - "2"; + } + elseif ($sistetall == "3") + { + $modvindretning = $vindretning + "2"; + } + elseif ($sistetall == "4") + { + $modvindretning = $vindretning + "1"; + } + elseif ($sistetall == "5") + { + $modvindretning = $vindretning; + } + elseif ($sistetall == "6") + { + $modvindretning = $vindretning - "1"; + } + elseif ($sistetall == "7") + { + $modvindretning = $vindretning + "3"; + } + elseif ($sistetall == "8") + { + $modvindretning = $vindretning + "2"; + } + elseif ($sistetall == "9") + { + $modvindretning = $vindretning + "1"; + } + else + { + $modvindretning = "x"; + } + // Fyll inn "leading zero's" + if ($modvindretning < "10") + { + $modvindretning = "00$modvindretning"; + } + elseif ($modvindretning < "100") + { + $modvindretning = "0$modvindretning"; + } + elseif ($modvindretning == "360") + { + $modvindretning = "000"; + } + else + { + $modvindretning = $modvindretning; + } + + // Vindstyrkedelen av filnavnet + + if ($w == "Stille") + { + $vindstyrke = ""; + $modvindretning = "vindstille"; + } + elseif ($w == "Flau vind") + { + $vindstyrke = "vindpil.0000."; + } + elseif ($w == "Svak vind") + { + $vindstyrke = "vindpil.0025."; + } + elseif ($w == "Lett bris") + { + $vindstyrke = "vindpil.0050."; + } + elseif ($w == "Laber bris") + { + $vindstyrke = "vindpil.0075."; + } + elseif ($w == "Frisk bris") + { + $vindstyrke = "vindpil.0100."; + } + elseif ($w == "Liten kuling") + { + $vindstyrke = "vindpil.0125."; + } + elseif ($w == "Stiv kuling") + { + $vindstyrke = "vindpil.0150."; + } + elseif ($w == "Sterk kuling") + { + $vindstyrke = "vindpil.0175."; + } + elseif ($w == "Liten storm") + { + $vindstyrke = "vindpil.0225."; + } + elseif ($w == "Full storm") + { + $vindstyrke = "vindpil.0250."; + } + elseif ($w == "Sterk storm") + { + $vindstyrke = "vindpil.0300."; + } + elseif ($w == "Orkan") + { + $vindstyrke = "vindpil.0350."; + } + else + { + $vindstyrke = "."; + } + $windpath = "https://www.yr.no/grafikk/sym/vindpiler/32/"; + // Slutt seksjon for vindpiler. + $this->ht.=<< $firstcellcont @@ -664,6 +793,7 @@ public function getWeatherTableContent(){ $rain $temper° $w fra $winddirtext + error $r m/s @@ -677,13 +807,13 @@ public function getWeatherTableContent(){ public function getWeatherTableFooter($target='_top'){ $this->ht.=<< - +

Værsymbolet og nedbørsvarselet gjelder for hele perioden, temperatur- og vindvarselet er for det første tidspunktet. <1 mm betyr at det vil komme mellom 0,1 og 0,9 mm nedbør.
- Slik forstår du varslene fra yr.no.

-

Vil du også ha værvarsel fra yr.no på dine nettsider?

+ Slik forstår du varslene fra yr.no.

+

Vil du også ha værvarsel fra yr.no på dine nettsider?

EOT ; }