[ Index ]

PHP Cross Reference of Wordpress 2.9.1

title

Body

[close]

/wp-includes/ -> default-widgets.php (source)

   1  <?php
   2  
   3  /**
   4   * Default Widgets
   5   *
   6   * @package WordPress
   7   * @subpackage Widgets
   8   */
   9  
  10  /**
  11   * Pages widget class
  12   *
  13   * @since 2.8.0
  14   */
  15  class WP_Widget_Pages extends WP_Widget {
  16  
  17  	function WP_Widget_Pages() {
  18          $widget_ops = array('classname' => 'widget_pages', 'description' => __( 'Your blog&#8217;s WordPress Pages') );
  19          $this->WP_Widget('pages', __('Pages'), $widget_ops);
  20      }
  21  
  22  	function widget( $args, $instance ) {
  23          extract( $args );
  24  
  25          $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title']);
  26          $sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby'];
  27          $exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude'];
  28  
  29          if ( $sortby == 'menu_order' )
  30              $sortby = 'menu_order, post_title';
  31  
  32          $out = wp_list_pages( apply_filters('widget_pages_args', array('title_li' => '', 'echo' => 0, 'sort_column' => $sortby, 'exclude' => $exclude) ) );
  33  
  34          if ( !empty( $out ) ) {
  35              echo $before_widget;
  36              if ( $title)
  37                  echo $before_title . $title . $after_title;
  38          ?>
  39          <ul>
  40              <?php echo $out; ?>
  41          </ul>
  42          <?php
  43              echo $after_widget;
  44          }
  45      }
  46  
  47  	function update( $new_instance, $old_instance ) {
  48          $instance = $old_instance;
  49          $instance['title'] = strip_tags($new_instance['title']);
  50          if ( in_array( $new_instance['sortby'], array( 'post_title', 'menu_order', 'ID' ) ) ) {
  51              $instance['sortby'] = $new_instance['sortby'];
  52          } else {
  53              $instance['sortby'] = 'menu_order';
  54          }
  55  
  56          $instance['exclude'] = strip_tags( $new_instance['exclude'] );
  57  
  58          return $instance;
  59      }
  60  
  61  	function form( $instance ) {
  62          //Defaults
  63          $instance = wp_parse_args( (array) $instance, array( 'sortby' => 'post_title', 'title' => '', 'exclude' => '') );
  64          $title = esc_attr( $instance['title'] );
  65          $exclude = esc_attr( $instance['exclude'] );
  66      ?>
  67          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
  68          <p>
  69              <label for="<?php echo $this->get_field_id('sortby'); ?>"><?php _e( 'Sort by:' ); ?></label>
  70              <select name="<?php echo $this->get_field_name('sortby'); ?>" id="<?php echo $this->get_field_id('sortby'); ?>" class="widefat">
  71                  <option value="post_title"<?php selected( $instance['sortby'], 'post_title' ); ?>><?php _e('Page title'); ?></option>
  72                  <option value="menu_order"<?php selected( $instance['sortby'], 'menu_order' ); ?>><?php _e('Page order'); ?></option>
  73                  <option value="ID"<?php selected( $instance['sortby'], 'ID' ); ?>><?php _e( 'Page ID' ); ?></option>
  74              </select>
  75          </p>
  76          <p>
  77              <label for="<?php echo $this->get_field_id('exclude'); ?>"><?php _e( 'Exclude:' ); ?></label> <input type="text" value="<?php echo $exclude; ?>" name="<?php echo $this->get_field_name('exclude'); ?>" id="<?php echo $this->get_field_id('exclude'); ?>" class="widefat" />
  78              <br />
  79              <small><?php _e( 'Page IDs, separated by commas.' ); ?></small>
  80          </p>
  81  <?php
  82      }
  83  
  84  }
  85  
  86  /**
  87   * Links widget class
  88   *
  89   * @since 2.8.0
  90   */
  91  class WP_Widget_Links extends WP_Widget {
  92  
  93  	function WP_Widget_Links() {
  94          $widget_ops = array('description' => __( "Your blogroll" ) );
  95          $this->WP_Widget('links', __('Links'), $widget_ops);
  96      }
  97  
  98  	function widget( $args, $instance ) {
  99          extract($args, EXTR_SKIP);
 100  
 101          $show_description = isset($instance['description']) ? $instance['description'] : false;
 102          $show_name = isset($instance['name']) ? $instance['name'] : false;
 103          $show_rating = isset($instance['rating']) ? $instance['rating'] : false;
 104          $show_images = isset($instance['images']) ? $instance['images'] : true;
 105          $category = isset($instance['category']) ? $instance['category'] : false;
 106  
 107          if ( is_admin() && !$category ) {
 108              // Display All Links widget as such in the widgets screen
 109              echo $before_widget . $before_title. __('All Links') . $after_title . $after_widget;
 110              return;
 111          }
 112  
 113          $before_widget = preg_replace('/id="[^"]*"/','id="%id"', $before_widget);
 114          wp_list_bookmarks(apply_filters('widget_links_args', array(
 115              'title_before' => $before_title, 'title_after' => $after_title,
 116              'category_before' => $before_widget, 'category_after' => $after_widget,
 117              'show_images' => $show_images, 'show_description' => $show_description,
 118              'show_name' => $show_name, 'show_rating' => $show_rating,
 119              'category' => $category, 'class' => 'linkcat widget'
 120          )));
 121      }
 122  
 123  	function update( $new_instance, $old_instance ) {
 124          $new_instance = (array) $new_instance;
 125          $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0);
 126          foreach ( $instance as $field => $val ) {
 127              if ( isset($new_instance[$field]) )
 128                  $instance[$field] = 1;
 129          }
 130          $instance['category'] = intval($new_instance['category']);
 131  
 132          return $instance;
 133      }
 134  
 135  	function form( $instance ) {
 136  
 137          //Defaults
 138          $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false ) );
 139          $link_cats = get_terms( 'link_category');
 140  ?>
 141          <p>
 142          <label for="<?php echo $this->get_field_id('category'); ?>" class="screen-reader-text"><?php _e('Select Link Category'); ?></label>
 143          <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
 144          <option value=""><?php _e('All Links'); ?></option>
 145          <?php
 146          foreach ( $link_cats as $link_cat ) {
 147              echo '<option value="' . intval($link_cat->term_id) . '"'
 148                  . ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' )
 149                  . '>' . $link_cat->name . "</option>\n";
 150          }
 151          ?>
 152          </select></p>
 153          <p>
 154          <input class="checkbox" type="checkbox" <?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" />
 155          <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br />
 156          <input class="checkbox" type="checkbox" <?php checked($instance['name'], true) ?> id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" />
 157          <label for="<?php echo $this->get_field_id('name'); ?>"><?php _e('Show Link Name'); ?></label><br />
 158          <input class="checkbox" type="checkbox" <?php checked($instance['description'], true) ?> id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" />
 159          <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Show Link Description'); ?></label><br />
 160          <input class="checkbox" type="checkbox" <?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" />
 161          <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label>
 162          </p>
 163  <?php
 164      }
 165  }
 166  
 167  /**
 168   * Search widget class
 169   *
 170   * @since 2.8.0
 171   */
 172  class WP_Widget_Search extends WP_Widget {
 173  
 174  	function WP_Widget_Search() {
 175          $widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your blog") );
 176          $this->WP_Widget('search', __('Search'), $widget_ops);
 177      }
 178  
 179  	function widget( $args, $instance ) {
 180          extract($args);
 181          $title = apply_filters('widget_title', $instance['title']);
 182  
 183          echo $before_widget;
 184          if ( $title )
 185              echo $before_title . $title . $after_title;
 186  
 187          // Use current theme search form if it exists
 188          get_search_form();
 189  
 190          echo $after_widget;
 191      }
 192  
 193  	function form( $instance ) {
 194          $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
 195          $title = $instance['title'];
 196  ?>
 197          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></label></p>
 198  <?php
 199      }
 200  
 201  	function update( $new_instance, $old_instance ) {
 202          $instance = $old_instance;
 203          $new_instance = wp_parse_args((array) $new_instance, array( 'title' => ''));
 204          $instance['title'] = strip_tags($new_instance['title']);
 205          return $instance;
 206      }
 207  
 208  }
 209  
 210  /**
 211   * Archives widget class
 212   *
 213   * @since 2.8.0
 214   */
 215  class WP_Widget_Archives extends WP_Widget {
 216  
 217  	function WP_Widget_Archives() {
 218          $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your blog&#8217;s posts') );
 219          $this->WP_Widget('archives', __('Archives'), $widget_ops);
 220      }
 221  
 222  	function widget( $args, $instance ) {
 223          extract($args);
 224          $c = $instance['count'] ? '1' : '0';
 225          $d = $instance['dropdown'] ? '1' : '0';
 226          $title = apply_filters('widget_title', empty($instance['title']) ? __('Archives') : $instance['title']);
 227  
 228          echo $before_widget;
 229          if ( $title )
 230              echo $before_title . $title . $after_title;
 231  
 232          if ( $d ) {
 233  ?>
 234          <select name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'> <option value=""><?php echo esc_attr(__('Select Month')); ?></option> <?php wp_get_archives(apply_filters('widget_archives_dropdown_args', array('type' => 'monthly', 'format' => 'option', 'show_post_count' => $c))); ?> </select>
 235  <?php
 236          } else {
 237  ?>
 238          <ul>
 239          <?php wp_get_archives(apply_filters('widget_archives_args', array('type' => 'monthly', 'show_post_count' => $c))); ?>
 240          </ul>
 241  <?php
 242          }
 243  
 244          echo $after_widget;
 245      }
 246  
 247  	function update( $new_instance, $old_instance ) {
 248          $instance = $old_instance;
 249          $new_instance = wp_parse_args( (array) $new_instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
 250          $instance['title'] = strip_tags($new_instance['title']);
 251          $instance['count'] = $new_instance['count'] ? 1 : 0;
 252          $instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
 253  
 254          return $instance;
 255      }
 256  
 257  	function form( $instance ) {
 258          $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
 259          $title = strip_tags($instance['title']);
 260          $count = $instance['count'] ? 'checked="checked"' : '';
 261          $dropdown = $instance['dropdown'] ? 'checked="checked"' : '';
 262  ?>
 263          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
 264          <p>
 265              <input class="checkbox" type="checkbox" <?php echo $count; ?> id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>" /> <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e('Show post counts'); ?></label>
 266              <br />
 267              <input class="checkbox" type="checkbox" <?php echo $dropdown; ?> id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>" /> <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e('Display as a drop down'); ?></label>
 268          </p>
 269  <?php
 270      }
 271  }
 272  
 273  /**
 274   * Meta widget class
 275   *
 276   * Displays log in/out, RSS feed links, etc.
 277   *
 278   * @since 2.8.0
 279   */
 280  class WP_Widget_Meta extends WP_Widget {
 281  
 282  	function WP_Widget_Meta() {
 283          $widget_ops = array('classname' => 'widget_meta', 'description' => __( "Log in/out, admin, feed and WordPress links") );
 284          $this->WP_Widget('meta', __('Meta'), $widget_ops);
 285      }
 286  
 287  	function widget( $args, $instance ) {
 288          extract($args);
 289          $title = apply_filters('widget_title', empty($instance['title']) ? __('Meta') : $instance['title']);
 290  
 291          echo $before_widget;
 292          if ( $title )
 293              echo $before_title . $title . $after_title;
 294  ?>
 295              <ul>
 296              <?php wp_register(); ?>
 297              <li><?php wp_loginout(); ?></li>
 298              <li><a href="<?php bloginfo('rss2_url'); ?>" title="<?php echo esc_attr(__('Syndicate this site using RSS 2.0')); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
 299              <li><a href="<?php bloginfo('comments_rss2_url'); ?>" title="<?php echo esc_attr(__('The latest comments to all posts in RSS')); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
 300              <li><a href="http://wordpress.org/" title="<?php echo esc_attr(__('Powered by WordPress, state-of-the-art semantic personal publishing platform.')); ?>">WordPress.org</a></li>
 301              <?php wp_meta(); ?>
 302              </ul>
 303  <?php
 304          echo $after_widget;
 305      }
 306  
 307  	function update( $new_instance, $old_instance ) {
 308          $instance = $old_instance;
 309          $instance['title'] = strip_tags($new_instance['title']);
 310  
 311          return $instance;
 312      }
 313  
 314  	function form( $instance ) {
 315          $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
 316          $title = strip_tags($instance['title']);
 317  ?>
 318              <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
 319  <?php
 320      }
 321  }
 322  
 323  /**
 324   * Calendar widget class
 325   *
 326   * @since 2.8.0
 327   */
 328  class WP_Widget_Calendar extends WP_Widget {
 329  
 330  	function WP_Widget_Calendar() {
 331          $widget_ops = array('classname' => 'widget_calendar', 'description' => __( 'A calendar of your blog&#8217;s posts') );
 332          $this->WP_Widget('calendar', __('Calendar'), $widget_ops);
 333      }
 334  
 335  	function widget( $args, $instance ) {
 336          extract($args);
 337          $title = apply_filters('widget_title', empty($instance['title']) ? '&nbsp;' : $instance['title']);
 338          echo $before_widget;
 339          if ( $title )
 340              echo $before_title . $title . $after_title;
 341          echo '<div id="calendar_wrap">';
 342          get_calendar();
 343          echo '</div>';
 344          echo $after_widget;
 345      }
 346  
 347  	function update( $new_instance, $old_instance ) {
 348          $instance = $old_instance;
 349          $instance['title'] = strip_tags($new_instance['title']);
 350  
 351          return $instance;
 352      }
 353  
 354  	function form( $instance ) {
 355          $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
 356          $title = strip_tags($instance['title']);
 357  ?>
 358          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
 359          <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
 360  <?php
 361      }
 362  }
 363  
 364  /**
 365   * Text widget class
 366   *
 367   * @since 2.8.0
 368   */
 369  class WP_Widget_Text extends WP_Widget {
 370  
 371  	function WP_Widget_Text() {
 372          $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML'));
 373          $control_ops = array('width' => 400, 'height' => 350);
 374          $this->WP_Widget('text', __('Text'), $widget_ops, $control_ops);
 375      }
 376  
 377  	function widget( $args, $instance ) {
 378          extract($args);
 379          $title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
 380          $text = apply_filters( 'widget_text', $instance['text'], $instance );
 381          echo $before_widget;
 382          if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
 383              <div class="textwidget"><?php echo $instance['filter'] ? wpautop($text) : $text; ?></div>
 384          <?php
 385          echo $after_widget;
 386      }
 387  
 388  	function update( $new_instance, $old_instance ) {
 389          $instance = $old_instance;
 390          $instance['title'] = strip_tags($new_instance['title']);
 391          if ( current_user_can('unfiltered_html') )
 392              $instance['text'] =  $new_instance['text'];
 393          else
 394              $instance['text'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['text']) ) ); // wp_filter_post_kses() expects slashed
 395          $instance['filter'] = isset($new_instance['filter']);
 396          return $instance;
 397      }
 398  
 399  	function form( $instance ) {
 400          $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
 401          $title = strip_tags($instance['title']);
 402          $text = format_to_edit($instance['text']);
 403  ?>
 404          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
 405          <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
 406  
 407          <textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
 408  
 409          <p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs.'); ?></label></p>
 410  <?php
 411      }
 412  }
 413  
 414  /**
 415   * Categories widget class
 416   *
 417   * @since 2.8.0
 418   */
 419  class WP_Widget_Categories extends WP_Widget {
 420  
 421  	function WP_Widget_Categories() {
 422          $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories" ) );
 423          $this->WP_Widget('categories', __('Categories'), $widget_ops);
 424      }
 425  
 426  	function widget( $args, $instance ) {
 427          extract( $args );
 428  
 429          $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title']);
 430          $c = $instance['count'] ? '1' : '0';
 431          $h = $instance['hierarchical'] ? '1' : '0';
 432          $d = $instance['dropdown'] ? '1' : '0';
 433  
 434          echo $before_widget;
 435          if ( $title )
 436              echo $before_title . $title . $after_title;
 437  
 438          $cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h);
 439  
 440          if ( $d ) {
 441              $cat_args['show_option_none'] = __('Select Category');
 442              wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
 443  ?>
 444  
 445  <script type='text/javascript'>
 446  /* <![CDATA[ */
 447      var dropdown = document.getElementById("cat");
 448  	function onCatChange() {
 449          if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
 450              location.href = "<?php echo get_option('home'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value;
 451          }
 452      }
 453      dropdown.onchange = onCatChange;
 454  /* ]]> */
 455  </script>
 456  
 457  <?php
 458          } else {
 459  ?>
 460          <ul>
 461  <?php
 462          $cat_args['title_li'] = '';
 463          wp_list_categories(apply_filters('widget_categories_args', $cat_args));
 464  ?>
 465          </ul>
 466  <?php
 467          }
 468  
 469          echo $after_widget;
 470      }
 471  
 472  	function update( $new_instance, $old_instance ) {
 473          $instance = $old_instance;
 474          $instance['title'] = strip_tags($new_instance['title']);
 475          $instance['count'] = $new_instance['count'] ? 1 : 0;
 476          $instance['hierarchical'] = $new_instance['hierarchical'] ? 1 : 0;
 477          $instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
 478  
 479          return $instance;
 480      }
 481  
 482  	function form( $instance ) {
 483          //Defaults
 484          $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
 485          $title = esc_attr( $instance['title'] );
 486          $count = isset($instance['count']) ? (bool) $instance['count'] :false;
 487          $hierarchical = isset( $instance['hierarchical'] ) ? (bool) $instance['hierarchical'] : false;
 488          $dropdown = isset( $instance['dropdown'] ) ? (bool) $instance['dropdown'] : false;
 489  ?>
 490          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:' ); ?></label>
 491          <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
 492  
 493          <p><input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>"<?php checked( $dropdown ); ?> />
 494          <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e( 'Show as dropdown' ); ?></label><br />
 495  
 496          <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>"<?php checked( $count ); ?> />
 497          <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e( 'Show post counts' ); ?></label><br />
 498  
 499          <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('hierarchical'); ?>" name="<?php echo $this->get_field_name('hierarchical'); ?>"<?php checked( $hierarchical ); ?> />
 500          <label for="<?php echo $this->get_field_id('hierarchical'); ?>"><?php _e( 'Show hierarchy' ); ?></label></p>
 501  <?php
 502      }
 503  
 504  }
 505  
 506  /**
 507   * Recent_Posts widget class
 508   *
 509   * @since 2.8.0
 510   */
 511  class WP_Widget_Recent_Posts extends WP_Widget {
 512  
 513  	function WP_Widget_Recent_Posts() {
 514          $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "The most recent posts on your blog") );
 515          $this->WP_Widget('recent-posts', __('Recent Posts'), $widget_ops);
 516          $this->alt_option_name = 'widget_recent_entries';
 517  
 518          add_action( 'save_post', array(&$this, 'flush_widget_cache') );
 519          add_action( 'deleted_post', array(&$this, 'flush_widget_cache') );
 520          add_action( 'switch_theme', array(&$this, 'flush_widget_cache') );
 521      }
 522  
 523  	function widget($args, $instance) {
 524          $cache = wp_cache_get('widget_recent_posts', 'widget');
 525  
 526          if ( !is_array($cache) )
 527              $cache = array();
 528  
 529          if ( isset($cache[$args['widget_id']]) ) {
 530              echo $cache[$args['widget_id']];
 531              return;
 532          }
 533  
 534          ob_start();
 535          extract($args);
 536  
 537          $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title']);
 538          if ( !$number = (int) $instance['number'] )
 539              $number = 10;
 540          else if ( $number < 1 )
 541              $number = 1;
 542          else if ( $number > 15 )
 543              $number = 15;
 544  
 545          $r = new WP_Query(array('showposts' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1));
 546          if ($r->have_posts()) :
 547  ?>
 548          <?php echo $before_widget; ?>
 549          <?php if ( $title ) echo $before_title . $title . $after_title; ?>
 550          <ul>
 551          <?php  while ($r->have_posts()) : $r->the_post(); ?>
 552          <li><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?> </a></li>
 553          <?php endwhile; ?>
 554          </ul>
 555          <?php echo $after_widget; ?>
 556  <?php
 557              wp_reset_query();  // Restore global post data stomped by the_post().
 558          endif;
 559  
 560          $cache[$args['widget_id']] = ob_get_flush();
 561          wp_cache_add('widget_recent_posts', $cache, 'widget');
 562      }
 563  
 564  	function update( $new_instance, $old_instance ) {
 565          $instance = $old_instance;
 566          $instance['title'] = strip_tags($new_instance['title']);
 567          $instance['number'] = (int) $new_instance['number'];
 568          $this->flush_widget_cache();
 569  
 570          $alloptions = wp_cache_get( 'alloptions', 'options' );
 571          if ( isset($alloptions['widget_recent_entries']) )
 572              delete_option('widget_recent_entries');
 573  
 574          return $instance;
 575      }
 576  
 577  	function flush_widget_cache() {
 578          wp_cache_delete('widget_recent_posts', 'widget');
 579      }
 580  
 581  	function form( $instance ) {
 582          $title = isset($instance['title']) ? esc_attr($instance['title']) : '';
 583          if ( !isset($instance['number']) || !$number = (int) $instance['number'] )
 584              $number = 5;
 585  ?>
 586          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
 587          <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
 588  
 589          <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to show:'); ?></label>
 590          <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /><br />
 591          <small><?php _e('(at most 15)'); ?></small></p>
 592  <?php
 593      }
 594  }
 595  
 596  /**
 597   * Recent_Comments widget class
 598   *
 599   * @since 2.8.0
 600   */
 601  class WP_Widget_Recent_Comments extends WP_Widget {
 602  
 603  	function WP_Widget_Recent_Comments() {
 604          $widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'The most recent comments' ) );
 605          $this->WP_Widget('recent-comments', __('Recent Comments'), $widget_ops);
 606          $this->alt_option_name = 'widget_recent_comments';
 607  
 608          if ( is_active_widget(false, false, $this->id_base) )
 609              add_action( 'wp_head', array(&$this, 'recent_comments_style') );
 610  
 611          add_action( 'comment_post', array(&$this, 'flush_widget_cache') );
 612          add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') );
 613      }
 614  
 615  	function recent_comments_style() { ?>
 616      <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
 617  <?php
 618      }
 619  
 620  	function flush_widget_cache() {
 621          wp_cache_delete('recent_comments', 'widget');
 622      }
 623  
 624  	function widget( $args, $instance ) {
 625          global $wpdb, $comments, $comment;
 626  
 627          extract($args, EXTR_SKIP);
 628          $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title']);
 629          if ( !$number = (int) $instance['number'] )
 630              $number = 5;
 631          else if ( $number < 1 )
 632              $number = 1;
 633          else if ( $number > 15 )
 634              $number = 15;
 635  
 636          if ( !$comments = wp_cache_get( 'recent_comments', 'widget' ) ) {
 637              $comments = $wpdb->get_results("SELECT $wpdb->comments.* FROM $wpdb->comments JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID WHERE comment_approved = '1' AND post_status = 'publish' ORDER BY comment_date_gmt DESC LIMIT 15");
 638              wp_cache_add( 'recent_comments', $comments, 'widget' );
 639          }
 640  
 641          $comments = array_slice( (array) $comments, 0, $number );
 642  ?>
 643          <?php echo $before_widget; ?>
 644              <?php if ( $title ) echo $before_title . $title . $after_title; ?>
 645              <ul id="recentcomments"><?php
 646              if ( $comments ) : foreach ( (array) $comments as $comment) :
 647              echo  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
 648              endforeach; endif;?></ul>
 649          <?php echo $after_widget; ?>
 650  <?php
 651      }
 652  
 653  	function update( $new_instance, $old_instance ) {
 654          $instance = $old_instance;
 655          $instance['title'] = strip_tags($new_instance['title']);
 656          $instance['number'] = (int) $new_instance['number'];
 657          $this->flush_widget_cache();
 658  
 659          $alloptions = wp_cache_get( 'alloptions', 'options' );
 660          if ( isset($alloptions['widget_recent_comments']) )
 661              delete_option('widget_recent_comments');
 662  
 663          return $instance;
 664      }
 665  
 666  	function form( $instance ) {
 667          $title = isset($instance['title']) ? esc_attr($instance['title']) : '';
 668          $number = isset($instance['number']) ? absint($instance['number']) : 5;
 669  ?>
 670          <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
 671          <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
 672  
 673          <p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of comments to show:'); ?></label>
 674          <input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /><br />
 675          <small><?php _e('(at most 15)'); ?></small></p>
 676  <?php
 677      }
 678  }
 679  
 680  /**
 681   * RSS widget class
 682   *
 683   * @since 2.8.0
 684   */
 685  class WP_Widget_RSS extends WP_Widget {
 686  
 687  	function WP_Widget_RSS() {
 688          $widget_ops = array( 'description' => __('Entries from any RSS or Atom feed') );
 689          $control_ops = array( 'width' => 400, 'height' => 200 );
 690          $this->WP_Widget( 'rss', __('RSS'), $widget_ops, $control_ops );
 691      }
 692  
 693  	function widget($args, $instance) {
 694  
 695          if ( isset($instance['error']) && $instance['error'] )
 696              return;
 697  
 698          extract($args, EXTR_SKIP);
 699  
 700          $url = $instance['url'];
 701          while ( stristr($url, 'http') != $url )
 702              $url = substr($url, 1);
 703  
 704          if ( empty($url) )
 705              return;
 706  
 707          $rss = fetch_feed($url);
 708          $title = $instance['title'];
 709          $desc = '';
 710          $link = '';
 711  
 712          if ( ! is_wp_error($rss) ) {
 713              $desc = esc_attr(strip_tags(@html_entity_decode($rss->get_description(), ENT_QUOTES, get_option('blog_charset'))));
 714              if ( empty($title) )
 715                  $title = esc_html(strip_tags($rss->get_title()));
 716              $link = esc_url(strip_tags($rss->get_permalink()));
 717              while ( stristr($link, 'http') != $link )
 718                  $link = substr($link, 1);
 719          }
 720  
 721          if ( empty($title) )
 722              $title = empty($desc) ? __('Unknown Feed') : $desc;
 723  
 724          $title = apply_filters('widget_title', $title );
 725          $url = esc_url(strip_tags($url));
 726          $icon = includes_url('images/rss.png');
 727          if ( $title )
 728              $title = "<a class='rsswidget' href='$url' title='" . esc_attr(__('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>";
 729  
 730          echo $before_widget;
 731          if ( $title )
 732              echo $before_title . $title . $after_title;
 733          wp_widget_rss_output( $rss, $instance );
 734          echo $after_widget;
 735  
 736          if ( ! is_wp_error($rss) )
 737              $rss->__destruct();
 738          unset($rss);
 739      }
 740  
 741  	function update($new_instance, $old_instance) {
 742          $testurl = $new_instance['url'] != $old_instance['url'];
 743          return wp_widget_rss_process( $new_instance, $testurl );
 744      }
 745  
 746  	function form($instance) {
 747  
 748          if ( empty($instance) )
 749              $instance = array( 'title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0 );
 750          $instance['number'] = $this->number;
 751  
 752          wp_widget_rss_form( $instance );
 753      }
 754  }
 755  
 756  /**
 757   * Display the RSS entries in a list.
 758   *
 759   * @since 2.5.0
 760   *
 761   * @param string|array|object $rss RSS url.
 762   * @param array $args Widget arguments.
 763   */
 764  function wp_widget_rss_output( $rss, $args = array() ) {
 765      if ( is_string( $rss ) ) {
 766          $rss = fetch_feed($rss);
 767      } elseif ( is_array($rss) && isset($rss['url']) ) {
 768          $args = $rss;
 769          $rss = fetch_feed($rss['url']);
 770      } elseif ( !is_object($rss) ) {
 771          return;
 772      }
 773  
 774      if ( is_wp_error($rss) ) {
 775          if ( is_admin() || current_user_can('manage_options') )
 776              echo '<p>' . sprintf( __('<strong>RSS Error</strong>: %s'), $rss->get_error_message() ) . '</p>';
 777          return;
 778      }
 779  
 780      $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0 );
 781      $args = wp_parse_args( $args, $default_args );
 782      extract( $args, EXTR_SKIP );
 783  
 784      $items = (int) $items;
 785      if ( $items < 1 || 20 < $items )
 786          $items = 10;
 787      $show_summary  = (int) $show_summary;
 788      $show_author   = (int) $show_author;
 789      $show_date     = (int) $show_date;
 790  
 791      if ( !$rss->get_item_quantity() ) {
 792          echo '<ul><li>' . __( 'An error has occurred; the feed is probably down. Try again later.' ) . '</li></ul>';
 793          $rss->__destruct(); 
 794          unset($rss);
 795          return;
 796      }
 797  
 798      echo '<ul>';
 799      foreach ( $rss->get_items(0, $items) as $item ) {
 800          $link = $item->get_link();
 801          while ( stristr($link, 'http') != $link )
 802              $link = substr($link, 1);
 803          $link = esc_url(strip_tags($link));
 804          $title = esc_attr(strip_tags($item->get_title()));
 805          if ( empty($title) )
 806              $title = __('Untitled');
 807  
 808          $desc = str_replace(array("\n", "\r"), ' ', esc_attr(strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset')))));
 809          $desc = wp_html_excerpt( $desc, 360 ) . ' [&hellip;]';
 810          $desc = esc_html( $desc );
 811  
 812          if ( $show_summary ) {
 813              $summary = "<div class='rssSummary'>$desc</div>";
 814          } else {
 815              $summary = '';
 816          }
 817  
 818          $date = '';
 819          if ( $show_date ) {
 820              $date = $item->get_date();
 821  
 822              if ( $date ) {
 823                  if ( $date_stamp = strtotime( $date ) )
 824                      $date = ' <span class="rss-date">' . date_i18n( get_option( 'date_format' ), $date_stamp ) . '</span>';
 825                  else
 826                      $date = '';
 827              }
 828          }
 829  
 830          $author = '';
 831          if ( $show_author ) {
 832              $author = $item->get_author();
 833              if ( is_object($author) ) {
 834                  $author = $author->get_name();
 835                  $author = ' <cite>' . esc_html( strip_tags( $author ) ) . '</cite>';
 836              }
 837          }
 838  
 839          if ( $link == '' ) {
 840              echo "<li>$title{$date}{$summary}{$author}</li>";
 841          } else {
 842              echo "<li><a class='rsswidget' href='$link' title='$desc'>$title</a>{$date}{$summary}{$author}</li>";
 843          }
 844      }
 845      echo '</ul>';
 846      $rss->__destruct(); 
 847      unset($rss);
 848  }
 849  
 850  
 851  
 852  /**
 853   * Display RSS widget options form.
 854   *
 855   * The options for what fields are displayed for the RSS form are all booleans
 856   * and are as follows: 'url', 'title', 'items', 'show_summary', 'show_author',
 857   * 'show_date'.
 858   *
 859   * @since 2.5.0
 860   *
 861   * @param array|string $args Values for input fields.
 862   * @param array $inputs Override default display options.
 863   */
 864  function wp_widget_rss_form( $args, $inputs = null ) {
 865  
 866      $default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true );
 867      $inputs = wp_parse_args( $inputs, $default_inputs );
 868      extract( $args );
 869      extract( $inputs, EXTR_SKIP);
 870  
 871      $number = esc_attr( $number );
 872      $title  = esc_attr( $title );
 873      $url    = esc_url( $url );
 874      $items  = (int) $items;
 875      if ( $items < 1 || 20 < $items )
 876          $items  = 10;
 877      $show_summary   = (int) $show_summary;
 878      $show_author    = (int) $show_author;
 879      $show_date      = (int) $show_date;
 880  
 881      if ( !empty($error) )
 882          echo '<p class="widget-error"><strong>' . sprintf( __('RSS Error: %s'), $error) . '</strong></p>';
 883  
 884      if ( $inputs['url'] ) :
 885  ?>
 886      <p><label for="rss-url-<?php echo $number; ?>"><?php _e('Enter the RSS feed URL here:'); ?></label>
 887      <input class="widefat" id="rss-url-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][url]" type="text" value="<?php echo $url; ?>" /></p>
 888  <?php endif; if ( $inputs['title'] ) : ?>
 889      <p><label for="rss-title-<?php echo $number; ?>"><?php _e('Give the feed a title (optional):'); ?></label>
 890      <input class="widefat" id="rss-title-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][title]" type="text" value="<?php echo $title; ?>" /></p>
 891  <?php endif; if ( $inputs['items'] ) : ?>
 892      <p><label for="rss-items-<?php echo $number; ?>"><?php _e('How many items would you like to display?'); ?></label>
 893      <select id="rss-items-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][items]">
 894  <?php
 895          for ( $i = 1; $i <= 20; ++$i )
 896              echo "<option value='$i' " . ( $items == $i ? "selected='selected'" : '' ) . ">$i</option>";
 897  ?>
 898      </select></p>
 899  <?php endif; if ( $inputs['show_summary'] ) : ?>
 900      <p><input id="rss-show-summary-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][show_summary]" type="checkbox" value="1" <?php if ( $show_summary ) echo 'checked="checked"'; ?>/>
 901      <label for="rss-show-summary-<?php echo $number; ?>"><?php _e('Display item content?'); ?></label></p>
 902  <?php endif; if ( $inputs['show_author'] ) : ?>
 903      <p><input id="rss-show-author-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][show_author]" type="checkbox" value="1" <?php if ( $show_author ) echo 'checked="checked"'; ?>/>
 904      <label for="rss-show-author-<?php echo $number; ?>"><?php _e('Display item author if available?'); ?></label></p>
 905  <?php endif; if ( $inputs['show_date'] ) : ?>
 906      <p><input id="rss-show-date-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][show_date]" type="checkbox" value="1" <?php if ( $show_date ) echo 'checked="checked"'; ?>/>
 907      <label for="rss-show-date-<?php echo $number; ?>"><?php _e('Display item date?'); ?></label></p>
 908  <?php
 909      endif;
 910      foreach ( array_keys($default_inputs) as $input ) :
 911          if ( 'hidden' === $inputs[$input] ) :
 912              $id = str_replace( '_', '-', $input );
 913  ?>
 914      <input type="hidden" id="rss-<?php echo $id; ?>-<?php echo $number; ?>" name="widget-rss[<?php echo $number; ?>][<?php echo $input; ?>]" value="<?php echo $$input; ?>" />
 915  <?php
 916          endif;
 917      endforeach;
 918  }
 919  
 920  /**
 921   * Process RSS feed widget data and optionally retrieve feed items.
 922   *
 923   * The feed widget can not have more than 20 items or it will reset back to the
 924   * default, which is 10.
 925   *
 926   * The resulting array has the feed title, feed url, feed link (from channel),
 927   * feed items, error (if any), and whether to show summary, author, and date.
 928   * All respectively in the order of the array elements.
 929   *
 930   * @since 2.5.0
 931   *
 932   * @param array $widget_rss RSS widget feed data. Expects unescaped data.
 933   * @param bool $check_feed Optional, default is true. Whether to check feed for errors.
 934   * @return array
 935   */
 936  function wp_widget_rss_process( $widget_rss, $check_feed = true ) {
 937      $items = (int) $widget_rss['items'];
 938      if ( $items < 1 || 20 < $items )
 939          $items = 10;
 940      $url           = esc_url_raw(strip_tags( $widget_rss['url'] ));
 941      $title         = trim(strip_tags( $widget_rss['title'] ));
 942      $show_summary  = (int) $widget_rss['show_summary'];
 943      $show_author   = (int) $widget_rss['show_author'];
 944      $show_date     = (int) $widget_rss['show_date'];
 945  
 946      if ( $check_feed ) {
 947          $rss = fetch_feed($url);
 948          $error = false;
 949          $link = '';
 950          if ( is_wp_error($rss) ) {
 951              $error = $rss->get_error_message();
 952          } else {
 953              $link = esc_url(strip_tags($rss->get_permalink()));
 954              while ( stristr($link, 'http') != $link )
 955                  $link = substr($link, 1);
 956  
 957              $rss->__destruct();
 958              unset($rss);
 959          }
 960      }
 961  
 962      return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date' );
 963  }
 964  
 965  /**
 966   * Tag cloud widget class
 967   *
 968   * @since 2.8.0
 969   */
 970  class WP_Widget_Tag_Cloud extends WP_Widget {
 971  
 972  	function WP_Widget_Tag_Cloud() {
 973          $widget_ops = array( 'description' => __( "Your most used tags in cloud format") );
 974          $this->WP_Widget('tag_cloud', __('Tag Cloud'), $widget_ops);
 975      }
 976  
 977  	function widget( $args, $instance ) {
 978          extract($args);
 979          $title = apply_filters('widget_title', empty($instance['title']) ? __('Tags') : $instance['title']);
 980  
 981          echo $before_widget;
 982          if ( $title )
 983              echo $before_title . $title . $after_title;
 984          echo '<div>';
 985          wp_tag_cloud(apply_filters('widget_tag_cloud_args', array()));
 986          echo "</div>\n";
 987          echo $after_widget;
 988      }
 989  
 990  	function update( $new_instance, $old_instance ) {
 991          $instance['title'] = strip_tags(stripslashes($new_instance['title']));
 992          return $instance;
 993      }
 994  
 995  	function form( $instance ) {
 996  ?>
 997      <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
 998      <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php if (isset ( $instance['title'])) {echo esc_attr( $instance['title'] );} ?>" /></p>
 999  <?php
1000      }
1001  }
1002  
1003  /**
1004   * Register all of the default WordPress widgets on startup.
1005   *
1006   * Calls 'widgets_init' action after all of the WordPress widgets have been
1007   * registered.
1008   *
1009   * @since 2.2.0
1010   */
1011  function wp_widgets_init() {
1012      if ( !is_blog_installed() )
1013          return;
1014  
1015      register_widget('WP_Widget_Pages');
1016  
1017      register_widget('WP_Widget_Calendar');
1018  
1019      register_widget('WP_Widget_Archives');
1020  
1021      register_widget('WP_Widget_Links');
1022  
1023      register_widget('WP_Widget_Meta');
1024  
1025      register_widget('WP_Widget_Search');
1026  
1027      register_widget('WP_Widget_Text');
1028  
1029      register_widget('WP_Widget_Categories');
1030  
1031      register_widget('WP_Widget_Recent_Posts');
1032  
1033      register_widget('WP_Widget_Recent_Comments');
1034  
1035      register_widget('WP_Widget_RSS');
1036  
1037      register_widget('WP_Widget_Tag_Cloud');
1038  
1039      do_action('widgets_init');
1040  }
1041  
1042  add_action('init', 'wp_widgets_init', 1);


Generated: Fri Jan 8 00:19:48 2010 Cross-referenced by PHPXref 0.7