Index: trunk/wp-includes/widgets.php
===================================================================
--- trunk/wp-includes/widgets.php (revision 5300)
+++ trunk/wp-includes/widgets.php (revision 5301)
@@ -11,240 +11,265 @@
/* 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 );
+if ( !function_exists( 'register_sidebars' ) ):
+function register_sidebars($number = 1, $args = array()) {
+ $number = (int) $number;
+
+ if ( is_string($args) )
+ parse_str($args, $args);
+
+ $i = 1;
+
+ while ( $i <= $number ) {
+ $_args = $args;
+ if ( $number > 1 ) {
+ $_args['name'] = isset($args['name']) ? $args['name'] : sprintf(__('Sidebar %d'), $i);
+ } else {
+ $_args['name'] = isset($args['name']) ? $args['name'] : __('Sidebar');
}
-
- $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['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 ( 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(
+ '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)
+ );
+}
+endif;
+
+if ( !function_exists( 'unregister_widget_control' ) ):
+function unregister_widget_control($id) {
+ $id = sanitize_title($id);
+ return register_widget_control($id, '');
+}
+endif;
+
+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);
+ }
+
+ $sidebars_widgets = wp_get_sidebars_widgets();
+
+ if ( empty($wp_registered_sidebars[$index]) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) )
+ return false;
+
+ $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 $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($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;
}
-
- $args['name'] = sprintf( $name, $i );
+ $id = sanitize_title($name);
+ if ( isset($wp_registered_widgets[$id]) ) {
+ $_sidebars_widgets[$index][$i] = $id;
+ continue;
+ }
+ unset($_sidebars_widgets[$index][$i]);
}
-
- register_sidebar( $args );
- }
- }
-}
-
-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 ( !function_exists( 'unregister_sidebar' ) ) {
- function unregister_sidebar( $name ) {
- global $wp_registered_sidebars;
-
- if ( isset( $wp_registered_sidebars[$name] ) ) {
- unset( $wp_registered_sidebars[$name] );
- }
- }
-}
-
-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] );
- } else {
- $id = sanitize_title( $name );
- $name = __( $name );
- }
-
- if ( ( 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 )
- );
-
- 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;
- }
- }
-}
-
-if ( !function_exists( 'unregister_sidebar_widget' ) ) {
- function unregister_sidebar_widget( $name ) {
- register_sidebar_widget( $name, '' );
- unregister_widget_control( $name );
- }
-}
-
-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( 'unregister_widget_control' ) ) {
- function unregister_widget_control( $name ) {
- register_sidebar_control( $name, '' );
- }
-}
-
-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;
- }
- }
- }
- }
- }
-
- 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;
- }
- }
- }
- }
-
- return false;
- }
-}
-
-/* Internal Functions */
-
-function wp_get_sidebars_widgets() {
- return get_option( 'wp_sidebars_widgets' );
+ $_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;
}
@@ -252,56 +277,49 @@
/* 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 );
- }
- }
-
- $title = htmlspecialchars( $options['title'], ENT_QUOTES );
-?>
-
-
-
+
+
+ $before_title, 'title_after' => $after_title,
- 'category_before' => $before_widget, 'category_after' => $after_widget
- ) );
- }
-}
-
-function wp_widget_search( $args ) {
- extract( $args );
+ 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);
?>
-
@@ -309,15 +327,14 @@
}
-function wp_widget_archives( $args ) {
- extract( $args );
-
- $options = get_option( 'wp_widget_archives' );
- $c = ( $options['count'] ) ? '1' : '0';
- $title = ( empty( $options['title'] ) ) ? __( 'Archives' ) : $options['title'];
+function wp_widget_archives($args) {
+ extract($args);
+ $options = get_option('widget_archives');
+ $c = $options['count'] ? '1' : '0';
+ $title = empty($options['title']) ? __('Archives') : $options['title'];
?>
@@ -326,106 +343,94 @@
function wp_widget_archives_control() {
- $options = $newoptions = get_option( 'wp_widget_archives' );
-
- if ( isset( $_POST['archives-submit'] ) ) {
- $newoptions['count'] = isset( $_POST['archives-count'] );
- $newoptions['title'] = strip_tags( stripslashes( $_POST['archives-title'] ) );
-
- if ( $newoptions != $options ) {
- $options = $newoptions;
- update_option( 'wp_widget_archives', $options );
- }
- }
-
- $count = ( isset( $options['count'] ) ) ? ' checked="checked"' : '';
- $title = htmlspecialchars( $options['title'], ENT_QUOTES );
-?>
-
-
-
-
+
+
+
+
-
-
-
+
+
+';
+ get_calendar();
+ echo '';
+ echo $after_widget;
+}
+function wp_widget_calendar_control() {
+ $options = $newoptions = get_option('widget_calendar');
+ if ( $_POST["calendar-submit"] ) {
+ $newoptions['title'] = strip_tags(stripslashes($_POST["calendar-title"]));
+ }
+ if ( $options != $newoptions ) {
+ $options = $newoptions;
+ update_option('widget_calendar', $options);
+ }
+ $title = htmlspecialchars($options['title'], ENT_QUOTES);
+?>
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
@@ -433,68 +438,53 @@
}
-function wp_widget_text_control( $i ) {
- $options = $newoptions = get_option( 'wp_widget_text' );
-
- if ( isset( $_POST['text-submit-' . $i] ) ) {
- $newoptions[$i]['title'] = strip_tags( stripslashes( $_POST['text-title-' . $i] ) );
- $newoptions[$i]['text'] = stripslashes( $_POST['text-text-' . $i] );
-
- if ( !current_user_can( 'unfiltered_html' ) ) {
- $newoptions[$i]['text'] = stripslashes( wp_filter_post_kses( $newoptions[$i]['text'] ) );
- }
-
- if ( $newoptions != $options ) {
- $options = $newoptions;
- update_options( 'wp_widget_text', $options );
- }
- }
-
- $title = htmlspecialchars( $options[$i]['title'], ENT_QUOTES );
- $text = htmlspecialchars( $options[$i]['text'], ENT_QUOTES );
-?>
-
-
-
+function wp_widget_text_control($number) {
+ $options = $newoptions = get_option('widget_text');
+ if ( !is_array($options) )
+ $options = $newoptions = array();
+ if ( $_POST["text-submit-$number"] ) {
+ $newoptions[$number]['title'] = strip_tags(stripslashes($_POST["text-title-$number"]));
+ $newoptions[$number]['text'] = stripslashes($_POST["text-text-$number"]);
+ if ( !current_user_can('unfiltered_html') )
+ $newoptions[$number]['text'] = stripslashes(wp_filter_post_kses($newoptions[$number]['text']));
+ }
+ if ( $options != $newoptions ) {
+ $options = $newoptions;
+ update_option('widget_text', $options);
+ }
+ $title = htmlspecialchars($options[$number]['title'], ENT_QUOTES);
+ $text = htmlspecialchars($options[$number]['text'], 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');
?>
@@ -503,37 +493,29 @@
function wp_widget_text_register() {
- $options = get_option( 'wp_widget_text' );
-
- $i = $options['number'];
-
- if ( $i < 1 ) {
- $i = 1;
- } elseif ( $i > 9 ) {
- $i = 9;
- }
-
- 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' );
-}
-
-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';
+ $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);
+ }
+ 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('widget_categories');
+ $c = $options['count'] ? '1' : '0';
+ $h = $options['hierarchical'] ? '1' : '0';
+ $title = empty($options['title']) ? __('Categories') : $options['title'];
?>
@@ -542,299 +524,281 @@
function wp_widget_categories_control() {
- $options = $newoptions = get_option( 'wp_widget_categories' );
-
- if ( isset( $_POST['categories-submit'] ) ) {
- $newoptions['count'] = isset( $_POST['categories-count'] );
- $newoptions['hierarchical'] = isset( $_POST['categories-hierarchical'] );
- $newoptions['title'] = strip_tags( stripslashes( $_POST['categories-title'] ) );
-
- if ( $newoptions != $options ) {
- $options = $newoptions;
- update_option( 'wp_widget_categories', $options );
- }
- }
-
- $count = ( $options['count'] ) ? ' checked="checked"' : '';
- $hierarchical = ( $options['hierarchical'] ) ? ' checked="checked"' : '';
- $title = wp_specialchars( $options['title'] );
-?>
-
-
-
-
-have_posts() ) {
- return;
- }
+ $options = $newoptions = get_option('widget_categories');
+ if ( $_POST['categories-submit'] ) {
+ $newoptions['count'] = isset($_POST['categories-count']);
+ $newoptions['hierarchical'] = isset($_POST['categories-hierarchical']);
+ $newoptions['title'] = strip_tags(stripslashes($_POST['categories-title']));
+ }
+ if ( $options != $newoptions ) {
+ $options = $newoptions;
+ update_option('widget_categories', $options);
+ }
+ $count = $options['count'] ? 'checked="checked"' : '';
+ $hierarchical = $options['hierarchical'] ? 'checked="checked"' : '';
+ $title = wp_specialchars($options['title']);
+?>
+
+
+
+
+ 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 ) {
-?>
+ endif;
+ wp_cache_add('widget_recent_entries', ob_get_flush());
+}
+
+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' );
+ }
+?>
+
-