Merge pull request #281 from tobiasd/20150711-curweather

Curweather Widget
This commit is contained in:
Michael Vogel 2015-07-18 15:47:33 +02:00
commit 96b8512e5e
10 changed files with 318 additions and 303 deletions

29
curweather/README.md Normal file
View File

@ -0,0 +1,29 @@
Current Weather
===============
If activated by your user this addon adds a widget to the users network tab
sidebar showing current weather informations (temperature, relative humidity,
wind conditions and preassure) from [OpenWeatherMap](http://openweathermap.org).
The user can configure the location as e.g. *Berlin,DE* or the zip code "14476,DE".
The language for the request at OpenWeatherMap is set to the UI language of
friendica. If the string for the description of the current weather conditions
is available in this language depends on OpenWeatherMap, fallback is english.
**You should get an APPID from OpenWeatherMap if you want to use this widget.**
You can register [here](http://openweathermap.org/register).
Credits
-------
* Tony Baldwin wrote the original addon for Friendica
* Fabio Comuni
* Tobias Diekershoff switched the sources to OpenWeatherMap after the original
provider turned off support for locations outside of the USA.
Known Issues
------------
* Localization does not work (Jul 15) data requested via XML are EN only but
have moew information available compared to data requested via JSON which is
available in other languages as well. Right now we use the XML dataset

View File

@ -1,10 +1,11 @@
#curtemp-settings-label, #curtemp-location-label, #curtemp-enable-label {
float: left;
width: 200px;
margin-bottom: 25px;
#curweather-network img {
float: left;
margin: 30px 10px;
}
#curtemp-network {
float: left;
ul.curweather-details li {
list-type: none;
}
p.curweather-footer {
font-size: 0.8em;
}

View File

@ -1,29 +1,78 @@
<?php
<?php
/**
* Name: Current Weather
* Description: Shows current weather conditions for user's location on their network page.<br />Find the location code for the station or airport nearest you <a href="http://en.wikipedia.org/wiki/International_Air_Transport_Association_airport_code" target="_blank">here</a>.
* Version: 1.0
* Description: Shows current weather conditions for user's location on their network page.
* Version: 1.1
* Author: Tony Baldwin <http://friendica.tonybaldwin.info/u/t0ny>
* Author: Fabio Comuni <http://kirkgroup.com/u/fabrixxm>
* Author: Tobias Diekershoff <https://f.diekershoff.de/u/tobias>
*
*/
require_once('addon/curweather/getweather.php');
require_once('include/network.php');
require_once("mod/proxy.php");
require_once('include/text.php');
// get the weather data from OpenWeatherMap
function getWeather( $loc, $units='metric', $lang='en', $appid='', $cachetime=0) {
$url = "http://api.openweathermap.org/data/2.5/weather?q=".$loc."&appid=".$appid."&lang=".$lang."&units=".$units."&mode=xml";
$cached = Cache::get('curweather'.md5($url));
$now = new DateTime();
if (!is_null($cached)) {
$cdate = get_pconfig(local_user(), 'curweather', 'last');
$cached = unserialize($cached);
if ($cdate + $cachetime > $now->getTimestamp()) {
return $cached;
}
}
try {
$res = new SimpleXMLElement(fetch_url($url));
} catch (Exception $e) {
info(t('Error fetching weather data.\nError was: '.$e->getMessage()));
return false;
}
if ((string)$res->temperature['unit']==='metric') {
$tunit = '°C';
$wunit = 'm/s';
} else {
$tunit = '°F';
$wunit = 'mph';
}
if ( trim((string)$res->weather['value']) == trim((string)$res->clouds['name']) ) {
$desc = (string)$res->clouds['name'];
} else {
$desc = (string)$res->weather['value'].', '.(string)$res->clouds['name'];
}
$r = array(
'city'=> (string) $res->city['name'][0],
'country' => (string) $res->city->country[0],
'lat' => (string) $res->city->coord['lat'],
'lon' => (string) $res->city->coord['lon'],
'temperature' => (string) $res->temperature['value'][0].$tunit,
'pressure' => (string) $res->pressure['value'].(string)$res->pressure['unit'],
'humidity' => (string) $res->humidity['value'].(string)$res->humidity['unit'],
'descripion' => $desc,
'wind' => (string)$res->wind->speed['name'].' ('.(string)$res->wind->speed['value'].$wunit.')',
'update' => (string)$res->lastupdate['value'],
'icon' => (string)$res->weather['icon']
);
set_pconfig(local_user(), 'curweather', 'last', $now->getTimestamp());
Cache::set('curweather'.md5($url), serialize($r));
return $r;
}
function curweather_install() {
register_hook('network_mod_init', 'addon/curweather/curweather.php', 'curweather_network_mod_init');
register_hook('plugin_settings', 'addon/curweather/curweather.php', 'curweather_plugin_settings');
register_hook('plugin_settings_post', 'addon/curweather/curweather.php', 'curweather_plugin_settings_post');
}
function curweather_uninstall() {
unregister_hook('network_mod_init', 'addon/curweather/curweather.php', 'curweather_network_mod_init');
unregister_hook('plugin_settings', 'addon/curweather/curweather.php', 'curweather_plugin_settings');
unregister_hook('plugin_settings_post', 'addon/curweather/curweather.php', 'curweather_plugin_settings_post');
}
function curweather_network_mod_init(&$fk_app,&$b) {
if(! intval(get_pconfig(local_user(),'curweather','curweather_enable')))
@ -31,27 +80,56 @@ function curweather_network_mod_init(&$fk_app,&$b) {
$fk_app->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $fk_app->get_baseurl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
// the getweather file does all the work here
// the $rpt value is needed for location
// which getweather uses to fetch the weather data for weather and temp
// $rpt value is needed for location
// $lang will be taken from the browser session to honour user settings
// TODO $lang does not work if the default settings are used
// and not all response strings are translated
// $units can be set in the settings by the user
// $appid is configured by the admin in the admin panel
// those parameters will be used to get: cloud status, temperature, preassure
// and relative humidity for display, also the relevent area of the map is
// linked from lat/log of the reply of OWMp
$rpt = get_pconfig(local_user(), 'curweather', 'curweather_loc');
$wxdata = GetWeather::get($rpt);
$temp = $wxdata['TEMPERATURE_STRING'];
$weather = $wxdata['WEATHER'];
$rhumid = $wxdata['RELATIVE_HUMIDITY'];
$pressure = $wxdata['PRESSURE_STRING'];
$wind = $wxdata['WIND_STRING'];
$curweather = '<div id="curweather-network" class="widget">
<div class="title tool">
<h4>'.t("Current Weather").'</h4></div>';
$curweather .= "Weather: $weather<br />
Temperature: $temp<br />
Relative Humidity: $rhumid<br />
Pressure: $pressure<br />
Wind: $wind";
$curweather .= '</div><div class="clear"></div>';
// set the language to the browsers language and use metric units
$lang = $_SESSION['language'];
$units = get_pconfig( local_user(), 'curweather', 'curweather_units');
$appid = get_config('curweather','appid');
$cachetime = intval(get_config('curweather','cachetime'));
if ($units==="")
$units = 'metric';
$ok = true;
$res = getWeather($rpt, $units, $lang, $appid, $cachetime);
if ($res===false)
$ok = false;
if ($ok) {
$t = get_markup_template("widget.tpl", "addon/curweather/" );
$curweather = replace_macros ($t, array(
'$title' => t("Current Weather"),
'$icon' => proxy_url('http://openweathermap.org/img/w/'.$res['icon'].'.png'),
'$city' => $res['city'],
'$lon' => $res['lon'],
'$lat' => $res['lat'],
'$description' => $res['descripion'],
'$temp' => $res['temperature'],
'$relhumidity' => array('caption'=>t('Relative Humidity'), 'val'=>$res['humidity']),
'$pressure' => array('caption'=>t('Pressure'), 'val'=>$res['pressure']),
'$wind' => array('caption'=>t('Wind'), 'val'=> $res['wind']),
'$lastupdate' => t('Last Updated').': '.$res['update'].'UTC',
'$databy' => t('Data by'),
'$showonmap' => t('Show on map')
));
} else {
$t = get_markup_template('widget-error.tpl', 'addon/curweather/');
$curweather = replace_macros( $t, array(
'$problem' => t('There was a problem accessing the weather data. But have a look'),
'$rpt' => $rpt,
'$atOWM' => t('at OpenWeatherMap')
));
}
$fk_app->page['aside'] = $curweather.$fk_app->page['aside'];
@ -63,6 +141,7 @@ function curweather_plugin_settings_post($a,$post) {
return;
set_pconfig(local_user(),'curweather','curweather_loc',trim($_POST['curweather_loc']));
set_pconfig(local_user(),'curweather','curweather_enable',intval($_POST['curweather_enable']));
set_pconfig(local_user(),'curweather','curweather_units',trim($_POST['curweather_units']));
info( t('Current Weather settings updated.') . EOL);
}
@ -73,36 +152,53 @@ function curweather_plugin_settings(&$a,&$s) {
if(! local_user())
return;
/* Add our stylesheet to the curweather so we can make our settings look nice */
$a->page['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . $a->get_baseurl() . '/addon/curweather/curweather.css' . '" media="all" />' . "\r\n";
/* Get the current state of our config variable */
$curweather_loc = get_pconfig(local_user(), 'curweather', 'curweather_loc');
$curweather_units = get_pconfig(local_user(), 'curweather', 'curweather_units');
$appid = get_config('curweather','appid');
if ($appid=="") {
$noappidtext = t('No APPID found, please contact your admin to optain one.');
} else {
$noappidtext = '';
}
$enable = intval(get_pconfig(local_user(),'curweather','curweather_enable'));
$enable_checked = (($enable) ? ' checked="checked" ' : '');
/* Add some HTML to the existing form */
$s .= '<div class="settings-block">';
$s .= '<h3>' . t('Current Weather') . '</h3>';
$s .= '<div id="curweather-settings-wrapper">';
$s .= '<p>Find the location code for the airport/weather station nearest you <a href="http://en.wikipedia.org/wiki/International_Air_Transport_Association_airport_code" target="_blank">here</a>.</p>';
$s .= '<label id="curweather-location-label" for="curweather_loc">' . t('Weather Location: ') . '</label>';
$s .= '<input id="curweather-location" type="text" name="curweather_loc" value="' . $curweather_loc . '"/>';
$s .= '<div class="clear"></div>';
$s .= '<label id="curweather-enable-label" for="curweather_enable">' . t('Enable Current Weather') . '</label>';
$s .= '<input id="curweather-enable" type="checkbox" name="curweather_enable" value="1" ' . $enable_checked . '/>';
$s .= '<div class="clear"></div>';
$s .= '</div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="curweather-settings-submit" class="settings-submit" value="' . t('Save Settings') . '" /></div></div>';
// load template and replace the macros
$t = get_markup_template("settings.tpl", "addon/curweather/" );
$s = replace_macros ($t, array(
'$submit' => t('Save Settings'),
'$header' => t('Current Weather').' '.t('Settings'),
'$noappidtext' => $noappidtext,
'$info' => t('Enter either the name of your location or the zip code.'),
'$curweather_loc' => array( 'curweather_loc', t('Your Location'), $curweather_loc, t('Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or <em>14476,DE</em>.') ),
'$curweather_units' => array( 'curweather_units', t('Units'), $curweather_units, t('select if the temperatur should be displayed in °C or °F'), array('metric'=>'°C', 'imperial'=>'°F')),
'$enabled' => array( 'curweather_enable', t('Show weather data'), $enable, '')
));
return;
}
// Config stuff for the admin panel to let the admin of the node set a APPID
// for accessing the API of openweathermap
function curweather_plugin_admin_post (&$a) {
if(! is_site_admin())
return;
if ($_POST['curweather-submit']) {
set_config('curweather','appid',trim($_POST['appid']));
set_config('curweather','cachetime',trim($_POST['cachetime']));
info( t('Curweather settings saved.'.EOL));
}
}
function curweather_plugin_admin (&$a, &$o) {
if(! is_site_admin())
return;
$appid = get_config('curweather','appid');
$cachetime = get_config('curweather','cachetime');
$t = get_markup_template("admin.tpl", "addon/curweather/" );
$o = replace_macros ($t, array(
'$submit' => t('Save Settings'),
'$cachetime' => array('cachetime', t('Caching Interval'), $cachetime, t('For how long should the weather data be cached? Choose according your OpenWeatherMap account type.'), array('0'=>t('no cache'), '300'=>'5 '.t('minutes'), '900'=>'15 '.t('minutes'), '1800'=>'30 '.t('minutes'), '3600'=>'60 '.t('minutes'))),
'$appid' => array('appid', t('Your APPID'), $appid, t('Your API key provided by OpenWeatherMap'))
));
}

View File

@ -1,230 +0,0 @@
<?php
/*
File Name: getweather.php
Author: Gary White
Original version: May 12, 2005
Last modified: August 7, 2008
Copyright (C) 2004-2008 Gary White
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License in the included gpl.txt file for
details.
See http://apptools.com/phptools/xml/weather/ for usage information
See http://weather.gov/data/current_obs/
Also see
http://weather.gov/alerts/
http://weather.gov/forecasts/xml/
Complete list of Weather stations available at
http://weather.gov/data/current_obs/index.xml
*/
class GetWeather {
// Initialize some variables
static $itemdata;
static $itemname;
static $wxdata;
function get($rpt) {
// URL for the XML file
$xmlurl="http://www.weather.gov/data/current_obs/$rpt.xml";
// Base url for the icons
$imgpath="http://weather.gov/weather/images/fcicons";
self::$itemdata="";
self::$itemname="";
self::$wxdata=array();
$icons=self::defineIcons();
$icon="";
$data="";
$report="";
// create a new CURL resource
if($ch = curl_init()) {
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $xmlurl);
curl_setopt($ch, CURLOPT_HEADER, trus);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// grab URL and pass it to the browser
$data=curl_exec($ch);
$r=curl_getinfo($ch); //,CURLINFO_HTTP_CODE);
// close CURL resource, and free up system resources
curl_close($ch);
// Create an XML parser
$xml_parser = xml_parser_create();
// Use case-folding so we are sure to find the tag in $map_array
// This will force all tags to upper case so we don't have to worry
// about matching the case of the original in our tests.
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
// Assign the element starting and ending event handlers
xml_set_element_handler($xml_parser, array(self,"startElement"), array(self,"endElement"));
// Assign a function to handle character data
xml_set_character_data_handler($xml_parser, array(self,"characterData"));
// Parse the file. This will place the data into an associative
// array assigned to the self::$wxdata variable
xml_parse($xml_parser,$data,true);
// Free the parser object
xml_parser_free($xml_parser);
// The OBSERVATION_TIME field of the returned XML will be in the
// format "Last Updated on May 18, 8:53 am CDT"
// We're going to change the format a bit.
// Strip out the "Last Updated on " portion of the date/time
// so we can display that separately in our tabular output
$datetime=str_replace("Last Updated on ","",self::$wxdata['OBSERVATION_TIME']);
// We now have the format as "May 18, 8:53 am CDT"
// Now, get the time zone. It will be everything from
// the last space character to the end of the string.
$z=strrchr($datetime," ");
// Get the current year
$year=date("Y");
// Now, we stuff the year into the string, following the comma.
$datetime=str_replace(",",", $year",$datetime);
// This does leave a small potential issue where, if you get a
// report between midnight and 1 a.m. on January 1, or the server
// is in a significantly different time zone than the report it
// could be as late as 4 a.m. the year will be wrong because the
// report will be from the previous year. I suppose it would be
// possible to correct for that, but for that little bit, I'm
// not going to worry about it.
// Now, strip out the time zone
$datetime=str_replace($z,"",$datetime);
// Format the date and time the way we want it and add
// back the time zone
$datetime=date("l F j, Y g:i A",strtotime($datetime)).$z;
self::$wxdata['OBSERVATION_TIME']=$datetime;
// Get the WEATHER element
$wx=trim(self::$wxdata['WEATHER']);
// Now, get the icon to match the weather
foreach($icons as $k=>$i){
$a=explode(" | ",$i);
if(is_numeric(array_search($wx,$a))){
self::$wxdata['ICON']="$imgpath/$k.jpg";
break;
}
}
// Replace any null elements with "Not available"
foreach(array_keys(self::$wxdata) as $key){
self::$wxdata[$key]=self::$wxdata[$key]=="NULL"?"Not available":self::$wxdata[$key];
}
// If we got humidity
if(is_numeric(self::$wxdata['RELATIVE_HUMIDITY']))
// Append a percent sign
self::$wxdata['RELATIVE_HUMIDITY'].="%";
// Do some formatting to make the output a little friendlier
if(self::$wxdata['VISIBILITY_MI']=="NA")
self::$wxdata['VISIBILITY']="Not available";
if(self::$wxdata['VISIBILITY']!="Not available")
self::$wxdata['VISIBILITY']=(1*self::$wxdata['VISIBILITY_MI'])." miles";
// If we got wind data
if(is_numeric(self::$wxdata['WIND_MPH'])){
// We're going to output wind data as both MPH from a cardinal direction
// and as Knots from a direction in degrees
// Calculate the value for Knots
self::$wxdata['WIND_KNOTS']=self::$wxdata['WIND_MPH']/1.15;
// Format the output
$wind=sprintf("From the %s at %d mph (%03.0f&deg; at %d knots)",self::$wxdata['WIND_DIR'],self::$wxdata['WIND_MPH'],self::$wxdata['WIND_DEGREES'],self::$wxdata['WIND_KNOTS']);
// If we got a value for wind gusts
if(is_numeric(self::$wxdata['WIND_GUST_MPH']) && self::$wxdata['WIND_GUST_MPH']>0){
// add it into the wind string
$wind=str_replace("mph","gusting to ".self::$wxdata['WIND_GUST_MPH']." mph<br>", $wind);
$knots=sprintf("%d",self::$wxdata['WIND_GUST_MPH']/1.15);
$wind=str_replace("knots","gusting to $knots knots",$wind);
}
} else {
// Otherwise, if wind is zero, we'll show "Calm"
$wind=self::$wxdata['WIND_MPH']=="Not available"?"Not available":"Calm";
} // Done with wind
self::$wxdata['WIND_STRING']=$wind;
} // Done getting and formatting the data
return self::$wxdata;
}
function startElement($parser, $name, $attrs) {
self::$itemname=$name;
self::$itemdata="";
}
function endElement($parser, $name) {
self::$wxdata[self::$itemname]=self::$itemdata;
self::$itemdata="";
}
function characterData($parser, $data) {
self::$itemdata.=$data;
}
function defineIcons(){
// See http://weather.gov/data/current_obs/weather.php for source data for this function
$retVal['bkn']="Mostly Cloudy | Mostly Cloudy with Haze | Mostly Cloudy and Breezy";
$retVal['skc']="Fair | Clear | Fair with Haze | Clear with Haze | Fair and Breezy | Clear and Breezy";
$retVal['few']="A Few Clouds | A Few Clouds with Haze | A Few Clouds and Breezy";
$retVal['sct']="Partly Cloudy | Party Cloudy with Haze | Partly Cloudy and Breezy";
$retVal['ovc']="Overcast | Overcast with Haze | Overcast and Breezy";
$retVal['nfg']="Fog/Mist | Fog | Freezing Fog | Shallow Fog | Partial Fog | Patches of Fog | Fog in Vicinity | Freezing Fog in Vicinity | Shallow Fog in Vicinity | Partial Fog in Vicinity | Patches of Fog in Vicinity | Showers in Vicinity Fog | Light Freezing Fog | Heavy Freezing Fog";
$retVal['smoke']="Smoke";
$retVal['fzra']="Freezing Rain | Freezing Drizzle | Light Freezing Rain | Light Freezing Drizzle | Heavy Freezing Rain | Heavy Freezing Drizzle | Freezing Rain in Vicinity | Freezing Drizzle in Vicinity";
$retVal['ip']="Ice Pellets | Light Ice Pellets | Heavy Ice Pellets | Ice Pellets in Vicinity | Showers Ice Pellets | Thunderstorm Ice Pellets | Ice Crystals | Hail | Small Hail/Snow Pellets | Light Small Hail/Snow Pellets | Heavy Small Hail/Snow Pellets | Showers Hail | Hail Showers";
$retVal['mix']="Freezing Rain Snow | Light Freezing Rain Snow | Heavy Freezing Rain Snow | Freezing Drizzle Snow | Light Freezing Drizzle Snow | Heavy Freezing Drizzle Snow | Snow Freezing Rain| Light Snow Freezing Rain | Heavy Snow Freezing Rain | Snow Freezing Drizzle | Light Snow Freezing Drizzle | Heavy Snow Freezing Drizzle";
$retVal['raip']="Rain Ice Pellets | Light Rain Ice Pellets | Heavy Rain Ice Pellets | Drizzle Ice Pellets | Light Drizzle Ice Pellets | Heavy Drizzle Ice Pellets | Ice Pellets Rain | Light Ice Pellets Rain | Heavy Ice Pellets Rain | Ice Pellets Drizzle | Light Ice Pellets Drizzle | Heavy Ice Pellets Drizzle";
$retVal['rasn']="Rain Snow | Light Rain Snow | Heavy Rain Snow | Snow Rain | Light Snow Rain | Heavy Snow Rain | Drizzle Snow | Light Drizzle Snow | Heavy Drizzle Snow | Snow Drizzle | Light Snow Drizzle | Heavy Snow Drizzle";
$retVal['shra']="Rain Showers | Light Rain Showers | Heavy Rain Showers | Rain Showers in Vicinity | Light Showers Rain | Heavy Showers Rain | Showers Rain | Showers Rain in Vicinity | Rain Showers Fog/Mist | Light Rain Showers Fog/Mist | Heavy Rain Showers Fog/Mist | Rain Showers in Vicinity Fog/Mist | Light Showers Rain Fog/Mist | Heavy Showers Rain Fog/Mist | Showers Rain Fog/Mist | Showers Rain in Vicinity Fog/Mist";
$retVal['tsra']="Thunderstorm | Light Thunderstorm Rain | Heavy Thunderstorm Rain | Thunderstorm Rain Fog/Mist | Light Thunderstorm Rain Fog/Mist | Heavy Thunderstorm Rain Fog/Mist | Thunderstorm Showers in Vicinity | | Light Thunderstorm Rain Haze | Heavy Thunderstorm Rain Haze | Thunderstorm Fog | Light Thunderstorm Rain Fog | Heavy Thunderstorm Rain Fog | Thunderstorm Light Rain | Thunderstorm Heavy Rain | Thunderstorm Rain Fog/Mist | Thunderstorm Light Rain Fog/Mist | Thunderstorm Heavy Rain Fog/Mist | Thunderstorm in Vicinity Fog/Mist | Thunderstorm Showers in Vicinity | Thunderstorm in Vicinity | Thunderstorm in Vicinity Haze | Thunderstorm Haze in Vicinity | Thunderstorm Light Rain Haze | Thunderstorm Heavy Rain Haze | Thunderstorm Fog | Thunderstorm Light Rain Fog | Thunderstorm Heavy Rain Fog | Thunderstorm Hail | Light Thunderstorm Rain Hail | Heavy Thunderstorm Rain Hail | Thunderstorm Rain Hail Fog/Mist | Light Thunderstorm Rain Hail Fog/Mist | Heavy Thunderstorm Rain Hail Fog/Mist | Thunderstorm Showers in Vicinity Hail | | Light Thunderstorm Rain Hail Haze | Heavy Thunderstorm Rain Hail Haze | Thunderstorm Hail Fog | Light Thunderstorm Rain Hail Fog | Heavy Thunderstorm Rain Hail Fog | Thunderstorm Light Rain Hail | Thunderstorm Heavy Rain Hail | Thunderstorm Rain Hail Fog/Mist | Thunderstorm Light Rain Hail Fog/Mist | Thunderstorm Heavy Rain Hail Fog/Mist | Thunderstorm in Vicinity Hail Fog/Mist | Thunderstorm Showers in Vicinity Hail | Thunderstorm in Vicinity Hail | Thunderstorm in Vicinity Hail Haze | Thunderstorm Haze in Vicinity Hail | Thunderstorm Light Rain Hail Haze | Thunderstorm Heavy Rain Hail Haze | Thunderstorm Hail Fog | Thunderstorm Light Rain Hail Fog | Thunderstorm Heavy Rain Hail Fog | Thunderstorm Small Hail/Snow Pellets | Thunderstorm Rain Small Hail/Snow Pellets | Light Thunderstorm Rain Small Hail/Snow Pellets | Heavy Thunderstorm Rain Small Hail/Snow Pellets";
$retVal['sn']="Snow | Light Snow | Heavy Snow | Snow Showers | Light Snow Showers | Heavy Snow Showers | Showers Snow | Light Showers Snow | Heavy Showers Snow | Snow Fog/Mist | Light Snow Fog/Mist | Heavy Snow Fog/Mist | Snow Showers Fog/Mist | Light Snow Showers Fog/Mist | Heavy Snow Showers Fog/Mist | Showers Snow Fog/Mist | Light Showers Snow Fog/Mist | Heavy Showers Snow Fog/Mist | Snow Fog | Light Snow Fog | Heavy Snow Fog | Snow Showers Fog | Light Snow Showers Fog | Heavy Snow Showers Fog | Showers Snow Fog | Light Showers Snow Fog | Heavy Showers Snow Fog | Showers in Vicinity Snow | Snow Showers in Vicinity | Snow Showers in Vicinity Fog/Mist | Snow Showers in Vicinity Fog | Low Drifting Snow | Blowing Snow | Snow Low Drifting Snow | Snow Blowing Snow | Light Snow Low Drifting Snow | Light Snow Blowing Snow | Heavy Snow Low Drifting Snow | Heavy Snow Blowing Snow | Thunderstorm Snow | Light Thunderstorm Snow | Heavy Thunderstorm Snow | Snow Grains | Light Snow Grains | Heavy Snow Grains | Heavy Blowing Snow | Blowing Snow in Vicinity";
$retVal['wind']="Windy | Fair and Windy | A Few Clouds and Windy | Partly Cloudy and Windy | Mostly Cloudy and Windy | Overcast and Windy";
$retVal['hi_shwrs']="Showers in Vicinity | Showers in Vicinity Fog/Mist | Showers in Vicinity Fog | Showers in Vicinity Haze";
$retVal['fzrara']="Freezing Rain Rain | Light Freezing Rain Rain | Heavy Freezing Rain Rain | Rain Freezing Rain | Light Rain Freezing Rain | Heavy Rain Freezing Rain | Freezing Drizzle Rain | Light Freezing Drizzle Rain | Heavy Freezing Drizzle Rain | Rain Freezing Drizzle | Light Rain Freezing Drizzle | Heavy Rain Freezing Drizzle";
$retVal['hi_tsra']="Thunderstorm in Vicinity | Thunderstorm in Vicinity Fog/Mist | Thunderstorm in Vicinity Fog | Thunderstorm Haze in Vicinity | Thunderstorm in Vicinity Haze";
$retVal['ra1']="Light Rain | Drizzle | Light Drizzle | Heavy Drizzle | Light Rain Fog/Mist | Drizzle Fog/Mist | Light Drizzle Fog/Mist | Heavy Drizzle Fog/Mist | Light Rain Fog | Drizzle Fog | Light Drizzle Fog | Heavy Drizzle Fog";
$retVal['ra']="Rain | Heavy Rain | Rain Fog/Mist | Heavy Rain Fog/Mist | Rain Fog | Heavy Rain Fog";
$retVal['nsvrtsra']="Funnel Cloud | Funnel Cloud in Vicinity | Tornado/Water Spout";
$retVal['dust']="Dust | Low Drifting Dust | Blowing Dust | Sand | Blowing Sand | Low Drifting Sand | Dust/Sand Whirls | Dust/Sand Whirls in Vicinity | Dust Storm | Heavy Dust Storm | Dust Storm in Vicinity | Sand Storm | Heavy Sand Storm | Sand Storm in Vicinity";
$retVal['mist']="Haze";
return $retVal;
}
// end CLASS
}
?>

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"POT-Creation-Date: 2015-07-13 18:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,26 +17,114 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: curweather.php:46
#: curweather.php:30
msgid "Error fetching weather data.\\nError was: "
msgstr ""
#: curweather.php:103 curweather.php:163
msgid "Current Weather"
msgstr ""
#: curweather.php:67
#: curweather.php:109
msgid "Relative Humidity"
msgstr ""
#: curweather.php:110
msgid "Pressure"
msgstr ""
#: curweather.php:111
msgid "Wind"
msgstr ""
#: curweather.php:112
msgid "Last Updated"
msgstr ""
#: curweather.php:113
msgid "Data by"
msgstr ""
#: curweather.php:114
msgid "Show on map"
msgstr ""
#: curweather.php:119
msgid "There was a problem accessing the weather data. But have a look"
msgstr ""
#: curweather.php:121
msgid "at OpenWeatherMap"
msgstr ""
#: curweather.php:137
msgid "Current Weather settings updated."
msgstr ""
#: curweather.php:90
msgid "Current Weather Settings"
#: curweather.php:152
msgid "No APPID found, please contact your admin to optain one."
msgstr ""
#: curweather.php:93
msgid "Weather Location: "
#: curweather.php:162 curweather.php:191
msgid "Save Settings"
msgstr ""
#: curweather.php:96
msgid "Enable Current Weather"
#: curweather.php:163
msgid "Settings"
msgstr ""
#: curweather.php:104
msgid "Submit"
#: curweather.php:165
msgid "Enter either the name of your location or the zip code."
msgstr ""
#: curweather.php:166
msgid "Your Location"
msgstr ""
#: curweather.php:166
msgid ""
"Identifier of your location (name or zip code), e.g. <em>Berlin,DE</em> or "
"<em>14476,DE</em>."
msgstr ""
#: curweather.php:167
msgid "Units"
msgstr ""
#: curweather.php:167
msgid "select if the temperatur should be displayed in °C or °F"
msgstr ""
#: curweather.php:168
msgid "Show weather data"
msgstr ""
#: curweather.php:181
msgid "Curweather settings saved."
msgstr ""
#: curweather.php:192
msgid "Caching Interval"
msgstr ""
#: curweather.php:192
msgid ""
"For how long should the weather data be cached? Choose according your "
"OpenWeatherMap account type."
msgstr ""
#: curweather.php:192
msgid "no cache"
msgstr ""
#: curweather.php:192
msgid "minutes"
msgstr ""
#: curweather.php:193
msgid "Your APPID"
msgstr ""
#: curweather.php:193
msgid "Your API key provided by OpenWeatherMap"
msgstr ""

View File

@ -0,0 +1,3 @@
{{include file="field_input.tpl" field=$appid}}
{{include file="field_select.tpl" field=$cachetime}}
<div class="submit"><input type="submit" name="curweather-submit" value="{{$submit}}" /></div>

View File

@ -0,0 +1,15 @@
<span id="settings_curweather_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose('settings_curweather_expanded'); openClose('settings_curweather_inflated');">
<h3>{{$header}}</h3>
</span>
<div id="settings_curweather_expanded" class="settings-block" style="display: none;">
<span class="fakelink" onclick="openClose('settings_curweather_expanded'); openClose('settings_curweather_inflated');">
<h3>{{$header}}</h3>
</span>
<div style="color: red; font-weight: bold;">{{$noappidtext}}</div>
{{include file="field_input.tpl" field=$curweather_loc}}
{{include file="field_select.tpl" field=$curweather_units}}
{{include file="field_checkbox.tpl" field=$enabled}}
<div class="settings-submit-wrapper" >
<input type="submit" id="curweather-settings-submit" name="curweather-settings-submit" class="settings-submit" value="{{$submit}}" />
</div>
</div>

View File

@ -0,0 +1 @@
<div>{{$problem}} <a href="http://openweathermap.org/find?q={{$rpt}}">{{$atOWM}}</a>.</div>

View File

@ -0,0 +1,17 @@
<div id="curweather-network" class="widget">
<div class="title tool">
<h4 title="{{$lastupdate}}">{{$title}}: {{$city}}</h4>
</div>
<p>
<img src="{{$icon}}" title="{{$description}}">
<ul class="curweather-details">
<li><strong>{{$temp}}</strong></li>
<li>{{$relhumidity['caption']}}: {{$relhumidity['val']}}</li>
<li>{{$pressure['caption']}}: {{$pressure['val']}}</li>
<li>{{$wind['caption']}}: {{$wind['val']}}</li>
</ul></p>
<p class="curweather-footer">
{{$databy}}: <a href="http://openweathermap.org">OpenWeatherMap</a>. <a href="http://openweathermap.org/Maps?zoom=7&lat={{$lat}}&lon={{$lon}}&layers=B0FTTFF">{{$showonmap}}</a>
</p>
</div>
<div class="clear"></div>

View File

@ -1,5 +0,0 @@
<?php
require_once 'getweather.php';
$rpt = "KHVN";
$wxdata = GetWeather::get($rpt);
var_dump($rpt, $wxdata);