Compare commits

...

12 Commits

Author SHA1 Message Date
Clemens Schwaighofer
86acbbb85b Per run logging was not set if flag changed
if setFlag was set for per_run or per_date the init values where not set

Fixed that on setFlag it is checked if we have per_date or per_run and
then set if not set.

Not that for date, set the flag will set a new date, for per run no.
2023-06-02 17:38:09 +09:00
Clemens Schwaighofer
8e0af7a5f7 Class var init fixes 2023-06-01 13:03:46 +09:00
Clemens Schwaighofer
b022662dfc Removed restrictions for printAr to only accept arrays
print_r call takes any value, changed that for all functions

array -> mixed
2023-06-01 12:00:20 +09:00
Clemens Schwaighofer
3039ebf913 Unlink files after test 2023-06-01 11:02:53 +09:00
Clemens Schwaighofer
e2e080c404 Bug fix for DB\IO 2023-06-01 10:58:11 +09:00
Clemens Schwaighofer
4671143d1c phpunit debug fixes 2023-06-01 09:13:59 +09:00
Clemens Schwaighofer
b492558cca Logging unit test regex fix 2023-06-01 08:54:47 +09:00
Clemens Schwaighofer
64e76530d4 deprecated log method call name change in test file 2023-06-01 08:43:47 +09:00
Clemens Schwaighofer
0b93f9f146 Bug fixes and minor updates
- Removed echo from Support Debug dumpVar call
- deprecated DB\IO toggle dbDebug and changed set/get to be like normal
  ones where set just sets and doesn't return anything
- Renamed the logJsDebug to loggingLevelIsDebug
  (other levels can be checked with ->getLoggingLevel()->includes(Level::...))

Adjusted tests for all changes
2023-06-01 08:40:55 +09:00
Clemens Schwaighofer
4c6fe1cd6c Fix Logger\Logger Psr Excpetion calls 2023-05-31 18:44:40 +09:00
Clemens Schwaighofer
83ba48f598 Remove db_debug flag from DB\IO, is set from Logging level 2023-05-31 18:41:13 +09:00
Clemens Schwaighofer
62c6de8244 minor phan config fix 2023-05-31 17:32:00 +09:00
13 changed files with 257 additions and 286 deletions

View File

@@ -131,7 +131,7 @@ return [
'PhanReadOnlyPublicProperty', 'PhanReadOnlyPublicProperty',
// start ignore annotations // start ignore annotations
'PhanUnextractableAnnotationElementName', 'PhanUnextractableAnnotationElementName',
'PhanUnextractableAnnotationSuffix' 'PhanUnextractableAnnotationSuffix',
], ],
// Override to hardcode existence and types of (non-builtin) globals in the global scope. // Override to hardcode existence and types of (non-builtin) globals in the global scope.

View File

