Files
nurinda.co.id---old/wp-content/plugins/mashsharer/includes/debug/classes/MashDebug.class.php
T

273 lines
5.2 KiB
PHP

<?php
/* MashDebug
*
* Based on WP Log in browser by MZAWeb
* http://wordpress.org/plugins/wp-log-in-browser
*
* @package MASHSB
* @subpackage Classes/debug
* @copyright Copyright (c) 2014, René Hermenau
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
* @since 2.0.0
* @author MZAWeb
* @author Rene Hermenau
*
*/
if ( class_exists( "MashDebug" ) )
return;
class MashDebug implements iMashDebug {
private static $instance;
private $path;
private $interfaces = array();
private static $timers = array();
private static $memory = array();
public function __construct() {
$this->path = trailingslashit( dirname( dirname( __FILE__ ) ) );
$this->_get_interfaces();
add_action( 'init', array( $this, 'init' ) );
add_action( 'shutdown', array( $this, 'shutdown' ) );
}
/************* API **************/
/**
*
* @param mixed $var
* @param string $label
*
* @return MashDebug
*/
public function log( $var, $label = null ) {
$this->_run( 'log', array( $var, $label ) );
return $this;
}
/**
*
* @param mixed $var
* @param string $label
*
* @return MashDebug
*/
public function info( $var, $label = null ) {
$this->_run( 'info', array( $var, $label ) );
return $this;
}
/**
* @param mixed $var
* @param string $label
*
* @return MashDebug
*/
public function warn( $var, $label = null ) {
$this->_run( 'warn', array( $var, $label ) );
return $this;
}
/**
* @param mixed $var
* @param string $label
*
* @return MashDebug
*/
public function error( $var, $label = null ) {
$this->_run( 'error', array( $var, $label ) );
return $this;
}
/**
* @static
*
* @param string $key
* @param bool $log
*
* @return bool|float
*
*/
public function timer( $key, $log = false ) {
if ( !isset( self::$timers[$key] ) ) {
$time = microtime();
$time = explode( ' ', $time );
$time = $time[1] + $time[0];
self::$timers[$key] = $time;
return false;
} else {
$time = microtime();
$time = explode( ' ', $time );
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round( ( $finish - self::$timers[$key] ), 4 );
if ( $log )
$this->log( $total_time, $key );
unset( self::$timers[$key] );
return $total_time;
}
}
/**
* @static
*
* @param string $key
* @param bool $log
*
* @return bool|float
*
*/
public function memory( $key, $log = false ) {
if ( !isset( self::$memory[$key] ) ) {
$memory = memory_get_usage();
self::$memory[$key] = $memory;
return false;
} else {
$memory = memory_get_usage();
$total_memory = $memory - self::$memory[$key];
if ( $log )
$this->log( $total_memory, $key );
unset( self::$memory[$key] );
return $total_memory;
}
}
/************* API **************/
public function init() {
ob_start();
}
public function shutdown() {
if ( ob_get_level() )
ob_end_flush();
}
/**
* @return bool
*/
private function _should_run() {
global $mashsb_options;
//$enabled = apply_filters( 'wplinb-enabled', true );
$match_wp_debug = apply_filters( 'wplinb-match-wp-debug', false );
$enabled = isset($mashsb_options['debug_mode']) ? $mashsb_options['debug_mode'] : false;
if ( !$enabled )
return false;
if ( !$match_wp_debug )
return true;
if ( WP_DEBUG )
return true;
return false;
}
/**
* @param string $command
* @param array $params
*/
private function _run( $command, $params = array() ) {
if ( !$this->_should_run() )
return;
if ( empty( $this->interfaces ) )
return;
foreach ( $this->interfaces as $interface ) {
try {
call_user_func_array( array( $interface, $command ), $params );
} catch ( Exception $e ) {
}
}
}
/**
*
*/
private function _get_interfaces() {
// This will come from the admin config
$selected_interfaces = array( 'ChromePHP' );
$selected_interfaces = apply_filters( 'wplinb-selected-interfaces', $selected_interfaces );
foreach ( (array)$selected_interfaces as $interface_name ) {
$interface = $this->_get_interface( $interface_name );
if ( !empty( $interface ) )
$this->interfaces[] = $interface;
}
}
/**
* @param $interface_name
*
* @return mixed|null|WPChromePHP
*/
private function _get_interface( $interface_name ) {
switch ( $interface_name ) {
case 'ChromePHP':
include $this->path . 'browsers/WPChromePHP.class.php';
$interface = new WPChromePHP();
break;
default:
$interface = apply_filters( 'wplinb-get-interface', null, $interface_name );
if ( $interface && !in_array( 'iMashDebug', class_implements( $interface ) ) )
$interface = null;
break;
}
return $interface;
}
/**
* @static
* @return MashDebug
*
* Return an instance of this class. Singleton.
*/
public static function instance() {
if ( !isset( self::$instance ) ) {
$className = __CLASS__;
self::$instance = new $className;
}
return self::$instance;
}
}
if ( !function_exists( 'mashdebug' ) ) {
/**
* Returns a MashDebug instance.
*
* @return MashDebug
*/
function mashdebug() {
return MashDebug::instance();
}
}