*/
class Revslider_Weather_Addon_Public {
/**
* The ID of this plugin.
*
* @since 1.0.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
private $plugin_name;
/**
* The version of this plugin.
*
* @since 1.0.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version;
private $weather;
/**
* Initialize the class and set its properties.
*
* @since 1.0.0
* @param string $plugin_name The name of the plugin.
* @param string $version The version of this plugin.
*/
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
}
/**
* Register the stylesheets for the public-facing side of the site.
*
* @since 1.0.0
*/
public function enqueue_styles() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Revslider_Weather_Addon_Loader as all of the hooks are defined
* in that particular class.
*
* The Revslider_Weather_Addon_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
//wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/revslider-weather-addon-public.css', array(), $this->version, 'all' );
}
/**
* Register the JavaScript for the public-facing side of the site.
*
* @since 1.0.0
*/
public function enqueue_scripts() {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Revslider_Weather_Addon_Loader as all of the hooks are defined
* in that particular class.
*
* The Revslider_Weather_Addon_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
}
/**
* Get Information from Slide and call the weather
* @since 1.0.0
*/
public function revslider_add_layer_html($slider, $slide){
//global $revslider_weather;
$sliderParams = $slider->getParams();
if( isset($sliderParams["revslider-weather-enabled"]) && $sliderParams["revslider-weather-enabled"] == "true" ){
wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/revslider-weather-addon-public.css', array(), $this->version, 'all' );
}
if( isset($sliderParams["revslider-weather-enabled"]) && $sliderParams["revslider-weather-enabled"] == "true" && !empty( $sliderParams["revslider-weather-refresh"] ) ){
wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/revslider-weather-addon-public.js', array( 'jquery' ), $this->version, false );
wp_localize_script( $this->plugin_name, 'rev_slider_weather_addon', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'interval' => $sliderParams["revslider-weather-refresh"]
));
}
}
/**
* Connects to Yahoo API and collects Weather Info
* @since 1.0.0
*/
public function get_weather($type,$woeid,$name,$unit){
//Get weather information dependent from Slider options
$revslider_weather = RevAddOnWeatherYahoo::get_weather_infos($type,$woeid,$name,$unit);
return $revslider_weather;
}
/**
* Filters the custom meta placeholders and calls function to replace
* @since 1.0.0
*/
public function rev_addon_insert_meta($record){
$params = json_decode($record["params"]);
$type = isset($params->{"revslider-weather-location-type"}) ? $params->{"revslider-weather-location-type"} : '';
$woeid = isset($params->{"revslider-weather-location-woeid"}) ? $params->{"revslider-weather-location-woeid"} : '';
$name = isset($params->{"revslider-weather-location-name"}) ? $params->{"revslider-weather-location-name"} : '';
$unit = isset($params->{"revslider-weather-unit"}) ? $params->{"revslider-weather-unit"} : '';
$params->params_10 = (!isset($params->params_10)) ? '' : $params->params_10;
//Get weather information dependent from Slider options
$revslider_weather = $this->get_weather($type,$woeid,$name,$unit);
// $revslider_weather = '';
$params->params_10_chars = 1200;
$params->params_10 = $params->params_10 . '{"revslider-weather-addon" : { "type" : "' . $type . '" ,"name" : "' . $name . '" ,"woeid" : "' . $woeid . '" ,"unit" : "' . $unit . '" }}';
$record["params"] = json_encode($params);
if(strpos($record["layers"], "%weather_icon%")) wp_enqueue_style( $this->plugin_name . '_icons', plugin_dir_url( __FILE__ ) . 'css/revslider-weather-addon-icon.css', array(), $this->version, 'all' );
// if(!isset($revslider_weather->query->results->channel)) return $record;
$def_value = '--';
$def_fc = 'F';
$def_icon = '30';
$results = false;
if(!empty($revslider_weather) && isset($revslider_weather->query) && isset($revslider_weather->query->results) && isset($revslider_weather->query->results->channel)) {
$results = true;
$values = array(
'revslider_data_weather_title' => $revslider_weather->query->results->channel->item->title,
'revslider_data_weather_temp' => $revslider_weather->query->results->channel->item->condition->temp,
'revslider_data_weather_code' => $revslider_weather->query->results->channel->item->condition->code,
'revslider_data_weather_todayCode' => $revslider_weather->query->results->channel->item->forecast[0]->code,
'revslider_data_weather_date' => $revslider_weather->query->results->channel->item->forecast[0]->date,
'revslider_data_weather_day' => $revslider_weather->query->results->channel->item->forecast[0]->day,
'revslider_data_weather_currently' => RevAddOnWeatherYahoo::condition_lang($revslider_weather->query->results->channel->item->condition->text),
'revslider_data_weather_high' => $revslider_weather->query->results->channel->item->forecast[0]->high,
'revslider_data_weather_low' => $revslider_weather->query->results->channel->item->forecast[0]->low,
'revslider_data_weather_text' => RevAddOnWeatherYahoo::condition_lang($revslider_weather->query->results->channel->item->forecast[0]->text),
'revslider_data_weather_humidity' => $revslider_weather->query->results->channel->atmosphere->humidity,
'revslider_data_weather_pressure' => $revslider_weather->query->results->channel->atmosphere->pressure,
'revslider_data_weather_rising' => $revslider_weather->query->results->channel->atmosphere->rising,
'revslider_data_weather_visbility' => $revslider_weather->query->results->channel->atmosphere->visibility,
'revslider_data_weather_sunrise' => $revslider_weather->query->results->channel->astronomy->sunrise,
'revslider_data_weather_sunset' => $revslider_weather->query->results->channel->astronomy->sunset,
'revslider_data_weather_city' => $revslider_weather->query->results->channel->location->city,
'revslider_data_weather_country' => $revslider_weather->query->results->channel->location->country,
'revslider_data_weather_region' => $revslider_weather->query->results->channel->location->region,
'revslider_data_weather_updated' => $revslider_weather->query->results->channel->item->pubDate,
'revslider_data_weather_link' => $revslider_weather->query->results->channel->item->link,
'revslider_data_weather_thumbnail' => $revslider_weather->query->results->channel->item->forecast[0]->code . 'ds.png',
'revslider_data_weather_image' => $revslider_weather->query->results->channel->item->forecast[0]->code . 'd.png',
'revslider_data_weather_units_temp' => $revslider_weather->query->results->channel->units->temperature,
'revslider_data_weather_units_distance' => $revslider_weather->query->results->channel->units->distance,
'revslider_data_weather_units_pressure' => $revslider_weather->query->results->channel->units->pressure,
'revslider_data_weather_units_speed' => $revslider_weather->query->results->channel->units->speed,
'revslider_data_weather_wind_chill' => $revslider_weather->query->results->channel->wind->chill,
'revslider_data_weather_wind_direction' => $revslider_weather->query->results->channel->wind->direction,
'revslider_data_weather_wind_speed' => $revslider_weather->query->results->channel->wind->speed,
'revslider_data_weather_alt_temp' => $this->get_alt_temp($revslider_weather->query->results->channel->units->temperature,$revslider_weather->query->results->channel->item->condition->temp),
'revslider_data_weather_alt_high' => $this->get_alt_temp($revslider_weather->query->results->channel->units->temperature,$revslider_weather->query->results->channel->item->forecast[0]->high),
'revslider_data_weather_alt_low' => $this->get_alt_temp($revslider_weather->query->results->channel->units->temperature,$revslider_weather->query->results->channel->item->forecast[0]->low),
'revslider_data_weather_alt_unit' => $revslider_weather->query->results->channel->units->temperature == "F" ? "C" : "F",
'revslider_data_weather_description' => $revslider_weather->query->results->channel->item->description,
'revslider_data_weather_icon' => $revslider_weather->query->results->channel->item->forecast[0]->code
);
}
else {
$values = array(
'revslider_data_weather_title' => $def_value,
'revslider_data_weather_temp' => $def_value,
'revslider_data_weather_code' => $def_value,
'revslider_data_weather_todayCode' => $def_value,
'revslider_data_weather_date' => $def_value,
'revslider_data_weather_day' => $def_value,
'revslider_data_weather_currently' => $def_value,
'revslider_data_weather_high' => $def_value,
'revslider_data_weather_low' => $def_value,
'revslider_data_weather_text' => $def_value,
'revslider_data_weather_humidity' => $def_value,
'revslider_data_weather_pressure' => $def_value,
'revslider_data_weather_rising' => $def_value,
'revslider_data_weather_visbility' => $def_value,
'revslider_data_weather_sunrise' => $def_value,
'revslider_data_weather_sunset' => $def_value,
'revslider_data_weather_city' => $def_value,
'revslider_data_weather_country' => $def_value,
'revslider_data_weather_region' => $def_value,
'revslider_data_weather_updated' => $def_value,
'revslider_data_weather_link' => $def_value,
'revslider_data_weather_thumbnail' => $def_value,
'revslider_data_weather_image' => $def_value,
'revslider_data_weather_units_temp' => $def_value,
'revslider_data_weather_units_distance' => $def_value,
'revslider_data_weather_units_pressure' => $def_value,
'revslider_data_weather_units_speed' => $def_value,
'revslider_data_weather_wind_chill' => $def_value,
'revslider_data_weather_wind_direction' => $def_value,
'revslider_data_weather_wind_speed' => $def_value,
'revslider_data_weather_alt_temp' => $def_value,
'revslider_data_weather_alt_high' => $def_value,
'revslider_data_weather_alt_low' => $def_value,
'revslider_data_weather_alt_unit' => $def_fc,
'revslider_data_weather_description' => $def_value,
'revslider_data_weather_icon' => $def_icon
);
}
//Replace Placeholders on Slide Layers
$record["layers"] = str_replace(
array(
"%weather_title%",
"%weather_temp%",
"%weather_code%",
"%weather_todayCode%",
"%weather_date%",
"%weather_day%",
"%weather_currently%",
"%weather_high%",
"%weather_low%",
"%weather_text%",
"%weather_humidity%",
"%weather_pressure%",
"%weather_rising%",
"%weather_visbility%",
"%weather_sunrise%",
"%weather_sunset%",
"%weather_city%",
"%weather_country%",
"%weather_region%",
"%weather_updated%",
"%weather_link%",
"%weather_thumbnail%",
"%weather_image%",
"%weather_units_temp%",
"%weather_units_distance%",
"%weather_units_pressure%",
"%weather_units_speed%",
"%weather_wind_chill%",
"%weather_wind_direction%",
"%weather_wind_speed%",
"%weather_alt_temp%",
"%weather_alt_high%",
"%weather_alt_low%",
"%weather_alt_unit%",
"%weather_description%",
"%weather_icon%"
),
array(
'' . $values['revslider_data_weather_title'] . '',
'' . $values['revslider_data_weather_temp'] . '',
'' . $values['revslider_data_weather_code'] . '',
'' . $values['revslider_data_weather_todayCode'] . '',
'' . $values['revslider_data_weather_date'] . '',
'' . $values['revslider_data_weather_day'] . '',
'' . $values['revslider_data_weather_currently'] . '',
'' . $values['revslider_data_weather_high'] . '',
'' . $values['revslider_data_weather_low'] . '',
'' . $values['revslider_data_weather_text'] . '',
'' . $values['revslider_data_weather_humidity'] . '',
'' . $values['revslider_data_weather_pressure'] . '',
'' . $values['revslider_data_weather_rising'] . '',
'' . $values['revslider_data_weather_visbility'] . '',
'' . $values['revslider_data_weather_sunrise'] . '',
'' . $values['revslider_data_weather_sunset'] . '',
'' . $values['revslider_data_weather_city'] . '',
'' . $values['revslider_data_weather_country'] . '',
'' . $values['revslider_data_weather_region'] . '',
'' . $values['revslider_data_weather_updated'] . '',
'' . $values['revslider_data_weather_link'] . '',
'' . $values['revslider_data_weather_thumbnail'] . '',
'' . $values['revslider_data_weather_image'] . '',
'' . $values['revslider_data_weather_units_temp'] . '',
'' . $values['revslider_data_weather_units_distance'] . '',
'' . $values['revslider_data_weather_units_pressure'] . '',
'' . $values['revslider_data_weather_units_speed'] . '',
'' . $values['revslider_data_weather_wind_chill'] . '',
'' . $values['revslider_data_weather_wind_direction'] . '',
'' . $values['revslider_data_weather_wind_speed'] . '',
'' . $values['revslider_data_weather_alt_temp'] . '',
'' . $values['revslider_data_weather_alt_high'] . '',
'' . $values['revslider_data_weather_alt_low'] . '',
'' . $values['revslider_data_weather_alt_unit']. '',
'' . $values['revslider_data_weather_description'] . '',
'' . ''
),
$record["layers"]);
//Check for forecasts
$forecasts = preg_match_all('/\\%weather_.*?_forecast:[0-9]\\%/', $record["layers"], $matches);
if($forecasts){
foreach ($matches as $forecast_array) {
if(is_array($forecast_array)){
foreach ($forecast_array as $forecast) {
$orig_forecast = $forecast;
$forecast = str_replace(array("%","_forecast","weather_"), "", $forecast);
$forecast = explode(":", $forecast);
$what = $forecast[0];
$when = $forecast[1];
if(strpos($what, "alt_") !== false){
$what = str_replace("alt_", "", $what);
$temp = $results ? $revslider_weather->query->results->channel->item->forecast[$when]->$what : $def_value;
$what = $what == "text" ? RevAddOnWeatherYahoo::condition_lang($temp) : $temp;
$fc = $results ? $revslider_weather->query->results->channel->units->temperature : $def_fc;
$record["layers"] = str_replace( $orig_forecast , $this->get_alt_temp( $def_fc , $what ) , $record["layers"] );
}
else{
$what_orig = $what;
switch($what) {
case 'image':
$temp = $results ? $revslider_weather->query->results->channel->item->forecast[$when]->code : $def_value;
$what = 'https://s.yimg.com/zz/combo?a/i/us/nws/weather/gr/'. $temp . 'd.png';
break;
case 'thumbnail':
$temp = $results ? $revslider_weather->query->results->channel->item->forecast[$when]->code : $def_value;
$what = 'https://s.yimg.com/zz/combo?a/i/us/nws/weather/gr/'. $temp . 'ds.png';
break;
case 'icon':
$temp = $results ? $revslider_weather->query->results->channel->item->forecast[$when]->code : $def_icon;
$what = '';
break;
case 'text':
$temp = $results ? $revslider_weather->query->results->channel->item->forecast[$when]->$what : $def_value;
$what = RevAddOnWeatherYahoo::condition_lang($revslider_weather->query->results->channel->item->forecast[$when]->$what);
break;
default:
$what = $results ? $revslider_weather->query->results->channel->item->forecast[$when]->$what : $def_value;
}
$what = '' . $what . '';
$record["layers"] = str_replace($orig_forecast, $what , $record["layers"]);
}
}
}
}
}
return $record;
}
/**
* Get alternative temp unit data
* @since 1.0.0
*/
public function get_alt_temp($unit, $temp) {
if($unit === 'F') {
return $this->fahrenheit_to_celsius($temp);
}
else {
return $this->celsius_to_fahrenheit($temp);
}
}
/**
* Convert Temp Fahrenheit to Celsius
* @since 1.0.0
*/
public function fahrenheit_to_celsius($given_value)
{
$celsius=5/9*($given_value-32);
return $celsius ;
}
/**
* Convert Temp Celsius to Fahrenheit
* @since 1.0.0
*/
public function celsius_to_fahrenheit($given_value)
{
$fahrenheit=$given_value*9/5+32;
return $fahrenheit ;
}
/**
* Ajax Function for refreshing on screen weather data dynamically
* @since 1.0.0
*/
public function revslider_weather_addon_refresh(){
$weather_data = $_POST["weather"]["revslider-weather-addon"];
$weather_data["type"] = sanitize_title( $weather_data["type"] );
$weather_data["name"] = sanitize_title( $weather_data["name"] );
$weather_data["unit"] = sanitize_title( $weather_data["unit"] );
$weather_data["woeid"] = intval( $weather_data["woeid"] );
$revslider_weather = $this->get_weather( $weather_data["type"] , $weather_data["woeid"] , $weather_data["name"] , $weather_data["unit"] );
echo json_encode($revslider_weather);
}
}