@@ -37,6 +37,7 @@ namespace tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
use CoreLibs\Logging\Logger\Level;
/** /**
* Test class for DB\IO + DB\SQL\PgSQL * Test class for DB\IO + DB\SQL\PgSQL
@@ -59,20 +60,6 @@ final class CoreLibsDBIOTest extends TestCase
'db_type' => 'pgsql', 'db_type' => 'pgsql',
'db_encoding' => '', 'db_encoding' => '',
'db_ssl' => 'allow', // allow, disable, require, prefer 'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => true,
],
// same as valid, but db debug is off
'valid_debug_false' => [
'db_name' => 'corelibs_db_io_test',
'db_user' => 'corelibs_db_io_test',
'db_pass' => 'corelibs_db_io_test',
'db_host' => 'localhost',
'db_port' => 5432,
'db_schema' => 'public',
'db_type' => 'pgsql',
'db_encoding' => '',
'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => false,
], ],
// same as valid, but encoding is set // same as valid, but encoding is set
'valid_with_encoding_utf8' => [ 'valid_with_encoding_utf8' => [
@@ -85,7 +72,6 @@ final class CoreLibsDBIOTest extends TestCase
'db_type' => 'pgsql', 'db_type' => 'pgsql',
'db_encoding' => 'UTF-8', 'db_encoding' => 'UTF-8',
'db_ssl' => 'allow', // allow, disable, require, prefer 'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => true,
], ],
// valid with no schema set // valid with no schema set
'valid_no_schema' => [ 'valid_no_schema' => [
@@ -98,7 +84,6 @@ final class CoreLibsDBIOTest extends TestCase
'db_type' => 'pgsql', 'db_type' => 'pgsql',
'db_encoding' => '', 'db_encoding' => '',
'db_ssl' => 'allow', // allow, disable, require, prefer 'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => true,
], ],
// invalid (missing db name) // invalid (missing db name)
'invalid' => [ 'invalid' => [
@@ -111,7 +96,6 @@ final class CoreLibsDBIOTest extends TestCase
'db_type' => 'pgsql', 'db_type' => 'pgsql',
'db_encoding' => '', 'db_encoding' => '',
'db_ssl' => 'allow', // allow, disable, require, prefer 'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => true,
], ],
]; ];
private static $log; private static $log;
@@ -137,6 +121,7 @@ final class CoreLibsDBIOTest extends TestCase
'log_folder' => DIRECTORY_SEPARATOR . 'tmp', 'log_folder' => DIRECTORY_SEPARATOR . 'tmp',
'log_file_id' => 'CoreLibs-DB-IO-Test', 'log_file_id' => 'CoreLibs-DB-IO-Test',
]); ]);
// will be true, default logging is true
$db = new \CoreLibs\DB\IO( $db = new \CoreLibs\DB\IO(
self::$db_config['valid'], self::$db_config['valid'],
self::$log self::$log
@@ -534,6 +519,9 @@ final class CoreLibsDBIOTest extends TestCase
*/ */
public function debugSetProvider(): array public function debugSetProvider(): array
{ {
// 0: db connecdtion
// 1: override log flag, null for default
// 2: set flag
return [ return [
'default debug set' => [ 'default debug set' => [
// what base connection // what base connection
@@ -541,11 +529,6 @@ final class CoreLibsDBIOTest extends TestCase
// actions (set) // actions (set)
null, null,
// set exepected // set exepected
self::$db_config['valid']['db_debug'],
],
'set debug to true' => [
'valid_debug_false',
true,
true, true,
], ],
'set debug to false' => [ 'set debug to false' => [
@@ -556,99 +539,46 @@ final class CoreLibsDBIOTest extends TestCase
]; ];
} }
/**
* test set for toggleDEbug
*
* @return array
*/
public function debugToggleProvider(): array
{
return [
'default debug set' => [
// what base connection
'valid',
// actions
null,
// toggle is inverse
self::$db_config['valid']['db_debug'] ? false : true,
],
'toggle debug to true' => [
'valid_debug_false',
true,
true,
],
'toggle debug to false' => [
'valid',
false,
false,
]
];
}
/** /**
* Test dbSetDbug, dbGetDebug * Test dbSetDbug, dbGetDebug
* *
* @covers ::dbGetDbug * @covers ::dbGetDbug
* @covers ::dbSetDebug * @covers ::dbSetDebug
* @dataProvider debugSetProvider * @testdox Set and Get Debug flag
* @testdox Setting debug $set will be $expected [$_dataName]
* *
* @return void * @return void
*/ */
public function testDbSetDebug( public function testDbSetDebug(): void
string $connection, {
?bool $set, $connection = 'valid';
bool $expected // default set, expect true
): void {
$db = new \CoreLibs\DB\IO( $db = new \CoreLibs\DB\IO(
self::$db_config[$connection], self::$db_config[$connection],
self::$log self::$log
); );
$this->assertEquals( $this->assertTrue(
$expected, $db->dbGetDebug()
$set === null ?
$db->dbSetDebug() :
$db->dbSetDebug($set)
); );
// must always match // switch off
$this->assertEquals( $db->dbSetDebug(false);
$expected, $this->assertFalse(
$db->dbGetDebug() $db->dbGetDebug()
); );
$db->dbClose(); $db->dbClose();
} // second conenction with log set NOT debug
$log = new \CoreLibs\Logging\Logging([
/** // 'log_folder' => __DIR__ . DIRECTORY_SEPARATOR . 'log',
* Test dbToggleDebug, dbGetDebug 'log_folder' => DIRECTORY_SEPARATOR . 'tmp',
* 'log_file_id' => 'CoreLibs-DB-IO-Test',
* @covers ::dbGetDbug 'log_level' => \CoreLibs\Logging\Logger\Level::Notice,
* @covers ::dbSetDebug ]);
* @dataProvider debugToggleProvider
* @testdox Toggle debug $toggle will be $expected [$_dataName]
*
* @return void
*/
public function testDbToggleDebug(
string $connection,
?bool $toggle,
bool $expected
): void {
$db = new \CoreLibs\DB\IO( $db = new \CoreLibs\DB\IO(
self::$db_config[$connection], self::$db_config[$connection],
self::$log $log
); );
$this->assertEquals( $this->assertFalse(
$expected,
$toggle === null ?
$db->dbToggleDebug() :
$db->dbToggleDebug($toggle)
);
// must always match
$this->assertEquals(
$expected,
$db->dbGetDebug() $db->dbGetDebug()
); );
$db->dbClose();
} }
// - set max query call sets // - set max query call sets
@@ -806,7 +736,6 @@ final class CoreLibsDBIOTest extends TestCase
'host' => 'db_host', 'host' => 'db_host',
'port' => 'db_port', 'port' => 'db_port',
'ssl' => 'db_ssl', 'ssl' => 'db_ssl',
'debug' => 'db_debug',
'password' => '***', 'password' => '***',
] as $read => $compare ] as $read => $compare
) { ) {

View File

@@ -460,16 +460,18 @@ final class CoreLibsDebugSupportTest extends TestCase
* Undocumented function * Undocumented function
* *
* @cover ::getCallerFileLine * @cover ::getCallerFileLine
* @testWith ["/storage/var/www/html/developers/clemens/core_data/php_libraries/trunk/www/vendor/phpunit/phpunit/src/Framework/TestCase.php:1608"] * @testWith ["vendor/phpunit/phpunit/src/Framework/TestCase.php:"]
* @testdox getCallerFileLine check if it returns $expected [$_dataName] * @testdox getCallerFileLine check based on regex /[\w\-\/]/vendor/phpunit/phpunit/src/Framework/TestCase.php:\d+ [$_dataName]
* *
* @param string $expected * @param string $expected
* @return void * @return void
*/ */
public function testGetCallerFileLine(string $expected): void public function testGetCallerFileLine(): void
{ {
$this->assertEquals( // regex prefix with path "/../" and then fixed vendor + \d+
$expected, $regex = "/^\/[\w\-\/]+\/vendor\/phpunit\/phpunit\/src\/Framework\/TestCase.php:\d+$/";
$this->assertMatchesRegularExpression(
$regex,
Support::getCallerFileLine() Support::getCallerFileLine()
); );
} }
@@ -518,11 +520,17 @@ final class CoreLibsDebugSupportTest extends TestCase
break; break;
case 11: case 11:
// add one "run" before "runBare" // add one "run" before "runBare"
// array_splice(
// $expected,
// 7,
// 0,
// ['run']
// );
array_splice( array_splice(
$expected, $expected,
7,
0, 0,
['run'] 0,
['include']
); );
$this->assertEquals( $this->assertEquals(
$expected, $expected,

View File

@@ -20,10 +20,15 @@ final class CoreLibsLoggingLoggingTest extends TestCase
private const LOG_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR; private const LOG_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR;
private const REGEX_BASE = "\[[\d\-\s\.:]+\]\s{1}" // date private const REGEX_BASE = "\[[\d\-\s\.:]+\]\s{1}" // date
. "\[[\w\.]+(:\d+)?\]\s{1}" // host:port . "\[[\w\.]+(:\d+)?\]\s{1}" // host:port
. "\[[\w+\.\/]+:\d+\]\s{1}" // folder/file . "\[[\w\-\.\/]+:\d+\]\s{1}" // folder/file
. "\[\w+\]\s{1}" // run id . "\[\w+\]\s{1}" // run id
. "{[\w\\\\]+(::\w+)?}\s{1}"; // class . "{[\w\\\\]+(::\w+)?}\s{1}"; // class
public static function tearDownAfterClass(): void
{
array_map('unlink', glob(self::LOG_FOLDER . '*.log'));
}
/** /**
* test set for options BASIC * test set for options BASIC
* *
@@ -217,14 +222,14 @@ final class CoreLibsLoggingLoggingTest extends TestCase
// setLoggingLevel // setLoggingLevel
// getLoggingLevel // getLoggingLevel
// getJsDebug // loggingLevelIsDebug
/** /**
* Undocumented function * Undocumented function
* *
* @covers ::setLoggingLevel * @covers ::setLoggingLevel
* @covers ::getLoggingLevel * @covers ::getLoggingLevel
* @covers ::getJsDebug * @covers ::loggingLevelIsDebug
* @testdox setLoggingLevel set/get checks * @testdox setLoggingLevel set/get checks
* *
* @return void * @return void
@@ -242,7 +247,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log->getLoggingLevel() $log->getLoggingLevel()
); );
$this->assertFalse( $this->assertFalse(
$log->getJsDebug() $log->loggingLevelIsDebug()
); );
// not set, should be debug] // not set, should be debug]
$log = new \CoreLibs\Logging\Logging([ $log = new \CoreLibs\Logging\Logging([
@@ -254,7 +259,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log->getLoggingLevel() $log->getLoggingLevel()
); );
$this->assertTrue( $this->assertTrue(
$log->getJsDebug() $log->loggingLevelIsDebug()
); );
// invalid, should be debug, will throw excpetion too // invalid, should be debug, will throw excpetion too
$this->expectException(\InvalidArgumentException::class); $this->expectException(\InvalidArgumentException::class);
@@ -269,7 +274,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log->getLoggingLevel() $log->getLoggingLevel()
); );
$this->assertTrue( $this->assertTrue(
$log->getJsDebug() $log->loggingLevelIsDebug()
); );
// set valid, then change // set valid, then change
$log = new \CoreLibs\Logging\Logging([ $log = new \CoreLibs\Logging\Logging([

View File

@@ -23,6 +23,8 @@ ob_end_flush();
$ECHO_ALL = true; $ECHO_ALL = true;
// use CoreLibs\Debug\Support; // use CoreLibs\Debug\Support;
use CoreLibs\Debug\Support;
use CoreLibs\Logging\Logger\Level; use CoreLibs\Logging\Logger\Level;
use CoreLibs\Logging\Logger\Flag; use CoreLibs\Logging\Logger\Flag;
// use CoreLibs\Debug\Support; // use CoreLibs\Debug\Support;
@@ -34,7 +36,7 @@ $log = new CoreLibs\Logging\Logging([
'log_per_date' => true, 'log_per_date' => true,
]); ]);
$PAGE_NAME = 'TEST CLASS: DEBUG LOGGING'; $PAGE_NAME = 'TEST CLASS: LOGGING';
print "<!DOCTYPE html>"; print "<!DOCTYPE html>";
print "<html><head><title>" . $PAGE_NAME . "</title><head>"; print "<html><head><title>" . $PAGE_NAME . "</title><head>";
print "<body>"; print "<body>";
@@ -42,16 +44,27 @@ print '<div><a href="class_test.php">Class Test Master</a></div>';
print '<div><h1>' . $PAGE_NAME . '</h1></div>'; print '<div><h1>' . $PAGE_NAME . '</h1></div>';
$log->logger2Debug(); $log->logger2Debug();
echo "<hr>";
print "Level 250: " . Level::fromValue(250)->getName() . "<br>"; print "Level 250: " . Level::fromValue(250)->getName() . "<br>";
print "Flag: per_run (from int): " . Flag::fromValue(2)->getName() . "<br>"; print "Flag: per_class (16) (from int): " . Flag::fromValue(16)->getName() . "<br>";
print "Flag: per_run getName(): " . Flag::per_class->getName() . "<br>"; print "Flag: per_class getName(): " . Flag::per_class->getName() . "<br>";
print "Flag: per_run ->name: " . Flag::per_class->name . "<br>"; print "Flag: per_class ->name: " . Flag::per_class->name . "<br>";
print "Flag: per_run ->value: " . Flag::per_class->value . "<br>"; print "Flag: per_class ->value: " . Flag::per_class->value . "<br>";
$log->setLogUniqueId(); $log->setLogUniqueId();
print "LogUniqId: " . $log->getLogUniqueId() . "<br>"; print "LogUniqId: " . $log->getLogUniqueId() . "<br>";
print "DUMP: " . $log->dV(['something' => 'error']) . "<br>"; print "Is Debug (check): " . Support::printBool($log->getLoggingLevel()->includes(
Level::Debug
)) . "<br>";
print "Is Debug (fk): " . Support::printBool($log->loggingLevelIsDebug()) . "<br>";
$log->setLoggingLevel(Level::Notice);
print "Is Debug (check): " . Support::printBool($log->getLoggingLevel()->includes(
Level::Debug
)) . "<br>";
print "Is Debug (fk): " . Support::printBool($log->loggingLevelIsDebug()) . "<br>";
$log->setLoggingLevel(Level::Debug);
print "DUMP: <pre>" . $log->dV(['something' => 'error']) . "</pre><br>";
$log->debug('LEGACY', 'Some legacy shit here'); $log->debug('LEGACY', 'Some legacy shit here');
$log->debug('ARRAY', 'Dump some data: ' . $log->dV(['something' => 'error'])); $log->debug('ARRAY', 'Dump some data: ' . $log->dV(['something' => 'error']));
@@ -64,9 +77,13 @@ and > and <
EOM)); EOM));
$log->info('Info message', ['info' => 'log']); $log->info('Info message', ['info' => 'log']);
$log->error('Cannot process data', ['error' => 'log']); $log->error('Cannot process data', ['error' => 'log']);
print "Log File: " . $log->getLogFile() . "<br>"; print "Log File: " . $log->getLogFile() . "<br>";
$log->setLogFlag(Flag::per_run);
$log->debug('PER RUN', 'per run logging');
print "Log File: " . $log->getLogFile() . "<br>";
$log->unsetLogFlag(Flag::per_run);
// init empty // init empty
unset($LOG_FILE_ID); unset($LOG_FILE_ID);
$ll = new CoreLibs\Logging\Logging([ $ll = new CoreLibs\Logging\Logging([

View File

@@ -52,7 +52,7 @@ print "<body>";
print '<div><a href="class_test.php">Class Test Master</a></div>'; print '<div><a href="class_test.php">Class Test Master</a></div>';
print '<div><h1>' . $PAGE_NAME . '</h1></div>'; print '<div><h1>' . $PAGE_NAME . '</h1></div>';
$smarty->DATA['JS_DEBUG'] = $log->getJsDebug(); $smarty->DATA['JS_DEBUG'] = $log->loggingLevelIsDebug();
$smarty->MASTER_TEMPLATE_NAME = 'main_body.tpl'; $smarty->MASTER_TEMPLATE_NAME = 'main_body.tpl';
$smarty->TEMPLATE_NAME = 'smarty_test.tpl'; $smarty->TEMPLATE_NAME = 'smarty_test.tpl';
$smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css'; $smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css';

View File

@@ -22,7 +22,6 @@ $DB_CONFIG = [
'db_type' => 'pgsql', 'db_type' => 'pgsql',
'db_encoding' => '', 'db_encoding' => '',
'db_ssl' => 'allow', // allow, disable, require, prefer 'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => true, // turn on logging or not
], ],
// same as above, but uses pg bouncer // same as above, but uses pg bouncer
'test_pgbouncer' => [ 'test_pgbouncer' => [
@@ -35,7 +34,6 @@ $DB_CONFIG = [
'db_type' => 'pgsql', 'db_type' => 'pgsql',
'db_encoding' => '', 'db_encoding' => '',
'db_ssl' => 'allow', // allow, disable, require, prefer 'db_ssl' => 'allow', // allow, disable, require, prefer
'db_debug' => true, // turn on logging or not
], ],
]; ];

View File

@@ -121,6 +121,6 @@ if (!$login->loginActionRun()) {
//------------------------------ logging end //------------------------------ logging end
// pass on DEBUG flag to JS via smarty variable // pass on DEBUG flag to JS via smarty variable
$smarty->DATA['JS_DEBUG'] = $log->getJsDebug(); $smarty->DATA['JS_DEBUG'] = $log->loggingLevelIsDebug();
// __END__ // __END__

View File

@@ -382,7 +382,7 @@ class IO
/** @var array<mixed> */ /** @var array<mixed> */
private array $pk_name_table = []; private array $pk_name_table = [];
/** @var string internal primary key name, for cross calls in async */ /** @var string internal primary key name, for cross calls in async */
private string $pk_name; private string $pk_name = '';
/** @var bool if we use RETURNING in the INSERT call */ /** @var bool if we use RETURNING in the INSERT call */
private bool $returning_id = false; private bool $returning_id = false;
/** @var string if a sync is running holds the hash key of the query */ /** @var string if a sync is running holds the hash key of the query */
@@ -395,12 +395,10 @@ class IO
* main DB concstructor with auto connection to DB and failure set on failed connection * main DB concstructor with auto connection to DB and failure set on failed connection
* @param array<mixed> $db_config DB configuration array * @param array<mixed> $db_config DB configuration array
* @param \CoreLibs\Logging\Logging $log Logging class * @param \CoreLibs\Logging\Logging $log Logging class
* @param bool|null $db_debug_override Overrides debug settings in db_config
*/ */
public function __construct( public function __construct(
array $db_config, array $db_config,
\CoreLibs\Logging\Logging $log, \CoreLibs\Logging\Logging $log
?bool $db_debug_override = null
) { ) {
// attach logger // attach logger
$this->log = $log; $this->log = $log;
@@ -417,15 +415,10 @@ class IO
$this->db_ssl = !empty($db_config['db_ssl']) ? $db_config['db_ssl'] : 'allow'; $this->db_ssl = !empty($db_config['db_ssl']) ? $db_config['db_ssl'] : 'allow';
// set debug, either via global var, or from config, else set to false // set debug, either via global var, or from config, else set to false
$this->dbSetDebug( $this->dbSetDebug(
// override // set if logging level is Debug
$db_debug_override ?? $this->log->getLoggingLevel()->includes(
// from db config setting \CoreLibs\Logging\Logger\Level::Debug
$db_config['db_debug'] ?? )
// [DEPRECATED] should be handled from outside
$_SESSION['DB_DEBUG'] ??
// [DEPRECATED] globals should be deprecated
$GLOBALS['DB_DEBUG'] ??
false
); );
// set loop protection max count // set loop protection max count
@@ -664,6 +657,8 @@ class IO
/** /**
* calls the basic class debug with strip command * calls the basic class debug with strip command
* for internal calls, will always create a message
*
* @param string $debug_id group id for debug * @param string $debug_id group id for debug
* @param string $error_string error message or debug data * @param string $error_string error message or debug data
* @param string $id db debug group * @param string $id db debug group
@@ -672,7 +667,7 @@ class IO
* Will be printed after main error string * Will be printed after main error string
* @return void * @return void
*/ */
protected function __dbDebug( private function __dbDebugMessage(
string $debug_id, string $debug_id,
string $error_string, string $error_string,
string $id = '', string $id = '',
@@ -682,24 +677,24 @@ class IO
// NOTE prefix allows html for echo output, will be stripped on file print // NOTE prefix allows html for echo output, will be stripped on file print
$prefix = ''; $prefix = '';
if ($id) { if ($id) {
$prefix .= '[<span style="color: #920069;">' . $id . '</span>] '; $prefix .= '[' . $id . '] ';
} }
if ($type) { if ($type) {
$prefix .= '{<span style="font-style: italic; color: #3f0092;">' . $type . '</span>} '; $prefix .= '{' . $type . '} ';
} }
switch ($id) { switch ($id) {
case 'DB_ERROR': case 'DB_ERROR':
$prefix .= '<span style="color: red;"><b>DB-Error</b>:</span>'; $prefix .= 'DB-Error:';
break; break;
case 'DB_WARNING': case 'DB_WARNING':
$prefix .= '<span style="color: orange;"><b>DB-Warning</b>:</span>'; $prefix .= 'DB-Warning:';
break; break;
} }
if ($prefix) { if ($prefix) {
$prefix .= '- '; $prefix .= '- ';
} }
if ($error_data !== []) { if ($error_data !== []) {
$error_string .= '<br>[' $error_string .= "\n" . '['
. \CoreLibs\Debug\Support::prAr($error_data) . \CoreLibs\Debug\Support::prAr($error_data)
. ']'; . ']';
} }
@@ -716,6 +711,30 @@ class IO
} }
} }
/**
* main call from anywhere in all classes for launching debug messages
* will abort if dbDebug not set
*
* @param string $debug_id group id for debug
* @param string $error_string error message or debug data
* @param string $id db debug group
* @param string $type query identifier (Q, I, etc)
* @param array<mixed> $error_data Optional error data as array
* @return void
*/
protected function __dbDebug(
string $debug_id,
string $error_string,
string $id = '',
string $type = '',
array $error_data = []
): void {
if (!$this->dbGetDebug()) {
return;
}
$this->__dbDebugMessage($debug_id, $error_string, $id, $type, $error_data);
}
/** /**
* Reset warnings and errors before run * Reset warnings and errors before run
* Is called on base queries to reset error before each run * Is called on base queries to reset error before each run
@@ -778,7 +797,7 @@ class IO
$db_error_string = $db_prefix . ' ' . $db_error_string; $db_error_string = $db_prefix . ' ' . $db_error_string;
} }
if ($db_error_string) { if ($db_error_string) {
$this->__dbDebug('db', $db_error_string, 'DB_ERROR', $where_called); $this->__dbDebugMessage('db', $db_error_string, 'DB_ERROR', $where_called);
} }
return [ return [
$where_called, $where_called,
@@ -835,7 +854,7 @@ class IO
$error_id = (string)$error_id; $error_id = (string)$error_id;
[$where_called, $pg_error_string] = $this->__dbErrorPreprocessor($cursor); [$where_called, $pg_error_string] = $this->__dbErrorPreprocessor($cursor);
// write error msg ... // write error msg ...
$this->__dbDebug( $this->__dbDebugMessage(
'db', 'db',
$error_id . ': ' . ($this->error_string[$error_id] ?? '[UNKNOWN ERROR]') $error_id . ': ' . ($this->error_string[$error_id] ?? '[UNKNOWN ERROR]')
. ($msg ? ', ' . $msg : ''), . ($msg ? ', ' . $msg : ''),
@@ -861,7 +880,7 @@ class IO
): void { ): void {
$warning_id = (string)$warning_id; $warning_id = (string)$warning_id;
[$where_called, $pg_error_string] = $this->__dbErrorPreprocessor($cursor); [$where_called, $pg_error_string] = $this->__dbErrorPreprocessor($cursor);
$this->__dbDebug( $this->__dbDebugMessage(
'db', 'db',
$warning_id . ': ' . ($this->error_string[$warning_id] ?? '[UNKNOWN WARNING') $warning_id . ': ' . ($this->error_string[$warning_id] ?? '[UNKNOWN WARNING')
. ($msg ? ', ' . $msg : ''), . ($msg ? ', ' . $msg : ''),
@@ -1166,17 +1185,15 @@ class IO
} }
// $this->debug('DB IO', 'Q: '.$this->query.', RETURN: '.$this->returning_id); // $this->debug('DB IO', 'Q: '.$this->query.', RETURN: '.$this->returning_id);
// for DEBUG, only on first time ;) // for DEBUG, only on first time ;)
if ($this->db_debug) { $this->__dbDebug(
$this->__dbDebug( 'db',
'db', $this->__dbDebugPrepare(
$this->__dbDebugPrepare( $this->query,
$this->query, $this->params
$this->params ),
), '__dbPrepareExec',
'__dbPrepareExec', ($this->params === [] ? 'Q' : 'Qp')
($this->params === [] ? 'Q' : 'Qp') );
);
}
// import protection, hash needed // import protection, hash needed
$query_hash = $this->dbGetQueryHash($this->query, $this->params); $query_hash = $this->dbGetQueryHash($this->query, $this->params);
// if the array index does not exists set it 0 // if the array index does not exists set it 0
@@ -1194,7 +1211,7 @@ class IO
$this->query_called[$query_hash] > $this->MAX_QUERY_CALL $this->query_called[$query_hash] > $this->MAX_QUERY_CALL
) { ) {
$this->__dbError(30, false, $this->query); $this->__dbError(30, false, $this->query);
$this->__dbDebug( $this->__dbDebugMessage(
'db', 'db',
$this->__dbDebugPrepare( $this->__dbDebugPrepare(
$this->query, $this->query,
@@ -1222,9 +1239,7 @@ class IO
// if either the cursor is false // if either the cursor is false
if ($this->cursor === false || $this->db_functions->__dbLastErrorQuery()) { if ($this->cursor === false || $this->db_functions->__dbLastErrorQuery()) {
// printout Query if debug is turned on // printout Query if debug is turned on
if ($this->db_debug) { $this->__dbDebug('db', $this->query, 'dbExec', 'Q[nc]');
$this->__dbDebug('db', $this->query, 'dbExec', 'Q[nc]');
}
// internal error handling // internal error handling
$this->__dbError(13, $this->cursor); $this->__dbError(13, $this->cursor);
return false; return false;
@@ -1252,7 +1267,7 @@ class IO
// ONLY insert with set pk name // ONLY insert with set pk name
($this->__checkQueryForInsert($this->query, true) && $this->pk_name != 'NULL') || ($this->__checkQueryForInsert($this->query, true) && $this->pk_name != 'NULL') ||
// insert or update with returning add // insert or update with returning add
($this->__checkQueryForInsert($this->query) && $this->returning_id) ($this->__checkQueryForInsert($this->query) && $this->returning_id)
) { ) {
$this->__dbSetInsertId( $this->__dbSetInsertId(
$this->returning_id, $this->returning_id,
@@ -1460,10 +1475,11 @@ class IO
$string .= 'at host {b}\'' . $this->db_host . '\'{/b} '; $string .= 'at host {b}\'' . $this->db_host . '\'{/b} ';
$string .= 'on port {b}\'' . $this->db_port . '\'{/b} '; $string .= 'on port {b}\'' . $this->db_port . '\'{/b} ';
$string .= 'with ssl mode {b}\'' . $this->db_ssl . '\'{/b}{br}'; $string .= 'with ssl mode {b}\'' . $this->db_ssl . '\'{/b}{br}';
$string .= '{b}-DB-info->{/b} DB IO Class debug output: {b}' . ($this->db_debug ? 'Yes' : 'No') . '{/b}'; $string .= '{b}-DB-info->{/b} DB IO Class debug output: {b}'
. ($this->dbGetDebug() ? 'Yes' : 'No') . '{/b}';
if ($log === true) { if ($log === true) {
// if debug, remove / change b // if debug, remove / change b
$this->__dbDebug('db', str_replace( $this->__dbDebugMessage('db', str_replace(
$html_tags, $html_tags,
$replace_text, $replace_text,
$string $string
@@ -1605,7 +1621,7 @@ class IO
if (is_array($array)) { if (is_array($array)) {
$this->nbsp = ''; $this->nbsp = '';
$string .= $this->__printArray($array); $string .= $this->__printArray($array);
$this->__dbDebug('db', $string, 'dbDumpData'); $this->__dbDebugMessage('db', $string, 'dbDumpData');
} }
return $string; return $string;
} }
@@ -1985,17 +2001,15 @@ class IO
// checks if the params count given matches the expected count // checks if the params count given matches the expected count
if ($this->__dbCheckQueryParams($query, count($params)) === false) { if ($this->__dbCheckQueryParams($query, count($params)) === false) {
// in case we got an error print out query // in case we got an error print out query
if ($this->db_debug) { $this->__dbDebug(
$this->__dbDebug( 'db',
'db', $this->__dbDebugPrepare(
$this->__dbDebugPrepare( $this->query,
$this->query, $this->params
$this->params ),
), 'dbReturn',
'dbReturn', ($this->params === [] ? 'Q[e]' : 'Qp[e]')
($this->params === [] ? 'Q[e]' : 'Qp[e]') );
);
}
return false; return false;
} }
// set first call to false // set first call to false
@@ -2018,17 +2032,15 @@ class IO
if (!$this->cursor_ext[$query_hash]['cursor']) { if (!$this->cursor_ext[$query_hash]['cursor']) {
$this->cursor_ext[$query_hash]['log'][] = 'No cursor'; $this->cursor_ext[$query_hash]['log'][] = 'No cursor';
// for DEBUG, print out each query executed // for DEBUG, print out each query executed
if ($this->db_debug) { $this->__dbDebug(
$this->__dbDebug( 'db',
'db', $this->__dbDebugPrepare(
$this->__dbDebugPrepare( $this->cursor_ext[$query_hash]['query'],
$this->cursor_ext[$query_hash]['query'], $this->cursor_ext[$query_hash]['params']
$this->cursor_ext[$query_hash]['params'] ),
), 'dbReturn',
'dbReturn', ($this->cursor_ext[$query_hash]['params'] === [] ? 'Q' : 'Qp'),
($this->cursor_ext[$query_hash]['params'] === [] ? 'Q' : 'Qp'), );
);
}
// if no DB Handler try to reconnect // if no DB Handler try to reconnect
if (!$this->dbh) { if (!$this->dbh) {
// if reconnect fails drop out // if reconnect fails drop out
@@ -2055,17 +2067,15 @@ class IO
} }
// if still no cursor ... // if still no cursor ...
if (!$this->cursor_ext[$query_hash]['cursor']) { if (!$this->cursor_ext[$query_hash]['cursor']) {
if ($this->db_debug) { $this->__dbDebug(
$this->__dbDebug( 'db',
'db', $this->__dbDebugPrepare(
$this->__dbDebugPrepare( $this->cursor_ext[$query_hash]['query'],
$this->cursor_ext[$query_hash]['query'], $this->cursor_ext[$query_hash]['params']
$this->cursor_ext[$query_hash]['params'] ),
), 'dbReturn',
'dbReturn', ($this->cursor_ext[$query_hash]['params'] === [] ? 'Q[e]' : 'Qp[e]'),
($this->cursor_ext[$query_hash]['params'] === [] ? 'Q[e]' : 'Qp[e]'), );
);
}
// internal error handling // internal error handling
$this->__dbError(13, $this->cursor_ext[$query_hash]['cursor']); $this->__dbError(13, $this->cursor_ext[$query_hash]['cursor']);
return false; return false;
@@ -2720,17 +2730,15 @@ class IO
); );
return false; return false;
} }
if ($this->db_debug) { $this->__dbDebug(
$this->__dbDebug( 'db',
'db', $this->__dbDebugPrepare(
$this->__dbDebugPrepare( $this->prepare_cursor[$stm_name]['query'],
$this->prepare_cursor[$stm_name]['query'], $data
$data ),
), 'dbExecPrep',
'dbExecPrep', 'Qpe'
'Qpe' );
);
}
// if the count does not match // if the count does not match
if ($this->prepare_cursor[$stm_name]['count'] != count($data)) { if ($this->prepare_cursor[$stm_name]['count'] != count($data)) {
$this->__dbError( $this->__dbError(
@@ -3115,16 +3123,13 @@ class IO
/** /**
* switches the debug flag on or off * switches the debug flag on or off
* if none given, then return current set only *
* @param bool|null $debug true/false or null for just getting current set * @param bool $debug True/False to turn debugging in this calss on or off
* @return bool Current debug flag as set * @return void
*/ */
public function dbSetDebug(?bool $debug = null): bool public function dbSetDebug(bool $debug): void
{ {
if ($debug !== null) { $this->db_debug = $debug;
$this->db_debug = $debug;
}
return $this->db_debug;
} }
/** /**
@@ -3132,9 +3137,11 @@ class IO
* OR * OR
* with the optional parameter fix sets debug * with the optional parameter fix sets debug
* returns current set stats * returns current set stats
*
* @param bool|null $debug Flag to turn debug on off or null for toggle * @param bool|null $debug Flag to turn debug on off or null for toggle
* @return bool Current debug status * @return bool Current debug status
* True for debug is on, False for off * True for debug is on, False for off
* @deprecated Use dbSetDebug and dbGetDebug
*/ */
public function dbToggleDebug(?bool $debug = null): bool public function dbToggleDebug(?bool $debug = null): bool
{ {
@@ -3148,6 +3155,7 @@ class IO
/** /**
* Return current set db debug flag status * Return current set db debug flag status
*
* @return bool Current debug status * @return bool Current debug status
*/ */
public function dbGetDebug(): bool public function dbGetDebug(): bool

View File

@@ -34,29 +34,29 @@ class Support
} }
/** /**
* prints a html formatted (pre) array * prints a html formatted (pre) data
* *
* @param array<mixed> $array any array * @param mixed $data any data
* @param bool $no_html default add <pre> * @param bool $no_html default add <pre>
* @return string formatted array for output with <pre> tag added * @return string formatted array for output with <pre> tag added
*/ */
public static function printAr(array $array, bool $no_html = false): string public static function printAr(mixed $data, bool $no_html = false): string
{ {
return $no_html ? return $no_html ?
print_r($array, true) : print_r($data, true) :
'<pre>' . print_r($array, true) . '</pre>'; '<pre>' . print_r($data, true) . '</pre>';
} }
/** /**
* alternate name for printAr function * alternate name for printAr function
* *
* @param array<mixed> $array any array * @param mixed $data any array
* @param bool $no_html default add <pre> * @param bool $no_html default add <pre>
* @return string formatted array for output with <pre> tag added * @return string formatted array for output with <pre> tag added
*/ */
public static function printArray(array $array, bool $no_html = false): string public static function printArray(mixed $data, bool $no_html = false): string
{ {
return self::printAr($array, $no_html); return self::printAr($data, $no_html);
} }
/** /**
@@ -65,12 +65,12 @@ class Support
* Do not use this without using it in a string in debug function * Do not use this without using it in a string in debug function
* Note: for full data debug dumps use Support::dumpVar() * Note: for full data debug dumps use Support::dumpVar()
* *
* @param array<mixed> $a Array to format * @param mixed $data Data to print
* @return string print_r formated * @return string print_r formated
*/ */
public static function prAr(array $a): string public static function prAr(mixed $data): string
{ {
return self::printAr($a, true); return self::printAr($data, true);
} }
/** /**
@@ -177,7 +177,6 @@ class Support
$caller_level = 1; $caller_level = 1;
$caller_list = self::getCallerMethodList(); $caller_list = self::getCallerMethodList();
if ($caller_list[0] == 'dV') { if ($caller_list[0] == 'dV') {
echo "Raise caller level<br>: " . $caller_list[0] . "<br>";
$caller_level = 2; $caller_level = 2;
} }
// we need to strip the string in <small></small that is // we need to strip the string in <small></small that is

View File

@@ -213,7 +213,7 @@ class Logging
$settings['mandatory'] && !isset($options[$name]) && $settings['mandatory'] && !isset($options[$name]) &&
empty($settings['alias']) empty($settings['alias'])
) { ) {
throw new \InvalidArgumentException( throw new InvalidArgumentException(
'Missing mandatory option: "' . $name . '"', 'Missing mandatory option: "' . $name . '"',
E_USER_WARNING E_USER_WARNING
); );
@@ -230,7 +230,7 @@ class Logging
switch ($settings['type']) { switch ($settings['type']) {
case 'bool': case 'bool':
if (!is_bool($this->options[$name])) { if (!is_bool($this->options[$name])) {
throw new \InvalidArgumentException( throw new InvalidArgumentException(
'Option: "' . $name . '" is not of type bool', 'Option: "' . $name . '" is not of type bool',
E_USER_ERROR E_USER_ERROR
); );
@@ -238,7 +238,7 @@ class Logging
break; break;
case 'string': case 'string':
if (!is_string($this->options[$name])) { if (!is_string($this->options[$name])) {
throw new \InvalidArgumentException( throw new InvalidArgumentException(
'Option: "' . $name . '" is not of type string', 'Option: "' . $name . '" is not of type string',
E_USER_ERROR E_USER_ERROR
); );
@@ -249,7 +249,7 @@ class Logging
empty($settings['type_info']) || empty($settings['type_info']) ||
!$this->options[$name] instanceof $settings['type_info'] !$this->options[$name] instanceof $settings['type_info']
) { ) {
throw new \InvalidArgumentException( throw new InvalidArgumentException(
'Option: "' . $name . '" is not of instance ' 'Option: "' . $name . '" is not of instance '
. ($settings['type_info'] ?? 'NO INSTANCE DEFINED'), . ($settings['type_info'] ?? 'NO INSTANCE DEFINED'),
E_USER_ERROR E_USER_ERROR
@@ -407,13 +407,6 @@ class Logging
} }
$this->setLogFlag($log_flag_key); $this->setLogFlag($log_flag_key);
} }
// init per run uid
if ($this->getLogFlag(Flag::per_run)) {
$this->setLogUniqueId();
} elseif ($this->getLogFlag(Flag::per_date)) {
// init file date
$this->log_file_date = date('Y-m-d');
}
} }
/** /**
@@ -675,9 +668,11 @@ class Logging
* *
* @return bool True, we are at debug level * @return bool True, we are at debug level
*/ */
public function getJsDebug(): bool public function loggingLevelIsDebug(): bool
{ {
return $this->log_level === Level::Debug ? true : false; return $this->getLoggingLevel()->includes(
Level::Debug
);
} }
// log file id set (file name prefix) // log file id set (file name prefix)
@@ -774,6 +769,13 @@ class Logging
public function setLogFlag(Flag $flag): void public function setLogFlag(Flag $flag): void
{ {
$this->log_flags |= $flag->value; $this->log_flags |= $flag->value;
// init per run uid
if ($this->getLogFlag(Flag::per_run)) {
$this->setLogUniqueId();
} elseif ($this->getLogFlag(Flag::per_date)) {
// init file date
$this->setLogDate();
}
} }
/** /**
@@ -1080,12 +1082,12 @@ class Logging
* But this does not wrap it in <pre></pre> * But this does not wrap it in <pre></pre>
* Do not use this without using it in a string in debug function * Do not use this without using it in a string in debug function
* *
* @param array<mixed> $a Array to format * @param mixed $data Data to format
* @return string print_r formated * @return string print_r formated
*/ */
public function prAr(array $a): string public function prAr(mixed $data): string
{ {
return Support::printArray($a, true); return Support::printArray($data, true);
} }
/** /**

View File

@@ -232,13 +232,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
/** @var string */ /** @var string */
public string $col_name; // the name of the columen (before _<type>) [used for order button] public string $col_name; // the name of the columen (before _<type>) [used for order button]
/** @var int */ /** @var int */
public int $yes; // the yes flag that triggers the template to show ALL and not only new/load public int $yes = 0; // the yes flag that triggers the template to show ALL and not only new/load
/** @var string */ /** @var string */
public string $msg; // the error msg public string $msg = ''; // the error msg
/** @var int */ /** @var int */
public int $error; // the error flag set for printing red error msg public int $error = 0; // the error flag set for printing red error msg
/** @var int */ /** @var int */
public int $warning; // warning flag, for information (saved, loaded, etc) public int $warning = 0; // warning flag, for information (saved, loaded, etc)
/** @var string */ /** @var string */
public string $archive_pk_name; // the pk name for the load select form public string $archive_pk_name; // the pk name for the load select form
/** @var string */ /** @var string */
@@ -282,7 +282,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
public array $login_acl = []; public array $login_acl = [];
// layout publics // layout publics
/** @var int */ /** @var int */
public int $table_width; public int $table_width = 0;
// internal lang & encoding vars // internal lang & encoding vars
/** @var string */ /** @var string */
public string $lang_dir = ''; public string $lang_dir = '';

View File

@@ -77,79 +77,79 @@ class SmartyExtend extends \Smarty
public string $COMPILE_ID = ''; public string $COMPILE_ID = '';
// template vars // template vars
/** @var string */ /** @var string */
public string $MASTER_TEMPLATE_NAME; public string $MASTER_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $PAGE_FILE_NAME; public string $PAGE_FILE_NAME = '';
/** @var string */ /** @var string */
public string $CONTENT_INCLUDE; public string $CONTENT_INCLUDE = '';
/** @var string */ /** @var string */
public string $FORM_NAME; public string $FORM_NAME = '';
/** @var string */ /** @var string */
public string $FORM_ACTION; public string $FORM_ACTION = '';
/** @var string */ /** @var string */
public string $L_TITLE; public string $L_TITLE = '';
/** @var string|int */ /** @var string|int */
public string|int $PAGE_WIDTH; public string|int $PAGE_WIDTH;
// smarty include/set var // smarty include/set var
/** @var string */ /** @var string */
public string $TEMPLATE_PATH; public string $TEMPLATE_PATH = '';
/** @var string */ /** @var string */
public string $TEMPLATE_NAME; public string $TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $INC_TEMPLATE_NAME; public string $INC_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $JS_TEMPLATE_NAME; public string $JS_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $CSS_TEMPLATE_NAME; public string $CSS_TEMPLATE_NAME = '';
/** @var string|null */ /** @var string|null */
public string|null $TEMPLATE_TRANSLATE; public string|null $TEMPLATE_TRANSLATE;
/** @var string|null */ /** @var string|null */
public string|null $JS_TRANSLATE; public string|null $JS_TRANSLATE;
// core group // core group
/** @var string */ /** @var string */
public string $JS_CORE_TEMPLATE_NAME; public string $JS_CORE_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $CSS_CORE_TEMPLATE_NAME; public string $CSS_CORE_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $JS_CORE_INCLUDE; public string $JS_CORE_INCLUDE = '';
/** @var string */ /** @var string */
public string $CSS_CORE_INCLUDE; public string $CSS_CORE_INCLUDE = '';
// local names // local names
/** @var string */ /** @var string */
public string $JS_SPECIAL_TEMPLATE_NAME = ''; public string $JS_SPECIAL_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $CSS_SPECIAL_TEMPLATE_NAME = ''; public string $CSS_SPECIAL_TEMPLATE_NAME = '';
/** @var string */ /** @var string */
public string $JS_INCLUDE; public string $JS_INCLUDE = '';
/** @var string */ /** @var string */
public string $CSS_INCLUDE; public string $CSS_INCLUDE = '';
/** @var string */ /** @var string */
public string $JS_SPECIAL_INCLUDE; public string $JS_SPECIAL_INCLUDE = '';
/** @var string */ /** @var string */
public string $CSS_SPECIAL_INCLUDE; public string $CSS_SPECIAL_INCLUDE = '';
/** @var string */ /** @var string */
public string $ADMIN_JAVASCRIPT; public string $ADMIN_JAVASCRIPT = '';
/** @var string */ /** @var string */
public string $ADMIN_STYLESHEET; public string $ADMIN_STYLESHEET = '';
/** @var string */ /** @var string */
public string $FRONTEND_JAVASCRIPT; public string $FRONTEND_JAVASCRIPT = '';
/** @var string */ /** @var string */
public string $FRONTEND_STYLESHEET; public string $FRONTEND_STYLESHEET = '';
// other smarty folder vars // other smarty folder vars
/** @var string */ /** @var string */
public string $INCLUDES; public string $INCLUDES = '';
/** @var string */ /** @var string */
public string $JAVASCRIPT; public string $JAVASCRIPT = '';
/** @var string */ /** @var string */
public string $CSS; public string $CSS = '';
/** @var string */ /** @var string */
public string $FONT; public string $FONT = '';
/** @var string */ /** @var string */
public string $PICTURES; public string $PICTURES = '';
/** @var string */ /** @var string */
public string $CACHE_PICTURES; public string $CACHE_PICTURES = '';
/** @var string */ /** @var string */
public string $CACHE_PICTURES_ROOT; public string $CACHE_PICTURES_ROOT = '';
// constructor class, just sets the language stuff // constructor class, just sets the language stuff
/** /**
@@ -373,7 +373,7 @@ class SmartyExtend extends \Smarty
// check for template include // check for template include
if ( if (
$this->USE_INCLUDE_TEMPLATE === true && $this->USE_INCLUDE_TEMPLATE === true &&
!$this->TEMPLATE_NAME empty($this->TEMPLATE_NAME)
) { ) {
$this->TEMPLATE_NAME = $this->CONTENT_INCLUDE; $this->TEMPLATE_NAME = $this->CONTENT_INCLUDE;
// add to cache & compile id // add to cache & compile id
@@ -390,7 +390,7 @@ class SmartyExtend extends \Smarty
exit('MASTER TEMPLATE: ' . $this->MASTER_TEMPLATE_NAME . ' could not be found'); exit('MASTER TEMPLATE: ' . $this->MASTER_TEMPLATE_NAME . ' could not be found');
} }
if ( if (
$this->TEMPLATE_NAME && !empty($this->TEMPLATE_NAME) &&
!file_exists($this->getTemplateDir()[0] . DIRECTORY_SEPARATOR . $this->TEMPLATE_NAME) !file_exists($this->getTemplateDir()[0] . DIRECTORY_SEPARATOR . $this->TEMPLATE_NAME)
) { ) {
exit('INCLUDE TEMPLATE: ' . $this->TEMPLATE_NAME . ' could not be found'); exit('INCLUDE TEMPLATE: ' . $this->TEMPLATE_NAME . ' could not be found');
@@ -418,7 +418,12 @@ class SmartyExtend extends \Smarty
} }
} }
// if we can't find it, dump it // if we can't find it, dump it
if (!file_exists($this->getTemplateDir()[0] . DIRECTORY_SEPARATOR . $this->TEMPLATE_TRANSLATE)) { if (
!file_exists(
$this->getTemplateDir()[0] . DIRECTORY_SEPARATOR
. $this->TEMPLATE_TRANSLATE
)
) {
$this->TEMPLATE_TRANSLATE = null; $this->TEMPLATE_TRANSLATE = null;
} }
if (empty($this->JS_TRANSLATE)) { if (empty($this->JS_TRANSLATE)) {