singleton. * * @since 2.0.9.1 */ private function __construct() { $debug = false; if ( isset( $_GET['cs-explain'] ) ) { $debug = true; self::set_explain( $_GET['cs-explain'] ); } if ( false === $debug && isset( $_SESSION ) && isset( $_SESSION['cs-explain'] ) && 'on' == $_SESSION['cs_explain'] ) { $debug = true; } if ( false === $debug ) { return; } if ( ! session_id() ) { session_start(); } if ( is_admin() ) { add_action( 'cs_widget_header', array( $this, 'widget_header' ) ); add_action( 'cs_ajax_request', array( $this, 'handle_ajax' ) ); } else { if ( self::do_explain() ) { add_action( 'cs_explain', array( $this, 'add_info' ), 10, 2 ); add_action( 'wp_footer', array( $this, 'show_infos' ) ); add_action( 'dynamic_sidebar_before', array( $this, 'before_sidebar' ), 0, 2 ); add_action( 'dynamic_sidebar_after', array( $this, 'after_sidebar' ), 0, 2 ); } } } /** * Called by action 'cs_widget_header'. Output the export/import button in * the widget header. * * @since 2.0.9.1 */ public function widget_header() { /* $state = self::do_explain() ? 'on' : 'off'; ?> 'ERR', ); switch ( $ajax_action ) { case 'explain': $handle_it = true; break; } if ( ! $handle_it ) { return false; } $state = @$_POST['state']; switch ( $ajax_action ) { case 'explain': self::set_explain( $state ); $req->status = 'OK'; $req->state = self::do_explain() ? 'on' : 'off'; break; } self::json_response( $req ); } /** * Returns true if the "explain mode" is enabled. * Explain mode will display additional information in the front-end of the * website on why which sidebar/widget is displayed. * This is a per-user option (stored in current session) * * @since 2.0.9.1 * @return boolean */ public static function do_explain() { return isset( $_SESSION['cs-explain'] ) && is_string( $_SESSION['cs-explain'] ) && 'on' == $_SESSION['cs-explain']; } /** * Sets the explain state * * @since 2.0.9.1 * @param string $state [on|off] */ public static function set_explain( $state ) { if ( 'on' != $state ) { $state = 'off'; } $_SESSION['cs-explain'] = $state; } /** * Adds an info to the explanation output. * * @since 2.0.9.1 */ public function add_info( $info, $new_item = false ) { if ( $new_item ) { $this->infos[] = $info; } else { $this->infos[ count( $this->infos ) - 1 ] .= '
' . $info; } } /** * Outputs the collected information to the webpage. * * @since 2.0.9.1 */ public function show_infos() { ?>

Sidebar Infos

Turn off explanations
' . '
%1$s
' . @$wp_registered_sidebars[ $index ]['before_widget']; $wp_registered_sidebars[ $index ]['after_widget'] = @$wp_registered_sidebars[ $index ]['after_widget'] . '
' . ''; ?>