Make WordPress Core


Ignore:
Timestamp:
04/24/2007 09:36:17 PM (19 years ago)
Author:
ryan
Message:

Update widgets to latest bits. see #4169

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/widgets.php

    r5300 r5301  
    1111/* Template tags & API functions */
    1212
    13 if ( !function_exists( 'register_sidebars' ) ) {
    14         function register_sidebars( $number = 1, $args = array() ) {
    15                 $number = (int) $number;
    16        
    17                 if ( is_string( $args ) ) {
    18                         parse_str( $args, $args );
     13if ( !function_exists( 'register_sidebars' ) ):
     14function register_sidebars($number = 1, $args = array()) {
     15        $number = (int) $number;
     16
     17        if ( is_string($args) )
     18                parse_str($args, $args);
     19
     20        $i = 1;
     21
     22        while ( $i <= $number ) {
     23                $_args = $args;
     24                if ( $number > 1 ) {
     25                        $_args['name'] = isset($args['name']) ? $args['name'] : sprintf(__('Sidebar %d'), $i);
     26                } else {
     27                        $_args['name'] = isset($args['name']) ? $args['name'] : __('Sidebar');
    1928                }
    20        
    21                 $name = ( !empty( $args['name'] ) ) ? $args['name'] : __( 'Sidebar' );
    22        
    23                 for ( $i = 1; $i <= $number; $i++ ) {
    24                         if ( isset( $args['name'] ) && $number > 1 ) {
    25                                 if ( strpos( $name, '%d' ) === false ) {
    26                                         $name = $name . ' %d';
     29                $_args['id'] = isset($args['id']) ? $args['id'] : "sidebar-$i";
     30                register_sidebar($_args);
     31                ++$i;
     32        }
     33}
     34endif;
     35
     36if ( !function_exists( 'register_sidebar' ) ):
     37function register_sidebar($args = array()) {
     38        global $wp_registered_sidebars;
     39
     40        if ( is_string($args) )
     41                parse_str($args, $args);
     42
     43        $i = count($wp_registered_sidebars) + 1;
     44
     45        $defaults = array(
     46                'name' => sprintf(__('Sidebar %d'), count($wp_registered_sidebars) + 1 ),
     47                'id' => "sidebar-$i",
     48                'before_widget' => '<li id="%1$s" class="widget %2$s">',
     49                'after_widget' => "</li>\n",
     50                'before_title' => '<h2 class="widgettitle">',
     51                'after_title' => "</h2>\n",
     52        );
     53
     54        $sidebar = array_merge($defaults, $args);
     55
     56        $wp_registered_sidebars[$sidebar['id']] = $sidebar;
     57
     58        return $sidebar['id'];
     59}
     60endif;
     61
     62if ( !function_exists( 'unregister_sidebar' ) ):
     63function unregister_sidebar( $name ) {
     64        global $wp_registered_sidebars;
     65               
     66        if ( isset( $wp_registered_sidebars[$name] ) )
     67                unset( $wp_registered_sidebars[$name] );
     68}
     69endif;
     70
     71if ( !function_exists( 'register_sidebar_widget' ) ):
     72function register_sidebar_widget($name, $output_callback, $classname = '', $id = '') {
     73        global $wp_registered_widgets, $wp_register_widget_defaults;
     74
     75        // Compat
     76        if ( is_array($name) ) {
     77                if ( count($name) == 3 )
     78                        $name = sprintf($name[0], $name[2]);
     79                else
     80                        $name = $name[0];
     81        }
     82
     83        // Last resort -- this can be broken when names get translated so please provide a unique id.
     84        if ( !isset($id) )
     85                $id = sanitize_title($name);
     86
     87        if ( (!isset($classname) || empty($classname) || !is_string($classname)) && is_string($output_callback) )
     88                        $classname = $output_callback;
     89
     90        $widget = array(
     91                'name' => $name,
     92                'id' => $id,
     93                'callback' => $output_callback,
     94                'classname' => $classname,
     95                'params' => array_slice(func_get_args(), 4)
     96        );
     97
     98        if ( empty($output_callback) )
     99                unset($wp_registered_widgets[$id]);
     100        elseif ( is_callable($output_callback) && ( !isset($wp_registered_widgets[$id]) || !$wp_register_widget_defaults) )
     101                $wp_registered_widgets[$id] = $widget;
     102}
     103endif;
     104
     105if ( !function_exists( 'unregister_sidebar_widget' ) ):
     106function unregister_sidebar_widget($id) {
     107        $id = sanitize_title($id);
     108        register_sidebar_widget('', '', '', $id);
     109        unregister_widget_control($id);
     110}
     111endif;
     112
     113if ( !function_exists( 'register_widget_control' ) ):
     114function register_widget_control($name, $control_callback, $width = 300, $height = 200, $id = '') {
     115        global $wp_registered_widget_controls, $wp_register_widget_defaults;
     116
     117        // Compat
     118        if ( is_array($name) ) {
     119                if ( count($name) == 3 )
     120                        $name = sprintf($name[0], $name[2]);
     121                else
     122                        $name = $name[0];
     123        }
     124
     125        if ( !isset($id) || empty($id) )
     126                $id = $name;
     127
     128        $id = sanitize_title($id);
     129
     130        $width = (int) $width > 90 ? (int) $width + 60 : 360;
     131        $height = (int) $height > 60 ? (int) $height + 40 : 240;
     132
     133        if ( empty($control_callback) )
     134                unset($wp_registered_widget_controls[$name]);
     135        elseif ( !isset($wp_registered_widget_controls[$name]) || !$wp_register_widget_defaults )
     136                $wp_registered_widget_controls[$id] = array(
     137                        'name' => $name,
     138                        'id' => $id,
     139                        'callback' => $control_callback,
     140                        'width' => $width,
     141                        'height' => $height,
     142                        'params' => array_slice(func_get_args(), 5)
     143                );
     144}
     145endif;
     146
     147if ( !function_exists( 'unregister_widget_control' ) ):
     148function unregister_widget_control($id) {
     149        $id = sanitize_title($id);
     150        return register_widget_control($id, '');
     151}
     152endif;
     153
     154if ( !function_exists( 'dynamic_sidebar' ) ):
     155function dynamic_sidebar($index = 1) {
     156        global $wp_registered_sidebars, $wp_registered_widgets;
     157
     158        if ( is_int($index) ) {
     159                $index = "sidebar-$index";
     160        } else {
     161                $index = sanitize_title($index);
     162        }
     163
     164        $sidebars_widgets = wp_get_sidebars_widgets();
     165
     166        if ( empty($wp_registered_sidebars[$index]) || !is_array($sidebars_widgets[$index]) || empty($sidebars_widgets[$index]) )
     167                return false;
     168
     169        $sidebar = $wp_registered_sidebars[$index];
     170
     171        $did_one = false;
     172        foreach ( $sidebars_widgets[$index] as $id ) {
     173                $callback = $wp_registered_widgets[$id]['callback'];
     174
     175                $params = array_merge(array($sidebar), (array) $wp_registered_widgets[$id]['params']);
     176
     177                // Substitute HTML id and class attributes into before_widget
     178                $params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $wp_registered_widgets[$id]['classname']);
     179
     180                if ( is_callable($callback) ) {
     181                        call_user_func_array($callback, $params);
     182                        $did_one = true;
     183                }
     184        }
     185
     186        return $did_one;
     187}
     188endif;
     189
     190if ( !function_exists( 'is_active_widget' ) ):
     191function is_active_widget($callback) {
     192        global $wp_registered_widgets;
     193
     194        $sidebars_widgets = wp_get_sidebars_widgets(false);
     195
     196        if ( is_array($sidebars_widgets) ) foreach ( $sidebars_widgets as $sidebar => $widgets )
     197                if ( is_array($widgets) ) foreach ( $widgets as $widget )
     198                        if ( $wp_registered_widgets[$widget]['callback'] == $callback )
     199                                return true;
     200
     201        return false;
     202}
     203endif;
     204
     205if ( !function_exists( 'is_dynamic_sidebar' ) ):
     206function is_dynamic_sidebar() {
     207        global $wp_registered_widgets, $wp_registered_sidebars;
     208        $sidebars_widgets = get_option('sidebars_widgets');
     209        foreach ( $wp_registered_sidebars as $index => $sidebar ) {
     210                if ( count($sidebars_widgets[$index]) ) {
     211                        foreach ( $sidebars_widgets[$index] as $widget )
     212                                if ( array_key_exists($widget, $wp_registered_widgets) )
     213                                        return true;
     214                }
     215        }
     216        return false;
     217}
     218endif;
     219
     220/* Internal Functions */
     221
     222function wp_get_sidebars_widgets($update = true) {
     223        global $wp_registered_widgets;
     224
     225        $sidebars_widgets = get_option('sidebars_widgets');
     226        $_sidebars_widgets = array();
     227
     228        if ( !isset($sidebars_widgets['array_version']) )
     229                $sidebars_widgets['array_version'] = 1;
     230
     231        switch ( $sidebars_widgets['array_version'] ) {
     232                case 1 :
     233                        foreach ( $sidebars_widgets as $index => $sidebar )
     234                        if ( is_array($sidebar) )
     235                        foreach ( $sidebar as $i => $name ) {
     236                                $id = strtolower($name);
     237                                if ( isset($wp_registered_widgets[$id]) ) {
     238                                        $_sidebars_widgets[$index][$i] = $id;
     239                                        continue;
    27240                                }
    28                        
    29                                 $args['name'] = sprintf( $name, $i );
     241                                $id = sanitize_title($name);
     242                                if ( isset($wp_registered_widgets[$id]) ) {
     243                                        $_sidebars_widgets[$index][$i] = $id;
     244                                        continue;
     245                                }
     246                                unset($_sidebars_widgets[$index][$i]);
    30247                        }
    31                
    32                         register_sidebar( $args );
    33                 }
    34         }
    35 }
    36 
    37 if ( !function_exists( 'register_sidebar' ) ) {
    38         function register_sidebar( $args = array() ) {
    39                 global $wp_registered_sidebars;
    40                
    41                 if ( is_string( $args ) ) {
    42                         parse_str( $args, $args );
    43                 }
    44                
    45                 $defaults = array(
    46                         'name' => sprintf( __( 'Sidebar %d' ), count( $wp_registered_sidebars ) + 1 ),
    47                         'before_widget' => '<li id="%1$s" class="widget %2$s">',
    48                         'after_widget' => "</li>\n",
    49                         'before_title' => '<h2 class="widgettitle">',
    50                         'after_title' => "</h2>\n"
    51                 );
    52                
    53                 $defaults = apply_filters( 'register_sidebar_defaults', $defaults, $args );
    54                
    55                 $sidebar = array_merge( $defaults, $args );
    56                
    57                 $sidebar['id'] = sanitize_title( $sidebar['name'] );
    58                
    59                 $wp_registered_sidebars[$sidebar['id']] = $sidebar;
    60                
    61                 return $sidebar['id'];
    62         }
    63 }
    64 
    65 if ( !function_exists( 'unregister_sidebar' ) ) {
    66         function unregister_sidebar( $name ) {
    67                 global $wp_registered_sidebars;
    68                
    69                 if ( isset( $wp_registered_sidebars[$name] ) ) {
    70                         unset( $wp_registered_sidebars[$name] );
    71                 }
    72         }
    73 }
    74 
    75 if ( !function_exists( 'register_sidebar_widget' ) ) {
    76         function register_sidebar_widget( $name, $output_callback, $classname = '' ) {
    77                 global $wp_registered_widgets, $wp_register_widget_defaults;
    78                
    79                 if ( is_array( $name ) ) {
    80                         $id = sanitize_title( sprintf( $name[0], $name[2] ) );
    81                         $name = sprintf( __( $name[0], $name[1] ), $name[2] );
    82                 } else {
    83                         $id = sanitize_title( $name );
    84                         $name = __( $name );
    85                 }
    86                
    87                 if ( ( empty( $classname ) || !is_string( $classname ) ) && is_string( $output_callback ) ) {
    88                         $classname = $output_callback;
    89                 }
    90                
    91                 $widget = array(
    92                         'id' => $id,
    93                         'callback' => $output_callback,
    94                         'classname' => $classname,
    95                         'params' => array_slice( func_get_args(), 2 )
    96                 );
    97                
    98                 if ( empty( $output_callback ) ) {
    99                         unset( $wp_registered_widgets[$name] );
    100                 } elseif ( is_callable( $output_callback ) && ( !isset( $wp_registered_widgets[$name] ) || !$wp_register_widget_defaults ) ) {
    101                         $wp_registered_widgets[$name] = $widget;
    102                 }
    103         }
    104 }
    105 
    106 if ( !function_exists( 'unregister_sidebar_widget' ) ) {
    107         function unregister_sidebar_widget( $name ) {
    108                 register_sidebar_widget( $name, '' );
    109                 unregister_widget_control( $name );
    110         }
    111 }
    112 
    113 if ( !function_exists( 'register_widget_control' ) ) {
    114         function register_widget_control( $name, $control_callback, $width = 300, $height = 200 ) {
    115                 global $wp_registered_widget_controls, $wp_registered_sidebar_defaults;
    116                
    117                 $width = (int) $width;
    118                 $height = (int) $height;
    119                
    120                 if ( is_array( $name ) ) {
    121                         $id = sanitize_title( sprintf( $name[0], $name[2] ) );
    122                         $name = sprintf( __( $name[0], $name[1] ), $name[2] );
    123                 } else {
    124                         $id = sanitize_title( $name );
    125                         $name = __( $name );
    126                 }
    127                
    128                 $width = ( $width > 90 ) ? $width + 60 : 360;
    129                 $height = ( $height > 60 ) ? $height + 40 : 240;
    130                
    131                 if ( empty( $control_callback ) ) {
    132                         unset( $wp_registered_widget_controls[$name] );
    133                 } elseif ( !isset( $wp_registered_widget_controls[$name] ) || !$wp_registered_sidebar_defaults ) {
    134                         $wp_registered_widget_controls[$name] = array(
    135                                 'id' => $id,
    136                                 'callback' => $control_callback,
    137                                 'width' => $width,
    138                                 'height' => $height,
    139                                 'params' => array_slice( func_get_args(), 4 )
    140                         );
    141                 }
    142         }
    143 }
    144 
    145 if ( !function_exists( 'unregister_widget_control' ) ) {
    146         function unregister_widget_control( $name ) {
    147                 register_sidebar_control( $name, '' );
    148         }
    149 }
    150 
    151 if ( !function_exists( 'dynamic_sidebar' ) ) {
    152         function dynamic_sidebar( $name = 1 ) {
    153                 global $wp_registered_sidebars, $wp_registered_widgets;
    154                
    155                 if ( is_int( $name ) ) {
    156                         $index = sanitize_title( __( 'Sidebar' ) . ' ' . $name );
    157                         $name = sprintf( __( 'Sidebar %d' ), $name );
    158                 } else {
    159                         $index = sanitize_title( $name );
    160                 }
    161                
    162                 $sidebars_widgets = wp_get_sidebars_widgets();
    163                
    164                 $sidebar = $wp_registered_sidebars[$index];
    165                
    166                 if ( empty( $sidebar ) || !is_array( $sidebars_widgets[$index] ) || empty( $sidebars_widgets[$index] ) ) {
    167                         return false;
    168                 }
    169                
    170                 $did_one = false;
    171                
    172                 foreach ( $sidebars_widgets[$index] as $name ) {
    173                         $callback = $wp_registered_widgets[$name]['callback'];
    174                        
    175                         $params = array_merge( array( $sidebar ), (array) $wp_registered_widgets[$name]['params'] );
    176                         $params[0]['before_widget'] = sprintf( $params[0]['before_widget'], $wp_registered_widgets[$name]['id'], $wp_registered_widgets[$name]['classname'] );
    177                        
    178                         if ( is_callable( $callback ) ) {
    179                                 call_user_func_array( $callback, $params );
    180                                 $did_one = true;
    181                         }
    182                 }
    183                
    184                 return $did_one;
    185         }
    186 }
    187 
    188 if ( !function_exists( 'is_active_widget' ) ) {
    189         function is_active_widget( $callback ) {
    190                 global $wp_registered_widgets;
    191                
    192                 $sidebars_widgets = wp_get_sidebars_widgets();
    193                
    194                 if ( is_array( $sidebars_widgets ) ) {
    195                         foreach ( $sidebars_widgets as $sidebar => $widgets ) {
    196                                 if ( is_array( $widgets) ) {
    197                                         foreach ( $widgets as $widget ) {
    198                                                 if ( $wp_registered_widgets[$widget]['callback'] == $callback ) {
    199                                                         return true;
    200                                                 }
    201                                         }
    202                                 }
    203                         }
    204                 }
    205                
    206                 return false;
    207         }
    208 }
    209 
    210 if ( !function_exists( 'is_dynamic_sidebar' ) ) {
    211         function is_dynamic_sidebar() {
    212                 global $wp_registered_sidebars, $wp_registered_widgets;
    213                
    214                 $sidebars_widgets = wp_get_sidebars_widgets();
    215                
    216                 foreach ( $wp_registered_sidebars as $index => $sidebar ) {
    217                         if ( count( $sidebars_widgets[$index] ) > 0 ) {
    218                                 foreach ( $sidebars_widgets[$index] as $widget ) {
    219                                         if ( array_key_exists( $widget, $wp_registered_sidebars ) ) {
    220                                                 return true;
    221                                         }
    222                                 }
    223                         }
    224                 }
    225                
    226                 return false;
    227         }
    228 }
    229 
    230 /* Internal Functions */
    231 
    232 function wp_get_sidebars_widgets() {
    233         return get_option( 'wp_sidebars_widgets' );
     248                        $_sidebars_widgets['array_version'] = 2;
     249                        if ( $update )
     250                                update_option('sidebars_widgets', $_sidebars_widgets);
     251                        break;
     252                case 2 :
     253                        $_sidebars_widgets = $sidebars_widgets;
     254                        break;
     255        }
     256
     257        unset($_sidebars_widgets['array_version']);
     258
     259        return $_sidebars_widgets;
    234260}
    235261
    236262function wp_set_sidebars_widgets( $sidebars_widgets ) {
    237         update_option( 'wp_sidebars_widgets', $sidebars_widgets );
     263        update_option( 'sidebars_widgets', $sidebars_widgets );
    238264}
    239265
    240266function wp_get_widget_defaults() {
    241267        global $wp_registered_sidebars;
    242        
     268
    243269        $defaults = array();
    244        
    245         foreach ( $wp_registered_sidebars as $index => $sidebar ) {
     270
     271        foreach ( $wp_registered_sidebars as $index => $sidebar )
    246272                $defaults[$index] = array();
    247         }
    248        
     273
    249274        return $defaults;
    250275}
     
    252277/* Default Widgets */
    253278
    254 function wp_widget_pages( $args ) {
    255         extract( $args );
    256        
    257         $options = get_option( 'wp_widget_pages' );
    258        
    259         $title = ( empty( $options['title'] ) ) ? __( 'Pages' ) : $options['title'];
    260        
     279function wp_widget_pages($args) {
     280        extract($args);
     281        $options = get_option('widget_pages');
     282        $title = empty($options['title']) ? __('Pages') : $options['title'];
    261283        echo $before_widget . $before_title . $title . $after_title . "<ul>\n";
    262         wp_list_pages( 'title_li=' );
     284        wp_list_pages("title_li=");
    263285        echo "</ul>\n" . $after_widget;
    264286}
    265287
    266288function wp_widget_pages_control() {
    267         $options = $newoptions = get_option( 'wp_widget_pages' );
    268        
    269         if ( isset( $_POST['pages-submit'] ) ) {
    270                 $newoptions['title'] = strip_tags( stripslashes( $_POST['pages-title'] ) );
    271                
    272                 if ( $newoptions != $options ) {
    273                         $options = $newoptions;
    274                         update_option( 'wp_widget_pages', $options );
    275                 }
    276         }
    277        
    278         $title = htmlspecialchars( $options['title'], ENT_QUOTES );
    279 ?>
    280                 <p><label for="pages-title"><?php _e( 'Title:' ); ?> <input style="width:250px" id="pages-title" name="pages-title" type="text" value="<?php echo $title; ?>" /></label></p>
    281                 <input type="hidden" id="pages-submit" name="pages-submit" value="1" />
    282 <?php
    283 }
    284 
    285 function wp_widget_links( $args ) {
     289        $options = $newoptions = get_option('widget_pages');
     290        if ( $_POST["pages-submit"] ) {
     291                $newoptions['title'] = strip_tags(stripslashes($_POST["pages-title"]));
     292        }
     293        if ( $options != $newoptions ) {
     294                $options = $newoptions;
     295                update_option('widget_pages', $options);
     296        }
     297        $title = htmlspecialchars($options['title'], ENT_QUOTES);
     298?>
     299                        <p><label for="pages-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="pages-title" name="pages-title" type="text" value="<?php echo $title; ?>" /></label></p>
     300                        <input type="hidden" id="pages-submit" name="pages-submit" value="1" />
     301<?php
     302}
     303
     304function wp_widget_links($args) {
    286305        global $wp_db_version;
    287         extract( $args );
    288        
     306        extract($args);
    289307        if ( $wp_db_version < 3582 ) {
     308                // This ONLY works with li/h2 sidebars.
    290309                get_links_list();
    291310        } else {
    292                 wp_list_bookmarks( array(
    293                         'title_before' => $before_title, 'title_after' => $after_title,
    294                         'category_before' => $before_widget, 'category_after' => $after_widget
    295                 ) );
    296         }
    297 }
    298 
    299 function wp_widget_search( $args ) {
    300         extract( $args );
     311                wp_list_bookmarks(array('title_before'=>$before_title, 'title_after'=>$after_title, 'show_images'=>true, 'class'=>'linkcat widget'));
     312        }
     313}
     314
     315function wp_widget_search($args) {
     316        extract($args);
    301317?>
    302318                <?php echo $before_widget; ?>
    303                         <form id="searchform" action="<?php bloginfo( 'url' ); ?>" method="get">
    304                                 <div><input type="text" name="s" id="s" size="15" /><br />
    305                                         <input type="submit" value="<?php _e( 'Search' ); ?>" /></div>
     319                        <form id="searchform" method="get" action="<?php bloginfo('home'); ?>">
     320                        <div>
     321                        <input type="text" name="s" id="s" size="15" /><br />
     322                        <input type="submit" value="<?php _e('Search'); ?>" />
     323                        </div>
    306324                        </form>
    307325                <?php echo $after_widget; ?>
     
    309327}
    310328
    311 function wp_widget_archives( $args ) {
    312         extract( $args );
    313        
    314         $options = get_option( 'wp_widget_archives' );
    315         $c = ( $options['count'] ) ? '1' : '0';
    316         $title = ( empty( $options['title'] ) ) ? __( 'Archives' ) : $options['title'];
     329function wp_widget_archives($args) {
     330        extract($args);
     331        $options = get_option('widget_archives');
     332        $c = $options['count'] ? '1' : '0';
     333        $title = empty($options['title']) ? __('Archives') : $options['title'];
    317334?>
    318335                <?php echo $before_widget; ?>
    319336                        <?php echo $before_title . $title . $after_title; ?>
    320337                        <ul>
    321                         <?php wp_get_archives( 'type=monthly&show_post_count=' . $c ); ?>
     338                        <?php wp_get_archives("type=monthly&show_post_count=$c"); ?>
    322339                        </ul>
    323340                <?php echo $after_widget; ?>
     
    326343
    327344function wp_widget_archives_control() {
    328         $options = $newoptions = get_option( 'wp_widget_archives' );
    329        
    330         if ( isset( $_POST['archives-submit'] ) ) {
    331                 $newoptions['count'] = isset( $_POST['archives-count'] );
    332                 $newoptions['title'] = strip_tags( stripslashes( $_POST['archives-title'] ) );
    333                
    334                 if ( $newoptions != $options ) {
    335                         $options = $newoptions;
    336                         update_option( 'wp_widget_archives', $options );
    337                 }
    338         }
    339        
    340         $count = ( isset( $options['count'] ) ) ? ' checked="checked"' : '';
    341         $title = htmlspecialchars( $options['title'], ENT_QUOTES );
    342 ?>
    343                 <p><label for="archives-title"><?php _e( 'Title:' ); ?> <input style="width:250px" id="archives-title" name="archives-title" type="text" value="<?php echo $title; ?>" /></label></p>
    344                 <p style="text-align:right;margin-right:40px"><label for="archives-count"><?php _e( 'Show post counts?' ); ?> <input type="checkbox" class="checkbox" name="archives-count" id="archives-count" <?php echo $count; ?>/></p>
    345                 <input type="hidden" name="archives-submit" id="archives-submit" value="1" />
    346 <?php
    347 }
    348 
    349 function wp_widget_meta( $args ) {
    350         extract( $args );
    351        
    352         $options = get_option( 'wp_widget_meta' );
    353         $title = ( empty( $options['title'] ) ) ? __( 'Meta' ) : $options['title'];
     345        $options = $newoptions = get_option('widget_archives');
     346        if ( $_POST["archives-submit"] ) {
     347                $newoptions['count'] = isset($_POST['archives-count']);
     348                $newoptions['title'] = strip_tags(stripslashes($_POST["archives-title"]));
     349        }
     350        if ( $options != $newoptions ) {
     351                $options = $newoptions;
     352                update_option('widget_archives', $options);
     353        }
     354        $count = $options['count'] ? 'checked="checked"' : '';
     355        $title = htmlspecialchars($options['title'], ENT_QUOTES);
     356?>
     357                        <p><label for="archives-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="archives-title" name="archives-title" type="text" value="<?php echo $title; ?>" /></label></p>
     358                        <p style="text-align:right;margin-right:40px;"><label for="archives-count">Show post counts <input class="checkbox" type="checkbox" <?php echo $count; ?> id="archives-count" name="archives-count" /></label></p>
     359                        <input type="hidden" id="archives-submit" name="archives-submit" value="1" />
     360<?php
     361}
     362
     363function wp_widget_meta($args) {
     364        extract($args);
     365        $options = get_option('widget_meta');
     366        $title = empty($options['title']) ? __('Meta') : $options['title'];
    354367?>
    355368                <?php echo $before_widget; ?>
    356369                        <?php echo $before_title . $title . $after_title; ?>
    357370                        <ul>
    358                                 <?php wp_register(); ?>
    359                                 <li><?php wp_loginout(); ?></li>
    360                                 <li><a href="<?php bloginfo( 'rss2_url' ); ?>" title="<?php _e( 'Syndicate this site using RSS 2.0' ); ?>"><?php _e( 'Entries <abbr title="Really Simple Syndication">RSS</abbr>' ); ?></a></li>
    361                                 <li><a href="<?php bloginfo( 'comments_rss2_url' ); ?>" title="<?php _e( 'The latest comments to all posts in RSS' ); ?>"><?php _e( 'Comments <abbr title="Really Simple Syndication">RSS</abbr>' ); ?></a></li>
    362                                 <li><a href="http://wordpress.org/" title="<?php _e( 'Powered by WordPress, state-of-the-art semantic personal publishing platform.' ); ?>">WordPress</a></li>
    363                                 <?php wp_meta(); ?>
     371                        <?php wp_register(); ?>
     372                        <li><?php wp_loginout(); ?></li>
     373                        <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php _e('Syndicate this site using RSS 2.0'); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
     374                        <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php _e('The latest comments to all posts in RSS'); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
     375                        <li><a href="http://wordpress.com/" title="<?php _e('Powered by WordPress, state-of-the-art semantic personal publishing platform.'); ?>">WordPress.com</a></li>
     376                        <?php wp_meta(); ?>
    364377                        </ul>
    365378                <?php echo $after_widget; ?>
    366379<?php
    367380}
    368 
    369381function wp_widget_meta_control() {
    370         $options = $newoptions = get_option( 'wp_widget_meta' );
    371        
    372         if ( isset( $_POST['meta-submit'] ) ) {
    373                 $newoptions['title'] = strip_tags( stripslashes( $_POST['meta-title'] ) );
    374                
    375                 if ( $newoptions != $options ) {
    376                         $options = $newoptions;
    377                         update_option( 'wp_widget_meta', $options );
    378                 }
    379         }
    380        
    381         $title = htmlspecialchars( $options['title'], ENT_QUOTES );
    382 ?>
    383                 <p><label for="meta-title"><?php _e( 'Title:' ); ?> <input type="text" name="meta-title" id="meta-title" style="width:250px" value="<?php echo $title; ?>" /></label></p>
    384                 <input type="hidden" name="meta-submit" id="meta-submit" value="1" />
    385 <?php
    386 }
    387 
    388 function wp_widget_calendar( $args ) {
    389         extract( $args );
    390        
    391         $title = ( empty( $options['title'] ) ) ? '&nbsp;' : $options['title'];
     382        $options = $newoptions = get_option('widget_meta');
     383        if ( $_POST["meta-submit"] ) {
     384                $newoptions['title'] = strip_tags(stripslashes($_POST["meta-title"]));
     385        }
     386        if ( $options != $newoptions ) {
     387                $options = $newoptions;
     388                update_option('widget_meta', $options);
     389        }
     390        $title = htmlspecialchars($options['title'], ENT_QUOTES);
     391?>
     392                        <p><label for="meta-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="meta-title" name="meta-title" type="text" value="<?php echo $title; ?>" /></label></p>
     393                        <input type="hidden" id="meta-submit" name="meta-submit" value="1" />
     394<?php
     395}
     396
     397function wp_widget_calendar($args) {
     398        extract($args);
     399        $options = get_option('widget_calendar');
     400        $title = $options['title'];
     401        if ( empty($title) )
     402                $title = '&nbsp;';
     403        echo $before_widget . $before_title . $title . $after_title;
     404        echo '<div id="calendar_wrap">';
     405        get_calendar();
     406        echo '</div>';
     407        echo $after_widget;
     408}
     409function wp_widget_calendar_control() {
     410        $options = $newoptions = get_option('widget_calendar');
     411        if ( $_POST["calendar-submit"] ) {
     412                $newoptions['title'] = strip_tags(stripslashes($_POST["calendar-title"]));
     413        }
     414        if ( $options != $newoptions ) {
     415                $options = $newoptions;
     416                update_option('widget_calendar', $options);
     417        }
     418        $title = htmlspecialchars($options['title'], ENT_QUOTES);
     419?>
     420                        <p><label for="calendar-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="calendar-title" name="calendar-title" type="text" value="<?php echo $title; ?>" /></label></p>
     421                        <input type="hidden" id="calendar-submit" name="calendar-submit" value="1" />
     422<?php
     423}
     424
     425function wp_widget_text($args, $number = 1) {
     426        extract($args);
     427        $options = get_option('widget_text');
     428        $title = $options[$number]['title'];
     429        if ( empty($title) )
     430                $title = '&nbsp;';
     431        $text = $options[$number]['text'];
    392432?>
    393433                <?php echo $before_widget; ?>
    394                         <?php echo $before_title . $title . $after_title; ?>
    395                         <div id="calendar_wrap">
    396                                 <?php get_calendar(); ?>
    397                         </div>
    398                 <?php echo $after_widget; ?>
    399 <?php
    400 }
    401 
    402 function wp_widget_calendar_control() {
    403         $options = $newoptions = get_option( 'wp_widget_calendar' );
    404        
    405         if ( isset( $_POST['calendar-submit'] ) ) {
    406                 $newoptions['title'] = strip_tags( stripslashes( $_POST['calendar-title'] ) );
    407                
    408                 if ( $newoptions != $options ) {
    409                         $options = $newoptions;
    410                         update_option( 'wp_widget_calendar', $options );
    411                 }
    412         }
    413        
    414         $title = htmlspecialchars( $options['title'], ENT_QUOTES );
    415 ?>
    416                 <p><label for="calendar-title"><?php _e( 'Title:' ); ?> <input type="text" style="width:250px" id="calendar-title" name="calendar-title" value="<?php echo $title; ?>" /></label></p>
    417                 <input type="hidden" id="calendar-title" name="calendar-title" value="1" />
    418 <?php
    419 }
    420 
    421 function wp_widget_text( $args, $i = 1 ) {
    422         extract( $args );
    423        
    424         $options = get_option( 'wp_widget_text' );
    425        
    426         $title = ( empty( $options[$i]['title'] ) ) ? '' : $options[$i]['title'];
    427 ?>
    428                 <?php echo $before_widget; ?>
    429                         <?php print ( empty( $title ) ) ? '' : $before_title . $title . $after_title; ?>
     434                        <?php $title ? print($before_title . $title . $after_title) : null; ?>
    430435                        <div class="textwidget"><?php echo $text; ?></div>
    431436                <?php echo $after_widget; ?>
     
    433438}
    434439
    435 function wp_widget_text_control( $i ) {
    436         $options = $newoptions = get_option( 'wp_widget_text' );
    437        
    438         if ( isset( $_POST['text-submit-' . $i] ) ) {
    439                 $newoptions[$i]['title'] = strip_tags( stripslashes( $_POST['text-title-' . $i] ) );
    440                 $newoptions[$i]['text'] = stripslashes( $_POST['text-text-' . $i] );
    441                
    442                 if ( !current_user_can( 'unfiltered_html' ) ) {
    443                         $newoptions[$i]['text'] = stripslashes( wp_filter_post_kses( $newoptions[$i]['text'] ) );
    444                 }
    445                
    446                 if ( $newoptions != $options ) {
    447                         $options = $newoptions;
    448                         update_options( 'wp_widget_text', $options );
    449                 }
    450         }
    451        
    452         $title = htmlspecialchars( $options[$i]['title'], ENT_QUOTES );
    453         $text = htmlspecialchars( $options[$i]['text'], ENT_QUOTES );
    454 ?>
    455                 <input style="width:450px" id="text-title-<?php echo $i; ?>" name="text-title-<?php echo $i; ?>" type="text" value="<?php echo $title; ?>" />
    456                 <textarea style="width:450px;height:280px" id="text-text-<?php echo $i; ?>" name="text-text-<?php echo $i; ?>"><?php echo $text; ?></textarea>
    457                 <input type="hidden" id="text-submit-<?php echo $i; ?>" name="text-submit-<?php echo $i; ?>" value="1" />
     440function wp_widget_text_control($number) {
     441        $options = $newoptions = get_option('widget_text');
     442        if ( !is_array($options) )
     443                $options = $newoptions = array();
     444        if ( $_POST["text-submit-$number"] ) {
     445                $newoptions[$number]['title'] = strip_tags(stripslashes($_POST["text-title-$number"]));
     446                $newoptions[$number]['text'] = stripslashes($_POST["text-text-$number"]);
     447                if ( !current_user_can('unfiltered_html') )
     448                        $newoptions[$number]['text'] = stripslashes(wp_filter_post_kses($newoptions[$number]['text']));
     449        }
     450        if ( $options != $newoptions ) {
     451                $options = $newoptions;
     452                update_option('widget_text', $options);
     453        }
     454        $title = htmlspecialchars($options[$number]['title'], ENT_QUOTES);
     455        $text = htmlspecialchars($options[$number]['text'], ENT_QUOTES);
     456?>
     457                        <input style="width: 450px;" id="text-title-<?php echo "$number"; ?>" name="text-title-<?php echo "$number"; ?>" type="text" value="<?php echo $title; ?>" />
     458                        <textarea style="width: 450px; height: 280px;" id="text-text-<?php echo "$number"; ?>" name="text-text-<?php echo "$number"; ?>"><?php echo $text; ?></textarea>
     459                        <input type="hidden" id="text-submit-<?php echo "$number"; ?>" name="text-submit-<?php echo "$number"; ?>" value="1" />
    458460<?php
    459461}
    460462
    461463function wp_widget_text_setup() {
    462         $options = $newoptions = get_option( 'wp_widget_text' );
    463        
    464         if ( isset( $_POST['text-number-submit'] ) ) {
    465                 $i = (int) $_POST['text-number'];
    466                
    467                 if ( $i > 9 ) {
    468                         $i = 9;
    469                 } elseif ( $i < 1 ) {
    470                         $i = 1;
    471                 }
    472                
    473                 $newoptions['number'] = $i;
    474                
    475                 if ( $newoptions != $options ) {
    476                         $options = $newoptions;
    477                         update_option( 'wp_widget_text', $options );
    478                 }
     464        $options = $newoptions = get_option('widget_text');
     465        if ( isset($_POST['text-number-submit']) ) {
     466                $number = (int) $_POST['text-number'];
     467                if ( $number > 9 ) $number = 9;
     468                if ( $number < 1 ) $number = 1;
     469                $newoptions['number'] = $number;
     470        }
     471        if ( $options != $newoptions ) {
     472                $options = $newoptions;
     473                update_option('widget_text', $options);
     474                widget_text_register($options['number']);
    479475        }
    480476}
    481477
    482478function wp_widget_text_page() {
    483         $options = get_option( 'widget_text' );
    484        
    485         $i = $options['number'];
     479        $options = $newoptions = get_option('widget_text');
    486480?>
    487481        <div class="wrap">
    488                 <form method="post">
    489                         <h2><?php _e( 'Text Widgets' ); ?></h2>
    490                        
    491                         <p style="line-height:30px"><?php _e( 'How many widgets would you like?' ); ?>
    492                                 <select id="text-number" name="text-number" value="<?php echo $i; ?>">
    493                                 <?php for ( $j = 1; $j < 10; $j++ ) { ?>
    494                                         <option value="<?php echo $j; ?>"<?php if ( $i == $j ) { ?> selected="selected"<?php } ?>><?php echo $j; ?></option>
    495                                 <?php } ?>
    496                                 </select>
    497                                 <span class="submit"><input type="submit" name="text-number-submit" id="text-number-submit" value="<?php _e( 'Save' ); ?>" /></span>
    498                         </p>
     482                <form method="POST">
     483                        <h2><?php _e('Text Widgets'); ?></h2>
     484                        <p style="line-height: 30px;"><?php _e('How many text widgets would you like?'); ?>
     485                        <select id="text-number" name="text-number" value="<?php echo $options['number']; ?>">
     486<?php for ( $i = 1; $i < 10; ++$i ) echo "<option value='$i' ".($options['number']==$i ? "selected='selected'" : '').">$i</option>"; ?>
     487                        </select>
     488                        <span class="submit"><input type="submit" name="text-number-submit" id="text-number-submit" value="<?php _e('Save'); ?>" /></span></p>
    499489                </form>
    500490        </div>
     
    503493
    504494function wp_widget_text_register() {
    505         $options = get_option( 'wp_widget_text' );
    506        
    507         $i = $options['number'];
    508        
    509         if ( $i < 1 ) {
    510                 $i = 1;
    511         } elseif ( $i > 9 ) {
    512                 $i = 9;
    513         }
    514        
    515         for ( $j = 1; $j <= 9; $j++ ) {
    516                 $name = array( 'Text %s', '', $i );
    517                 register_sidebar_widget( $name, ( $j <= $i ) ? 'wp_widget_text' : '', $j );
    518                 register_widget_control( $name, ( $j <= $i ) ? 'wp_widget_text_control' : '', 460, 350, $j );
    519         }
    520        
    521         add_action( 'sidebar_admin_setup', 'wp_widget_text_setup' );
    522         add_action( 'sidebar_admin_page', 'wp_widget_text_page' );
    523 }
    524 
    525 function wp_widget_categories( $args ) {
    526         extract( $args );
    527        
    528         $options = get_option( 'wp_widget_categories' );
    529        
    530         $title = ( empty( $options['title'] ) ) ? __( 'Categories' ) : $options['title'];
    531         $c = ( $options['count'] ) ? '1' : '0';
    532         $h = ( $options['hierarchical'] ) ? '1' : '0';
     495        $options = get_option('widget_text');
     496        $number = $options['number'];
     497        if ( $number < 1 ) $number = 1;
     498        if ( $number > 9 ) $number = 9;
     499        for ($i = 1; $i <= 9; $i++) {
     500                $name = sprintf(__('Text %d'), $i);
     501                $id = "text-$i"; // Never never never translate an id
     502                register_sidebar_widget($name, $i <= $number ? 'widget_text' : /* unregister */ '', null, $id, $i);
     503                register_widget_control($name, $i <= $number ? 'widget_text_control' : /* unregister */ '', 460, 350, $id, $i);
     504        }
     505        add_action('sidebar_admin_setup', 'wp_widget_text_setup');
     506        add_action('sidebar_admin_page', 'wp_widget_text_page');
     507}
     508
     509function wp_widget_categories($args) {
     510        extract($args);
     511        $options = get_option('widget_categories');
     512        $c = $options['count'] ? '1' : '0';
     513        $h = $options['hierarchical'] ? '1' : '0';
     514        $title = empty($options['title']) ? __('Categories') : $options['title'];
    533515?>
    534516                <?php echo $before_widget; ?>
    535517                        <?php echo $before_title . $title . $after_title; ?>
    536518                        <ul>
    537                                 <?php wp_list_cats( 'sort_column=name&optioncount=' . $c . '&hierarchical=' . $h ); ?>
     519                        <?php wp_list_cats("sort_column=name&optioncount=$c&hierarchical=$h"); ?>
    538520                        </ul>
    539521                <?php echo $after_widget; ?>
     
    542524
    543525function wp_widget_categories_control() {
    544         $options = $newoptions = get_option( 'wp_widget_categories' );
    545        
    546         if ( isset( $_POST['categories-submit'] ) ) {
    547                 $newoptions['count'] = isset( $_POST['categories-count'] );
    548                 $newoptions['hierarchical'] = isset( $_POST['categories-hierarchical'] );
    549                 $newoptions['title'] = strip_tags( stripslashes( $_POST['categories-title'] ) );
    550                
    551                 if ( $newoptions != $options ) {
    552                         $options = $newoptions;
    553                         update_option( 'wp_widget_categories', $options );
    554                 }
    555         }
    556        
    557         $count = ( $options['count'] ) ? ' checked="checked"' : '';
    558         $hierarchical = ( $options['hierarchical'] ) ? ' checked="checked"' : '';
    559         $title = wp_specialchars( $options['title'] );
    560 ?>
    561                 <p><label for="categories-title"><?php _e( 'Title:' ); ?> <input type="text" value="<?php echo $title; ?>" id="categories-title" name="categories-title" /></label></p>
    562                 <p style="text-align:right;margin-right:40px"><label for="categories-count"><?php _e( 'Show post counts? '); ?> <input type="checkbox" class="checkbox"<?php echo $count; ?> id="categories-count" name="categories-count" /></label></p>
    563                 <p style="text-align:right;margin-right:40px"><label for="categories-hierarchical"><?php _e( 'Show hierarchy?' ); ?> <input type="checkbox" class="checkbox"<?php echo $hierarchical; ?> id="categories-hierarchical" name="categories-hierarchical" /></label></p>
    564                 <input type="hidden" name="categories-submit" id="categories-submit" value="1" />
    565 <?php
    566 }
    567 
    568 function wp_widget_recent_entries( $args ) {
    569         extract( $args );
    570        
    571         $title = __( 'Recent Posts' );
    572        
    573         $query = new WP_Query( 'showposts=10' );
    574        
    575         if ( !$query->have_posts() ) {
    576                 return;
    577         }
     526        $options = $newoptions = get_option('widget_categories');
     527        if ( $_POST['categories-submit'] ) {
     528                $newoptions['count'] = isset($_POST['categories-count']);
     529                $newoptions['hierarchical'] = isset($_POST['categories-hierarchical']);
     530                $newoptions['title'] = strip_tags(stripslashes($_POST['categories-title']));
     531        }
     532        if ( $options != $newoptions ) {
     533                $options = $newoptions;
     534                update_option('widget_categories', $options);
     535        }
     536        $count = $options['count'] ? 'checked="checked"' : '';
     537        $hierarchical = $options['hierarchical'] ? 'checked="checked"' : '';
     538        $title = wp_specialchars($options['title']);
     539?>
     540                        <p><label for="categories-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="categories-title" name="categories-title" type="text" value="<?php echo $title; ?>" /></label></p>
     541                        <p style="text-align:right;margin-right:40px;"><label for="categories-count"><?php _e('Show post counts'); ?> <input class="checkbox" type="checkbox" <?php echo $count; ?> id="categories-count" name="categories-count" /></label></p>
     542                        <p style="text-align:right;margin-right:40px;"><label for="categories-hierarchical" style="text-align:right;"><?php _e('Show hierarchy'); ?> <input class="checkbox" type="checkbox" <?php echo $hierarchical; ?> id="categories-hierarchical" name="categories-hierarchical" /></label></p>
     543                        <input type="hidden" id="categories-submit" name="categories-submit" value="1" />
     544<?php
     545}
     546
     547function wp_widget_recent_entries($args) {
     548        if ( $output = wp_cache_get('widget_recent_entries') )
     549                return print($output);
     550
     551        ob_start();
     552        extract($args);
     553        $options = get_option('widget_recent_entries');
     554        $title = empty($options['title']) ? __('Recent Posts') : $options['title'];
     555        if ( !$number = (int) $options['number'] )
     556                $number = 10;
     557        else if ( $number < 1 )
     558                $number = 1;
     559        else if ( $number > 15 )
     560                $number = 15;
     561
     562        $r = new WP_Query("showposts=$number&what_to_show=posts&nopaging=0");
     563        if ($r->have_posts()) :
    578564?>
    579565                <?php echo $before_widget; ?>
    580566                        <?php echo $before_title . $title . $after_title; ?>
    581567                        <ul>
    582                         <?php while ( $query->have_posts() ) {
    583                                 $query->the_post(); ?>
    584                                 <li><a href="<?php the_permalink(); ?>"><?php
    585                                         if ( get_the_title() != '' ) {
    586                                                 the_title();
    587                                         } else {
    588                                                 the_ID();
    589                                         }
    590                                 ?></a></li>
    591                         <?php } ?>
     568                        <?php  while ($r->have_posts()) : $r->the_post(); ?>
     569                        <li><a href="<?php the_permalink() ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?> </a></li>
     570                        <?php endwhile; ?>
    592571                        </ul>
    593572                <?php echo $after_widget; ?>
    594573<?php
    595 }
    596 
    597 function wp_widget_recent_comments( $args ) {
    598         global $wpdb;
    599        
    600         extract( $args );
    601        
    602         $options = get_option( 'wp_widget_recent_comments' );
    603        
    604         $title = ( empty( $options['title'] ) ) ? __( 'Recent Comments' ) : $options['title'];
    605        
    606         $comments = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 5" );
    607        
    608         if ( is_array( $comments ) && count( $comments ) > 0 ) {
    609 ?>
     574        endif;
     575        wp_cache_add('widget_recent_entries', ob_get_flush());
     576}
     577
     578function wp_flush_widget_recent_entries() {
     579        wp_cache_delete('widget_recent_entries');
     580}
     581
     582add_action('save_post', 'wp_flush_widget_recent_entries');
     583add_action('post_deleted', 'wp_flush_widget_recent_entries');
     584
     585function wp_widget_recent_entries_control() {
     586        $options = $newoptions = get_option('widget_recent_entries');
     587        if ( $_POST["recent-entries-submit"] ) {
     588                $newoptions['title'] = strip_tags(stripslashes($_POST["recent-entries-title"]));
     589                $newoptions['number'] = (int) $_POST["recent-entries-number"];
     590        }
     591        if ( $options != $newoptions ) {
     592                $options = $newoptions;
     593                update_option('widget_recent_entries', $options);
     594                wp_flush_widget_recent_entries();
     595        }
     596        $title = htmlspecialchars($options['title'], ENT_QUOTES);
     597        if ( !$number = (int) $options['number'] )
     598                $number = 5;
     599?>
     600                        <p><label for="recent-entries-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="recent-entries-title" name="recent-entries-title" type="text" value="<?php echo $title; ?>" /></label></p>
     601                        <p><label for="recent-entries-number"><?php _e('Number of posts to show:'); ?> <input style="width: 25px; text-align: center;" id="recent-entries-number" name="recent-entries-number" type="text" value="<?php echo $number; ?>" /></label> <?php _e('(at most 15)'); ?></p>
     602                        <input type="hidden" id="recent-entries-submit" name="recent-entries-submit" value="1" />
     603<?php
     604}
     605
     606function wp_widget_recent_comments($args) {
     607        global $wpdb, $comments, $comment;
     608        extract($args, EXTR_SKIP);
     609        $options = get_option('widget_recent_comments');
     610        $title = empty($options['title']) ? __('Recent Comments') : $options['title'];
     611        if ( !$number = (int) $options['number'] )
     612                $number = 5;
     613        else if ( $number < 1 )
     614                $number = 1;
     615        else if ( $number > 15 )
     616                $number = 15;
     617
     618        if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
     619                $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");
     620                wp_cache_add( 'recent_comments', $comments, 'widget' );
     621        }
     622?>
     623
    610624                <?php echo $before_widget; ?>
    611625                        <?php echo $before_title . $title . $after_title; ?>
    612                         <ul id="recentcomments">
    613                         <?php foreach ( $comments as $comment ) { ?>
    614                                 <li class="recentcomments"><?php echo sprintf( __( '%1$s on %2$s' ), get_comment_author_link(), '<a href="' . get_permalink( $comment->comment_post_ID ) . '#comment-' . $comment->comment_ID . '">' . get_the_title( $comment->comment_post_ID ) . '</a>' ); ?></li>
    615                         <?php } ?>
     626                        <ul id="recentcomments"><?php
     627                        if ( $comments ) : foreach ($comments as $comment) :
     628                        echo  '<li class="recentcomments">' . sprintf(__('%1$s on %2$s'), get_comment_author_link(), '<a href="'. get_permalink($comment->comment_post_ID) . '#comment-' . $comment->comment_ID . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
     629                        endforeach; endif;?></ul>
     630                <?php echo $after_widget; ?>
     631<?php
     632}
     633
     634function wp_delete_recent_comments_cache() {
     635        wp_cache_delete( 'recent_comments', 'widget' );
     636}
     637add_action( 'comment_post', 'wp_delete_recent_comments_cache' );
     638add_action( 'wp_set_comment_status', 'wp_delete_recent_comments_cache' );
     639
     640function wp_widget_recent_comments_control() {
     641        $options = $newoptions = get_option('widget_recent_comments');
     642        if ( $_POST["recent-comments-submit"] ) {
     643                $newoptions['title'] = strip_tags(stripslashes($_POST["recent-comments-title"]));
     644                $newoptions['number'] = (int) $_POST["recent-comments-number"];
     645        }
     646        if ( $options != $newoptions ) {
     647                $options = $newoptions;
     648                update_option('widget_recent_comments', $options);
     649                delete_recent_comments_cache();
     650        }
     651        $title = htmlspecialchars($options['title'], ENT_QUOTES);
     652        if ( !$number = (int) $options['number'] )
     653                $number = 5;
     654?>
     655                        <p><label for="recent-comments-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="recent-comments-title" name="recent-comments-title" type="text" value="<?php echo $title; ?>" /></label></p>
     656                        <p><label for="recent-comments-number"><?php _e('Number of comments to show:'); ?> <input style="width: 25px; text-align: center;" id="recent-comments-number" name="recent-comments-number" type="text" value="<?php echo $number; ?>" /></label> <?php _e('(at most 15)'); ?></p>
     657                        <input type="hidden" id="recent-comments-submit" name="recent-comments-submit" value="1" />
     658<?php
     659}
     660
     661function wp_widget_recent_comments_style() {
     662?>
     663<style type="text/css">.recentcomments a{display:inline !important;padding: 0 !important;margin: 0 !important;}</style>
     664<?php
     665}
     666
     667function wp_widget_recent_comments_register() {
     668        register_sidebar_widget(__('Recent Comments'), 'wp_widget_recent_comments', null, 'recent-comments');
     669        register_widget_control(__('Recent Comments'), 'wp_widget_recent_comments_control', 320, 90, 'recent-comments');
     670       
     671        if ( is_active_widget('wp_widget_recent_comments') )
     672                add_action('wp_head', 'wp_widget_recent_comments_style');
     673}
     674
     675function wp_widget_rss($args, $number = 1) {
     676        require_once(ABSPATH . WPINC . '/rss.php');
     677        extract($args);
     678        $options = get_option('widget_rss');
     679        if ( isset($options['error']) && $options['error'] )
     680                return;
     681        $num_items = (int) $options[$number]['items'];
     682        $show_summary = $options[$number]['show_summary'];
     683        if ( empty($num_items) || $num_items < 1 || $num_items > 10 ) $num_items = 10;
     684        $url = $options[$number]['url'];
     685        while ( strstr($url, 'http') != $url )
     686                $url = substr($url, 1);
     687        if ( empty($url) )
     688                return;
     689        $rss = fetch_rss_summary($url, array( 'link', 'title', 'description' ) );
     690        $link = wp_specialchars(strip_tags($rss->channel['link']), 1);
     691        while ( strstr($link, 'http') != $link )
     692                $link = substr($link, 1);
     693        $desc = wp_specialchars(strip_tags(html_entity_decode($rss->channel['description'], ENT_QUOTES)), 1);
     694        $title = $options[$number]['title'];
     695        if ( empty($title) )
     696                $title = htmlentities(strip_tags($rss->channel['title']));
     697        if ( empty($title) )
     698                $title = $desc;
     699        if ( empty($title) )
     700                $title = __('Unknown Feed');
     701        $url = wp_specialchars(strip_tags($url), 1);
     702        if ( file_exists(dirname(__FILE__) . '/rss.png') )
     703                $icon = str_replace(ABSPATH, get_option('siteurl').'/', dirname(__FILE__)) . '/rss.png';
     704        else
     705                $icon = get_option('siteurl').'/wp-includes/images/rss.png';
     706        $title = "<a class='rsswidget' href='$url' title='Syndicate this content'><img style='background:orange;color:white;border:none;' width='14' height='14' src='$icon' alt='RSS' /></a> <a class='rsswidget' href='$link' title='$desc'>$title</a>";
     707?>
     708                <?php echo $before_widget; ?>
     709                        <?php $title ? print($before_title . $title . $after_title) : null; ?>
     710                        <ul>
     711<?php
     712        if ( is_array( $rss->items ) ) {
     713                $rss->items = array_slice($rss->items, 0, $num_items);
     714                foreach ($rss->items as $item ) {
     715                        while ( strstr($item['link'], 'http') != $item['link'] )
     716                                $item['link'] = substr($item['link'], 1);
     717                        $link = wp_specialchars(strip_tags($item['link']), 1);
     718                        $title = wp_specialchars(strip_tags($item['title']), 1);
     719                        if ( empty($title) )
     720                                $title = __('Untitled');
     721                        $desc = '';
     722                        if ( $show_summary ) {
     723                                $summary = '<div class="rssSummary">' . $item['description'] . '</div>';
     724                        } else {
     725                                if ( isset( $item['description'] ) && is_string( $item['description'] ) )
     726                                        $desc = str_replace(array("\n", "\r"), ' ', wp_specialchars(strip_tags(html_entity_decode($item['description'], ENT_QUOTES)), 1));
     727                                $summary = '';
     728                        }
     729                        echo "<li><a class='rsswidget' href='$link' title='$desc'>$title</a>$summary</li>";
     730                }
     731        } else {
     732                echo __('<li>An error has occured; the feed is probably down. Try again later.</li>');
     733        }
     734?>
    616735                        </ul>
    617736                <?php echo $after_widget; ?>
    618737<?php
    619         }
    620 }
    621 
    622 function wp_widget_recent_comments_control() {
    623         $options = $newoptions = get_option( 'wp_widget_recent_comments' );
    624        
    625         if ( isset( $_POST['recent-comments-submit'] ) ) {
    626                 $newoptions['title'] = strip_tags( stripslashes( $_POST['recent-comments-title'] ) );
    627                
    628                 if ( $newoptions != $options ) {
    629                         $options = $newoptions;
    630                         update_option( 'wp_widget_recent_comments', $options );
     738}
     739
     740function wp_widget_rss_control($number) {
     741        $options = $newoptions = get_option('widget_rss');
     742        if ( $_POST["rss-submit-$number"] ) {
     743                $newoptions[$number]['items'] = (int) $_POST["rss-items-$number"];
     744                $url = strip_tags(stripslashes($_POST["rss-url-$number"]));
     745                $newoptions[$number]['title'] = trim(strip_tags(stripslashes($_POST["rss-title-$number"])));print_r($_POST);
     746                if ( $url !== $options[$number]['url'] ) {
     747                        require_once(ABSPATH . WPINC . '/rss.php');
     748                        $rss = fetch_rss_summary($url);
     749                        if ( is_object($rss) && $rss->status == 200 ) {
     750                                $newoptions[$number]['url'] = $url;
     751                                $newoptions[$number]['error'] = false;
     752                        } else {
     753                                $newoptions[$number]['error'] = true;
     754                                $newoptions[$number]['url'] = wp_specialchars(__('Error: could not find an RSS or ATOM feed at that URL.'), 1);
     755                                $error = sprintf(__('Error in RSS %1$d: %2$s', 'sandbox'), $number, $newoptions[$number]['error']);
     756                        }
    631757                }
    632758        }
    633        
    634         $title = htmlspecialchars( $options['title'], ENT_QUOTES );
    635 ?>
    636                 <p><label for="recent-comments-title"><?php _e( 'Title:' ); ?> <input type="text" style="width:250px" id="recent-comments-title" name="recent-comments-title" value="<?php echo $title; ?>" /></label></p>
    637                 <input type="hidden" name="recent-comments-submit" id="recent-comments-submit" value="1" />
    638 <?php
    639 }
    640 
    641 function wp_widget_recent_comments_wphead() {
    642 ?>
    643                 <style type="text/css">
    644                         .recentcomments a {
    645                                 display: inline !important;
    646                                 padding: 0 !important;
    647                                 margin: 0 !important;
    648                         }
    649                 </style>
    650 <?php
    651 }
    652 
    653 function wp_widget_recent_comments_register() {
    654         register_sidebar_widget( array( 'Recent Comments', '' ), 'wp_widget_recent_comments' );
    655         register_widget_control( array( 'Recent Comments', '' ), 'wp_widget_recent_comments_control' );
    656        
    657         if ( is_active_widget( 'wp_widget_recent_comments' ) ) {
    658                 add_action( 'wp_head', 'wp_widget_recent_comments_wphead' );
    659         }
    660 }
    661 
    662 function wp_widget_rss( $args, $i = 1 ) {
    663         extract( $args );
    664        
    665         if ( file_exists( ABSPATH . WPINC . '/rss.php' ) ) {
    666                 require_once ABSPATH . WPINC . '/rss.php';
    667         } else {
    668                 require_once ABSPATH . WPINC . '/rss-functions.php';
    669         }
    670        
    671         $options = get_option( 'wp_widget_rss' );
    672        
    673         $number_items = (int) $options[$i]['number_items'];
    674         $show_summary = $options[$i]['show_summary'];
    675        
    676         if ( empty( $number_items ) || $number_items < 1 || $number_items > 10 ) {
    677                 $number_items = 10;
    678         }
    679        
    680         $url = $options[$i]['url'];
    681        
    682         if ( empty( $url ) ) {
    683                 return;
    684         }
    685        
    686         while ( strstr( $url, 'http' ) != $url ) {
    687                 $url = substr( $url, 1 );
    688         }
    689        
    690         $rss = fetch_rss( $url );
    691        
    692         $link = wp_specialchars( strip_tags( $rss->channel['link'] ), 1 );
    693        
    694         while ( strstr( $link, 'http' ) != $link ) {
    695                 $link = substr( $link, 1 );
    696         }
    697        
    698         $desc = wp_specialchars( strip_tags( html_entity_decode( $rss->channel['description'], ENT_QUOTES ) ), 1 );
    699        
    700         $title = $options[$i]['title'];
    701        
    702         if ( empty( $title ) ) {
    703                 $title = htmlentities( strip_tags( $rss->channel['title'] ) );
    704         }
    705        
    706         if ( empty( $title ) ) {
    707                 $title = $desc;
    708         }
    709        
    710         if ( empty( $title ) ) {
    711                 $title = __( 'Unknown Feed' );
    712         }
    713        
    714         $url = wp_specialchars( strip_tags( $url ), 1 );
    715        
    716         if ( file_exists( ABSPATH . 'wp-content/rss.png' ) ) {
    717                 $icon = get_bloginfo( 'wpurl' ) . '/wp-content/rss.png';
    718         } else {
    719                 $icon = get_bloginfo( 'wpurl' ) . '/wp-includes/images/rss.png';
    720         }
    721        
    722         $h2 = '<a href="%1$s" class="rsswidget" title="%2$s"><img src="%3$s" style="width:14px;height:14px" alt="%4$s" /></a> <a href="%5$s" class="rsswidget" title="%6$s">%7$s</a>';
    723         $h2 = sprintf( $h2, $url, __( 'Syndicate this content' ), $icon, __( 'RSS' ), $link, $desc, $title );
    724 ?>
    725                 <?php echo $before_widget; ?>
    726                         <?php echo $before_title . $h2 . $after_title; ?>
    727                         <ul>
    728                         <?php
    729                                 if ( is_array( $rss->items ) ) {
    730                                         $rss->items = array_slice( $rss->items, 0, $number_items );
    731                                        
    732                                         foreach ( $rss->items as $item ) {
    733                                                 while ( strstr( $item['link'], 'http' ) != $item['link'] ) {
    734                                                         $item['link'] = substr( $item['link'], 1 );
    735                                                 }
    736                                                
    737                                                 $link = wp_specialchars( strip_tags( $item['link'] ), 1 );
    738                                                 $title = wp_specialchars( strip_tags( $item['title'] ), 1 );
    739                                                
    740                                                 if ( empty( $title ) ) {
    741                                                         $title = __( 'Untitled' );
    742                                                 }
    743                                                
    744                                                 $desc = '';
    745                                                
    746                                                 if ( $show_summary ) {
    747                                                         $summary = '<div class="rssSummary">' . $item['description'] . '</div>';
    748                                                 } else {
    749                                                         $desc = str_replace( array( "\r", "\n" ), ' ', wp_specialchars( strip_tags( html_entity_decode( $item['description'], ENT_QUOTES ) ), 1 ) );
    750                                                         $summary = '';
    751                                                 }
    752                         ?>
    753                                 <li><a class="rsswidget" href="<?php echo $link; ?>" title="<?php echo $desc; ?>"><?php echo $title; ?></a><?php echo $summary; ?></li>
    754                         <?php
    755                                         }
    756                                 } else {
    757                         ?>
    758                                 <li><?php _e( 'An error has occurred; the feed is probably down. Try again later.' ); ?></li>
    759                         <?php
    760                                 }
    761                         ?>
    762                 <?php echo $after_widget; ?>
    763 <?php
    764 }
    765 
    766 function wp_widget_rss_control( $i ) {
    767         $options = $newoptions = get_option( 'wp_widget_rss' );
    768        
    769         if ( isset( $_POST['rss-submit-' . $i] ) ) {
    770                 $newoptions[$i]['number_items'] = (int) $_POST['rss-items-' . $i];
    771                 $newoptions[$i]['url'] = strip_tags( stripslashes( $_POST['rss-url-' . $i] ) );
    772                 $newoptions[$i]['title'] = trim( strip_tags( stripslashes( $_POST['rss-title-' . $i] ) ) );
    773                
    774                 if ( $newoptions != $options ) {
    775                         $options = $newoptions;
    776                         update_option( 'wp_widget_rss', $options );
    777                 }
    778         }
    779        
    780         $url = htmlspecialchars( $options[$i]['url'], ENT_QUOTES );
    781         $number_items = (int) $options[$i]['number_items'];
    782         $title = htmlspecialchars( $options[$i]['title'], ENT_QUOTES );
    783        
    784         if ( empty( $number_items ) || $number_items < 1 ) {
    785                 $number_items = 10;
    786         }
    787 ?>
    788                 <p style="text-align:center;"><?php _e( 'Enter the RSS feed URL here:' ); ?></p>
    789                 <input style="width: 400px;" id="rss-url-<?php echo $i; ?>" name="rss-url-<?php echo $i; ?>" type="text" value="<?php echo $url; ?>" />
    790                 <p style="text-align:center;"><?php _e( 'Give the feed a title (optional):' ); ?></p>
    791                 <input style="width: 400px;" id="rss-title-<?php echo $i; ?>" name="rss-title-<?php echo $i; ?>" type="text" value="<?php echo $title; ?>" />
    792                 <p style="text-align:center; line-height: 30px;"><?php _e('How many items would you like to display?', 'widgets'); ?> <select id="rss-items-<?php echo $i; ?>" name="rss-items-<?php echo $i; ?>"><?php for ( $j = 1; $j <= 10; $j++ ) echo "<option value='$j' ".($i==$j ? "selected='selected'" : '').">$j</option>"; ?></select></p>
    793                 <input type="hidden" id="rss-submit-<?php echo $i; ?>" name="rss-submit-<?php echo $i; ?>" value="1" />
     759        if ( $options != $newoptions ) {
     760                $options = $newoptions;
     761                update_option('widget_rss', $options);
     762        }
     763        $url = htmlspecialchars($options[$number]['url'], ENT_QUOTES);
     764        $items = (int) $options[$number]['items'];
     765        $title = htmlspecialchars($options[$number]['title'], ENT_QUOTES);
     766        if ( empty($items) || $items < 1 ) $items = 10;
     767?>
     768                        <p style="text-align:center;"><?php _e('Enter the RSS feed URL here:'); ?></p>
     769                        <input style="width: 400px;" id="rss-url-<?php echo "$number"; ?>" name="rss-url-<?php echo "$number"; ?>" type="text" value="<?php echo $url; ?>" />
     770                        <p style="text-align:center;"><?php _e('Give the feed a title (optional):'); ?></p>
     771                        <input style="width: 400px;" id="rss-title-<?php echo "$number"; ?>" name="rss-title-<?php echo "$number"; ?>" type="text" value="<?php echo $title; ?>" />
     772                        <p style="text-align:center; line-height: 30px;"><?php _e('How many items would you like to display?'); ?> <select id="rss-items-<?php echo $number; ?>" name="rss-items-<?php echo $number; ?>"><?php for ( $i = 1; $i <= 10; ++$i ) echo "<option value='$i' ".($items==$i ? "selected='selected'" : '').">$i</option>"; ?></select></p>
     773                        <input type="hidden" id="rss-submit-<?php echo "$number"; ?>" name="rss-submit-<?php echo "$number"; ?>" value="1" />
    794774<?php
    795775}
    796776
    797777function wp_widget_rss_setup() {
    798         $options = $newoptions = get_option( 'wp_widget_rss' );
    799        
    800         if ( isset( $_POST['rss-number-submit'] ) ) {
    801                 $i = (int) $_POST['rss-number'];
    802                
    803                 if ( $i > 9 ) {
    804                         $number = 9;
    805                 } elseif ( $i < 1 ) {
    806                         $number = 1;
    807                 }
    808                
    809                 $newoptions['number'] = $i;
    810                
    811                 if ( $newoptions != $options ) {
    812                         $options = $newoptions;
    813                         update_option( 'wp_widget_rss', $options );
    814                         widget_rss_register( $options['number'] );
    815                 }
     778        $options = $newoptions = get_option('widget_rss');
     779        if ( isset($_POST['rss-number-submit']) ) {
     780                $number = (int) $_POST['rss-number'];
     781                if ( $number > 9 ) $number = 9;
     782                if ( $number < 1 ) $number = 1;
     783                $newoptions['number'] = $number;
     784        }
     785        if ( $options != $newoptions ) {
     786                $options = $newoptions;
     787                update_option('widget_rss', $options);
     788                widget_rss_register($options['number']);
    816789        }
    817790}
    818791
    819792function wp_widget_rss_page() {
    820         $options = get_option( 'wp_widget_rss' );
    821        
    822         $i = $options['number'];
     793        $options = $newoptions = get_option('widget_rss');
    823794?>
    824795        <div class="wrap">
    825                 <form method="post">
    826                         <h2><?php _e( 'RSS Feed Widgets' ); ?></h2>
    827                        
    828                         <p style="line-height:30px"><?php _e( 'How many RSS widgets would you like?' ); ?>
    829                                 <select id="rss-number" name="rss-number" value="<?php echo $i; ?>">
    830                                 <?php for ( $j = 1; $j < 10; $j++ ) { ?>
    831                                         <option value="<?php echo $j; ?>"<?php
    832                                                 if ( $i == $j ) {
    833                                                         echo ' selected="selected"';
    834                                                 }
    835                                         ?>><?php echo $j; ?></option>
    836                                 <?php } ?>
    837                                 </select>
    838                         </p>
     796                <form method="POST">
     797                        <h2><?php _e('RSS Feed Widgets'); ?></h2>
     798                        <p style="line-height: 30px;"><?php _e('How many RSS widgets would you like?'); ?>
     799                        <select id="rss-number" name="rss-number" value="<?php echo $options['number']; ?>">
     800<?php for ( $i = 1; $i < 10; ++$i ) echo "<option value='$i' ".($options['number']==$i ? "selected='selected'" : '').">$i</option>"; ?>
     801                        </select>
     802                        <span class="submit"><input type="submit" name="rss-number-submit" id="rss-number-submit" value="<?php _e('Save'); ?>" /></span></p>
    839803                </form>
    840804        </div>
     
    843807
    844808function wp_widget_rss_register() {
    845         $options = get_option( 'wp_widget_rss' );
    846        
    847         $i = $options['number'];
    848        
    849         if ( $i < 1 ) {
    850                 $i = 1;
    851         } elseif ( $i > 9 ) {
    852                 $i = 9;
    853         }
    854        
    855         for ( $j = 1; $j <= 9; $j++ ) {
    856                 $name = array( 'RSS %s', '', $j );
    857                 register_sidebar_widget( $name, ( $j <= $i ) ? 'wp_widget_rss' : '', $j );
    858                 register_widget_control( $name, ( $j <= $i ) ? 'wp_widget_rss_control' : '', 410, 200, $j );
    859         }
    860        
    861         add_action( 'sidebar_admin_setup', 'wp_widget_rss_setup' );
    862         add_action( 'sidebar_admin_page', 'wp_widget_rss_page' );
    863        
    864         if ( is_active_widget( 'wp_widget_rss' ) ) {
    865                 add_action( 'wp_head', 'wp_widget_rss_wphead' );
    866         }
    867 }
    868 
    869 function wp_widget_rss_wphead() {
    870 ?>
    871                 <style type="text/css">
    872                         a.rsswidget {
    873                                 display: inline !important;
    874                         }
    875                        
    876                         a.rsswidget img {
    877                                 background: orange;
    878                                 color: white;
    879                         }
    880                 </style>
    881 <?php
     809        $options = get_option('widget_rss');
     810        $number = $options['number'];
     811        if ( $number < 1 ) $number = 1;
     812        if ( $number > 9 ) $number = 9;
     813        for ($i = 1; $i <= 9; $i++) {
     814                $name = sprintf(__('RSS %d'), $i);
     815                $id = "rss-$i"; // Never never never translate an id
     816                register_sidebar_widget($name, $i <= $number ? 'widget_rss' : /* unregister */ '', null, $id, $i);
     817                register_widget_control($name, $i <= $number ? 'widget_rss_control' : /* unregister */ '', 410, 200, $id, $i);
     818        }
     819        add_action('sidebar_admin_setup', 'wp_widget_rss_setup');
     820        add_action('sidebar_admin_page', 'wp_widget_rss_page');
    882821}
    883822
    884823function wp_widgets_init() {
    885824        global $wp_register_widget_defaults;
    886        
     825
    887826        $wp_register_widget_defaults = true;
    888        
     827
     828        register_sidebar_widget(__('Pages'), 'wp_widget_pages', null, 'pages');
     829        register_widget_control(__('Pages'), 'wp_widget_pages_control', 300, 90, 'pages');
     830        register_sidebar_widget(__('Calendar'), 'wp_widget_calendar', null, 'calendar');
     831        register_widget_control(__('Calendar'), 'wp_widget_calendar_control', 300, 90, 'calendar');
     832        register_sidebar_widget(__('Archives'), 'wp_widget_archives', null, 'archives');
     833        register_widget_control(__('Archives'), 'wp_widget_archives_control', 300, 90, 'archives');
     834        register_sidebar_widget(__('Links'), 'wp_widget_links', null, 'links');
     835        register_sidebar_widget(__('Meta'), 'wp_widget_meta', null, 'meta');
     836        register_widget_control(__('Meta'), 'wp_widget_meta_control', 300, 90, 'meta');
     837        register_sidebar_widget(__('Search'), 'wp_widget_search', null, 'search');
     838        register_sidebar_widget(__('Categories'), 'wp_widget_categories', null, 'categories');
     839        register_widget_control(__('Categories'), 'wp_widget_categories_control', 300, 150, 'categories');
     840        register_sidebar_widget(__('Recent Posts'), 'wp_widget_recent_entries', null, 'recent-posts');
     841        register_widget_control(__('Recent Posts'), 'wp_widget_recent_entries_control', 300, 90, 'recent-posts');
    889842        wp_widget_text_register();
    890843        wp_widget_rss_register();
    891844        wp_widget_recent_comments_register();
    892        
    893         register_sidebar_widget( 'Pages', 'wp_widget_pages' );
    894         register_widget_control( 'Pages', 'wp_widget_pages_control', 300, 90 );
    895        
    896         register_sidebar_widget( 'Calendar', 'wp_widget_calendar' );
    897         register_widget_control( 'Calendar', 'wp_widget_calendar_control', 300, 90 );
    898        
    899         register_sidebar_widget( 'Archives', 'wp_widget_archives' );
    900         register_widget_control( 'Archives', 'wp_widget_archives_control', 300, 90 );
    901        
    902         register_sidebar_widget( 'Links', 'wp_widget_links' );
    903        
    904         register_sidebar_widget( 'Meta', 'wp_widget_meta' );
    905         register_widget_control( 'Meta', 'wp_widget_meta_control', 300, 90 );
    906        
    907         register_sidebar_widget( 'Search', 'wp_widget_search' );
    908        
    909         register_sidebar_widget( 'Categories', 'wp_widget_categories' );
    910         register_widget_control( 'Categories', 'wp_widget_categories_control', 300, 150 );
    911        
    912         register_sidebar_widget( 'Recent Posts', 'wp_widget_recent_entries' );
    913        
     845
    914846        $wp_register_widget_defaults = false;
    915        
    916         do_action( 'widgets_init' );
    917 }
    918 
    919 ?>
     847
     848        do_action('widgets_init');
     849}
     850
     851?>
Note: See TracChangeset for help on using the changeset viewer.