Make WordPress Core

Changeset 10808


Ignore:
Timestamp:
03/17/2009 11:44:36 PM (16 years ago)
Author:
ryan
Message:

Introduce singleton widget factory

Location:
trunk
Files:
3 edited

Legend:

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

    r10807 r10808  
    12201220        return;
    12211221
    1222     new WP_Widget_Pages();
    1223 
    1224     new WP_Widget_Calendar();
    1225 
    1226     new WP_Widget_Archives();
    1227 
    1228     new WP_Widget_Links();
    1229 
    1230     new WP_Widget_Meta();
    1231 
    1232     new WP_Widget_Search();
    1233 
    1234     new WP_Widget_Text();
     1222    register_widget('WP_Widget_Pages');
     1223
     1224    register_widget('WP_Widget_Calendar');
     1225
     1226    register_widget('WP_Widget_Archives');
     1227
     1228    register_widget('WP_Widget_Links');
     1229
     1230    register_widget('WP_Widget_Meta');
     1231
     1232    register_widget('WP_Widget_Search');
     1233
     1234    register_widget('WP_Widget_Text');
    12351235
    12361236    $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "The most recent posts on your blog") );
  • trunk/wp-includes/widgets.php

    r10807 r10808  
    4343$wp_registered_widget_controls = array();
    4444$wp_registered_widget_updates = array();
     45
     46/**
     47 * Singleton that registers and instantiates WP_Widget classes.
     48 *
     49 * @package WordPress
     50 * @subpackage Widgets
     51 * @since 2.8
     52 */
     53class WP_Widget_Factory {
     54    var $widgets = array();
     55
     56    function WP_Widget_Factory() {
     57        add_action( 'widgets_init', array( &$this, '_register_widgets' ), 100 );
     58    }
     59
     60    function register($widget_class) {
     61        $this->widgets[] = new $widget_class();
     62    }
     63
     64    function _register_widgets() {
     65        foreach ( $this->widgets as $widget )
     66            $widget->_register();
     67    }
     68}
    4569
    4670/**
     
    108132        $this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) );
    109133
    110         add_action( 'widgets_init', array( &$this, 'register' ) );
     134        //add_action( 'widgets_init', array( &$this, '_register' ) );
    111135    }
    112136
     
    125149    /** Registers this widget-type.
    126150     *  Called during the 'widgets_init' action. */
    127     function register() {
     151    function _register() {
    128152        $settings = $this->get_settings();
    129153
     
    288312
    289313/* Template tags & API functions */
     314
     315/**
     316 * Register a widget
     317 *
     318 * Registers a WP_Widget widget
     319 *
     320 * @since 2.8.0
     321 *
     322 * @see WP_Widget
     323 * @see WP_Widget_Factory
     324 * @uses WP_Widget_Factory
     325 *
     326 * @param string $widget_class The name of a class that extends WP_Widget
     327 */
     328function register_widget($widget_class) {
     329    global $wp_widget_factory;
     330
     331    $wp_widget_factory->register($widget_class);
     332}
    290333
    291334/**
  • trunk/wp-settings.php

    r10795 r10808  
    590590$wp           =& new WP();
    591591
     592/**
     593 * WordPress Widget Factory Object
     594 * @global object $wp_widget_factory
     595 * @since 2.8.0
     596 */
     597$wp_widget_factory =& new WP_Widget_Factory();
     598
    592599do_action('setup_theme');
    593600
Note: See TracChangeset for help on using the changeset viewer.