????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.191 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/self/root/var/www/www.astacus.eu/wp-includes/ |
Upload File : |
<?php
/**
* Widget API: WP_Widget_Factory class
*
* @package WordPress
* @subpackage Widgets
* @since 4.4.0
*/
/**
* Singleton that registers and instantiates WP_Widget classes.
*
* @since 2.8.0
* @since 4.4.0 Moved to its own file from wp-includes/widgets.php
*/
class WP_Widget_Factory {
/**
* Widgets array.
*
* @since 2.8.0
* @var array
*/
public $widgets = array();
/**
* PHP5 constructor.
*
* @since 4.3.0
*/
public function __construct() {
add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 );
}
/**
* PHP4 constructor.
*
* @since 2.8.0
*/
public function WP_Widget_Factory() {
_deprecated_constructor( 'WP_Widget_Factory', '4.2.0' );
self::__construct();
}
/**
* Memory for the number of times unique class instances have been hashed.
*
* This can be eliminated in favor of straight spl_object_hash() when 5.3
* is the minimum requirement for PHP.
*
* @since 4.6.0
* @var array
*
* @see WP_Widget_Factory::hash_object()
*/
private $hashed_class_counts = array();
/**
* Hashes an object, doing fallback of `spl_object_hash()` if not available.
*
* This can be eliminated in favor of straight spl_object_hash() when 5.3
* is the minimum requirement for PHP.
*
* @since 4.6.0
*
* @param WP_Widget $widget Widget.
* @return string Object hash.
*/
private function hash_object( $widget ) {
if ( function_exists( 'spl_object_hash' ) ) {
return spl_object_hash( $widget );
} else {
$class_name = get_class( $widget );
$hash = $class_name;
if ( ! isset( $widget->_wp_widget_factory_hash_id ) ) {
if ( ! isset( $this->hashed_class_counts[ $class_name ] ) ) {
$this->hashed_class_counts[ $class_name ] = 0;
}
$this->hashed_class_counts[ $class_name ] += 1;
$widget->_wp_widget_factory_hash_id = $this->hashed_class_counts[ $class_name ];
}
$hash .= ':' . $widget->_wp_widget_factory_hash_id;
return $hash;
}
}
/**
* Registers a widget subclass.
*
* @since 2.8.0
* @since 4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object
* instead of simply a `WP_Widget` subclass name.
*
* @param string|WP_Widget $widget Either the name of a `WP_Widget` subclass or an instance of a `WP_Widget` subclass.
*/
public function register( $widget ) {
if ( $widget instanceof WP_Widget ) {
$this->widgets[ $this->hash_object( $widget ) ] = $widget;
} else {
$this->widgets[ $widget ] = new $widget();
}
}
/**
* Un-registers a widget subclass.
*
* @since 2.8.0
* @since 4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object
* instead of simply a `WP_Widget` subclass name.
*
* @param string|WP_Widget $widget Either the name of a `WP_Widget` subclass or an instance of a `WP_Widget` subclass.
*/
public function unregister( $widget ) {
if ( $widget instanceof WP_Widget ) {
unset( $this->widgets[ $this->hash_object( $widget ) ] );
} else {
unset( $this->widgets[ $widget ] );
}
}
/**
* Serves as a utility method for adding widgets to the registered widgets global.
*
* @since 2.8.0
*
* @global array $wp_registered_widgets
*/
public function _register_widgets() {
global $wp_registered_widgets;
$keys = array_keys($this->widgets);
$registered = array_keys($wp_registered_widgets);
$registered = array_map('_get_widget_id_base', $registered);
foreach ( $keys as $key ) {
// don't register new widget if old widget with the same id is already registered
if ( in_array($this->widgets[$key]->id_base, $registered, true) ) {
unset($this->widgets[$key]);
continue;
}
$this->widgets[$key]->_register();
}
}
}