app/code/community/Ecocode/Profiler/overwrite/Mage.php
<?php
$mageRoot = MAGENTO_ROOT . DIRECTORY_SEPARATOR;
$mageVarDir = $mageRoot . 'var' . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR;
$mageFile = $mageRoot . 'app' . DIRECTORY_SEPARATOR . 'Mage.php';
$mageMd5 = md5_file($mageFile);
$mageCacheFile = Ecocode_Profiler_Helper_Data::getOverwriteDir() . 'Original_Mage_' . Ecocode_Profiler_Helper_Data::getVersion() . '-' . $mageMd5 . '.php';
if (!file_exists($mageCacheFile)) {
$mageCode = file_get_contents($mageFile);
$replace = [
'final class Mage' => 'class MageOriginal',
' private ' => ' protected ',
"define('BP', dirname(dirname(__FILE__)));" => '',
"Mage::register('original_include_path', get_include_path());" => '$originalIncludePath = get_include_path();',
"Mage::registry('original_include_path')" => '$originalIncludePath',
'new Mage_Core_Model_App()' => 'new Ecocode_Profiler_Model_AppDev()',
'self::printException($e);' => 'throw $e;'
];
$mageCode = str_replace(array_keys($replace), array_values($replace), $mageCode);
$replace = [
'/(?<!= )self::/' => 'static::'
];
$mageCode = preg_replace(array_keys($replace), array_values($replace), $mageCode);
file_put_contents($mageCacheFile, $mageCode);
}
//register overwrite
Ecocode_Profiler_Autoloader::getAutoloader()
->addToClassMap('MageOriginal', $mageCacheFile);
class Mage extends MageOriginal
{
protected static $logChannels = [];
protected static $logger;
protected static $loggerDebugHandler;
/**
* @return Ecocode_Profiler_Model_Logger
*/
public static function getLogger($channel = null)
{
if ($channel === null) {
return static::getDefaultLogger();
}
if (!isset(static::$logChannels[$channel])) {
static::$logChannels[$channel] = static::getNewLogger($channel);
}
return static::$logChannels[$channel];
}
public static function getDefaultLogger()
{
if (static::$logger === null) {
static::$logger = static::getNewLogger('default');
}
return static::$logger;
}
protected static function getNewLogger($channel)
{
if (!@class_exists('\Monolog\Logger')) {
return new Ecocode_Profiler_Model_NullLogger();
}
if (static::$loggerDebugHandler === null) {
static::$loggerDebugHandler = new Ecocode_Profiler_Model_Logger_DebugHandler();
}
return new Ecocode_Profiler_Model_Logger(
$channel,
[static::$loggerDebugHandler]
);
}
public static function log($message, $level = null, $file = '', $forceLog = false)
{
$level = is_null($level) ? Zend_Log::DEBUG : $level;
$file = empty($file) ? 'system.log' : $file;
$channel = preg_replace('/(\..+)$/', '', $file);
static::getLogger($channel)->mageLog($level, $message);
return parent::log($message, $level, $file, $forceLog);
}
/**
* @codeCoverageIgnore
*/
public static function terminate()
{
self::dispatchDebugEvent('mage_terminate');
}
/**
* @codeCoverageIgnore
*
* @param $name
* @param array $data
* @return Mage_Core_Model_App
*/
public static function dispatchDebugEvent($name, array $data = [])
{
$data['debug'] = true;
return parent::dispatchEvent($name, $data);
}
/**
* @codeCoverageIgnore
* @return []
*/
public static function getAllRegistryEntries()
{
return static::$_registry;
}
}
Mage::register('original_include_path', get_include_path());