From c03e74ab483438e0c59e2fb6199cf127e7ba1f69 Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 24 Apr 2007 21:36:17 +0000 Subject: [PATCH] Update widgets to latest bits. see #4169 git-svn-id: http://svn.automattic.com/wordpress/trunk@5301 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/widgets.php | 1322 +++++++++++++++++++-------------------- 1 file changed, 627 insertions(+), 695 deletions(-) diff --git a/wp-includes/widgets.php b/wp-includes/widgets.php index ab5178b42..a417d9589 100644 --- a/wp-includes/widgets.php +++ b/wp-includes/widgets.php @@ -10,910 +10,842 @@ $wp_register_widget_defaults = false; /* Template tags & API functions */ -if ( !function_exists( 'register_sidebars' ) ) { - function register_sidebars( $number = 1, $args = array() ) { - $number = (int) $number; - - if ( is_string( $args ) ) { - parse_str( $args, $args ); - } - - $name = ( !empty( $args['name'] ) ) ? $args['name'] : __( 'Sidebar' ); - - for ( $i = 1; $i <= $number; $i++ ) { - if ( isset( $args['name'] ) && $number > 1 ) { - if ( strpos( $name, '%d' ) === false ) { - $name = $name . ' %d'; - } - - $args['name'] = sprintf( $name, $i ); - } - - register_sidebar( $args ); - } - } -} +if ( !function_exists( 'register_sidebars' ) ): +function register_sidebars($number = 1, $args = array()) { + $number = (int) $number; -if ( !function_exists( 'register_sidebar' ) ) { - function register_sidebar( $args = array() ) { - global $wp_registered_sidebars; - - if ( is_string( $args ) ) { - parse_str( $args, $args ); - } - - $defaults = array( - 'name' => sprintf( __( 'Sidebar %d' ), count( $wp_registered_sidebars ) + 1 ), - 'before_widget' => '
  • ', - 'after_widget' => "
  • \n", - 'before_title' => '

    ', - 'after_title' => "

    \n" - ); - - $defaults = apply_filters( 'register_sidebar_defaults', $defaults, $args ); - - $sidebar = array_merge( $defaults, $args ); - - $sidebar['id'] = sanitize_title( $sidebar['name'] ); - - $wp_registered_sidebars[$sidebar['id']] = $sidebar; - - return $sidebar['id']; - } -} + if ( is_string($args) ) + parse_str($args, $args); -if ( !function_exists( 'unregister_sidebar' ) ) { - function unregister_sidebar( $name ) { - global $wp_registered_sidebars; - - if ( isset( $wp_registered_sidebars[$name] ) ) { - unset( $wp_registered_sidebars[$name] ); - } - } -} + $i = 1; -if ( !function_exists( 'register_sidebar_widget' ) ) { - function register_sidebar_widget( $name, $output_callback, $classname = '' ) { - global $wp_registered_widgets, $wp_register_widget_defaults; - - if ( is_array( $name ) ) { - $id = sanitize_title( sprintf( $name[0], $name[2] ) ); - $name = sprintf( __( $name[0], $name[1] ), $name[2] ); + while ( $i <= $number ) { + $_args = $args; + if ( $number > 1 ) { + $_args['name'] = isset($args['name']) ? $args['name'] : sprintf(__('Sidebar %d'), $i); } else { - $id = sanitize_title( $name ); - $name = __( $name ); + $_args['name'] = isset($args['name']) ? $args['name'] : __('Sidebar'); } + $_args['id'] = isset($args['id']) ? $args['id'] : "sidebar-$i"; + register_sidebar($_args); + ++$i; + } +} +endif; + +if ( !function_exists( 'register_sidebar' ) ): +function register_sidebar($args = array()) { + global $wp_registered_sidebars; + + if ( is_string($args) ) + parse_str($args, $args); + + $i = count($wp_registered_sidebars) + 1; + + $defaults = array( + 'name' => sprintf(__('Sidebar %d'), count($wp_registered_sidebars) + 1 ), + 'id' => "sidebar-$i", + 'before_widget' => '
  • ', + 'after_widget' => "
  • \n", + 'before_title' => '

    ', + 'after_title' => "

    \n", + ); + + $sidebar = array_merge($defaults, $args); + + $wp_registered_sidebars[$sidebar['id']] = $sidebar; + + return $sidebar['id']; +} +endif; + +if ( !function_exists( 'unregister_sidebar' ) ): +function unregister_sidebar( $name ) { + global $wp_registered_sidebars; - if ( ( empty( $classname ) || !is_string( $classname ) ) && is_string( $output_callback ) ) { + if ( isset( $wp_registered_sidebars[$name] ) ) + unset( $wp_registered_sidebars[$name] ); +} +endif; + +if ( !function_exists( 'register_sidebar_widget' ) ): +function register_sidebar_widget($name, $output_callback, $classname = '', $id = '') { + global $wp_registered_widgets, $wp_register_widget_defaults; + + // Compat + if ( is_array($name) ) { + if ( count($name) == 3 ) + $name = sprintf($name[0], $name[2]); + else + $name = $name[0]; + } + + // Last resort -- this can be broken when names get translated so please provide a unique id. + if ( !isset($id) ) + $id = sanitize_title($name); + + if ( (!isset($classname) || empty($classname) || !is_string($classname)) && is_string($output_callback) ) $classname = $output_callback; - } - - $widget = array( - 'id' => $id, - 'callback' => $output_callback, - 'classname' => $classname, - 'params' => array_slice( func_get_args(), 2 ) + + $widget = array( + 'name' => $name, + 'id' => $id, + 'callback' => $output_callback, + 'classname' => $classname, + 'params' => array_slice(func_get_args(), 4) + ); + + if ( empty($output_callback) ) + unset($wp_registered_widgets[$id]); + elseif ( is_callable($output_callback) && ( !isset($wp_registered_widgets[$id]) || !$wp_register_widget_defaults) ) + $wp_registered_widgets[$id] = $widget; +} +endif; + +if ( !function_exists( 'unregister_sidebar_widget' ) ): +function unregister_sidebar_widget($id) { + $id = sanitize_title($id); + register_sidebar_widget('', '', '', $id); + unregister_widget_control($id); +} +endif; + +if ( !function_exists( 'register_widget_control' ) ): +function register_widget_control($name, $control_callback, $width = 300, $height = 200, $id = '') { + global $wp_registered_widget_controls, $wp_register_widget_defaults; + + // Compat + if ( is_array($name) ) { + if ( count($name) == 3 ) + $name = sprintf($name[0], $name[2]); + else + $name = $name[0]; + } + + if ( !isset($id) || empty($id) ) + $id = $name; + + $id = sanitize_title($id); + + $width = (int) $width > 90 ? (int) $width + 60 : 360; + $height = (int) $height > 60 ? (int) $height + 40 : 240; + + if ( empty($control_callback) ) + unset($wp_registered_widget_controls[$name]); + elseif ( !isset($wp_registered_widget_controls[$name]) || !$wp_register_widget_defaults ) + $wp_registered_widget_controls[$id] = array( + 'name' => $name, + 'id' => $id, + 'callback' => $control_callback, + 'width' => $width, + 'height' => $height, + 'params' => array_slice(func_get_args(), 5) ); - - if ( empty( $output_callback ) ) { - unset( $wp_registered_widgets[$name] ); - } elseif ( is_callable( $output_callback ) && ( !isset( $wp_registered_widgets[$name] ) || !$wp_register_widget_defaults ) ) { - $wp_registered_widgets[$name] = $widget; - } - } } +endif; -if ( !function_exists( 'unregister_sidebar_widget' ) ) { - function unregister_sidebar_widget( $name ) { - register_sidebar_widget( $name, '' ); - unregister_widget_control( $name ); - } +if ( !function_exists( 'unregister_widget_control' ) ): +function unregister_widget_control($id) { + $id = sanitize_title($id); + return register_widget_control($id, ''); } +endif; -if ( !function_exists( 'register_widget_control' ) ) { - function register_widget_control( $name, $control_callback, $width = 300, $height = 200 ) { - global $wp_registered_widget_controls, $wp_registered_sidebar_defaults; - - $width = (int) $width; - $height = (int) $height; - - if ( is_array( $name ) ) { - $id = sanitize_title( sprintf( $name[0], $name[2] ) ); - $name = sprintf( __( $name[0], $name[1] ), $name[2] ); - } else { - $id = sanitize_title( $name ); - $name = __( $name ); - } - - $width = ( $width > 90 ) ? $width + 60 : 360; - $height = ( $height > 60 ) ? $height + 40 : 240; - - if ( empty( $control_callback ) ) { - unset( $wp_registered_widget_controls[$name] ); - } elseif ( !isset( $wp_registered_widget_controls[$name] ) || !$wp_registered_sidebar_defaults ) { - $wp_registered_widget_controls[$name] = array( - 'id' => $id, - 'callback' => $control_callback, - 'width' => $width, - 'height' => $height, - 'params' => array_slice( func_get_args(), 4 ) - ); - } +if ( !function_exists( 'dynamic_sidebar' ) ): +function dynamic_sidebar($index = 1) { + global $wp_registered_sidebars, $wp_registered_widgets; + + if ( is_int($index) ) { + $index = "sidebar-$index"; + } else { + $index = sanitize_title($index); } -} -if ( !function_exists( 'unregister_widget_control' ) ) { - function unregister_widget_control( $name ) { - register_sidebar_control( $name, '' ); - } -} + $sidebars_widgets = wp_get_sidebars_widgets(); -if ( !function_exists( 'dynamic_sidebar' ) ) { - function dynamic_sidebar( $name = 1 ) { - global $wp_registered_sidebars, $wp_registered_widgets; - - if ( is_int( $name ) ) { - $index = sanitize_title( __( 'Sidebar' ) . ' ' . $name ); - $name = sprintf( __( 'Sidebar %d' ), $name ); - } else { - $index = sanitize_title( $name ); - } - - $sidebars_widgets = wp_get_sidebars_widgets(); - - $sidebar = $wp_registered_sidebars[$index]; - - if ( empty( $sidebar ) || !is_array( $sidebars_widgets[$index] ) || empty( $sidebars_widgets[$index] ) ) { - return false; - } - - $did_one = false; - - foreach ( $sidebars_widgets[$index] as $name ) { - $callback = $wp_registered_widgets[$name]['callback']; - - $params = array_merge( array( $sidebar ), (array) $wp_registered_widgets[$name]['params'] ); - $params[0]['before_widget'] = sprintf( $params[0]['before_widget'], $wp_registered_widgets[$name]['id'], $wp_registered_widgets[$name]['classname'] ); - - if ( is_callable( $callback ) ) { - call_user_func_array( $callback, $params ); - $did_one = true; - } - } - - return $did_one; - } -} - -if ( !function_exists( 'is_active_widget' ) ) { - function is_active_widget( $callback ) { - global $wp_registered_widgets; - - $sidebars_widgets = wp_get_sidebars_widgets(); - - if ( is_array( $sidebars_widgets ) ) { - foreach ( $sidebars_widgets as $sidebar => $widgets ) { - if ( is_array( $widgets) ) { - foreach ( $widgets as $widget ) { - if ( $wp_registered_widgets[$widget]['callback'] == $callback ) { - return true; - } - } - } - } - } - + if ( empty($wp_registered_sidebars[$index]) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) ) return false; - } -} -if ( !function_exists( 'is_dynamic_sidebar' ) ) { - function is_dynamic_sidebar() { - global $wp_registered_sidebars, $wp_registered_widgets; - - $sidebars_widgets = wp_get_sidebars_widgets(); - - foreach ( $wp_registered_sidebars as $index => $sidebar ) { - if ( count( $sidebars_widgets[$index] ) > 0 ) { - foreach ( $sidebars_widgets[$index] as $widget ) { - if ( array_key_exists( $widget, $wp_registered_sidebars ) ) { - return true; - } - } - } + $sidebar = $wp_registered_sidebars[$index]; + + $did_one = false; + foreach ( $sidebars_widgets[$index] as $id ) { + $callback = $wp_registered_widgets[$id]['callback']; + + $params = array_merge(array($sidebar), (array) $wp_registered_widgets[$id]['params']); + + // Substitute HTML id and class attributes into before_widget + $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $wp_registered_widgets[$id]['classname']); + + if ( is_callable($callback) ) { + call_user_func_array($callback, $params); + $did_one = true; } - - return false; } + + return $did_one; } +endif; + +if ( !function_exists( 'is_active_widget' ) ): +function is_active_widget($callback) { + global $wp_registered_widgets; + + $sidebars_widgets = wp_get_sidebars_widgets(false); + + if ( is_array($sidebars_widgets) ) foreach ( $sidebars_widgets as $sidebar => $widgets ) + if ( is_array($widgets) ) foreach ( $widgets as $widget ) + if ( $wp_registered_widgets[$widget]['callback'] == $callback ) + return true; + + return false; +} +endif; + +if ( !function_exists( 'is_dynamic_sidebar' ) ): +function is_dynamic_sidebar() { + global $wp_registered_widgets, $wp_registered_sidebars; + $sidebars_widgets = get_option('sidebars_widgets'); + foreach ( $wp_registered_sidebars as $index => $sidebar ) { + if ( count($sidebars_widgets[$index]) ) { + foreach ( $sidebars_widgets[$index] as $widget ) + if ( array_key_exists($widget, $wp_registered_widgets) ) + return true; + } + } + return false; +} +endif; /* Internal Functions */ -function wp_get_sidebars_widgets() { - return get_option( 'wp_sidebars_widgets' ); +function wp_get_sidebars_widgets($update = true) { + global $wp_registered_widgets; + + $sidebars_widgets = get_option('sidebars_widgets'); + $_sidebars_widgets = array(); + + if ( !isset($sidebars_widgets['array_version']) ) + $sidebars_widgets['array_version'] = 1; + + switch ( $sidebars_widgets['array_version'] ) { + case 1 : + foreach ( $sidebars_widgets as $index => $sidebar ) + if ( is_array($sidebar) ) + foreach ( $sidebar as $i => $name ) { + $id = strtolower($name); + if ( isset($wp_registered_widgets[$id]) ) { + $_sidebars_widgets[$index][$i] = $id; + continue; + } + $id = sanitize_title($name); + if ( isset($wp_registered_widgets[$id]) ) { + $_sidebars_widgets[$index][$i] = $id; + continue; + } + unset($_sidebars_widgets[$index][$i]); + } + $_sidebars_widgets['array_version'] = 2; + if ( $update ) + update_option('sidebars_widgets', $_sidebars_widgets); + break; + case 2 : + $_sidebars_widgets = $sidebars_widgets; + break; + } + + unset($_sidebars_widgets['array_version']); + + return $_sidebars_widgets; } function wp_set_sidebars_widgets( $sidebars_widgets ) { - update_option( 'wp_sidebars_widgets', $sidebars_widgets ); + update_option( 'sidebars_widgets', $sidebars_widgets ); } function wp_get_widget_defaults() { global $wp_registered_sidebars; - + $defaults = array(); - - foreach ( $wp_registered_sidebars as $index => $sidebar ) { + + foreach ( $wp_registered_sidebars as $index => $sidebar ) $defaults[$index] = array(); - } - + return $defaults; } /* Default Widgets */ -function wp_widget_pages( $args ) { - extract( $args ); - - $options = get_option( 'wp_widget_pages' ); - - $title = ( empty( $options['title'] ) ) ? __( 'Pages' ) : $options['title']; - +function wp_widget_pages($args) { + extract($args); + $options = get_option('widget_pages'); + $title = empty($options['title']) ? __('Pages') : $options['title']; echo $before_widget . $before_title . $title . $after_title . "\n" . $after_widget; } function wp_widget_pages_control() { - $options = $newoptions = get_option( 'wp_widget_pages' ); - - if ( isset( $_POST['pages-submit'] ) ) { - $newoptions['title'] = strip_tags( stripslashes( $_POST['pages-title'] ) ); - - if ( $newoptions != $options ) { - $options = $newoptions; - update_option( 'wp_widget_pages', $options ); - } + $options = $newoptions = get_option('widget_pages'); + if ( $_POST["pages-submit"] ) { + $newoptions['title'] = strip_tags(stripslashes($_POST["pages-title"])); } - - $title = htmlspecialchars( $options['title'], ENT_QUOTES ); + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_pages', $options); + } + $title = htmlspecialchars($options['title'], ENT_QUOTES); ?> -

    - +

    + $before_title, 'title_after' => $after_title, - 'category_before' => $before_widget, 'category_after' => $after_widget - ) ); + wp_list_bookmarks(array('title_before'=>$before_title, 'title_after'=>$after_title, 'show_images'=>true, 'class'=>'linkcat widget')); } } -function wp_widget_search( $args ) { - extract( $args ); +function wp_widget_search($args) { + extract($args); ?> -
    -

    -
    + +
    +
    + +
    -

    -

    - +

    +

    + -

    - +

    + - - -
    - -
    - -'; + get_calendar(); + echo ''; + echo $after_widget; } - function wp_widget_calendar_control() { - $options = $newoptions = get_option( 'wp_widget_calendar' ); - - if ( isset( $_POST['calendar-submit'] ) ) { - $newoptions['title'] = strip_tags( stripslashes( $_POST['calendar-title'] ) ); - - if ( $newoptions != $options ) { - $options = $newoptions; - update_option( 'wp_widget_calendar', $options ); - } + $options = $newoptions = get_option('widget_calendar'); + if ( $_POST["calendar-submit"] ) { + $newoptions['title'] = strip_tags(stripslashes($_POST["calendar-title"])); } - - $title = htmlspecialchars( $options['title'], ENT_QUOTES ); + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_calendar', $options); + } + $title = htmlspecialchars($options['title'], ENT_QUOTES); ?> -

    - +

    + - +
    - - - + " name="text-title-" type="text" value="" /> + + " name="text-submit-" value="1" /> 9 ) { - $i = 9; - } elseif ( $i < 1 ) { - $i = 1; - } - - $newoptions['number'] = $i; - - if ( $newoptions != $options ) { - $options = $newoptions; - update_option( 'wp_widget_text', $options ); - } + $options = $newoptions = get_option('widget_text'); + if ( isset($_POST['text-number-submit']) ) { + $number = (int) $_POST['text-number']; + if ( $number > 9 ) $number = 9; + if ( $number < 1 ) $number = 1; + $newoptions['number'] = $number; + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_text', $options); + widget_text_register($options['number']); } } function wp_widget_text_page() { - $options = get_option( 'widget_text' ); - - $i = $options['number']; + $options = $newoptions = get_option('widget_text'); ?>
    -
    -

    - -

    - - -

    + +

    +

    + +

    9 ) { - $i = 9; + $options = get_option('widget_text'); + $number = $options['number']; + if ( $number < 1 ) $number = 1; + if ( $number > 9 ) $number = 9; + for ($i = 1; $i <= 9; $i++) { + $name = sprintf(__('Text %d'), $i); + $id = "text-$i"; // Never never never translate an id + register_sidebar_widget($name, $i <= $number ? 'widget_text' : /* unregister */ '', null, $id, $i); + register_widget_control($name, $i <= $number ? 'widget_text_control' : /* unregister */ '', 460, 350, $id, $i); } - - for ( $j = 1; $j <= 9; $j++ ) { - $name = array( 'Text %s', '', $i ); - register_sidebar_widget( $name, ( $j <= $i ) ? 'wp_widget_text' : '', $j ); - register_widget_control( $name, ( $j <= $i ) ? 'wp_widget_text_control' : '', 460, 350, $j ); - } - - add_action( 'sidebar_admin_setup', 'wp_widget_text_setup' ); - add_action( 'sidebar_admin_page', 'wp_widget_text_page' ); + add_action('sidebar_admin_setup', 'wp_widget_text_setup'); + add_action('sidebar_admin_page', 'wp_widget_text_page'); } -function wp_widget_categories( $args ) { - extract( $args ); - - $options = get_option( 'wp_widget_categories' ); - - $title = ( empty( $options['title'] ) ) ? __( 'Categories' ) : $options['title']; - $c = ( $options['count'] ) ? '1' : '0'; - $h = ( $options['hierarchical'] ) ? '1' : '0'; +function wp_widget_categories($args) { + extract($args); + $options = get_option('widget_categories'); + $c = $options['count'] ? '1' : '0'; + $h = $options['hierarchical'] ? '1' : '0'; + $title = empty($options['title']) ? __('Categories') : $options['title']; ?> -

    -

    -

    - +

    +

    +

    + have_posts() ) { - return; - } +function wp_widget_recent_entries($args) { + if ( $output = wp_cache_get('widget_recent_entries') ) + return print($output); + + ob_start(); + extract($args); + $options = get_option('widget_recent_entries'); + $title = empty($options['title']) ? __('Recent Posts') : $options['title']; + if ( !$number = (int) $options['number'] ) + $number = 10; + else if ( $number < 1 ) + $number = 1; + else if ( $number > 15 ) + $number = 15; + + $r = new WP_Query("showposts=$number&what_to_show=posts&nopaging=0"); + if ($r->have_posts()) : ?> get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 5" ); - - if ( is_array( $comments ) && count( $comments ) > 0 ) { +function wp_flush_widget_recent_entries() { + wp_cache_delete('widget_recent_entries'); +} + +add_action('save_post', 'wp_flush_widget_recent_entries'); +add_action('post_deleted', 'wp_flush_widget_recent_entries'); + +function wp_widget_recent_entries_control() { + $options = $newoptions = get_option('widget_recent_entries'); + if ( $_POST["recent-entries-submit"] ) { + $newoptions['title'] = strip_tags(stripslashes($_POST["recent-entries-title"])); + $newoptions['number'] = (int) $_POST["recent-entries-number"]; + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_recent_entries', $options); + wp_flush_widget_recent_entries(); + } + $title = htmlspecialchars($options['title'], ENT_QUOTES); + if ( !$number = (int) $options['number'] ) + $number = 5; ?> +

    +

    + + 15 ) + $number = 15; + + if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) { + $comments = $wpdb->get_results("SELECT comment_author, comment_author_url, comment_ID, comment_post_ID FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT $number"); + wp_cache_add( 'recent_comments', $comments, 'widget' ); + } +?> + - + -

    - +

    +

    + - + 10 ) { - $number_items = 10; - } - - $url = $options[$i]['url']; - - if ( empty( $url ) ) { +function wp_widget_rss($args, $number = 1) { + require_once(ABSPATH . WPINC . '/rss.php'); + extract($args); + $options = get_option('widget_rss'); + if ( isset($options['error']) && $options['error'] ) return; - } - - while ( strstr( $url, 'http' ) != $url ) { - $url = substr( $url, 1 ); - } - - $rss = fetch_rss( $url ); - - $link = wp_specialchars( strip_tags( $rss->channel['link'] ), 1 ); - - while ( strstr( $link, 'http' ) != $link ) { - $link = substr( $link, 1 ); - } - - $desc = wp_specialchars( strip_tags( html_entity_decode( $rss->channel['description'], ENT_QUOTES ) ), 1 ); - - $title = $options[$i]['title']; - - if ( empty( $title ) ) { - $title = htmlentities( strip_tags( $rss->channel['title'] ) ); - } - - if ( empty( $title ) ) { + $num_items = (int) $options[$number]['items']; + $show_summary = $options[$number]['show_summary']; + if ( empty($num_items) || $num_items < 1 || $num_items > 10 ) $num_items = 10; + $url = $options[$number]['url']; + while ( strstr($url, 'http') != $url ) + $url = substr($url, 1); + if ( empty($url) ) + return; + $rss = fetch_rss_summary($url, array( 'link', 'title', 'description' ) ); + $link = wp_specialchars(strip_tags($rss->channel['link']), 1); + while ( strstr($link, 'http') != $link ) + $link = substr($link, 1); + $desc = wp_specialchars(strip_tags(html_entity_decode($rss->channel['description'], ENT_QUOTES)), 1); + $title = $options[$number]['title']; + if ( empty($title) ) + $title = htmlentities(strip_tags($rss->channel['title'])); + if ( empty($title) ) $title = $desc; - } - - if ( empty( $title ) ) { - $title = __( 'Unknown Feed' ); - } - - $url = wp_specialchars( strip_tags( $url ), 1 ); - - if ( file_exists( ABSPATH . 'wp-content/rss.png' ) ) { - $icon = get_bloginfo( 'wpurl' ) . '/wp-content/rss.png'; - } else { - $icon = get_bloginfo( 'wpurl' ) . '/wp-includes/images/rss.png'; - } - - $h2 = '%4$s %7$s'; - $h2 = sprintf( $h2, $url, __( 'Syndicate this content' ), $icon, __( 'RSS' ), $link, $desc, $title ); + if ( empty($title) ) + $title = __('Unknown Feed'); + $url = wp_specialchars(strip_tags($url), 1); + if ( file_exists(dirname(__FILE__) . '/rss.png') ) + $icon = str_replace(ABSPATH, get_option('siteurl').'/', dirname(__FILE__)) . '/rss.png'; + else + $icon = get_option('siteurl').'/wp-includes/images/rss.png'; + $title = "RSS $title"; ?> - + status == 200 ) { + $newoptions[$number]['url'] = $url; + $newoptions[$number]['error'] = false; + } else { + $newoptions[$number]['error'] = true; + $newoptions[$number]['url'] = wp_specialchars(__('Error: could not find an RSS or ATOM feed at that URL.'), 1); + $error = sprintf(__('Error in RSS %1$d: %2$s', 'sandbox'), $number, $newoptions[$number]['error']); + } } } - - $url = htmlspecialchars( $options[$i]['url'], ENT_QUOTES ); - $number_items = (int) $options[$i]['number_items']; - $title = htmlspecialchars( $options[$i]['title'], ENT_QUOTES ); - - if ( empty( $number_items ) || $number_items < 1 ) { - $number_items = 10; + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_rss', $options); } + $url = htmlspecialchars($options[$number]['url'], ENT_QUOTES); + $items = (int) $options[$number]['items']; + $title = htmlspecialchars($options[$number]['title'], ENT_QUOTES); + if ( empty($items) || $items < 1 ) $items = 10; ?> -

    - -

    - -

    - +

    + " name="rss-url-" type="text" value="" /> +

    + " name="rss-title-" type="text" value="" /> +

    + " name="rss-submit-" value="1" /> 9 ) { - $number = 9; - } elseif ( $i < 1 ) { - $number = 1; - } - - $newoptions['number'] = $i; - - if ( $newoptions != $options ) { - $options = $newoptions; - update_option( 'wp_widget_rss', $options ); - widget_rss_register( $options['number'] ); - } + $options = $newoptions = get_option('widget_rss'); + if ( isset($_POST['rss-number-submit']) ) { + $number = (int) $_POST['rss-number']; + if ( $number > 9 ) $number = 9; + if ( $number < 1 ) $number = 1; + $newoptions['number'] = $number; + } + if ( $options != $newoptions ) { + $options = $newoptions; + update_option('widget_rss', $options); + widget_rss_register($options['number']); } } function wp_widget_rss_page() { - $options = get_option( 'wp_widget_rss' ); - - $i = $options['number']; + $options = $newoptions = get_option('widget_rss'); ?>
    -
    -

    - -

    - -

    + +

    +

    + +

    9 ) { - $i = 9; + $options = get_option('widget_rss'); + $number = $options['number']; + if ( $number < 1 ) $number = 1; + if ( $number > 9 ) $number = 9; + for ($i = 1; $i <= 9; $i++) { + $name = sprintf(__('RSS %d'), $i); + $id = "rss-$i"; // Never never never translate an id + register_sidebar_widget($name, $i <= $number ? 'widget_rss' : /* unregister */ '', null, $id, $i); + register_widget_control($name, $i <= $number ? 'widget_rss_control' : /* unregister */ '', 410, 200, $id, $i); } - - for ( $j = 1; $j <= 9; $j++ ) { - $name = array( 'RSS %s', '', $j ); - register_sidebar_widget( $name, ( $j <= $i ) ? 'wp_widget_rss' : '', $j ); - register_widget_control( $name, ( $j <= $i ) ? 'wp_widget_rss_control' : '', 410, 200, $j ); - } - - add_action( 'sidebar_admin_setup', 'wp_widget_rss_setup' ); - add_action( 'sidebar_admin_page', 'wp_widget_rss_page' ); - - if ( is_active_widget( 'wp_widget_rss' ) ) { - add_action( 'wp_head', 'wp_widget_rss_wphead' ); - } -} - -function wp_widget_rss_wphead() { -?> - - \ No newline at end of file