File "class-wp-widget-rss.php"

Full path: /home/kosmetik/public_html/wp-includes/widgets/class-wp-widget-rss.php
File size: 3.27 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

class WP_Widget_RSS extends WP_Widget
{
    public function __construct()
    {
        $widget_ops = array('description' => __('Entries from any RSS or Atom feed.'), 'customize_selective_refresh' => true);
        $control_ops = array('width' => 400, 'height' => 200);
        parent::__construct('rss', __('RSS'), $widget_ops, $control_ops);
    }
    public function widget($args, $instance)
    {
        if (isset($instance['error']) && $instance['error']) {
            return;
        }
        $url = !empty($instance['url']) ? $instance['url'] : '';
        while (stristr($url, 'http') !== $url) {
            $url = substr($url, 1);
        }
        if (empty($url)) {
            return;
        }
        if (in_array(untrailingslashit($url), array(site_url(), home_url()), true)) {
            return;
        }
        $rss = fetch_feed($url);
        $title = $instance['title'];
        $desc = '';
        $link = '';
        if (!is_wp_error($rss)) {
            $desc = esc_attr(strip_tags(html_entity_decode($rss->get_description(), ENT_QUOTES, get_option('blog_charset'))));
            if (empty($title)) {
                $title = strip_tags($rss->get_title());
            }
            $link = strip_tags($rss->get_permalink());
            while (stristr($link, 'http') !== $link) {
                $link = substr($link, 1);
            }
        }
        if (empty($title)) {
            $title = !empty($desc) ? $desc : __('Unknown Feed');
        }
        $title = apply_filters('widget_title', $title, $instance, $this->id_base);
        $url = strip_tags($url);
        $icon = includes_url('images/rss.png');
        if ($title) {
            $title = '<a class="rsswidget" href="' . esc_url($url) . '"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="' . esc_url($icon) . '" alt="RSS" /></a> <a class="rsswidget" href="' . esc_url($link) . '">' . esc_html($title) . '</a>';
        }
        echo $args['before_widget'];
        if ($title) {
            echo $args['before_title'] . $title . $args['after_title'];
        }
        $format = current_theme_supports('html5', 'navigation-widgets') ? 'html5' : 'xhtml';
        $format = apply_filters('navigation_widgets_format', $format);
        if ('html5' === $format) {
            $title = trim(strip_tags($title));
            $aria_label = $title ? $title : __('RSS Feed');
            echo '<nav role="navigation" aria-label="' . esc_attr($aria_label) . '">';
        }
        wp_widget_rss_output($rss, $instance);
        if ('html5' === $format) {
            echo '</nav>';
        }
        echo $args['after_widget'];
        if (!is_wp_error($rss)) {
            $rss->__destruct();
        }
        unset($rss);
    }
    public function update($new_instance, $old_instance)
    {
        $testurl = isset($new_instance['url']) && (!isset($old_instance['url']) || $new_instance['url'] !== $old_instance['url']);
        return wp_widget_rss_process($new_instance, $testurl);
    }
    public function form($instance)
    {
        if (empty($instance)) {
            $instance = array('title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0);
        }
        $instance['number'] = $this->number;
        wp_widget_rss_form($instance);
    }
}