Файловый менеджер - Редактировать - /var/www/portal.bdu.ac.bd/public_html/wp-content/themes/bduWP/framework/widgets/widget-weather.php
Назад
<?php /* Weather Widget developed By : Fouad Badawy | TieLabs Based On : Awesome Weather Widget http://halgatewood.com/awesome-weather */ // THE LOGIC function tie_weather_logic( $atts ){ $rtn = ""; $weather_data = array(); $location = isset($atts['location']) ? $atts['location'] : false; $api_key = isset($atts['api_key']) ? $atts['api_key'] : false; $units = (isset($atts['units']) AND strtoupper($atts['units']) == "C") ? "metric" : "imperial"; $units_display = $units == "metric" ? __('C', 'tie') : __('F', 'tie'); $days_to_show = isset($atts['forecast_days']) ? $atts['forecast_days'] : 5; $locale = 'en'; $sytem_locale = get_locale(); $available_locales = array( 'en', 'sp', 'fr', 'it', 'de', 'pt', 'ro', 'pl', 'ru', 'ua', 'fi', 'nl', 'bg', 'se', 'tr', 'zh_tw', 'zh_cn' ); // CHECK FOR LOCALE if( in_array( $sytem_locale , $available_locales ) ){ $locale = $sytem_locale; } // CHECK FOR LOCALE BY FIRST TWO DIGITS if( in_array(substr($sytem_locale, 0, 2), $available_locales ) ){ $locale = substr($sytem_locale, 0, 2); } // NO LOCATION, ABORT ABORT!!!1! if( !$location ) { return tie_weather_error(); } //FIND AND CACHE CITY ID if( is_numeric($location) ){ $city_name_slug = $location; $api_query = "id=" . $location; }else{ $city_name_slug = sanitize_title( $location ); $api_query = "q=" . $location; } // TRANSIENT NAME $weather_transient_name = 'tie_' . $city_name_slug . "_" . strtolower($units_display) . '_' . $locale; // GET WEATHER DATA if( get_transient( $weather_transient_name ) ){ $weather_data = get_transient( $weather_transient_name ); } else{ $weather_data['now'] = array(); $weather_data['forecast'] = array(); // NOW $now_ping = "http://api.openweathermap.org/data/2.5/weather?" . $api_query . "&lang=" . $locale . "&units=" . $units."&APPID=".$api_key; $now_ping = str_replace(" ", "", $now_ping); $now_ping_get = wp_remote_get( $now_ping, array( 'timeout' => 120 ) ); if( is_wp_error( $now_ping_get ) ){ return tie_weather_error( $now_ping_get->get_error_message() ); } $city_data = json_decode( $now_ping_get['body'] ); if( isset($city_data->cod) AND $city_data->cod == 404 ){ return tie_weather_error( $city_data->message ); }else { $weather_data['now'] = $city_data; } // FORECAST if( $days_to_show != "hide" ) { $forecast_ping = "http://api.openweathermap.org/data/2.5/forecast/daily?" . $api_query . "&lang=" . $locale . "&units=" . $units ."&cnt=7&APPID=".$api_key; $forecast_ping = str_replace(" ", "", $forecast_ping); $forecast_ping_get = wp_remote_get( $forecast_ping, array( 'timeout' => 120 ) ); if( is_wp_error( $forecast_ping_get ) ){ return tie_weather_error( $forecast_ping_get->get_error_message() ); } $forecast_data = json_decode( $forecast_ping_get['body'] ); if( isset($forecast_data->cod) AND $forecast_data->cod == 404 ){ return tie_weather_error( $forecast_data->message ); }else{ $weather_data['forecast'] = $forecast_data; } } if($weather_data['now'] OR $weather_data['forecast']){ // SET THE TRANSIENT, CACHE FOR A LITTLE OVER THREE HOURS set_transient( $weather_transient_name, $weather_data, apply_filters( 'awesome_weather_cache', 11000 ) ); } } // NO WEATHER if( !$weather_data OR !isset($weather_data['now'])) { return tie_weather_error(); } // TODAYS TEMPS & ICONS $today = $weather_data['now']; $today_temp = round($today->main->temp); $today_high = round($today->main->temp_max); $today_low = round($today->main->temp_min); // DATA $today->main->humidity = round($today->main->humidity); $today->wind->speed = round($today->wind->speed); $wind_label = array ( __('N', 'tie'), __('NNE', 'tie'), __('NE', 'tie'), __('ENE', 'tie'), __('E', 'tie'), __('ESE', 'tie'), __('SE', 'tie'), __('SSE', 'tie'), __('S', 'tie'), __('SSW', 'tie'), __('SW', 'tie'), __('WSW', 'tie'), __('W', 'tie'), __('WNW', 'tie'), __('NW', 'tie'), __('NNW', 'tie') ); $wind_direction = $wind_label[ fmod((($today->wind->deg + 11) / 22.5),16) ]; // ICONS $today_icon = $today->weather[0]->icon; $icon_class = 'cloud'; if( $today_icon == '01d' ) $icon_class ='sun'; elseif( $today_icon == '01n' ) $icon_class ='moon'; elseif( $today_icon == '02d' ) $icon_class ='cloud-sun'; elseif( $today_icon == '02n' ) $icon_class ='cloud-moon'; elseif( $today_icon == '04d' || $today_icon == '04n' ) $icon_class ='clouds'; elseif( $today_icon == '09d' || $today_icon == '09n' || $today_icon == '10d' || $today_icon == '10n' ) $icon_class ='rain'; elseif( $today_icon == '11d' || $today_icon == '11n' ) $icon_class ='clouds-flash-alt'; elseif( $today_icon == '13d' || $today_icon == '13n' ) $icon_class ='hail'; elseif( $today_icon == '50d' || $today_icon == '50n' ) $icon_class ='fog'; // DISPLAY WIDGET $rtn .= " <div id=\"tie-weather-{$city_name_slug}\" class=\"tie-weather-wrap\"> "; $rtn .= " <div class=\"tie-weather-current-temp\"> <div class=\"weather-icon\"><i class=\"tieicon-{$icon_class}\"></i></div> $today_temp<sup>{$units_display}</sup> </div> <!-- /.tie-weather-current-temp --> "; $speed_text = ($units == "metric") ? __('km/h', 'tie') : __('mph', 'tie'); $rtn .= " <div class=\"tie-weather-todays-stats\"> <div class=\"weather_name\">{$today->name}</div> <div class=\"weather_desc\">{$today->weather[0]->description}</div> <div class=\"weather_humidty\">" . __('humidity:', 'tie') . " {$today->main->humidity}% </div> <div class=\"weather_wind\">" . __('wind:', 'tie') . " {$today->wind->speed}" . $speed_text . " {$wind_direction}</div> <div class=\"weather_highlow\"> " .__('H', 'tie') . " {$today_high} • " . __('L', 'tie') . " {$today_low} </div> </div> <!-- /.tie-weather-todays-stats --> "; if($days_to_show != "hide") { $rtn .= "<div class=\"tie-weather-forecast weather_days_{$days_to_show}\">"; $c = 1; $dt_today = date( 'Ymd', current_time( 'timestamp', 0 ) ); $forecast = $weather_data['forecast']; $days_to_show = (int) $days_to_show; foreach( (array) $forecast->list as $forecast ) { if( $dt_today >= date('Ymd', $forecast->dt)) continue; $days_of_week = array( __('Sun' ,'tie'), __('Mon' ,'tie'), __('Tue' ,'tie'), __('Wed' ,'tie'), __('Thu' ,'tie'), __('Fri' ,'tie'), __('Sat' ,'tie') ); $forecast->temp = (int) $forecast->temp->day; $day_of_week = $days_of_week[ date('w', $forecast->dt) ]; $rtn .= " <div class=\"tie-weather-forecast-day\"> <div class=\"tie-weather-forecast-day-temp\">{$forecast->temp}<sup>{$units_display}</sup></div> <div class=\"tie-weather-forecast-day-abbr\">$day_of_week</div> </div> "; if($c == $days_to_show) break; $c++; } $rtn .= " </div> <!-- /.tie-weather-forecast -->"; } $rtn .= "</div> <!-- /.tie-weather-wrap -->"; return $rtn; } // RETURN ERROR function tie_weather_error( $msg = false ) { if(!$msg) $msg = __('No weather information available', 'tie'); return apply_filters( 'tie_weather_error', "<!-- TIE WEATHER ERROR: " . $msg . " -->" ); } // AWESOME WEATHER WIDGET, WIDGET CLASS, SO MANY WIDGETS class TIE_WeatherWidget extends WP_Widget { public function __construct(){ parent::__construct(false, $name = THEME_NAME .' - '.__( 'Weather' , 'tie' ) ); } public function widget($args, $instance) { extract( $args ); $location = isset($instance['location']) ? $instance['location'] : false; $api_key = isset($instance['api_key']) ? $instance['api_key'] : false; $widget_title = isset($instance['widget_title']) ? $instance['widget_title'] : false; $units = isset($instance['units']) ? $instance['units'] : false; $forecast_days = isset($instance['forecast_days']) ? $instance['forecast_days'] : false; echo $before_widget; echo $before_title . $widget_title . $after_title; echo tie_weather_logic( array( 'location' => $location, 'api_key' => $api_key, 'units' => $units, 'forecast_days' => $forecast_days )); echo $after_widget; } public function update($new_instance, $old_instance) { $instance = $old_instance; $instance['location'] = strip_tags($new_instance['location']); $instance['api_key'] = strip_tags($new_instance['api_key']); $instance['widget_title'] = strip_tags($new_instance['widget_title']); $instance['units'] = strip_tags($new_instance['units']); $instance['forecast_days'] = strip_tags($new_instance['forecast_days']); return $instance; } public function form($instance) { $defaults = array( 'widget_title' =>__('Weather', 'tie') ); $instance = wp_parse_args( (array) $instance, $defaults ); $location = isset($instance['location']) ? esc_attr($instance['location']) : ""; $api_key = isset($instance['api_key']) ? esc_attr($instance['api_key']) : ""; $widget_title = isset($instance['widget_title']) ? esc_attr($instance['widget_title']) : ""; $units = (isset($instance['units']) AND strtoupper($instance['units']) == "C") ? "C" : "F"; $forecast_days = isset($instance['forecast_days']) ? esc_attr($instance['forecast_days']) : 5; ?> <p> <label for="<?php echo $this->get_field_id('widget_title'); ?>"><?php _e('Title:', 'tie'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('widget_title'); ?>" name="<?php echo $this->get_field_name('widget_title'); ?>" type="text" value="<?php echo $widget_title; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('location'); ?>"> <?php _e('Location:', 'tie'); ?> - <a href="http://openweathermap.org/find" target="_blank"><?php _e('Find Your Location', 'tie'); ?></a><br /> <small><?php _e('(i.e: London,UK or New York City,NY)', 'tie'); ?></small> </label> <input class="widefat" style="margin-top: 4px;" id="<?php echo $this->get_field_id('location'); ?>" name="<?php echo $this->get_field_name('location'); ?>" type="text" value="<?php echo $location; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('api_key'); ?>"> <?php _e('API key:', 'tie'); ?> - <a href="http://openweathermap.org/appid#get" target="_blank"><?php _e('How to get API key', 'tie'); ?></a><br /> </label> <input class="widefat" style="margin-top: 4px;" id="<?php echo $this->get_field_id('api_key'); ?>" name="<?php echo $this->get_field_name('api_key'); ?>" type="text" value="<?php echo $api_key; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('units'); ?>"><?php _e('Units:', 'tie'); ?></label> <input id="<?php echo $this->get_field_id('units'); ?>" name="<?php echo $this->get_field_name('units'); ?>" type="radio" value="F" <?php if($units == "F") echo ' checked="checked"'; ?> /> <?php _e('F', 'tie'); ?> <input id="<?php echo $this->get_field_id('units'); ?>" name="<?php echo $this->get_field_name('units'); ?>" type="radio" value="C" <?php if($units == "C") echo ' checked="checked"'; ?> /> <?php _e('C', 'tie'); ?> </p> <p> <label for="<?php echo $this->get_field_id('forecast_days'); ?>"><?php _e('Forecast:', 'tie'); ?></label> <select class="widefat" id="<?php echo $this->get_field_id('forecast_days'); ?>" name="<?php echo $this->get_field_name('forecast_days'); ?>"> <option value="5"<?php if($forecast_days == 5) echo " selected=\"selected\""; ?>><?php _e('5 Days', 'tie'); ?></option> <option value="4"<?php if($forecast_days == 4) echo " selected=\"selected\""; ?>><?php _e('4 Days', 'tie'); ?></option> <option value="3"<?php if($forecast_days == 3) echo " selected=\"selected\""; ?>><?php _e('3 Days', 'tie'); ?></option> <option value="2"<?php if($forecast_days == 2) echo " selected=\"selected\""; ?>><?php _e('2 Days', 'tie'); ?></option> <option value="1"<?php if($forecast_days == 1) echo " selected=\"selected\""; ?>><?php _e('1 Day', 'tie'); ?></option> <option value="hide"<?php if($forecast_days == 'hide') echo " selected=\"selected\""; ?>><?php _e("Don't Show", 'tie'); ?></option> </select> </p> <?php } } add_action( 'widgets_init', 'tie_weather_widget' ); function tie_weather_widget() { register_widget( 'TIE_WeatherWidget' ); }
| ver. 1.4 |
Github
|
.
| PHP 7.4.3-4ubuntu2.28 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка