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' => '\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' => '\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";
- wp_list_pages( 'title_li=' );
+ wp_list_pages("title_li=");
echo "
\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()) :
?>
- have_posts() ) {
- $query->the_post(); ?>
-
-
+ have_posts()) : $r->the_post(); ?>
+ -
+
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 = ' ';
- $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 = " ";
?>
-
+
- items ) ) {
- $rss->items = array_slice( $rss->items, 0, $number_items );
-
- foreach ( $rss->items as $item ) {
- while ( strstr( $item['link'], 'http' ) != $item['link'] ) {
- $item['link'] = substr( $item['link'], 1 );
- }
-
- $link = wp_specialchars( strip_tags( $item['link'] ), 1 );
- $title = wp_specialchars( strip_tags( $item['title'] ), 1 );
-
- if ( empty( $title ) ) {
- $title = __( 'Untitled' );
- }
-
- $desc = '';
-
- if ( $show_summary ) {
- $summary = '';
- } else {
- $desc = str_replace( array( "\r", "\n" ), ' ', wp_specialchars( strip_tags( html_entity_decode( $item['description'], ENT_QUOTES ) ), 1 ) );
- $summary = '';
- }
- ?>
-
-
-
-
+items ) ) {
+ $rss->items = array_slice($rss->items, 0, $num_items);
+ foreach ($rss->items as $item ) {
+ while ( strstr($item['link'], 'http') != $item['link'] )
+ $item['link'] = substr($item['link'], 1);
+ $link = wp_specialchars(strip_tags($item['link']), 1);
+ $title = wp_specialchars(strip_tags($item['title']), 1);
+ if ( empty($title) )
+ $title = __('Untitled');
+ $desc = '';
+ if ( $show_summary ) {
+ $summary = '';
+ } else {
+ if ( isset( $item['description'] ) && is_string( $item['description'] ) )
+ $desc = str_replace(array("\n", "\r"), ' ', wp_specialchars(strip_tags(html_entity_decode($item['description'], ENT_QUOTES)), 1));
+ $summary = '';
+ }
+ echo "- $summary
";
+ }
+ } else {
+ echo __('- An error has occured; the feed is probably down. Try again later.
');
+ }
+?>
+
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