Compare commits
8 Commits
dev_1.x_tw
...
main
Author | SHA1 | Date | |
---|---|---|---|
81acc92151 | |||
0c79c1c77a | |||
da26d03d58 | |||
b1897c8ecf | |||
09608bfd91 | |||
4c21a850d8 | |||
a9c1863a8e | |||
75146c8a08 |
@ -15,10 +15,12 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace D3\DebugBar\Application\Component;
|
namespace D3\DebugBar\Application\Component;
|
||||||
|
|
||||||
|
use D3\DebugBar\Application\Models\AvailabilityCheck;
|
||||||
use D3\DebugBar\Application\Models\Collectors\OxidConfigCollector;
|
use D3\DebugBar\Application\Models\Collectors\OxidConfigCollector;
|
||||||
use D3\DebugBar\Application\Models\Collectors\OxidShopCollector;
|
use D3\DebugBar\Application\Models\Collectors\OxidShopCollector;
|
||||||
use D3\DebugBar\Application\Models\Collectors\OxidVersionCollector;
|
use D3\DebugBar\Application\Models\Collectors\OxidVersionCollector;
|
||||||
use D3\DebugBar\Application\Models\Collectors\SmartyCollector;
|
use D3\DebugBar\Application\Models\Collectors\SmartyCollector;
|
||||||
|
use D3\DebugBar\Application\Models\Exceptions\UnavailableException;
|
||||||
use D3\DebugBar\Application\Models\TimeDataCollectorHandler;
|
use D3\DebugBar\Application\Models\TimeDataCollectorHandler;
|
||||||
use DebugBar\Bridge\DoctrineCollector;
|
use DebugBar\Bridge\DoctrineCollector;
|
||||||
use DebugBar\Bridge\MonologCollector;
|
use DebugBar\Bridge\MonologCollector;
|
||||||
@ -43,8 +45,8 @@ use ReflectionException;
|
|||||||
|
|
||||||
class DebugBarComponent extends BaseController
|
class DebugBarComponent extends BaseController
|
||||||
{
|
{
|
||||||
/** @var DebugBar */
|
/** @var DebugBar|null */
|
||||||
protected $debugBar;
|
protected $debugBar = null;
|
||||||
/** @var JavascriptRenderer */
|
/** @var JavascriptRenderer */
|
||||||
protected $debugBarRenderer;
|
protected $debugBarRenderer;
|
||||||
|
|
||||||
@ -63,7 +65,7 @@ class DebugBarComponent extends BaseController
|
|||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
if (false === isAdmin()) {
|
if (AvailabilityCheck::isAvailable()) {
|
||||||
$debugbar = new DebugBar();
|
$debugbar = new DebugBar();
|
||||||
|
|
||||||
$this->addCollectors($debugbar);
|
$this->addCollectors($debugbar);
|
||||||
@ -180,6 +182,10 @@ class DebugBarComponent extends BaseController
|
|||||||
*/
|
*/
|
||||||
public function addTimelineMessures(): void
|
public function addTimelineMessures(): void
|
||||||
{
|
{
|
||||||
|
if (false === $this->debugBar instanceof DebugBar) {
|
||||||
|
throw new UnavailableException();
|
||||||
|
}
|
||||||
|
|
||||||
$collectors = $this->debugBar->getCollectors();
|
$collectors = $this->debugBar->getCollectors();
|
||||||
$collectors['time'] = TimeDataCollectorHandler::getInstance();
|
$collectors['time'] = TimeDataCollectorHandler::getInstance();
|
||||||
|
|
||||||
@ -191,9 +197,14 @@ class DebugBarComponent extends BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @return DebugBar
|
* @return DebugBar
|
||||||
|
* @throws UnavailableException
|
||||||
*/
|
*/
|
||||||
public function getDebugBar(): DebugBar
|
public function getDebugBar(): DebugBar
|
||||||
{
|
{
|
||||||
|
if (false === $this->debugBar instanceof DebugBar) {
|
||||||
|
throw new UnavailableException();
|
||||||
|
}
|
||||||
|
|
||||||
return $this->debugBar;
|
return $this->debugBar;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
83
Application/Models/AvailabilityCheck.php
Normal file
83
Application/Models/AvailabilityCheck.php
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace D3\DebugBar\Application\Models;
|
||||||
|
|
||||||
|
use OxidEsales\Eshop\Application\Model\User;
|
||||||
|
use OxidEsales\Eshop\Core\Registry;
|
||||||
|
|
||||||
|
class AvailabilityCheck
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function isAvailable(): bool
|
||||||
|
{
|
||||||
|
return !isAdmin() && (
|
||||||
|
Registry::getConfig()->getShopConfVar('d3debugbar_showForAdminUsersOnly') != true ||
|
||||||
|
self::userIsMallAdmin()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function userIsMallAdmin(): bool
|
||||||
|
{
|
||||||
|
$user = Registry::getConfig()->getUser();
|
||||||
|
return $user != null &&
|
||||||
|
$user->isMallAdmin();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function ifDebugBarNotSet(): bool
|
||||||
|
{
|
||||||
|
global $debugBarSet;
|
||||||
|
|
||||||
|
return $debugBarSet !== 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function markDebugBarAsSet(): void
|
||||||
|
{
|
||||||
|
global $debugBarSet;
|
||||||
|
|
||||||
|
$debugBarSet = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function ifNoErrorOccured(): bool
|
||||||
|
{
|
||||||
|
global $debugBarErrorOccured;
|
||||||
|
|
||||||
|
return $debugBarErrorOccured !== 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function markErrorOccured(): void
|
||||||
|
{
|
||||||
|
global $debugBarErrorOccured;
|
||||||
|
|
||||||
|
$debugBarErrorOccured = 1;
|
||||||
|
}
|
||||||
|
}
|
@ -27,7 +27,7 @@ class DebugBarHandler
|
|||||||
*/
|
*/
|
||||||
public function setErrorHandler(): void
|
public function setErrorHandler(): void
|
||||||
{
|
{
|
||||||
if ($this->d3CanActivateDebugBar()) {
|
if (AvailabilityCheck::isAvailable()) {
|
||||||
/** @var callable $callable */
|
/** @var callable $callable */
|
||||||
$callable = [
|
$callable = [
|
||||||
new DebugBarErrorHandler(),
|
new DebugBarErrorHandler(),
|
||||||
@ -50,7 +50,7 @@ class DebugBarHandler
|
|||||||
*/
|
*/
|
||||||
public function setExceptionHandler(): void
|
public function setExceptionHandler(): void
|
||||||
{
|
{
|
||||||
if ($this->d3CanActivateDebugBar()) {
|
if (AvailabilityCheck::isAvailable()) {
|
||||||
set_exception_handler([
|
set_exception_handler([
|
||||||
new DebugBarExceptionHandler(),
|
new DebugBarExceptionHandler(),
|
||||||
'handleUncaughtException',
|
'handleUncaughtException',
|
||||||
@ -63,7 +63,7 @@ class DebugBarHandler
|
|||||||
*/
|
*/
|
||||||
public function addDebugBarComponent(): void
|
public function addDebugBarComponent(): void
|
||||||
{
|
{
|
||||||
if ($this->d3CanActivateDebugBar()) {
|
if (AvailabilityCheck::isAvailable()) {
|
||||||
$userComponentNames = Registry::getConfig()->getConfigParam('aUserComponentNames');
|
$userComponentNames = Registry::getConfig()->getConfigParam('aUserComponentNames');
|
||||||
$d3CmpName = DebugBarComponent::class;
|
$d3CmpName = DebugBarComponent::class;
|
||||||
$blDontUseCache = 1;
|
$blDontUseCache = 1;
|
||||||
@ -78,12 +78,4 @@ class DebugBarHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function d3CanActivateDebugBar(): bool
|
|
||||||
{
|
|
||||||
return false === isAdmin();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
22
Application/Models/Exceptions/UnavailableException.php
Normal file
22
Application/Models/Exceptions/UnavailableException.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace D3\DebugBar\Application\Models\Exceptions;
|
||||||
|
|
||||||
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
||||||
|
|
||||||
|
class UnavailableException extends StandardException
|
||||||
|
{
|
||||||
|
}
|
26
Application/views/admin/de/debugbar_lang.php
Normal file
26
Application/views/admin/de/debugbar_lang.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$sLangName = "Deutsch";
|
||||||
|
// -------------------------------
|
||||||
|
// RESOURCE IDENTITFIER = STRING
|
||||||
|
// -------------------------------
|
||||||
|
$aLang = [
|
||||||
|
|
||||||
|
//Navigation
|
||||||
|
'charset' => 'UTF-8',
|
||||||
|
'SHOP_MODULE_GROUP_d3debugbar_general' => 'Grundeinstellungen',
|
||||||
|
'SHOP_MODULE_d3debugbar_showForAdminUsersOnly' => 'DebugBar nur anzeigen, wenn angemeldeter Benutzer ein Adminbenutzer ist',
|
||||||
|
];
|
26
Application/views/admin/en/debugbar_lang.php
Normal file
26
Application/views/admin/en/debugbar_lang.php
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$sLangName = "English";
|
||||||
|
// -------------------------------
|
||||||
|
// RESOURCE IDENTITFIER = STRING
|
||||||
|
// -------------------------------
|
||||||
|
$aLang = [
|
||||||
|
|
||||||
|
//Navigation
|
||||||
|
'charset' => 'UTF-8',
|
||||||
|
'SHOP_MODULE_GROUP_d3debugbar_general' => 'Default settings',
|
||||||
|
'SHOP_MODULE_d3debugbar_showForAdminUsersOnly' => 'show DebugBar only if logged in user is an admin user',
|
||||||
|
];
|
18
CHANGELOG.md
18
CHANGELOG.md
@ -4,7 +4,23 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [Unreleased](https://git.d3data.de/D3Public/DebugBar/compare/1.1.0.0...rel_1.x)
|
## [Unreleased](https://git.d3data.de/D3Public/DebugBar/compare/1.2.0.0...rel_1.x)
|
||||||
|
|
||||||
|
## [1.2.0.0](https://git.d3data.de/D3Public/DebugBar/compare/1.1.0.0...1.2.0.0) - 2023-01-03
|
||||||
|
### Added
|
||||||
|
- make installable in OXID 6.5.x (CE 6.12 + 6.13)
|
||||||
|
- collect unhandled exceptions, errors from Smarty and PHP
|
||||||
|
- show warning on activation if asset files doesn't exist
|
||||||
|
- catch all possible exceptions and errors
|
||||||
|
- add option to show DebugBar only if logged in user is an admin user
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- remove extra config item for current theme
|
||||||
|
- throw error exceptions on error levels only
|
||||||
|
- throw error type dependend exceptions
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- fix not existing component issue in admin panels login controller
|
||||||
|
|
||||||
## [1.1.0.0](https://git.d3data.de/D3Public/DebugBar/compare/1.0.0.0...1.1.0.0) - 2022-08-05
|
## [1.1.0.0](https://git.d3data.de/D3Public/DebugBar/compare/1.0.0.0...1.1.0.0) - 2022-08-05
|
||||||
### Added
|
### Added
|
||||||
|
@ -15,6 +15,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace D3\DebugBar\Core;
|
namespace D3\DebugBar\Core;
|
||||||
|
|
||||||
|
use D3\DebugBar\Application\Models\AvailabilityCheck;
|
||||||
use D3\DebugBar\Application\Models\Exceptions\CompileErrorException;
|
use D3\DebugBar\Application\Models\Exceptions\CompileErrorException;
|
||||||
use D3\DebugBar\Application\Models\Exceptions\CoreErrorException;
|
use D3\DebugBar\Application\Models\Exceptions\CoreErrorException;
|
||||||
use D3\DebugBar\Application\Models\Exceptions\ParseException;
|
use D3\DebugBar\Application\Models\Exceptions\ParseException;
|
||||||
@ -39,8 +40,7 @@ class DebugBarErrorHandler
|
|||||||
*/
|
*/
|
||||||
public function callback(int $severity, string $message, string $file, int $line)
|
public function callback(int $severity, string $message, string $file, int $line)
|
||||||
{
|
{
|
||||||
global $debugBarErrorOccured;
|
AvailabilityCheck::markErrorOccured();
|
||||||
$debugBarErrorOccured = 1;
|
|
||||||
|
|
||||||
if (0 === error_reporting() || !(error_reporting() & $severity)) {
|
if (0 === error_reporting() || !(error_reporting() & $severity)) {
|
||||||
// This error code is not included in error_reporting.
|
// This error code is not included in error_reporting.
|
||||||
|
@ -16,6 +16,8 @@ declare(strict_types=1);
|
|||||||
namespace D3\DebugBar\Core;
|
namespace D3\DebugBar\Core;
|
||||||
|
|
||||||
use D3\DebugBar\Application\Component\DebugBarComponent;
|
use D3\DebugBar\Application\Component\DebugBarComponent;
|
||||||
|
use D3\DebugBar\Application\Models\AvailabilityCheck;
|
||||||
|
use D3\DebugBar\Application\Models\Exceptions\UnavailableException;
|
||||||
use DebugBar\DataCollector\ExceptionsCollector;
|
use DebugBar\DataCollector\ExceptionsCollector;
|
||||||
use DebugBar\DebugBarException;
|
use DebugBar\DebugBarException;
|
||||||
use OxidEsales\Eshop\Core\ConfigFile;
|
use OxidEsales\Eshop\Core\ConfigFile;
|
||||||
@ -42,7 +44,7 @@ class DebugBarExceptionHandler
|
|||||||
$defaultExceptionHandler->writeExceptionToLog($exception);
|
$defaultExceptionHandler->writeExceptionToLog($exception);
|
||||||
} catch (Throwable $loggerException) {
|
} catch (Throwable $loggerException) {
|
||||||
/**
|
/**
|
||||||
* Its not possible to get the logger from the DI container.
|
* It's not possible to get the logger from the DI container.
|
||||||
* Try again to log original exception (without DI container) in order to show the root cause of a problem.
|
* Try again to log original exception (without DI container) in order to show the root cause of a problem.
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
@ -50,13 +52,11 @@ class DebugBarExceptionHandler
|
|||||||
$logger = $loggerServiceFactory->getLogger();
|
$logger = $loggerServiceFactory->getLogger();
|
||||||
$logger->error($exception->getTraceAsString());
|
$logger->error($exception->getTraceAsString());
|
||||||
} catch (Throwable $throwableWithoutPossibilityToWriteToLogFile) {
|
} catch (Throwable $throwableWithoutPossibilityToWriteToLogFile) {
|
||||||
// It is not possible to log because e.g. the log file is not writable.
|
// It's not possible to log because e.g. the log file is not writable.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
global $debugBarSet;
|
if (AvailabilityCheck::isAvailable() && AvailabilityCheck::ifDebugBarNotSet()) {
|
||||||
|
|
||||||
if ($debugBarSet !== 1 && false === isAdmin()) {
|
|
||||||
try {
|
try {
|
||||||
/** @var DebugBarComponent $debugBarComponent */
|
/** @var DebugBarComponent $debugBarComponent */
|
||||||
$debugBarComponent = oxNew(DebugBarComponent::class);
|
$debugBarComponent = oxNew(DebugBarComponent::class);
|
||||||
@ -77,13 +77,13 @@ HTML;
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
HTML;
|
HTML;
|
||||||
$debugBarSet = 1;
|
AvailabilityCheck::markDebugBarAsSet();
|
||||||
echo $debugBarComponent->getRenderer()->render();
|
echo $debugBarComponent->getRenderer()->render();
|
||||||
echo <<<HTML
|
echo <<<HTML
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
HTML;
|
HTML;
|
||||||
} catch (DebugBarException $e) {
|
} catch (DebugBarException|UnavailableException $e) {
|
||||||
Registry::getLogger()->error($e->getMessage());
|
Registry::getLogger()->error($e->getMessage());
|
||||||
Registry::getUtilsView()->addErrorToDisplay($e);
|
Registry::getUtilsView()->addErrorToDisplay($e);
|
||||||
}
|
}
|
||||||
|
@ -15,15 +15,21 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace D3\DebugBar\Modules\Core;
|
namespace D3\DebugBar\Modules\Core;
|
||||||
|
|
||||||
|
use D3\DebugBar\Application\Models\AvailabilityCheck;
|
||||||
use D3\DebugBar\Core\DebugBarExceptionHandler;
|
use D3\DebugBar\Core\DebugBarExceptionHandler;
|
||||||
|
use OxidEsales\Eshop\Core\Exception\ExceptionHandler;
|
||||||
|
|
||||||
class Config_DebugBar extends Config_DebugBar_parent
|
class Config_DebugBar extends Config_DebugBar_parent
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @return DebugBarExceptionHandler
|
* @return DebugBarExceptionHandler|ExceptionHandler
|
||||||
*/
|
*/
|
||||||
protected function getExceptionHandler()
|
protected function getExceptionHandler()
|
||||||
{
|
{
|
||||||
|
if (AvailabilityCheck::isAvailable()) {
|
||||||
return new DebugBarExceptionHandler();
|
return new DebugBarExceptionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return parent::getExceptionHandler();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ declare(strict_types=1);
|
|||||||
namespace D3\DebugBar\Modules\Core;
|
namespace D3\DebugBar\Modules\Core;
|
||||||
|
|
||||||
use D3\DebugBar\Application\Component\DebugBarComponent;
|
use D3\DebugBar\Application\Component\DebugBarComponent;
|
||||||
|
use D3\DebugBar\Application\Models\AvailabilityCheck;
|
||||||
use D3\DebugBar\Application\Models\DebugBarHandler;
|
use D3\DebugBar\Application\Models\DebugBarHandler;
|
||||||
use D3\DebugBar\Core\DebugBarExceptionHandler;
|
use D3\DebugBar\Core\DebugBarExceptionHandler;
|
||||||
use OxidEsales\Eshop\Core\Exception\StandardException;
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
||||||
@ -45,14 +46,14 @@ class ShopControl_DebugBar extends ShopControl_DebugBar_parent
|
|||||||
{
|
{
|
||||||
parent::start();
|
parent::start();
|
||||||
|
|
||||||
global $debugBarSet, $debugBarErrorOccured;
|
if (AvailabilityCheck::isAvailable() && AvailabilityCheck::ifDebugBarNotSet() && AvailabilityCheck::ifNoErrorOccured()) {
|
||||||
|
|
||||||
if (!isAdmin() && $debugBarSet !== 1 && $debugBarErrorOccured !== 1) {
|
|
||||||
$activeView = Registry::getConfig()->getTopActiveView();
|
$activeView = Registry::getConfig()->getTopActiveView();
|
||||||
/** @var DebugBarComponent|null $debugBarComponent */
|
/** @var DebugBarComponent|null $debugBarComponent */
|
||||||
$debugBarComponent = $activeView->getComponent(DebugBarComponent::class);
|
$debugBarComponent = method_exists($activeView, 'getComponent')
|
||||||
|
? $activeView->getComponent(DebugBarComponent::class)
|
||||||
|
: null;
|
||||||
if ($debugBarComponent) {
|
if ($debugBarComponent) {
|
||||||
$debugBarSet = 1;
|
AvailabilityCheck::markDebugBarAsSet();
|
||||||
echo $debugBarComponent->getRenderer()->renderHead();
|
echo $debugBarComponent->getRenderer()->renderHead();
|
||||||
$debugBarComponent->addTimelineMessures();
|
$debugBarComponent->addTimelineMessures();
|
||||||
echo $debugBarComponent->getRenderer()->render();
|
echo $debugBarComponent->getRenderer()->render();
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use D3\DebugBar\Application\Component\DebugBarComponent;
|
use D3\DebugBar\Application\Component\DebugBarComponent;
|
||||||
|
use D3\DebugBar\Application\Models\AvailabilityCheck;
|
||||||
|
use D3\DebugBar\Application\Models\Exceptions\UnavailableException;
|
||||||
use D3\DebugBar\Application\Models\TimeDataCollectorHandler;
|
use D3\DebugBar\Application\Models\TimeDataCollectorHandler;
|
||||||
use DebugBar\DataCollector\MessagesCollector;
|
use DebugBar\DataCollector\MessagesCollector;
|
||||||
use DebugBar\DebugBarException;
|
use DebugBar\DebugBarException;
|
||||||
@ -60,7 +62,6 @@ function stopProfile(string $sProfileName): void
|
|||||||
$timeDataCollector = TimeDataCollectorHandler::getInstance();
|
$timeDataCollector = TimeDataCollectorHandler::getInstance();
|
||||||
$timeDataCollector->stopMeasure($hash);
|
$timeDataCollector->stopMeasure($hash);
|
||||||
|
|
||||||
|
|
||||||
global $aStartTimes;
|
global $aStartTimes;
|
||||||
global $executionCounts;
|
global $executionCounts;
|
||||||
if (!isset($executionCounts[$sProfileName])) {
|
if (!isset($executionCounts[$sProfileName])) {
|
||||||
@ -90,17 +91,25 @@ function debugVar($mVar, bool $blToFile = false): void
|
|||||||
fclose($f);
|
fclose($f);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!isAdmin()) {
|
try {
|
||||||
|
if (! AvailabilityCheck::isAvailable()) {
|
||||||
|
throw new UnavailableException();
|
||||||
|
}
|
||||||
$activeView = Registry::getConfig()->getTopActiveView();
|
$activeView = Registry::getConfig()->getTopActiveView();
|
||||||
/** @var DebugBarComponent $debugBarComponent */
|
/** @var DebugBarComponent|null $debugBarComponent */
|
||||||
$debugBarComponent = $activeView->getComponent(DebugBarComponent::class);
|
$debugBarComponent = method_exists($activeView, 'getComponent')
|
||||||
|
? $activeView->getComponent(DebugBarComponent::class)
|
||||||
|
: null;
|
||||||
|
if ($debugBarComponent === null) {
|
||||||
|
throw new UnavailableException();
|
||||||
|
}
|
||||||
/** @var MessagesCollector $messages */
|
/** @var MessagesCollector $messages */
|
||||||
$messages = $debugBarComponent->getDebugBar()->getCollector('messages');
|
$messages = $debugBarComponent->getDebugBar()->getCollector('messages');
|
||||||
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
|
||||||
//$location = $trace[1]['class'] . '::' . $trace[1]['function']. '(' . $trace[0]['line'] . ')';
|
//$location = $trace[1]['class'] . '::' . $trace[1]['function']. '(' . $trace[0]['line'] . ')';
|
||||||
$location = $trace[1]['class'] . '::' . $trace[1]['function'];
|
$location = $trace[1]['class'] . '::' . $trace[1]['function'];
|
||||||
$messages->addMessage($mVar, $location);
|
$messages->addMessage($mVar, $location);
|
||||||
} else {
|
} catch (UnavailableException $e) {
|
||||||
dumpVar($mVar, $blToFile);
|
dumpVar($mVar, $blToFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ class Events
|
|||||||
/** @var string $shopDir */
|
/** @var string $shopDir */
|
||||||
$shopDir = Registry::getConfig()->getConfigParam('sShopDir');
|
$shopDir = Registry::getConfig()->getConfigParam('sShopDir');
|
||||||
if (false === file_exists(
|
if (false === file_exists(
|
||||||
rtrim($shopDir, '/').'/out/debugbar/debugbar.jas'
|
rtrim($shopDir, '/').'/out/debugbar/debugbar.js'
|
||||||
)) {
|
)) {
|
||||||
Registry::getUtilsView()->addErrorToDisplay(
|
Registry::getUtilsView()->addErrorToDisplay(
|
||||||
'The asset files cannot be found. Have you forgotten an installation step described in <a href="https://git.d3data.de/D3Public/DebugBar/src/branch/main/README.en.md">README</a>? Then please run the installation again.'.
|
'The asset files cannot be found. Have you forgotten an installation step described in <a href="https://git.d3data.de/D3Public/DebugBar/src/branch/main/README.en.md">README</a>? Then please run the installation again.'.
|
||||||
|
1
ToDo.md
1
ToDo.md
@ -3,4 +3,3 @@
|
|||||||
- clear tpl cache button
|
- clear tpl cache button
|
||||||
- phpinfo() overview
|
- phpinfo() overview
|
||||||
- automatic switch between Smarty and Twig
|
- automatic switch between Smarty and Twig
|
||||||
- displayed in live shop when logged in as admin
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "d3/oxid-debugbar",
|
"name": "d3/oxid-debugbar",
|
||||||
"description": "add the DegugBar to OXID eShop",
|
"description": "add the DebugBar to OXID eShop",
|
||||||
"type": "oxideshop-module",
|
"type": "oxideshop-module",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"oxid",
|
"oxid",
|
||||||
@ -26,7 +26,7 @@
|
|||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"oxid-esales/oxideshop-ce": "6.8 - 6.10",
|
"oxid-esales/oxideshop-ce": "6.8 - 6.13",
|
||||||
"maximebf/debugbar": "^1.18",
|
"maximebf/debugbar": "^1.18",
|
||||||
"ajgl/composer-symlinker": "^0.3.1",
|
"ajgl/composer-symlinker": "^0.3.1",
|
||||||
"cweagans/composer-patches": "^1.7.2"
|
"cweagans/composer-patches": "^1.7.2"
|
||||||
|
11
metadata.php
11
metadata.php
@ -33,7 +33,7 @@ $aModule = [
|
|||||||
'de' => '',
|
'de' => '',
|
||||||
'en' => '',
|
'en' => '',
|
||||||
],
|
],
|
||||||
'version' => '1.0.0.0',
|
'version' => '1.2.0.0',
|
||||||
'author' => 'D³ Data Development (Inh.: Thomas Dartsch)',
|
'author' => 'D³ Data Development (Inh.: Thomas Dartsch)',
|
||||||
'email' => 'support@shopmodule.com',
|
'email' => 'support@shopmodule.com',
|
||||||
'url' => 'https://www.oxidmodule.com/',
|
'url' => 'https://www.oxidmodule.com/',
|
||||||
@ -46,6 +46,13 @@ $aModule = [
|
|||||||
'onActivate' => '\D3\DebugBar\Setup\Events::onActivate',
|
'onActivate' => '\D3\DebugBar\Setup\Events::onActivate',
|
||||||
],
|
],
|
||||||
'templates' => [],
|
'templates' => [],
|
||||||
'settings' => [],
|
'settings' => [
|
||||||
|
[
|
||||||
|
'group' => $sModuleId.'_general',
|
||||||
|
'name' => $sModuleId.'_showForAdminUsersOnly',
|
||||||
|
'type' => 'bool',
|
||||||
|
'value' => false,
|
||||||
|
],
|
||||||
|
],
|
||||||
'blocks' => [],
|
'blocks' => [],
|
||||||
];
|
];
|
||||||
|
@ -12,6 +12,5 @@ parameters:
|
|||||||
- '#Offset .* does not exist on array{function: .*}.#'
|
- '#Offset .* does not exist on array{function: .*}.#'
|
||||||
- '#ShopControl_DebugBar::_handle.*Exception\(\) has no return type specified#'
|
- '#ShopControl_DebugBar::_handle.*Exception\(\) has no return type specified#'
|
||||||
- '#ShopControl_DebugBar::start\(\) has no return type specified.#'
|
- '#ShopControl_DebugBar::start\(\) has no return type specified.#'
|
||||||
- '#Config_DebugBar::getExceptionHandler\(\) should be compatible with return type #'
|
|
||||||
- '#UtilsView::addErrorToDisplay\(\) expects OxidEsales\\Eshop\\Core\\Contract\\IDisplayError#'
|
- '#UtilsView::addErrorToDisplay\(\) expects OxidEsales\\Eshop\\Core\\Contract\\IDisplayError#'
|
||||||
- '#PHPDoc tag @throws with type .*\\ContainerExceptionInterface is not subtype of Throwable#'
|
- '#PHPDoc tag @throws with type .*\\ContainerExceptionInterface is not subtype of Throwable#'
|
||||||
|
@ -5,5 +5,5 @@ services:
|
|||||||
|
|
||||||
Psr\Log\LoggerInterface:
|
Psr\Log\LoggerInterface:
|
||||||
class: Monolog\Logger
|
class: Monolog\Logger
|
||||||
factory: 'OxidEsales\EshopCommunity\Internal\Framework\Logger\Factory\LoggerFactoryInterface:create'
|
factory: ['@OxidEsales\EshopCommunity\Internal\Framework\Logger\Factory\LoggerFactoryInterface', 'create']
|
||||||
public: true
|
public: true
|
Loading…
Reference in New Issue
Block a user