function awesome_weather_logic($atts)
{
    global $awesome_weather_sizes;
    $rtn = "";
    $weather_data = array();
    $location = isset($atts['location']) ? $atts['location'] : false;
    $size = (isset($atts['size']) and $atts['size'] == "tall") ? 'tall' : 'wide';
    $units = (isset($atts['units']) and strtoupper($atts['units']) == "C") ? "metric" : "imperial";
    $units_display = $units == "metric" ? __('C', 'awesome-weather') : __('F', 'awesome-weather');
    $override_title = isset($atts['override_title']) ? $atts['override_title'] : false;
    $days_to_show = isset($atts['forecast_days']) ? $atts['forecast_days'] : 5;
    $show_stats = (isset($atts['hide_stats']) and $atts['hide_stats'] == 1) ? 0 : 1;
    $show_link = (isset($atts['show_link']) and $atts['show_link'] == 1) ? 1 : 0;
    $background = isset($atts['background']) ? $atts['background'] : false;
    $custom_bg_color = isset($atts['custom_bg_color']) ? $atts['custom_bg_color'] : false;
    $inline_style = isset($atts['inline_style']) ? $atts['inline_style'] : '';
    $locale = 'en';
    $sytem_locale = get_locale();
    $available_locales = array('en', 'es', 'sp', 'fr', 'it', 'de', 'pt', 'ro', 'pl', 'ru', 'uk', 'ua', 'fi', 'nl', 'bg', 'sv', 'se', 'ca', 'tr', 'hr', 'zh', '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 awesome_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 = 'awe_' . $city_name_slug . "_" . strtolower($units) . '_' . $locale;
    // TWO APIS USED (VERSION 2.5)
    //http://api.openweathermap.org/data/2.5/weather?q=London,uk&units=metric&cnt=7&lang=fr
    //http://api.openweathermap.org/data/2.5/forecast/daily?q=London&units=metric&cnt=7&lang=fr
    // CLEAR THE TRANSIENT
    if (isset($_GET['clear_awesome_widget'])) {
        delete_transient($weather_transient_name);
    }
    // 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;
        $now_ping_get = wp_remote_get($now_ping);
        if (is_wp_error($now_ping_get)) {
            return awesome_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 awesome_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";
            $forecast_ping_get = wp_remote_get($forecast_ping);
            if (is_wp_error($forecast_ping_get)) {
                return awesome_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 awesome_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 awesome_weather_error();
    }
    // TODAYS TEMPS
    $today = $weather_data['now'];
    $today_temp = round($today->main->temp);
    $today_high = round($today->main->temp_max);
    $today_low = round($today->main->temp_min);
    if ($custom_bg_color) {
        if (substr(trim($custom_bg_color), 0, 1) != "#" and substr(trim(strtolower($custom_bg_color)), 0, 3) != "rgb") {
            $custom_bg_color = "#" . $custom_bg_color;
        }
        $inline_style .= "background-color: {$custom_bg_color};";
        $bg_color = "custom";
    } else {
        // COLOR OF WIDGET
        $bg_color = "temp1";
        if ($units_display == "F") {
            if ($today_temp > 31 and $today_temp < 40) {
                $bg_color = "temp2";
            }
            if ($today_temp >= 40 and $today_temp < 50) {
                $bg_color = "temp3";
            }
            if ($today_temp >= 50 and $today_temp < 60) {
                $bg_color = "temp4";
            }
            if ($today_temp >= 60 and $today_temp < 80) {
                $bg_color = "temp5";
            }
            if ($today_temp >= 80 and $today_temp < 90) {
                $bg_color = "temp6";
            }
            if ($today_temp >= 90) {
                $bg_color = "temp7";
            }
        } else {
            if ($today_temp > 1 and $today_temp < 4) {
                $bg_color = "temp2";
            }
            if ($today_temp >= 4 and $today_temp < 10) {
                $bg_color = "temp3";
            }
            if ($today_temp >= 10 and $today_temp < 15) {
                $bg_color = "temp4";
            }
            if ($today_temp >= 15 and $today_temp < 26) {
                $bg_color = "temp5";
            }
            if ($today_temp >= 26 and $today_temp < 32) {
                $bg_color = "temp6";
            }
            if ($today_temp >= 32) {
                $bg_color = "temp7";
            }
        }
    }
    // DATA
    $header_title = $override_title ? $override_title : $today->name;
    $today->main->humidity = round($today->main->humidity);
    $today->wind->speed = round($today->wind->speed);
    $wind_label = array(__('N', 'awesome-weather'), __('NNE', 'awesome-weather'), __('NE', 'awesome-weather'), __('ENE', 'awesome-weather'), __('E', 'awesome-weather'), __('ESE', 'awesome-weather'), __('SE', 'awesome-weather'), __('SSE', 'awesome-weather'), __('S', 'awesome-weather'), __('SSW', 'awesome-weather'), __('SW', 'awesome-weather'), __('WSW', 'awesome-weather'), __('W', 'awesome-weather'), __('WNW', 'awesome-weather'), __('NW', 'awesome-weather'), __('NNW', 'awesome-weather'));
    $wind_direction = $wind_label[fmod(($today->wind->deg + 11) / 22.5, 16)];
    $show_stats_class = $show_stats ? "awe_with_stats" : "awe_without_stats";
    if ($background) {
        $bg_color = "darken";
    }
    if ($inline_style != "") {
        $inline_style = " style=\"{$inline_style}\"";
    }
    // DISPLAY WIDGET
    $rtn .= "\n\t\n\t\t<div id=\"awesome-weather-{$city_name_slug}\" class=\"awesome-weather-wrap awecf {$bg_color} {$show_stats_class} awe_{$size}\"{$inline_style}>\n\t";
    if ($background) {
        $rtn .= "<div class=\"awesome-weather-cover\" style='background-image: url({$background});'>";
        $rtn .= "<div class=\"awesome-weather-darken\">";
    }
    $rtn .= "\n\t\t\t<div class=\"awesome-weather-header\">{$header_title}</div>\n\t\t\t\n\t\t\t<div class=\"awesome-weather-current-temp\">\n\t\t\t\t{$today_temp}<sup>{$units_display}</sup>\n\t\t\t</div> <!-- /.awesome-weather-current-temp -->\n\t";
    if ($show_stats) {
        $speed_text = $units == "metric" ? __('km/h', 'awesome-weather') : __('mph', 'awesome-weather');
        $rtn .= "\n\t\t\t\t\n\t\t\t\t<div class=\"awesome-weather-todays-stats\">\n\t\t\t\t\t<div class=\"awe_desc\">{$today->weather[0]->description}</div>\n\t\t\t\t\t<div class=\"awe_humidty\">" . __('humidity:', 'awesome-weather') . " {$today->main->humidity}% </div>\n\t\t\t\t\t<div class=\"awe_wind\">" . __('wind:', 'awesome-weather') . " {$today->wind->speed}" . $speed_text . " {$wind_direction}</div>\n\t\t\t\t\t<div class=\"awe_highlow\"> " . __('H', 'awesome-weather') . " {$today_high} &bull; " . __('L', 'awesome-weather') . " {$today_low} </div>\t\n\t\t\t\t</div> <!-- /.awesome-weather-todays-stats -->\n\t\t";
    }
    if ($days_to_show != "hide") {
        $rtn .= "<div class=\"awesome-weather-forecast awe_days_{$days_to_show} awecf\">";
        $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', 'awesome-weather'), __('Mon', 'awesome-weather'), __('Tue', 'awesome-weather'), __('Wed', 'awesome-weather'), __('Thu', 'awesome-weather'), __('Fri', 'awesome-weather'), __('Sat', 'awesome-weather'));
            $forecast->temp = (int) $forecast->temp->day;
            $day_of_week = $days_of_week[date('w', $forecast->dt)];
            $rtn .= "\n\t\t\t\t<div class=\"awesome-weather-forecast-day\">\n\t\t\t\t\t<div class=\"awesome-weather-forecast-day-temp\">{$forecast->temp}<sup>{$units_display}</sup></div>\n\t\t\t\t\t<div class=\"awesome-weather-forecast-day-abbr\">{$day_of_week}</div>\n\t\t\t\t</div>\n\t\t\t";
            if ($c == $days_to_show) {
                break;
            }
            $c++;
        }
        $rtn .= " </div> <!-- /.awesome-weather-forecast -->";
    }
    if ($show_link and isset($today->id)) {
        $show_link_text = apply_filters('awesome_weather_extended_forecast_text', __('extended forecast', 'awesome-weather'));
        $rtn .= "<div class=\"awesome-weather-more-weather-link\">";
        $rtn .= "<a href=\"http://openweathermap.org/city/{$today->id}\" target=\"_blank\">{$show_link_text}</a>";
        $rtn .= "</div> <!-- /.awesome-weather-more-weather-link -->";
    }
    if ($background) {
        $rtn .= "</div> <!-- /.awesome-weather-cover -->";
        $rtn .= "</div> <!-- /.awesome-weather-darken -->";
    }
    $rtn .= "</div> <!-- /.awesome-weather-wrap -->";
    return $rtn;
}
Beispiel #2
0
function awesome_weather_logic($atts)
{
    global $awesome_weather_sizes;
    $rtn = "";
    $weather_data = array();
    $location = isset($atts['location']) ? $atts['location'] : false;
    $owm_city_id = isset($atts['owm_city_id']) ? $atts['owm_city_id'] : false;
    $size = (isset($atts['size']) and $atts['size'] == "tall") ? 'tall' : 'wide';
    $units = (isset($atts['units']) and strtoupper($atts['units']) == "C") ? "metric" : "imperial";
    $units_display = $units == "metric" ? __('C', 'awesome-weather') : __('F', 'awesome-weather');
    $override_title = isset($atts['override_title']) ? $atts['override_title'] : false;
    $days_to_show = isset($atts['forecast_days']) ? $atts['forecast_days'] : 5;
    $show_stats = (isset($atts['hide_stats']) and $atts['hide_stats'] == 1) ? 0 : 1;
    $background_by_weather = (isset($atts['background_by_weather']) and $atts['background_by_weather'] == 1) ? 1 : 0;
    $show_link = (isset($atts['show_link']) and $atts['show_link'] == 1) ? 1 : 0;
    $background = isset($atts['background']) ? $atts['background'] : false;
    $custom_bg_color = isset($atts['custom_bg_color']) ? $atts['custom_bg_color'] : false;
    $inline_style = isset($atts['inline_style']) ? $atts['inline_style'] : '';
    $text_color = isset($atts['text_color']) ? $atts['text_color'] : '#ffffff';
    $locale = 'vi';
    $sytem_locale = get_locale();
    $available_locales = apply_filters('awesome_weather_available_locales', array('vi', 'en', 'es', 'sp', 'fr', 'it', 'de', 'pt', 'ro', 'pl', 'ru', 'uk', 'ua', 'fi', 'nl', 'bg', 'sv', 'se', 'sk', 'ca', 'tr', 'hr', 'zh', 'zh_tw', 'zh_cn', 'hu'));
    // 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);
    }
    // OVERRIDE LOCALE PARAMETER
    if (isset($atts['locale'])) {
        $locale = $atts['locale'];
    }
    // DISPLAY SYMBOL
    $units_display_symbol = apply_filters('awesome_weather_units_display', "&deg;");
    if (isset($atts['units_display_symbol'])) {
        $units_display_symbol = $atts['units_display_symbol'];
    }
    // NO LOCATION, ABORT ABORT!!!1!
    if (!$location) {
        return awesome_weather_error();
    }
    //FIND AND CACHE CITY ID
    if ($owm_city_id) {
        $city_name_slug = sanitize_title($location);
        $api_query = "id=" . $owm_city_id;
    } else {
        if (is_numeric($location)) {
            $city_name_slug = sanitize_title($location);
            $api_query = "id=" . urlencode($location);
        } else {
            $city_name_slug = sanitize_title($location);
            $api_query = "q=" . urlencode($location);
        }
    }
    // TRANSIENT NAME
    $weather_transient_name = 'awe_' . $city_name_slug . "_" . $days_to_show . "_" . strtolower($units) . '_' . $locale;
    // TWO APIS USED (VERSION 2.5)
    //http://api.openweathermap.org/data/2.5/weather?q=London,uk&units=metric&cnt=7&lang=fr
    //http://api.openweathermap.org/data/2.5/forecast/daily?q=London&units=metric&cnt=7&lang=fr
    // CLEAR THE TRANSIENT
    if (isset($_GET['clear_awesome_widget'])) {
        delete_transient($weather_transient_name);
    }
    // APPID
    $appid_string = '';
    $appid = apply_filters('awesome_weather_appid', awe_get_appid());
    if ($appid) {
        $appid_string = '&APPID=' . $appid;
    }
    // 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_string;
        $now_ping_get = wp_remote_get($now_ping);
        // PING URL ERROR
        if (is_wp_error($now_ping_get)) {
            return awesome_weather_error($now_ping_get->get_error_message());
        }
        // GET BODY OF REQUEST
        $city_data = json_decode($now_ping_get['body']);
        if (isset($city_data->cod) and $city_data->cod == 404) {
            return awesome_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_string;
            $forecast_ping_get = wp_remote_get($forecast_ping);
            if (is_wp_error($forecast_ping_get)) {
                return awesome_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 awesome_weather_error($forecast_data->message);
            } else {
                $weather_data['forecast'] = $forecast_data;
            }
        }
        if ($weather_data['now'] or $weather_data['forecast']) {
            set_transient($weather_transient_name, $weather_data, apply_filters('awesome_weather_cache', 1800));
        }
    }
    // NO WEATHER
    if (!$weather_data or !isset($weather_data['now'])) {
        return awesome_weather_error();
    }
    // TODAYS TEMPS
    $today = $weather_data['now'];
    $today_temp = isset($today->main->temp) ? round($today->main->temp) : false;
    $today_high = isset($today->main->temp_max) ? round($today->main->temp_max) : false;
    $today_low = isset($today->main->temp_min) ? round($today->main->temp_min) : false;
    // TEXT COLOR
    if (substr(trim($text_color), 0, 1) != "#") {
        $text_color = "#" . $text_color;
    }
    $inline_style .= " color: {$text_color}; ";
    // BACKGROUND DATA, CLASSES AND OR IMAGES
    $background_classes = array();
    $background_classes[] = "awesome-weather-wrap";
    $background_classes[] = "awecf";
    $background_classes[] = "awe_" . $size;
    if ($custom_bg_color) {
        if (substr(trim($custom_bg_color), 0, 1) != "#" and substr(trim(strtolower($custom_bg_color)), 0, 3) != "rgb") {
            $custom_bg_color = "#" . $custom_bg_color;
        }
        $inline_style .= " background-color: {$custom_bg_color}; ";
        $background_classes[] = "awe_custom";
    } else {
        if ($today_temp) {
            // COLOR OF WIDGET
            if ($units == "imperial") {
                if ($today_temp > 31 and $today_temp < 40) {
                    $background_classes[] = "temp2";
                } else {
                    if ($today_temp >= 40 and $today_temp < 50) {
                        $background_classes[] = "temp3";
                    } else {
                        if ($today_temp >= 50 and $today_temp < 60) {
                            $background_classes[] = "temp4";
                        } else {
                            if ($today_temp >= 60 and $today_temp < 80) {
                                $background_classes[] = "temp5";
                            } else {
                                if ($today_temp >= 80 and $today_temp < 90) {
                                    $background_classes[] = "temp6";
                                } else {
                                    if ($today_temp >= 90) {
                                        $background_classes[] = "temp7";
                                    } else {
                                        $background_classes[] = "temp1";
                                    }
                                }
                            }
                        }
                    }
                }
            } else {
                if ($today_temp > 1 and $today_temp < 4) {
                    $background_classes[] = "temp2";
                } else {
                    if ($today_temp >= 4 and $today_temp < 10) {
                        $background_classes[] = "temp3";
                    } else {
                        if ($today_temp >= 10 and $today_temp < 15) {
                            $background_classes[] = "temp4";
                        } else {
                            if ($today_temp >= 15 and $today_temp < 26) {
                                $background_classes[] = "temp5";
                            } else {
                                if ($today_temp >= 26 and $today_temp < 32) {
                                    $background_classes[] = "temp6";
                                } else {
                                    if ($today_temp >= 32) {
                                        $background_classes[] = "temp7";
                                    } else {
                                        $background_classes[] = "temp1";
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    // DATA
    $header_title = $override_title ? $override_title : $today->name;
    // WIND
    $wind_label = array(__('B', 'awesome-weather'), __('B-ĐB', 'awesome-weather'), __('ĐB', 'awesome-weather'), __('Đ-ĐN', 'awesome-weather'), __('Đ', 'awesome-weather'), __('Đ-ĐN', 'awesome-weather'), __('ĐN', 'awesome-weather'), __('N-ĐN', 'awesome-weather'), __('N', 'awesome-weather'), __('N-TN', 'awesome-weather'), __('TN', 'awesome-weather'), __('T-TN', 'awesome-weather'), __('T', 'awesome-weather'), __('T-TB', 'awesome-weather'), __('TB', 'awesome-weather'), __('B-TB', 'awesome-weather'));
    $wind_direction = false;
    if (isset($today->wind->deg)) {
        $wind_direction = apply_filters('awesome_weather_wind_direction', $wind_label[fmod(($today->wind->deg + 11) / 22.5, 16)]);
    }
    $background_classes[] = $show_stats ? "awe_with_stats" : "awe_without_stats";
    // ADD WEATHER CONDITIONS CLASSES TO WRAP
    if (isset($today->weather[0])) {
        $weather_code = $today->weather[0]->id;
        $weather_description_slug = sanitize_title($today->weather[0]->description);
        $background_classes[] = "awe-code-" . $weather_code;
        $background_classes[] = "awe-desc-" . $weather_description_slug;
    }
    // CHECK FOR BACKGROUND BY WEATHER
    if ($background_by_weather and ($weather_code or $weather_description_slug)) {
        if (file_exists(get_stylesheet_directory() . "/awe-backgrounds")) {
            $bg_ext = apply_filters('awesome_weather_bg_ext', 'jpg');
            // CHECK FOR CODE
            if ($weather_code and file_exists(get_stylesheet_directory() . "/awe-backgrounds/" . $weather_code . "." . $bg_ext)) {
                $background = get_stylesheet_directory_uri() . "/awe-backgrounds/" . $weather_code . "." . $bg_ext;
            } else {
                if ($weather_description_slug and file_exists(get_stylesheet_directory() . "/awe-backgrounds/" . $weather_description_slug . "." . $bg_ext)) {
                    $background = get_stylesheet_directory_uri() . "/awe-backgrounds/" . $weather_description_slug . "." . $bg_ext;
                } else {
                    // PRESET WEATHER NAMES
                    $preset_background_img_name = awesome_weather_preset_condition_names_openweathermaps($weather_code);
                    if ($preset_background_img_name) {
                        $background_classes[] = "awe-preset-" . $preset_background_img_name;
                        if (file_exists(get_stylesheet_directory() . "/awe-backgrounds/" . $preset_background_img_name . "." . $bg_ext)) {
                            $background = get_stylesheet_directory_uri() . "/awe-backgrounds/" . $preset_background_img_name . "." . $bg_ext;
                        }
                    }
                }
            }
        } else {
            // PRESET WEATHER NAMES
            $preset_background_img_name = awesome_weather_preset_condition_names_openweathermaps($weather_code);
            if ($preset_background_img_name) {
                $background_classes[] = "awe-preset-" . $preset_background_img_name;
                if (file_exists(dirname(__FILE__) . "/img/awe-backgrounds/" . $preset_background_img_name . ".jpg")) {
                    $background = plugin_dir_url(__FILE__) . "/img/awe-backgrounds/" . $preset_background_img_name . ".jpg";
                }
            }
        }
    }
    // EXTRA STYLES
    if ($background) {
        $background_classes[] = "darken";
    }
    if ($inline_style != "") {
        $inline_style = " style=\"{$inline_style}\"";
    }
    $background_class_string = @implode(" ", apply_filters('awesome_weather_background_classes', $background_classes));
    // DISPLAY WIDGET
    $rtn .= "<div id=\"awesome-weather-{$city_name_slug}\" class=\"{$background_class_string}\"{$inline_style}>";
    if ($background) {
        $rtn .= "<div class=\"awesome-weather-cover\" style='background-image: url({$background});'>";
        if (!$background_by_weather) {
            $rtn .= "<div class=\"awesome-weather-darken\">";
        }
    }
    $rtn .= "<div class=\"awesome-weather-header\">{$header_title}</div>";
    $rtn .= "<div class=\"awesome-weather-current-temp\"><strong>{$today_temp}<sup>{$units_display_symbol}</sup></strong></div><!-- /.awesome-weather-current-temp -->";
    if ($show_stats and isset($today->main)) {
        $wind_speed = isset($today->wind->speed) ? $today->wind->speed : false;
        $wind_speed_text = $units == "imperial" ? __('mph', 'awesome-weather') : __('m/s', 'awesome-weather');
        $wind_speed_obj = apply_filters('awesome_weather_wind_speed', array('text' => apply_filters('awesome_weather_wind_speed_text', $wind_speed_text), 'speed' => round($wind_speed), 'direction' => $wind_direction), $wind_speed, $wind_direction);
        // CURRENT WEATHER STATS
        $rtn .= '<div class="awesome-weather-todays-stats">';
        if (isset($today->weather[0]->description)) {
            $rtn .= '<div class="awe_desc">' . $today->weather[0]->description . '</div>';
        }
        if (isset($today->main->humidity)) {
            $rtn .= '<div class="awe_humidty">' . __('độ ẩm:', 'awesome-weather') . " " . $today->main->humidity . '%</div>';
        }
        if ($wind_speed and $wind_direction) {
            $rtn .= '<div class="awe_wind">' . __('gió:', 'awesome-weather') . ' ' . $wind_speed_obj['speed'] . $wind_speed_obj['text'] . ' ' . $wind_speed_obj['direction'] . '</div>';
        }
        if ($today_high and $today_low) {
            $rtn .= '<div class="awe_highlow">' . __('Cao', 'awesome-weather') . ' ' . $today_high . ' &bull; ' . __('Thấp', 'awesome-weather') . ' ' . $today_low . '</div>';
        }
        $rtn .= '</div><!-- /.awesome-weather-todays-stats -->';
    }
    if ($days_to_show != "hide") {
        $rtn .= "<div class=\"awesome-weather-forecast awe_days_{$days_to_show} awecf\">";
        $c = 1;
        $dt_today = date('Ymd', current_time('timestamp', 0));
        $forecast = $weather_data['forecast'];
        $days_to_show = (int) $days_to_show;
        $days_of_week = apply_filters('awesome_weather_days_of_week', array(__('CN', 'awesome-weather'), __('Thứ 2', 'awesome-weather'), __('Thứ 3', 'awesome-weather'), __('Thứ 4', 'awesome-weather'), __('Thứ 5', 'awesome-weather'), __('Thứ 6', 'awesome-weather'), __('Thứ 7', 'awesome-weather')));
        foreach ((array) $forecast->list as $forecast) {
            if ($dt_today >= date('Ymd', $forecast->dt)) {
                continue;
            }
            $forecast->temp = (int) $forecast->temp->day;
            $day_of_week = $days_of_week[date('w', $forecast->dt)];
            $rtn .= "\n\t\t\t\t<div class=\"awesome-weather-forecast-day\">\n\t\t\t\t\t<div class=\"awesome-weather-forecast-day-temp\">{$forecast->temp}<sup>{$units_display_symbol}</sup></div>\n\t\t\t\t\t<div class=\"awesome-weather-forecast-day-abbr\">{$day_of_week}</div>\n\t\t\t\t</div>";
            if ($c == $days_to_show) {
                break;
            }
            $c++;
        }
        $rtn .= "</div><!-- /.awesome-weather-forecast -->";
    }
    if ($show_link and isset($today->id)) {
        $show_link_text = apply_filters('awesome_weather_extended_forecast_text', __('extended forecast', 'awesome-weather'));
        $extended_url_target = apply_filters('awesome_weather_extended_url_target', '_blank');
        $rtn .= "<div class=\"awesome-weather-more-weather-link\">";
        $rtn .= "<a href=\"http://openweathermap.org/city/{$today->id}\" target=\"{$extended_url_target}\">{$show_link_text}</a>";
        $rtn .= "</div> <!-- /.awesome-weather-more-weather-link -->";
    }
    if ($background) {
        if (!$background_by_weather) {
            $rtn .= "</div><!-- /.awesome-weather-darken -->";
        }
        $rtn .= "</div><!-- /.awesome-weather-cover -->";
    }
    $rtn .= "</div> <!-- /.awesome-weather-wrap -->";
    return $rtn;
}