Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f8f98642b | ||
|
|
7ab03913ac | ||
|
|
a7853171e0 | ||
|
|
dfdfcf87f2 | ||
|
|
6218e0a6a8 | ||
|
|
a84a745be2 | ||
|
|
312762e92e | ||
|
|
fa4c1f0597 | ||
|
|
438a75af23 | ||
|
|
afd8ff3e31 | ||
|
|
4343af7937 | ||
|
|
d06769c48b | ||
|
|
4c0390f082 | ||
|
|
95bee3dc8c | ||
|
|
65132d8a4a | ||
|
|
b2243cd06d | ||
|
|
8f09b67d86 | ||
|
|
fe459aec80 | ||
|
|
de0ed058ca | ||
|
|
f90bd193d9 | ||
|
|
0e31180868 | ||
|
|
68c9164eaa | ||
|
|
c2389db1c9 |
490
4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php
Normal file
490
4dev/tests/Logging/CoreLibsLoggingErrorMessagesTest.php
Normal file
@@ -0,0 +1,490 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace tests;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use CoreLibs\Logging\Logger\Level;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test class for Logging
|
||||||
|
* @coversDefaultClass \CoreLibs\Logging\ErrorMessages
|
||||||
|
* @testdox \CoreLibs\Logging\ErrorMEssages method tests
|
||||||
|
*/
|
||||||
|
final class CoreLibsLoggingErrorMessagesTest extends TestCase
|
||||||
|
{
|
||||||
|
private const LOG_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tear down and remove log data
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function tearDownAfterClass(): void
|
||||||
|
{
|
||||||
|
array_map('unlink', glob(self::LOG_FOLDER . '*.log'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* for checking level only
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function providerErrorMessageLevel(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ok' => [
|
||||||
|
'level' => 'ok',
|
||||||
|
'str' => 'OK',
|
||||||
|
'expected' => 'ok',
|
||||||
|
],
|
||||||
|
'info' => [
|
||||||
|
'level' => 'info',
|
||||||
|
'str' => 'INFO',
|
||||||
|
'expected' => 'info',
|
||||||
|
],
|
||||||
|
'notice' => [
|
||||||
|
'level' => 'notice',
|
||||||
|
'str' => 'NOTICE',
|
||||||
|
'expected' => 'notice',
|
||||||
|
],
|
||||||
|
'warn' => [
|
||||||
|
'level' => 'warn',
|
||||||
|
'str' => 'WARN',
|
||||||
|
'expected' => 'warn'
|
||||||
|
],
|
||||||
|
'warning' => [
|
||||||
|
'level' => 'warning',
|
||||||
|
'str' => 'WARN',
|
||||||
|
'expected' => 'warn'
|
||||||
|
],
|
||||||
|
'error' => [
|
||||||
|
'level' => 'error',
|
||||||
|
'str' => 'ERROR',
|
||||||
|
'expected' => 'error'
|
||||||
|
],
|
||||||
|
'abort' => [
|
||||||
|
'level' => 'abort',
|
||||||
|
'str' => 'ABORT',
|
||||||
|
'expected' => 'abort'
|
||||||
|
],
|
||||||
|
'crash' => [
|
||||||
|
'level' => 'crash',
|
||||||
|
'str' => 'CRASH',
|
||||||
|
'expected' => 'crash'
|
||||||
|
],
|
||||||
|
'wrong level' => [
|
||||||
|
'level' => 'wrong',
|
||||||
|
'str' => 'WRONG',
|
||||||
|
'expected' => 'unknown'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider providerErrorMessageLevel
|
||||||
|
* @testdox error message level: $level will be $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $level
|
||||||
|
* @param string $str
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testErrorMessageLevelOk(string $level, string $str, string $expected): void
|
||||||
|
{
|
||||||
|
$log = new \CoreLibs\Logging\Logging([
|
||||||
|
'log_file_id' => 'testErrorMessagesLevelOk',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
'log_level' => Level::Error,
|
||||||
|
]);
|
||||||
|
$em = new \CoreLibs\Logging\ErrorMessage($log);
|
||||||
|
$em->setMessage(
|
||||||
|
$level,
|
||||||
|
$str
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'level' => $expected,
|
||||||
|
'str' => $str,
|
||||||
|
'id' => '',
|
||||||
|
'target' => '',
|
||||||
|
'target_style' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
],
|
||||||
|
$em->getLastErrorMsg()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @testdox Test of all methods for n messages [$_dataName]
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testErrorMessageOk(): void
|
||||||
|
{
|
||||||
|
$log = new \CoreLibs\Logging\Logging([
|
||||||
|
'log_file_id' => 'testErrorMessagesOk',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
'log_level' => Level::Error
|
||||||
|
]);
|
||||||
|
$em = new \CoreLibs\Logging\ErrorMessage($log);
|
||||||
|
$em->setErrorMsg(
|
||||||
|
'100',
|
||||||
|
'info',
|
||||||
|
'INFO MESSAGE'
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'id' => '100',
|
||||||
|
'level' => 'info',
|
||||||
|
'str' => 'INFO MESSAGE',
|
||||||
|
'target' => '',
|
||||||
|
'target_style' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
],
|
||||||
|
$em->getLastErrorMsg()
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
['100'],
|
||||||
|
$em->getErrorIds()
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'id' => '100',
|
||||||
|
'level' => 'info',
|
||||||
|
'str' => 'INFO MESSAGE',
|
||||||
|
'target' => '',
|
||||||
|
'target_style' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
$em->getErrorMsg()
|
||||||
|
);
|
||||||
|
|
||||||
|
$em->setErrorMsg(
|
||||||
|
'200',
|
||||||
|
'error',
|
||||||
|
'ERROR MESSAGE'
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'error',
|
||||||
|
'str' => 'ERROR MESSAGE',
|
||||||
|
'target' => '',
|
||||||
|
'target_style' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
],
|
||||||
|
$em->getLastErrorMsg()
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
['100', '200'],
|
||||||
|
$em->getErrorIds()
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'id' => '100',
|
||||||
|
'level' => 'info',
|
||||||
|
'str' => 'INFO MESSAGE',
|
||||||
|
'target' => '',
|
||||||
|
'target_style' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'error',
|
||||||
|
'str' => 'ERROR MESSAGE',
|
||||||
|
'target' => '',
|
||||||
|
'target_style' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
]
|
||||||
|
],
|
||||||
|
$em->getErrorMsg()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function providerErrorMessageLog(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'error, not logged' => [
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'error',
|
||||||
|
'str' => 'ERROR MESSAGE',
|
||||||
|
'message' => null,
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<ERROR> ERROR MESSAGE',
|
||||||
|
],
|
||||||
|
'error, logged' => [
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'error',
|
||||||
|
'str' => 'ERROR MESSAGE',
|
||||||
|
'message' => null,
|
||||||
|
'log_error' => true,
|
||||||
|
'expected' => '<ERROR> ERROR MESSAGE',
|
||||||
|
],
|
||||||
|
'error, logged, message' => [
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'error',
|
||||||
|
'str' => 'ERROR MESSAGE',
|
||||||
|
'message' => 'OTHER ERROR MESSAGE',
|
||||||
|
'log_error' => true,
|
||||||
|
'expected' => '<ERROR> OTHER ERROR MESSAGE',
|
||||||
|
],
|
||||||
|
'notice' => [
|
||||||
|
'id' => '100',
|
||||||
|
'level' => 'notice',
|
||||||
|
'str' => 'NOTICE MESSAGE',
|
||||||
|
'message' => null,
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<NOTICE> NOTICE MESSAGE',
|
||||||
|
],
|
||||||
|
'notice, message' => [
|
||||||
|
'id' => '100',
|
||||||
|
'level' => 'notice',
|
||||||
|
'str' => 'NOTICE MESSAGE',
|
||||||
|
'message' => 'OTHER NOTICE MESSAGE',
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<NOTICE> OTHER NOTICE MESSAGE',
|
||||||
|
],
|
||||||
|
'crash' => [
|
||||||
|
'id' => '300',
|
||||||
|
'level' => 'crash',
|
||||||
|
'str' => 'CRASH MESSAGE',
|
||||||
|
'message' => null,
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<ALERT> CRASH MESSAGE',
|
||||||
|
],
|
||||||
|
'crash, message' => [
|
||||||
|
'id' => '300',
|
||||||
|
'level' => 'crash',
|
||||||
|
'str' => 'CRASH MESSAGE',
|
||||||
|
'message' => 'OTHER CRASH MESSAGE',
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<ALERT> OTHER CRASH MESSAGE',
|
||||||
|
],
|
||||||
|
'abort' => [
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'abort',
|
||||||
|
'str' => 'ABORT MESSAGE',
|
||||||
|
'message' => null,
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<CRITICAL> ABORT MESSAGE',
|
||||||
|
],
|
||||||
|
'abort, message' => [
|
||||||
|
'id' => '200',
|
||||||
|
'level' => 'abort',
|
||||||
|
'str' => 'ABORT MESSAGE',
|
||||||
|
'message' => 'OTHER ABORT MESSAGE',
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<CRITICAL> OTHER ABORT MESSAGE',
|
||||||
|
],
|
||||||
|
'unknown' => [
|
||||||
|
'id' => '400',
|
||||||
|
'level' => 'wrong level',
|
||||||
|
'str' => 'WRONG LEVEL MESSAGE',
|
||||||
|
'message' => null,
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<EMERGENCY> WRONG LEVEL MESSAGE',
|
||||||
|
],
|
||||||
|
'unknown, message' => [
|
||||||
|
'id' => '400',
|
||||||
|
'level' => 'wrong level',
|
||||||
|
'str' => 'WRONG LEVEL MESSAGE',
|
||||||
|
'message' => 'OTHER WRONG LEVEL MESSAGE',
|
||||||
|
'log_error' => null,
|
||||||
|
'expected' => '<EMERGENCY> OTHER WRONG LEVEL MESSAGE',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider providerErrorMessageLog
|
||||||
|
* @testdox Test Log writing with log level Error [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $id
|
||||||
|
* @param string $level
|
||||||
|
* @param string $str
|
||||||
|
* @param string|null $message
|
||||||
|
* @param bool|null $log_error
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testErrorMessageLogErrorLevel(
|
||||||
|
string $id,
|
||||||
|
string $level,
|
||||||
|
string $str,
|
||||||
|
?string $message,
|
||||||
|
?bool $log_error,
|
||||||
|
string $expected
|
||||||
|
): void {
|
||||||
|
$log = new \CoreLibs\Logging\Logging([
|
||||||
|
'log_file_id' => 'testErrorMessagesLogError',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
'log_level' => Level::Notice,
|
||||||
|
'log_per_run' => true
|
||||||
|
]);
|
||||||
|
$em = new \CoreLibs\Logging\ErrorMessage($log);
|
||||||
|
$em->setErrorMsg(
|
||||||
|
$id,
|
||||||
|
$level,
|
||||||
|
$str,
|
||||||
|
message: $message,
|
||||||
|
log_error: $log_error
|
||||||
|
);
|
||||||
|
$file_content = '';
|
||||||
|
if (is_file($log->getLogFolder() . $log->getLogFile())) {
|
||||||
|
$file_content = file_get_contents(
|
||||||
|
$log->getLogFolder() . $log->getLogFile()
|
||||||
|
) ?: '';
|
||||||
|
}
|
||||||
|
// if error, if null or false, it will not be logged
|
||||||
|
if ($level == 'error' && ($log_error === null || $log_error === false)) {
|
||||||
|
$this->assertStringNotContainsString(
|
||||||
|
$expected,
|
||||||
|
$file_content
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->assertStringContainsString(
|
||||||
|
$expected,
|
||||||
|
$file_content
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider providerErrorMessageLog
|
||||||
|
* @testdox Test Log writing with log Level Debug [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $id
|
||||||
|
* @param string $level
|
||||||
|
* @param string $str
|
||||||
|
* @param string|null $message
|
||||||
|
* @param bool|null $log_error
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testErrorMessageLogErrorDebug(
|
||||||
|
string $id,
|
||||||
|
string $level,
|
||||||
|
string $str,
|
||||||
|
?string $message,
|
||||||
|
?bool $log_error,
|
||||||
|
string $expected
|
||||||
|
): void {
|
||||||
|
$log = new \CoreLibs\Logging\Logging([
|
||||||
|
'log_file_id' => 'testErrorMessagesLogDebug',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
'log_level' => Level::Debug,
|
||||||
|
'log_per_run' => true
|
||||||
|
]);
|
||||||
|
$em = new \CoreLibs\Logging\ErrorMessage($log);
|
||||||
|
$em->setErrorMsg(
|
||||||
|
$id,
|
||||||
|
$level,
|
||||||
|
$str,
|
||||||
|
message: $message,
|
||||||
|
log_error: $log_error
|
||||||
|
);
|
||||||
|
$file_content = '';
|
||||||
|
if (is_file($log->getLogFolder() . $log->getLogFile())) {
|
||||||
|
$file_content = file_get_contents(
|
||||||
|
$log->getLogFolder() . $log->getLogFile()
|
||||||
|
) ?: '';
|
||||||
|
}
|
||||||
|
// if error, and log is debug level, only explicit false are not logged
|
||||||
|
if ($level == 'error' && $log_error === false) {
|
||||||
|
$this->assertStringNotContainsString(
|
||||||
|
$expected,
|
||||||
|
$file_content
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->assertStringContainsString(
|
||||||
|
$expected,
|
||||||
|
$file_content
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @testdox Test jump target set and reporting
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testJumpTarget(): void
|
||||||
|
{
|
||||||
|
$log = new \CoreLibs\Logging\Logging([
|
||||||
|
'log_file_id' => 'testErrorMessagesLogDebug',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
'log_level' => Level::Debug,
|
||||||
|
'log_per_run' => true
|
||||||
|
]);
|
||||||
|
$em = new \CoreLibs\Logging\ErrorMessage($log);
|
||||||
|
$em->setJumpTarget(
|
||||||
|
'target-f',
|
||||||
|
'Target text'
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'target-f' => 'Target text'
|
||||||
|
],
|
||||||
|
$em->getJumpTarget()
|
||||||
|
);
|
||||||
|
// set same target, keep as before
|
||||||
|
$em->setJumpTarget(
|
||||||
|
'target-f',
|
||||||
|
'Other text'
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'target-f' => 'Target text'
|
||||||
|
],
|
||||||
|
$em->getJumpTarget()
|
||||||
|
);
|
||||||
|
// add new now two messages
|
||||||
|
$em->setJumpTarget(
|
||||||
|
'target-s',
|
||||||
|
'More text'
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'target-f' => 'Target text',
|
||||||
|
'target-s' => 'More text'
|
||||||
|
],
|
||||||
|
$em->getJumpTarget()
|
||||||
|
);
|
||||||
|
// add empty info
|
||||||
|
$em->setJumpTarget(
|
||||||
|
'target-e',
|
||||||
|
''
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'target-f' => 'Target text',
|
||||||
|
'target-s' => 'More text',
|
||||||
|
'target-e' => 'Jump to: target-e'
|
||||||
|
],
|
||||||
|
$em->getJumpTarget()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
60
composer.lock
generated
60
composer.lock
generated
@@ -297,16 +297,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
"version": "3.3.2",
|
"version": "3.4.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/semver.git",
|
"url": "https://github.com/composer/semver.git",
|
||||||
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
|
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
|
"url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
|
||||||
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
|
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -356,9 +356,9 @@
|
|||||||
"versioning"
|
"versioning"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
"irc": "ircs://irc.libera.chat:6697/composer",
|
||||||
"issues": "https://github.com/composer/semver/issues",
|
"issues": "https://github.com/composer/semver/issues",
|
||||||
"source": "https://github.com/composer/semver/tree/3.3.2"
|
"source": "https://github.com/composer/semver/tree/3.4.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -374,7 +374,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-04-01T19:23:25+00:00"
|
"time": "2023-08-31T09:50:34+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/xdebug-handler",
|
"name": "composer/xdebug-handler",
|
||||||
@@ -481,16 +481,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doctrine/deprecations",
|
"name": "doctrine/deprecations",
|
||||||
"version": "v1.1.1",
|
"version": "1.1.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/deprecations.git",
|
"url": "https://github.com/doctrine/deprecations.git",
|
||||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
|
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
|
||||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -522,9 +522,9 @@
|
|||||||
"homepage": "https://www.doctrine-project.org/",
|
"homepage": "https://www.doctrine-project.org/",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/doctrine/deprecations/issues",
|
"issues": "https://github.com/doctrine/deprecations/issues",
|
||||||
"source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
|
"source": "https://github.com/doctrine/deprecations/tree/1.1.2"
|
||||||
},
|
},
|
||||||
"time": "2023-06-03T09:27:29+00:00"
|
"time": "2023-09-27T20:04:15+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "felixfbecker/advanced-json-rpc",
|
"name": "felixfbecker/advanced-json-rpc",
|
||||||
@@ -1133,16 +1133,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "1.23.1",
|
"version": "1.24.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "846ae76eef31c6d7790fac9bc399ecee45160b26"
|
"reference": "bcad8d995980440892759db0c32acae7c8e79442"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
|
||||||
"reference": "846ae76eef31c6d7790fac9bc399ecee45160b26",
|
"reference": "bcad8d995980440892759db0c32acae7c8e79442",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1174,22 +1174,22 @@
|
|||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
|
||||||
},
|
},
|
||||||
"time": "2023-08-03T16:32:59+00:00"
|
"time": "2023-09-26T12:28:12+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.10.32",
|
"version": "1.10.36",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44"
|
"reference": "ffa3089511121a672e62969404e4fddc753f9b15"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/ffa3089511121a672e62969404e4fddc753f9b15",
|
||||||
"reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44",
|
"reference": "ffa3089511121a672e62969404e4fddc753f9b15",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1238,7 +1238,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-08-24T21:54:50+00:00"
|
"time": "2023-09-29T14:07:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan-deprecation-rules",
|
"name": "phpstan/phpstan-deprecation-rules",
|
||||||
@@ -2254,16 +2254,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v6.3.2",
|
"version": "v6.3.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "53d1a83225002635bca3482fcbf963001313fb68"
|
"reference": "13d76d0fb049051ed12a04bef4f9de8715bea339"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68",
|
"url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339",
|
||||||
"reference": "53d1a83225002635bca3482fcbf963001313fb68",
|
"reference": "13d76d0fb049051ed12a04bef4f9de8715bea339",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2320,7 +2320,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v6.3.2"
|
"source": "https://github.com/symfony/string/tree/v6.3.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2336,7 +2336,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-07-05T08:41:27+00:00"
|
"time": "2023-09-18T10:38:32+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tysonandre/var_representation_polyfill",
|
"name": "tysonandre/var_representation_polyfill",
|
||||||
|
|||||||
70
vendor/composer/installed.json
vendored
70
vendor/composer/installed.json
vendored
@@ -248,17 +248,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
"version": "3.3.2",
|
"version": "3.4.0",
|
||||||
"version_normalized": "3.3.2.0",
|
"version_normalized": "3.4.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/semver.git",
|
"url": "https://github.com/composer/semver.git",
|
||||||
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
|
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
|
"url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
|
||||||
"reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
|
"reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
"phpstan/phpstan": "^1.4",
|
"phpstan/phpstan": "^1.4",
|
||||||
"symfony/phpunit-bridge": "^4.2 || ^5"
|
"symfony/phpunit-bridge": "^4.2 || ^5"
|
||||||
},
|
},
|
||||||
"time": "2022-04-01T19:23:25+00:00",
|
"time": "2023-08-31T09:50:34+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
@@ -310,9 +310,9 @@
|
|||||||
"versioning"
|
"versioning"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
"irc": "ircs://irc.libera.chat:6697/composer",
|
||||||
"issues": "https://github.com/composer/semver/issues",
|
"issues": "https://github.com/composer/semver/issues",
|
||||||
"source": "https://github.com/composer/semver/tree/3.3.2"
|
"source": "https://github.com/composer/semver/tree/3.4.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -441,17 +441,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doctrine/deprecations",
|
"name": "doctrine/deprecations",
|
||||||
"version": "v1.1.1",
|
"version": "1.1.2",
|
||||||
"version_normalized": "1.1.1.0",
|
"version_normalized": "1.1.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/deprecations.git",
|
"url": "https://github.com/doctrine/deprecations.git",
|
||||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
|
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
|
||||||
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
|
"reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -469,7 +469,7 @@
|
|||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
|
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
|
||||||
},
|
},
|
||||||
"time": "2023-06-03T09:27:29+00:00",
|
"time": "2023-09-27T20:04:15+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -485,7 +485,7 @@
|
|||||||
"homepage": "https://www.doctrine-project.org/",
|
"homepage": "https://www.doctrine-project.org/",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/doctrine/deprecations/issues",
|
"issues": "https://github.com/doctrine/deprecations/issues",
|
||||||
"source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
|
"source": "https://github.com/doctrine/deprecations/tree/1.1.2"
|
||||||
},
|
},
|
||||||
"install-path": "../doctrine/deprecations"
|
"install-path": "../doctrine/deprecations"
|
||||||
},
|
},
|
||||||
@@ -1129,17 +1129,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "1.23.1",
|
"version": "1.24.2",
|
||||||
"version_normalized": "1.23.1.0",
|
"version_normalized": "1.24.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "846ae76eef31c6d7790fac9bc399ecee45160b26"
|
"reference": "bcad8d995980440892759db0c32acae7c8e79442"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
|
||||||
"reference": "846ae76eef31c6d7790fac9bc399ecee45160b26",
|
"reference": "bcad8d995980440892759db0c32acae7c8e79442",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1156,7 +1156,7 @@
|
|||||||
"phpunit/phpunit": "^9.5",
|
"phpunit/phpunit": "^9.5",
|
||||||
"symfony/process": "^5.2"
|
"symfony/process": "^5.2"
|
||||||
},
|
},
|
||||||
"time": "2023-08-03T16:32:59+00:00",
|
"time": "2023-09-26T12:28:12+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1173,23 +1173,23 @@
|
|||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
|
||||||
},
|
},
|
||||||
"install-path": "../phpstan/phpdoc-parser"
|
"install-path": "../phpstan/phpdoc-parser"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpstan",
|
"name": "phpstan/phpstan",
|
||||||
"version": "1.10.32",
|
"version": "1.10.36",
|
||||||
"version_normalized": "1.10.32.0",
|
"version_normalized": "1.10.36.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpstan.git",
|
"url": "https://github.com/phpstan/phpstan.git",
|
||||||
"reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44"
|
"reference": "ffa3089511121a672e62969404e4fddc753f9b15"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44",
|
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/ffa3089511121a672e62969404e4fddc753f9b15",
|
||||||
"reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44",
|
"reference": "ffa3089511121a672e62969404e4fddc753f9b15",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1198,7 +1198,7 @@
|
|||||||
"conflict": {
|
"conflict": {
|
||||||
"phpstan/phpstan-shim": "*"
|
"phpstan/phpstan-shim": "*"
|
||||||
},
|
},
|
||||||
"time": "2023-08-24T21:54:50+00:00",
|
"time": "2023-09-29T14:07:45+00:00",
|
||||||
"bin": [
|
"bin": [
|
||||||
"phpstan",
|
"phpstan",
|
||||||
"phpstan.phar"
|
"phpstan.phar"
|
||||||
@@ -2351,17 +2351,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v6.3.2",
|
"version": "v6.3.5",
|
||||||
"version_normalized": "6.3.2.0",
|
"version_normalized": "6.3.5.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "53d1a83225002635bca3482fcbf963001313fb68"
|
"reference": "13d76d0fb049051ed12a04bef4f9de8715bea339"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68",
|
"url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339",
|
||||||
"reference": "53d1a83225002635bca3482fcbf963001313fb68",
|
"reference": "13d76d0fb049051ed12a04bef4f9de8715bea339",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2381,7 +2381,7 @@
|
|||||||
"symfony/translation-contracts": "^2.5|^3.0",
|
"symfony/translation-contracts": "^2.5|^3.0",
|
||||||
"symfony/var-exporter": "^5.4|^6.0"
|
"symfony/var-exporter": "^5.4|^6.0"
|
||||||
},
|
},
|
||||||
"time": "2023-07-05T08:41:27+00:00",
|
"time": "2023-09-18T10:38:32+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -2420,7 +2420,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v6.3.2"
|
"source": "https://github.com/symfony/string/tree/v6.3.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|||||||
30
vendor/composer/installed.php
vendored
30
vendor/composer/installed.php
vendored
@@ -38,9 +38,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'composer/semver' => array(
|
'composer/semver' => array(
|
||||||
'pretty_version' => '3.3.2',
|
'pretty_version' => '3.4.0',
|
||||||
'version' => '3.3.2.0',
|
'version' => '3.4.0.0',
|
||||||
'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9',
|
'reference' => '35e8d0af4486141bc745f23a29cc2091eb624a32',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/./semver',
|
'install_path' => __DIR__ . '/./semver',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -65,9 +65,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'doctrine/deprecations' => array(
|
'doctrine/deprecations' => array(
|
||||||
'pretty_version' => 'v1.1.1',
|
'pretty_version' => '1.1.2',
|
||||||
'version' => '1.1.1.0',
|
'version' => '1.1.2.0',
|
||||||
'reference' => '612a3ee5ab0d5dd97b7cf3874a6efe24325efac3',
|
'reference' => '4f2d4f2836e7ec4e7a8625e75c6aa916004db931',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../doctrine/deprecations',
|
'install_path' => __DIR__ . '/../doctrine/deprecations',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -182,18 +182,18 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpstan/phpdoc-parser' => array(
|
'phpstan/phpdoc-parser' => array(
|
||||||
'pretty_version' => '1.23.1',
|
'pretty_version' => '1.24.2',
|
||||||
'version' => '1.23.1.0',
|
'version' => '1.24.2.0',
|
||||||
'reference' => '846ae76eef31c6d7790fac9bc399ecee45160b26',
|
'reference' => 'bcad8d995980440892759db0c32acae7c8e79442',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
|
'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpstan/phpstan' => array(
|
'phpstan/phpstan' => array(
|
||||||
'pretty_version' => '1.10.32',
|
'pretty_version' => '1.10.36',
|
||||||
'version' => '1.10.32.0',
|
'version' => '1.10.36.0',
|
||||||
'reference' => 'c47e47d3ab03137c0e121e77c4d2cb58672f6d44',
|
'reference' => 'ffa3089511121a672e62969404e4fddc753f9b15',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpstan/phpstan',
|
'install_path' => __DIR__ . '/../phpstan/phpstan',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -347,9 +347,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'symfony/string' => array(
|
'symfony/string' => array(
|
||||||
'pretty_version' => 'v6.3.2',
|
'pretty_version' => 'v6.3.5',
|
||||||
'version' => '6.3.2.0',
|
'version' => '6.3.5.0',
|
||||||
'reference' => '53d1a83225002635bca3482fcbf963001313fb68',
|
'reference' => '13d76d0fb049051ed12a04bef4f9de8715bea339',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/string',
|
'install_path' => __DIR__ . '/../symfony/string',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|||||||
5
vendor/composer/semver/CHANGELOG.md
vendored
5
vendor/composer/semver/CHANGELOG.md
vendored
@@ -3,6 +3,10 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
### [3.4.0] 2023-08-31
|
||||||
|
|
||||||
|
* Support larger major version numbers (#149)
|
||||||
|
|
||||||
### [3.3.2] 2022-04-01
|
### [3.3.2] 2022-04-01
|
||||||
|
|
||||||
* Fixed handling of non-string values (#134)
|
* Fixed handling of non-string values (#134)
|
||||||
@@ -175,6 +179,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
|
- Namespace: `Composer\Test\Package\LinkConstraint` -> `Composer\Test\Semver\Constraint`
|
||||||
* Changed: code style using php-cs-fixer.
|
* Changed: code style using php-cs-fixer.
|
||||||
|
|
||||||
|
[3.4.0]: https://github.com/composer/semver/compare/3.3.2...3.4.0
|
||||||
[3.3.2]: https://github.com/composer/semver/compare/3.3.1...3.3.2
|
[3.3.2]: https://github.com/composer/semver/compare/3.3.1...3.3.2
|
||||||
[3.3.1]: https://github.com/composer/semver/compare/3.3.0...3.3.1
|
[3.3.1]: https://github.com/composer/semver/compare/3.3.0...3.3.1
|
||||||
[3.3.0]: https://github.com/composer/semver/compare/3.2.9...3.3.0
|
[3.3.0]: https://github.com/composer/semver/compare/3.2.9...3.3.0
|
||||||
|
|||||||
7
vendor/composer/semver/README.md
vendored
7
vendor/composer/semver/README.md
vendored
@@ -6,8 +6,9 @@ Semver (Semantic Versioning) library that offers utilities, version constraint p
|
|||||||
Originally written as part of [composer/composer](https://github.com/composer/composer),
|
Originally written as part of [composer/composer](https://github.com/composer/composer),
|
||||||
now extracted and made available as a stand-alone library.
|
now extracted and made available as a stand-alone library.
|
||||||
|
|
||||||
[](https://github.com/composer/semver/actions)
|
[](https://github.com/composer/semver/actions/workflows/continuous-integration.yml)
|
||||||
|
[](https://github.com/composer/semver/actions/workflows/lint.yml)
|
||||||
|
[](https://github.com/composer/semver/actions/workflows/phpstan.yml)
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
@@ -15,7 +16,7 @@ Installation
|
|||||||
Install the latest version with:
|
Install the latest version with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ composer require composer/semver
|
composer require composer/semver
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
vendor/composer/semver/composer.json
vendored
2
vendor/composer/semver/composer.json
vendored
@@ -27,7 +27,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"irc": "irc://irc.freenode.org/composer",
|
"irc": "ircs://irc.libera.chat:6697/composer",
|
||||||
"issues": "https://github.com/composer/semver/issues"
|
"issues": "https://github.com/composer/semver/issues"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|||||||
11
vendor/composer/semver/phpstan-baseline.neon
vendored
Normal file
11
vendor/composer/semver/phpstan-baseline.neon
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
parameters:
|
||||||
|
ignoreErrors:
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$operator of class Composer\\\\Semver\\\\Constraint\\\\Constraint constructor expects '\\!\\='\\|'\\<'\\|'\\<\\='\\|'\\<\\>'\\|'\\='\\|'\\=\\='\\|'\\>'\\|'\\>\\=', non\\-falsy\\-string given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: src/VersionParser.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Strict comparison using \\=\\=\\= between null and non\\-empty\\-string will always evaluate to false\\.$#"
|
||||||
|
count: 2
|
||||||
|
path: src/VersionParser.php
|
||||||
24
vendor/composer/semver/src/VersionParser.php
vendored
24
vendor/composer/semver/src/VersionParser.php
vendored
@@ -134,15 +134,15 @@ class VersionParser
|
|||||||
}
|
}
|
||||||
|
|
||||||
// match classical versioning
|
// match classical versioning
|
||||||
if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) {
|
if (preg_match('{^v?(\d{1,5}+)(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) {
|
||||||
$version = $matches[1]
|
$version = $matches[1]
|
||||||
. (!empty($matches[2]) ? $matches[2] : '.0')
|
. (!empty($matches[2]) ? $matches[2] : '.0')
|
||||||
. (!empty($matches[3]) ? $matches[3] : '.0')
|
. (!empty($matches[3]) ? $matches[3] : '.0')
|
||||||
. (!empty($matches[4]) ? $matches[4] : '.0');
|
. (!empty($matches[4]) ? $matches[4] : '.0');
|
||||||
$index = 5;
|
$index = 5;
|
||||||
// match date(time) based versioning
|
// match date(time) based versioning
|
||||||
} elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) {
|
} elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3}){0,2})' . self::$modifierRegex . '$}i', $version, $matches)) {
|
||||||
$version = preg_replace('{\D}', '.', $matches[1]);
|
$version = (string) preg_replace('{\D}', '.', $matches[1]);
|
||||||
$index = 2;
|
$index = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,16 +260,16 @@ class VersionParser
|
|||||||
}
|
}
|
||||||
$orGroups = array();
|
$orGroups = array();
|
||||||
|
|
||||||
foreach ($orConstraints as $constraints) {
|
foreach ($orConstraints as $orConstraint) {
|
||||||
$andConstraints = preg_split('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)}', $constraints);
|
$andConstraints = preg_split('{(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)}', $orConstraint);
|
||||||
if (false === $andConstraints) {
|
if (false === $andConstraints) {
|
||||||
throw new \RuntimeException('Failed to preg_split string: '.$constraints);
|
throw new \RuntimeException('Failed to preg_split string: '.$orConstraint);
|
||||||
}
|
}
|
||||||
if (\count($andConstraints) > 1) {
|
if (\count($andConstraints) > 1) {
|
||||||
$constraintObjects = array();
|
$constraintObjects = array();
|
||||||
foreach ($andConstraints as $constraint) {
|
foreach ($andConstraints as $andConstraint) {
|
||||||
foreach ($this->parseConstraint($constraint) as $parsedConstraint) {
|
foreach ($this->parseConstraint($andConstraint) as $parsedAndConstraint) {
|
||||||
$constraintObjects[] = $parsedConstraint;
|
$constraintObjects[] = $parsedAndConstraint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -285,11 +285,11 @@ class VersionParser
|
|||||||
$orGroups[] = $constraint;
|
$orGroups[] = $constraint;
|
||||||
}
|
}
|
||||||
|
|
||||||
$constraint = MultiConstraint::create($orGroups, false);
|
$parsedConstraint = MultiConstraint::create($orGroups, false);
|
||||||
|
|
||||||
$constraint->setPrettyString($prettyConstraint);
|
$parsedConstraint->setPrettyString($prettyConstraint);
|
||||||
|
|
||||||
return $constraint;
|
return $parsedConstraint;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ use function array_reduce;
|
|||||||
use function assert;
|
use function assert;
|
||||||
use function debug_backtrace;
|
use function debug_backtrace;
|
||||||
use function sprintf;
|
use function sprintf;
|
||||||
|
use function str_replace;
|
||||||
use function strpos;
|
use function strpos;
|
||||||
use function strrpos;
|
use function strrpos;
|
||||||
use function substr;
|
use function substr;
|
||||||
@@ -138,7 +139,7 @@ class Deprecation
|
|||||||
|
|
||||||
// first check that the caller is not from a tests folder, in which case we always let deprecations pass
|
// first check that the caller is not from a tests folder, in which case we always let deprecations pass
|
||||||
if (isset($backtrace[1]['file'], $backtrace[0]['file']) && strpos($backtrace[1]['file'], DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR) === false) {
|
if (isset($backtrace[1]['file'], $backtrace[0]['file']) && strpos($backtrace[1]['file'], DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR) === false) {
|
||||||
$path = DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . $package . DIRECTORY_SEPARATOR;
|
$path = DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $package) . DIRECTORY_SEPARATOR;
|
||||||
|
|
||||||
if (strpos($backtrace[0]['file'], $path) === false) {
|
if (strpos($backtrace[0]['file'], $path) === false) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
22
vendor/doctrine/deprecations/phpcs.xml
vendored
22
vendor/doctrine/deprecations/phpcs.xml
vendored
@@ -1,22 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<ruleset>
|
|
||||||
<arg name="basepath" value="."/>
|
|
||||||
<arg name="extensions" value="php"/>
|
|
||||||
<arg name="parallel" value="80"/>
|
|
||||||
<arg name="cache" value=".phpcs-cache"/>
|
|
||||||
<arg name="colors"/>
|
|
||||||
|
|
||||||
<!-- Ignore warnings, show progress of the run and show sniff names -->
|
|
||||||
<arg value="nps"/>
|
|
||||||
|
|
||||||
<config name="php_version" value="70100"/>
|
|
||||||
|
|
||||||
<!-- Directories to be checked -->
|
|
||||||
<file>lib</file>
|
|
||||||
<file>tests</file>
|
|
||||||
|
|
||||||
<!-- Include full Doctrine Coding Standard -->
|
|
||||||
<rule ref="Doctrine">
|
|
||||||
<exclude name="SlevomatCodingStandard.TypeHints.PropertyTypeHint.MissingNativeTypeHint" />
|
|
||||||
</rule>
|
|
||||||
</ruleset>
|
|
||||||
9
vendor/doctrine/deprecations/phpstan.neon
vendored
9
vendor/doctrine/deprecations/phpstan.neon
vendored
@@ -1,9 +0,0 @@
|
|||||||
parameters:
|
|
||||||
level: 6
|
|
||||||
paths:
|
|
||||||
- lib
|
|
||||||
- tests
|
|
||||||
|
|
||||||
includes:
|
|
||||||
- vendor/phpstan/phpstan-phpunit/extension.neon
|
|
||||||
- vendor/phpstan/phpstan-phpunit/rules.neon
|
|
||||||
30
vendor/doctrine/deprecations/psalm.xml
vendored
30
vendor/doctrine/deprecations/psalm.xml
vendored
@@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<psalm
|
|
||||||
errorLevel="1"
|
|
||||||
resolveFromConfigFile="true"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xmlns="https://getpsalm.org/schema/config"
|
|
||||||
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
|
||||||
findUnusedBaselineEntry="true"
|
|
||||||
findUnusedCode="false"
|
|
||||||
>
|
|
||||||
<projectFiles>
|
|
||||||
<directory name="lib/Doctrine/Deprecations" />
|
|
||||||
<directory name="tests/Doctrine/Deprecations" />
|
|
||||||
<ignoreFiles>
|
|
||||||
<directory name="vendor" />
|
|
||||||
</ignoreFiles>
|
|
||||||
</projectFiles>
|
|
||||||
<plugins>
|
|
||||||
<pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
|
|
||||||
</plugins>
|
|
||||||
<issueHandlers>
|
|
||||||
<DeprecatedMethod>
|
|
||||||
<errorLevel type="suppress">
|
|
||||||
<!-- Remove when dropping support for PHPUnit 9.6 -->
|
|
||||||
<referencedMethod name="PHPUnit\Framework\TestCase::expectDeprecation"/>
|
|
||||||
<referencedMethod name="PHPUnit\Framework\TestCase::expectDeprecationMessage"/>
|
|
||||||
</errorLevel>
|
|
||||||
</DeprecatedMethod>
|
|
||||||
</issueHandlers>
|
|
||||||
</psalm>
|
|
||||||
@@ -10,11 +10,6 @@ parameters:
|
|||||||
count: 1
|
count: 1
|
||||||
path: src/Ast/NodeTraverser.php
|
path: src/Ast/NodeTraverser.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Strict comparison using \\=\\=\\= between 2 and 2 will always evaluate to true\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: src/Ast/NodeTraverser.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Variable property access on PHPStan\\\\PhpDocParser\\\\Ast\\\\Node\\.$#"
|
message: "#^Variable property access on PHPStan\\\\PhpDocParser\\\\Ast\\\\Node\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
|||||||
@@ -682,24 +682,34 @@ class PhpDocParser
|
|||||||
$tokens->dropSavePoint(); // because of ConstFetchNode
|
$tokens->dropSavePoint(); // because of ConstFetchNode
|
||||||
}
|
}
|
||||||
|
|
||||||
$exception = new ParserException(
|
$currentTokenValue = $tokens->currentTokenValue();
|
||||||
$tokens->currentTokenValue(),
|
$currentTokenType = $tokens->currentTokenType();
|
||||||
$tokens->currentTokenType(),
|
$currentTokenOffset = $tokens->currentTokenOffset();
|
||||||
$tokens->currentTokenOffset(),
|
$currentTokenLine = $tokens->currentTokenLine();
|
||||||
Lexer::TOKEN_IDENTIFIER,
|
|
||||||
null,
|
|
||||||
$tokens->currentTokenLine()
|
|
||||||
);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$constExpr = $this->doctrineConstantExprParser->parse($tokens, true);
|
$constExpr = $this->doctrineConstantExprParser->parse($tokens, true);
|
||||||
if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) {
|
if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $constExpr;
|
return $constExpr;
|
||||||
} catch (LogicException $e) {
|
} catch (LogicException $e) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1117,15 +1127,13 @@ class PhpDocParser
|
|||||||
{
|
{
|
||||||
if ($tokens->isCurrentTokenType(Lexer::TOKEN_THIS_VARIABLE)) {
|
if ($tokens->isCurrentTokenType(Lexer::TOKEN_THIS_VARIABLE)) {
|
||||||
$parameter = '$this';
|
$parameter = '$this';
|
||||||
$requirePropertyOrMethod = true;
|
|
||||||
$tokens->next();
|
$tokens->next();
|
||||||
} else {
|
} else {
|
||||||
$parameter = $tokens->currentTokenValue();
|
$parameter = $tokens->currentTokenValue();
|
||||||
$requirePropertyOrMethod = false;
|
|
||||||
$tokens->consumeTokenType(Lexer::TOKEN_VARIABLE);
|
$tokens->consumeTokenType(Lexer::TOKEN_VARIABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($requirePropertyOrMethod || $tokens->isCurrentTokenType(Lexer::TOKEN_ARROW)) {
|
if ($tokens->isCurrentTokenType(Lexer::TOKEN_ARROW)) {
|
||||||
$tokens->consumeTokenType(Lexer::TOKEN_ARROW);
|
$tokens->consumeTokenType(Lexer::TOKEN_ARROW);
|
||||||
|
|
||||||
$propertyOrMethod = $tokens->currentTokenValue();
|
$propertyOrMethod = $tokens->currentTokenValue();
|
||||||
|
|||||||
@@ -196,28 +196,45 @@ class TypeParser
|
|||||||
$tokens->dropSavePoint(); // because of ConstFetchNode
|
$tokens->dropSavePoint(); // because of ConstFetchNode
|
||||||
}
|
}
|
||||||
|
|
||||||
$exception = new ParserException(
|
$currentTokenValue = $tokens->currentTokenValue();
|
||||||
$tokens->currentTokenValue(),
|
$currentTokenType = $tokens->currentTokenType();
|
||||||
$tokens->currentTokenType(),
|
$currentTokenOffset = $tokens->currentTokenOffset();
|
||||||
$tokens->currentTokenOffset(),
|
$currentTokenLine = $tokens->currentTokenLine();
|
||||||
Lexer::TOKEN_IDENTIFIER,
|
|
||||||
null,
|
|
||||||
$tokens->currentTokenLine()
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($this->constExprParser === null) {
|
if ($this->constExprParser === null) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$constExpr = $this->constExprParser->parse($tokens, true);
|
$constExpr = $this->constExprParser->parse($tokens, true);
|
||||||
if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) {
|
if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->enrichWithAttributes($tokens, new Ast\Type\ConstTypeNode($constExpr), $startLine, $startIndex);
|
return $this->enrichWithAttributes($tokens, new Ast\Type\ConstTypeNode($constExpr), $startLine, $startIndex);
|
||||||
} catch (LogicException $e) {
|
} catch (LogicException $e) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,42 +398,33 @@ class TypeParser
|
|||||||
public function parseGeneric(TokenIterator $tokens, Ast\Type\IdentifierTypeNode $baseType): Ast\Type\GenericTypeNode
|
public function parseGeneric(TokenIterator $tokens, Ast\Type\IdentifierTypeNode $baseType): Ast\Type\GenericTypeNode
|
||||||
{
|
{
|
||||||
$tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET);
|
$tokens->consumeTokenType(Lexer::TOKEN_OPEN_ANGLE_BRACKET);
|
||||||
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
|
||||||
|
|
||||||
|
$startLine = $baseType->getAttribute(Ast\Attribute::START_LINE);
|
||||||
|
$startIndex = $baseType->getAttribute(Ast\Attribute::START_INDEX);
|
||||||
$genericTypes = [];
|
$genericTypes = [];
|
||||||
$variances = [];
|
$variances = [];
|
||||||
|
|
||||||
[$genericTypes[], $variances[]] = $this->parseGenericTypeArgument($tokens);
|
$isFirst = true;
|
||||||
|
while ($isFirst || $tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) {
|
||||||
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
|
||||||
|
|
||||||
while ($tokens->tryConsumeTokenType(Lexer::TOKEN_COMMA)) {
|
|
||||||
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
||||||
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET)) {
|
|
||||||
// trailing comma case
|
|
||||||
$type = new Ast\Type\GenericTypeNode($baseType, $genericTypes, $variances);
|
|
||||||
$startLine = $baseType->getAttribute(Ast\Attribute::START_LINE);
|
|
||||||
$startIndex = $baseType->getAttribute(Ast\Attribute::START_INDEX);
|
|
||||||
if ($startLine !== null && $startIndex !== null) {
|
|
||||||
$type = $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $type;
|
// trailing comma case
|
||||||
|
if (!$isFirst && $tokens->isCurrentTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET)) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
$isFirst = false;
|
||||||
|
|
||||||
[$genericTypes[], $variances[]] = $this->parseGenericTypeArgument($tokens);
|
[$genericTypes[], $variances[]] = $this->parseGenericTypeArgument($tokens);
|
||||||
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
|
|
||||||
$tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET);
|
|
||||||
|
|
||||||
$type = new Ast\Type\GenericTypeNode($baseType, $genericTypes, $variances);
|
$type = new Ast\Type\GenericTypeNode($baseType, $genericTypes, $variances);
|
||||||
$startLine = $baseType->getAttribute(Ast\Attribute::START_LINE);
|
|
||||||
$startIndex = $baseType->getAttribute(Ast\Attribute::START_INDEX);
|
|
||||||
if ($startLine !== null && $startIndex !== null) {
|
if ($startLine !== null && $startIndex !== null) {
|
||||||
$type = $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex);
|
$type = $this->enrichWithAttributes($tokens, $type, $startLine, $startIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$tokens->consumeTokenType(Lexer::TOKEN_CLOSE_ANGLE_BRACKET);
|
||||||
|
|
||||||
return $type;
|
return $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -516,7 +524,7 @@ class TypeParser
|
|||||||
return $this->parseNullable($tokens);
|
return $this->parseNullable($tokens);
|
||||||
|
|
||||||
} elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) {
|
} elseif ($tokens->tryConsumeTokenType(Lexer::TOKEN_OPEN_PARENTHESES)) {
|
||||||
$type = $this->parse($tokens);
|
$type = $this->subParse($tokens);
|
||||||
$tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES);
|
$tokens->consumeTokenType(Lexer::TOKEN_CLOSE_PARENTHESES);
|
||||||
if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) {
|
if ($tokens->isCurrentTokenType(Lexer::TOKEN_OPEN_SQUARE_BRACKET)) {
|
||||||
$type = $this->tryParseArrayOrOffsetAccess($tokens, $type);
|
$type = $this->tryParseArrayOrOffsetAccess($tokens, $type);
|
||||||
@@ -600,23 +608,33 @@ class TypeParser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$exception = new ParserException(
|
$currentTokenValue = $tokens->currentTokenValue();
|
||||||
$tokens->currentTokenValue(),
|
$currentTokenType = $tokens->currentTokenType();
|
||||||
$tokens->currentTokenType(),
|
$currentTokenOffset = $tokens->currentTokenOffset();
|
||||||
$tokens->currentTokenOffset(),
|
$currentTokenLine = $tokens->currentTokenLine();
|
||||||
Lexer::TOKEN_IDENTIFIER,
|
|
||||||
null,
|
|
||||||
$tokens->currentTokenLine()
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($this->constExprParser === null) {
|
if ($this->constExprParser === null) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$constExpr = $this->constExprParser->parse($tokens, true);
|
$constExpr = $this->constExprParser->parse($tokens, true);
|
||||||
if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) {
|
if ($constExpr instanceof Ast\ConstExpr\ConstExprArrayNode) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$type = new Ast\Type\ConstTypeNode($constExpr);
|
$type = new Ast\Type\ConstTypeNode($constExpr);
|
||||||
@@ -631,7 +649,14 @@ class TypeParser
|
|||||||
|
|
||||||
return $type;
|
return $type;
|
||||||
} catch (LogicException $e) {
|
} catch (LogicException $e) {
|
||||||
throw $exception;
|
throw new ParserException(
|
||||||
|
$currentTokenValue,
|
||||||
|
$currentTokenType,
|
||||||
|
$currentTokenOffset,
|
||||||
|
Lexer::TOKEN_IDENTIFIER,
|
||||||
|
null,
|
||||||
|
$currentTokenLine
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
vendor/phpstan/phpstan/phpstan.phar
vendored
BIN
vendor/phpstan/phpstan/phpstan.phar
vendored
Binary file not shown.
26
vendor/phpstan/phpstan/phpstan.phar.asc
vendored
26
vendor/phpstan/phpstan/phpstan.phar.asc
vendored
@@ -1,16 +1,16 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmTn0ZAACgkQUcZzBf/C
|
iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmUW2hQACgkQUcZzBf/C
|
||||||
5cCXIA/9Gmo24JCtSO2yzad3Gi+Jlv0kJtbTMiFgnteWGOq+eXDVC4o9A8I671ei
|
5cAX+g/8DLEpwgjbRjXNPaPoL9y2lbhYuOAkFuTLElmFTNRvmUgOrqI3pGdfWves
|
||||||
wkVuv2Gesez0hCcEvFT+QIUwS/xek3tvlGEqj7y9QPtPjhWb1x8hLyy8mlxwhFQh
|
tFCRVdzefPnbi8PX7Y0u14bKY/YieSgeXEwqaZfllPdan7TJ7gdu8ZvOxZeiOvT5
|
||||||
w17ecQncsyRH0yLkNJB8LkMNNi6t+EjZfrxtyezeKGfVT8HM439Wy/VjccybcJEc
|
Ns7Bnn7F+TyK7Z9gFn9pSt4bopLXgoGM3Xw4yg//HWQIb2gYzP/OEUwzF6vj1N88
|
||||||
+8Ld5odxf9WINDUq2D+ysiQ9uW0EJsaxe227SZ4Vm9MgPQw0PFFMXxWn96Bb/Eyv
|
x7GyXKhuNClh8DOYLPdw/Mp5C+Z4wEqUpxFFZ6nMZN239gOC4kxz2IfbMj1Lb1jR
|
||||||
ryB8nKL/Hp3nVzcQdcjaZ4L9K6aH0FO4VtSSdSYaHA3jVxTBugr19FTHiWEEJalS
|
5diFq+lAB9IfmqlRqJnlkRDmM3jt6G6+i4YNIdk8iRN3ppMJWT0Ck9cSiRSPhImB
|
||||||
zv0j97fDkH4xlnzuW74j/35rOqZlMd6NBzS0/eHvpuJ6kfz0KPHXnhW3EQWu6cTY
|
n/fo4AA+fhomI6aXBECmYRud78ul0nm411KVM+a/cCnVD9nYrab6eC3K6KBeuWOw
|
||||||
MTrXo5CfSAfpsMSp6w1evnDRS4z9pqNQ5hmdA2hl+3qTwixyYjP19EKxKfTWC7Qr
|
2SNTdKSY+Al5y6mwjwzLCwrOLR7WxCTMkdO8pcbCj62IuKKyxWtS4xI/oxZE+z1S
|
||||||
o7SwJruaCl6MfQ3dTtvZrRYtvDyJxIUKXGlAaUMA2NP4rh7vUWGwgSJmSwaSs9wP
|
2o4arkHhv103JQiF9NkbRWnUQakt2IhjWDjZmz051jMjijHfSW3j4WpZ8sjwk5mY
|
||||||
Fv5cTJ+NO3XRDF5RaWF/MNWH1JjupCwQxlsQthW8Dyy1W2pMtv84AY8jk508boo1
|
GKO/jQMgJ0M/4h46q+pFawMljBgK+7ECHF1nEAuoF2e+5v8VJ+XRJ+VC6rdvjQWC
|
||||||
9nEIa/nrKbmjz2fSuIWWVVKrUD6qR5JpF4Odd4p+NR0h8WT/2JAF9rW38WZXWrmh
|
StcsiFDznyRJgosaOePn39mLt6E0wOBc6Ko8OIoBrSDP7l5Wh+H6yIzpCiPLCm9C
|
||||||
MsSLy056l96wOB3CnNWtCx7M2FXXGlcOK61Kv7+ybu4A6oFybGg=
|
8sx9U+LB0Jt+BHpWYReQcHrdbek5H7Iu4h8s/F8YYZFEeI0O9tc=
|
||||||
=4S4l
|
=Y8DE
|
||||||
-----END PGP SIGNATURE-----
|
-----END PGP SIGNATURE-----
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
/*
|
/*
|
||||||
* This file has been auto-generated by the Symfony String Component for internal use.
|
* This file has been auto-generated by the Symfony String Component for internal use.
|
||||||
*
|
*
|
||||||
* Unicode version: 15.0.0
|
* Unicode version: 15.1.0
|
||||||
* Date: 2022-10-05T17:16:36+02:00
|
* Date: 2023-09-13T11:47:12+00:00
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@@ -166,7 +166,7 @@ return [
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
12272,
|
12272,
|
||||||
12283,
|
12287,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
12288,
|
12288,
|
||||||
@@ -396,6 +396,10 @@ return [
|
|||||||
12736,
|
12736,
|
||||||
12771,
|
12771,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
12783,
|
||||||
|
12783,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
12784,
|
12784,
|
||||||
12799,
|
12799,
|
||||||
@@ -1110,6 +1114,14 @@ return [
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
191457,
|
191457,
|
||||||
|
191471,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
191472,
|
||||||
|
192093,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
192094,
|
||||||
194559,
|
194559,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
/*
|
/*
|
||||||
* This file has been auto-generated by the Symfony String Component for internal use.
|
* This file has been auto-generated by the Symfony String Component for internal use.
|
||||||
*
|
*
|
||||||
* Unicode version: 15.0.0
|
* Unicode version: 15.1.0
|
||||||
* Date: 2022-10-05T17:16:37+02:00
|
* Date: 2023-09-13T11:47:13+00:00
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
|||||||
66
www/admin/class_test.error_msg.php
Normal file
66
www/admin/class_test.error_msg.php
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-error_msg';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Logging\Logger\MessageLevel as ml;
|
||||||
|
|
||||||
|
$log = new CoreLibs\Logging\Logging([
|
||||||
|
'log_folder' => BASE . LOG,
|
||||||
|
'log_file_id' => $LOG_FILE_ID,
|
||||||
|
'log_per_date' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$PAGE_NAME = 'TEST CLASS: ERROR MSG';
|
||||||
|
print "<!DOCTYPE html>";
|
||||||
|
print "<html><head><title>" . $PAGE_NAME . "</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
|
|
||||||
|
$em = new \CoreLibs\Logging\ErrorMessage($log);
|
||||||
|
|
||||||
|
print "Log ERROR: " . $log->prAr($em->getFlagLogError()) . "<br>";
|
||||||
|
|
||||||
|
print "FN: " . ml::fromName('Affe')->name . "<br>";
|
||||||
|
print "NU: " . ml::fromValue(100)->name . "<br>";
|
||||||
|
print "NU: " . ml::fromValue(1000)->name . "<br>";
|
||||||
|
|
||||||
|
$em->setErrorMsg('123', 'error', 'msg this is bad, auto logged if debug');
|
||||||
|
$em->setErrorMsg('123', 'error', 'msg this is bad, auto logged if debug', 'target-id', 'other-style');
|
||||||
|
$em->setErrorMsg('123', 'error', 'msg this is bad, logged always', log_error:true);
|
||||||
|
$em->setErrorMsg('123', 'error', 'msg this is bad, never logged', log_error:false);
|
||||||
|
$em->setErrorMsg('1000', 'info', 'This is good');
|
||||||
|
$em->setErrorMsg('9999', 'abort', 'BAD: This is critical (abort)');
|
||||||
|
$em->setErrorMsg('10-1000', 'wrong', 'Wrong level: This is emergency');
|
||||||
|
// set some jump targets too
|
||||||
|
$em->setErrorMsg('100-1', 'error', 'Input wring', jump_target:['target' => 'foo-123', 'info' => 'Jump Target 123']);
|
||||||
|
$em->setErrorMsg('100-2', 'error', 'Input wring', jump_target:['target' => 'foo-123', 'info' => 'Jump Target 456']);
|
||||||
|
$em->setMessage('error', 'I have no id set', jump_target:['target' => 'bar-123', 'info' => 'Jump Bar']);
|
||||||
|
$em->setMessage('error', 'Jump empty', jump_target:['target' => 'bar-empty']);
|
||||||
|
|
||||||
|
print "ErrorsLast: <pre>" . $log->prAr($em->getLastErrorMsg()) . "</pre>";
|
||||||
|
print "ErrorsIds: <pre>" . $log->prAr($em->getErrorIds()) . "</pre>";
|
||||||
|
print "Errors: <pre>" . $log->prAr($em->getErrorMsg()) . "</pre>";
|
||||||
|
print "JumpTargets: <pre>" . $log->prAr($em->getJumpTarget()) . "</pre>";
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
$log->debug('[END]', '==========================================>');
|
||||||
|
|
||||||
|
// __END__
|
||||||
@@ -15,7 +15,7 @@ define('USE_DATABASE', false);
|
|||||||
// sample config
|
// sample config
|
||||||
require 'config.php';
|
require 'config.php';
|
||||||
// define log file id
|
// define log file id
|
||||||
$LOG_FILE_ID = 'classTest-datetime';
|
$LOG_FILE_ID = 'classTest-file';
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
|
|
||||||
use CoreLibs\Check\File;
|
use CoreLibs\Check\File;
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ $test_files = [
|
|||||||
'class_test.config.link.php' => 'Class Test: CONFIG LINK',
|
'class_test.config.link.php' => 'Class Test: CONFIG LINK',
|
||||||
'class_test.config.direct.php' => 'Class Test: CONFIG DIRECT',
|
'class_test.config.direct.php' => 'Class Test: CONFIG DIRECT',
|
||||||
'class_test.class-calls.php' => 'Class Test: CLASS CALLS',
|
'class_test.class-calls.php' => 'Class Test: CLASS CALLS',
|
||||||
|
'class_test.error_msg.php' => 'Class Test: ERROR MSG',
|
||||||
'subfolder/class_test.config.direct.php' => 'Class Test: CONFIG DIRECT SUB',
|
'subfolder/class_test.config.direct.php' => 'Class Test: CONFIG DIRECT SUB',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
6
www/admin/edit_base_page_test.php
Normal file
6
www/admin/edit_base_page_test.php
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// empty file for add and remove test
|
||||||
|
|
||||||
|
// __END__
|
||||||
|
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
<textarea name="{$element.data.name}"{if $element.data.rows} rows="{$element.data.rows}"{/if}{if $element.data.cols} cols="{$element.data.cols}"{/if}>{$element.data.value}</textarea>
|
<textarea name="{$element.data.name}"{if $element.data.rows} rows="{$element.data.rows}"{/if}{if $element.data.cols} cols="{$element.data.cols}"{/if}>{$element.data.value}</textarea>
|
||||||
{/if}
|
{/if}
|
||||||
{if $element.type == 'drop_down'}
|
{if $element.type == 'drop_down'}
|
||||||
|
{* {$element.data.selected} *}
|
||||||
{html_options name=$element.data.name values=$element.data.value output=$element.data.output selected=$element.data.selected}
|
{html_options name=$element.data.name values=$element.data.value output=$element.data.output selected=$element.data.selected}
|
||||||
{if $drop_down_input}
|
{if $drop_down_input}
|
||||||
<input type="text" name="{$element.data.input_name}" value="{$element.data.input_value}"{if $element.data.input_size} size="{$element.data.input_size}"{/if}{if $element.data.input_length} maxlength="{$element.data.input_length}"{/if}>
|
<input type="text" name="{$element.data.input_name}" value="{$element.data.input_value}"{if $element.data.input_size} size="{$element.data.input_size}"{/if}{if $element.data.input_length} maxlength="{$element.data.input_length}"{/if}>
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ class EditBase
|
|||||||
private \CoreLibs\Output\Form\Generate $form;
|
private \CoreLibs\Output\Form\Generate $form;
|
||||||
/** @var \CoreLibs\Logging\Logging */
|
/** @var \CoreLibs\Logging\Logging */
|
||||||
public \CoreLibs\Logging\Logging $log;
|
public \CoreLibs\Logging\Logging $log;
|
||||||
|
/** @var \CoreLibs\Language\L10n */
|
||||||
|
public \CoreLibs\Language\L10n $l;
|
||||||
/** @var \CoreLibs\ACL\Login */
|
/** @var \CoreLibs\ACL\Login */
|
||||||
public \CoreLibs\ACL\Login $login;
|
public \CoreLibs\ACL\Login $login;
|
||||||
|
|
||||||
@@ -57,6 +59,7 @@ class EditBase
|
|||||||
) {
|
) {
|
||||||
$this->log = $log;
|
$this->log = $log;
|
||||||
$this->login = $login;
|
$this->login = $login;
|
||||||
|
$this->l = $l10n;
|
||||||
// smarty template engine (extended Translation version)
|
// smarty template engine (extended Translation version)
|
||||||
$this->smarty = new \CoreLibs\Template\SmartyExtend(
|
$this->smarty = new \CoreLibs\Template\SmartyExtend(
|
||||||
$l10n,
|
$l10n,
|
||||||
@@ -77,7 +80,7 @@ class EditBase
|
|||||||
echo "I am sorry, but this page cannot be viewed by a mobile phone";
|
echo "I am sorry, but this page cannot be viewed by a mobile phone";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
// $this->form->log->debug('POST', $this->form->log->prAr($_POST));
|
// $this->log->debug('POST', $this->log->prAr($_POST));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -151,7 +154,7 @@ class EditBase
|
|||||||
$q = "UPDATE " . $table_name
|
$q = "UPDATE " . $table_name
|
||||||
. " SET order_number = " . $row_data_order[$i]
|
. " SET order_number = " . $row_data_order[$i]
|
||||||
. " WHERE " . $table_name . "_id = " . $row_data_id[$i];
|
. " WHERE " . $table_name . "_id = " . $row_data_id[$i];
|
||||||
$q = $this->form->dbExec($q);
|
$q = $this->form->dba->dbExec($q);
|
||||||
}
|
}
|
||||||
} // for all article ids ...
|
} // for all article ids ...
|
||||||
} // if write
|
} // if write
|
||||||
@@ -170,7 +173,7 @@ class EditBase
|
|||||||
$options_name = [];
|
$options_name = [];
|
||||||
$options_selected = [];
|
$options_selected = [];
|
||||||
// DB read data for menu
|
// DB read data for menu
|
||||||
while (is_array($res = $this->form->dbReturn($q))) {
|
while (is_array($res = $this->form->dba->dbReturn($q))) {
|
||||||
$row_data[] = [
|
$row_data[] = [
|
||||||
"id" => $res[$table_name . "_id"],
|
"id" => $res[$table_name . "_id"],
|
||||||
"name" => $res["name"],
|
"name" => $res["name"],
|
||||||
@@ -179,7 +182,7 @@ class EditBase
|
|||||||
} // while read data ...
|
} // while read data ...
|
||||||
|
|
||||||
// html title
|
// html title
|
||||||
$this->HEADER['HTML_TITLE'] = $this->form->l->__('Edit Order');
|
$this->HEADER['HTML_TITLE'] = $this->l->__('Edit Order');
|
||||||
|
|
||||||
$messages = [];
|
$messages = [];
|
||||||
$error = $_POST['error'] ?? 0;
|
$error = $_POST['error'] ?? 0;
|
||||||
@@ -428,9 +431,9 @@ class EditBase
|
|||||||
$elements[] = $this->form->formCreateElement('template');
|
$elements[] = $this->form->formCreateElement('template');
|
||||||
break;
|
break;
|
||||||
case 'edit_pages':
|
case 'edit_pages':
|
||||||
if (!isset($this->form->table_array['edit_page_id']['value'])) {
|
if (!isset($this->form->dba->getTableArray()['edit_page_id']['value'])) {
|
||||||
$q = "DELETE FROM temp_files";
|
$q = "DELETE FROM temp_files";
|
||||||
$this->form->dbExec($q);
|
$this->form->dba->dbExec($q);
|
||||||
// gets all files in the current dir and dirs given ending with .php
|
// gets all files in the current dir and dirs given ending with .php
|
||||||
$folders = ['../admin/', '../frontend/'];
|
$folders = ['../admin/', '../frontend/'];
|
||||||
$files = ['*.php'];
|
$files = ['*.php'];
|
||||||
@@ -458,16 +461,16 @@ class EditBase
|
|||||||
if ($t_q) {
|
if ($t_q) {
|
||||||
$t_q .= ', ';
|
$t_q .= ', ';
|
||||||
}
|
}
|
||||||
$t_q .= "('" . $this->form->dbEscapeString($pathinfo['dirname']) . "', '"
|
$t_q .= "('" . $this->form->dba->dbEscapeString($pathinfo['dirname']) . "', '"
|
||||||
. $this->form->dbEscapeString($pathinfo['basename']) . "')";
|
. $this->form->dba->dbEscapeString($pathinfo['basename']) . "')";
|
||||||
}
|
}
|
||||||
$this->form->dbExec($q . $t_q, 'NULL');
|
$this->form->dba->dbExec($q . $t_q, 'NULL');
|
||||||
$elements[] = $this->form->formCreateElement('filename');
|
$elements[] = $this->form->formCreateElement('filename');
|
||||||
} else {
|
} else {
|
||||||
// show file menu
|
// show file menu
|
||||||
// just show name of file ...
|
// just show name of file ...
|
||||||
$this->DATA['filename_exist'] = 1;
|
$this->DATA['filename_exist'] = 1;
|
||||||
$this->DATA['filename'] = $this->form->table_array['filename']['value'];
|
$this->DATA['filename'] = $this->form->dba->getTableArray()['filename']['value'];
|
||||||
} // File Name View IF
|
} // File Name View IF
|
||||||
$elements[] = $this->form->formCreateElement('hostname');
|
$elements[] = $this->form->formCreateElement('hostname');
|
||||||
$elements[] = $this->form->formCreateElement('name');
|
$elements[] = $this->form->formCreateElement('name');
|
||||||
@@ -632,7 +635,7 @@ class EditBase
|
|||||||
'editAdmin_' . $this->smarty->lang
|
'editAdmin_' . $this->smarty->lang
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->form->log->debug('DEBUGEND', '==================================== [Form END]');
|
$this->log->debug('DEBUGEND', '==================================== [Form END]');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,13 +39,13 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
{
|
{
|
||||||
// main calss variables
|
// main calss variables
|
||||||
/** @var array<mixed> */
|
/** @var array<mixed> */
|
||||||
public array $table_array; // the array from the table to work on
|
private array $table_array; // the array from the table to work on
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public string $table_name; // the table_name
|
private string $table_name; // the table_name
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public string $pk_name = ''; // the primary key from this table
|
private string $pk_name = ''; // the primary key from this table
|
||||||
/** @var int|string|null */
|
/** @var int|string|null */
|
||||||
public int|string|null $pk_id; // the PK id
|
private int|string|null $pk_id; // the PK id
|
||||||
// security values
|
// security values
|
||||||
/** @var int base acl for current page */
|
/** @var int base acl for current page */
|
||||||
private int $base_acl_level = 0;
|
private int $base_acl_level = 0;
|
||||||
@@ -74,24 +74,21 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
// instance db_io class
|
// instance db_io class
|
||||||
parent::__construct($db_config, $log);
|
parent::__construct($db_config, $log);
|
||||||
// more error vars for this class
|
// more error vars for this class
|
||||||
$this->error_string['1999'] = 'No table array or table name set';
|
$this->error_string['1998'] = 'No table name set';
|
||||||
|
$this->error_string['1999'] = 'No table array set';
|
||||||
$this->error_string['1021'] = 'No Primary Key given';
|
$this->error_string['1021'] = 'No Primary Key given';
|
||||||
$this->error_string['1022'] = 'Could not run Array Query';
|
$this->error_string['1022'] = 'Could not run Array Query';
|
||||||
|
|
||||||
$this->table_array = $table_array;
|
$this->setTableArray($table_array);
|
||||||
$this->table_name = $table_name;
|
$this->setTableName($table_name);
|
||||||
|
|
||||||
// error abort if no table array or no table name
|
|
||||||
if (empty($table_array) || empty($table_name)) {
|
|
||||||
$this->__dbError(1999, false, 'MAJOR ERROR: Core settings missing');
|
|
||||||
throw new \RuntimeException('MAJOR ERROR: Core settings missing', 1999);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set primary key for given table_array
|
// set primary key for given table_array
|
||||||
foreach ($this->table_array as $key => $value) {
|
foreach ($this->table_array as $key => $value) {
|
||||||
if (!empty($value['pk'])) {
|
if (empty($value['pk'])) {
|
||||||
$this->pk_name = $key;
|
continue;
|
||||||
}
|
}
|
||||||
|
$this->setPkName($key);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
$this->dbArrayIOSetAcl($base_acl_level, $acl_admin);
|
$this->dbArrayIOSetAcl($base_acl_level, $acl_admin);
|
||||||
}
|
}
|
||||||
@@ -104,6 +101,144 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
parent::__destruct();
|
parent::__destruct();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the overall table array
|
||||||
|
*
|
||||||
|
* @param array<mixed> $table_array
|
||||||
|
* @return void
|
||||||
|
* @throws \RuntimeException 1999 for empty table array
|
||||||
|
*/
|
||||||
|
public function setTableArray(array $table_array): void
|
||||||
|
{
|
||||||
|
$this->table_array = $table_array;
|
||||||
|
if (empty($this->table_array)) {
|
||||||
|
$this->__dbError(1999, false, 'MAJOR ERROR: Core settings missing: table_arrry');
|
||||||
|
throw new \RuntimeException('MAJOR ERROR: Core settings missing: table_array', 1999);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return full table array, or [] if empty
|
||||||
|
* of reset is set to true, will reset array first
|
||||||
|
*
|
||||||
|
* @param bool $reset [=false] run a reset before returning
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function getTableArray(bool $reset = false): array
|
||||||
|
{
|
||||||
|
if (!$reset) {
|
||||||
|
return $this->table_array ?? [];
|
||||||
|
}
|
||||||
|
$table_array = $this->table_array ?? [];
|
||||||
|
reset($table_array);
|
||||||
|
return $table_array;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get a table array entry under the key with element pos
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @param string $pos
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getTableArrayEntry(string $key, string $pos): mixed
|
||||||
|
{
|
||||||
|
return $this->table_array[$key][$pos] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set a new value at key with pos
|
||||||
|
*
|
||||||
|
* @param mixed $value
|
||||||
|
* @param string $key
|
||||||
|
* @param string $pos
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setTableArrayEntry(mixed $value, string $key, string $pos): void
|
||||||
|
{
|
||||||
|
$this->table_array[$key][$pos] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unset entry at key with pos
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @param string $pos
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function unsetTableArrayEntry(string $key, string $pos): void
|
||||||
|
{
|
||||||
|
unset($this->table_array[$key][$pos]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set table name
|
||||||
|
*
|
||||||
|
* @param string $table_name
|
||||||
|
* @return void
|
||||||
|
* @throws \RuntimeException 1998 for empty table name
|
||||||
|
*/
|
||||||
|
public function setTableName(string $table_name): void
|
||||||
|
{
|
||||||
|
$this->table_name = $table_name;
|
||||||
|
if (empty($this->table_name)) {
|
||||||
|
$this->__dbError(1998, false, 'MAJOR ERROR: Core settings missing: table_name');
|
||||||
|
throw new \RuntimeException('MAJOR ERROR: Core settings missing: table_name', 1998);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return table name or empty string if not net
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getTableName(): string
|
||||||
|
{
|
||||||
|
return $this->table_name ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set primary key name
|
||||||
|
*
|
||||||
|
* @param string $pk_name
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setPkName(string $pk_name): void
|
||||||
|
{
|
||||||
|
$this->pk_name = $pk_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get primary key name
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPkName(): string
|
||||||
|
{
|
||||||
|
return $this->pk_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set primary key id, can be null for not yet set
|
||||||
|
*
|
||||||
|
* @param int|string|null $pk_id
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setPkId(int|string|null $pk_id): void
|
||||||
|
{
|
||||||
|
$this->pk_id = $pk_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return primary key id, or null if not set
|
||||||
|
*
|
||||||
|
* @return int|string|null
|
||||||
|
*/
|
||||||
|
public function getPkId(): int|string|null
|
||||||
|
{
|
||||||
|
return $this->pk_id;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set the base acl level and admin acl flag
|
* set the base acl level and admin acl flag
|
||||||
* This is needed for table array ACL checks
|
* This is needed for table array ACL checks
|
||||||
@@ -198,8 +333,8 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
public function dbCheckPkSet(): bool
|
public function dbCheckPkSet(): bool
|
||||||
{
|
{
|
||||||
// if pk_id is set, overrule ...
|
// if pk_id is set, overrule ...
|
||||||
if ($this->pk_id) {
|
if (!empty($this->getPkId())) {
|
||||||
$this->table_array[$this->pk_name]['value'] = $this->pk_id;
|
$this->table_array[$this->pk_name]['value'] = $this->getPkId();
|
||||||
}
|
}
|
||||||
// if not set ... produce error
|
// if not set ... produce error
|
||||||
if (!$this->table_array[$this->pk_name]['value']) {
|
if (!$this->table_array[$this->pk_name]['value']) {
|
||||||
@@ -287,7 +422,7 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
$q .= ' AND ' . $q_where;
|
$q .= ' AND ' . $q_where;
|
||||||
}
|
}
|
||||||
// if 0, error
|
// if 0, error
|
||||||
$this->pk_id = null;
|
$this->setPkId(null);
|
||||||
if (!$this->dbExec($q)) {
|
if (!$this->dbExec($q)) {
|
||||||
$this->__dbError(1022);
|
$this->__dbError(1022);
|
||||||
}
|
}
|
||||||
@@ -374,7 +509,7 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// possible dbFetchArray errors ...
|
// possible dbFetchArray errors ...
|
||||||
$this->pk_id = $this->table_array[$this->pk_name]['value'];
|
$this->setPkId($this->table_array[$this->pk_name]['value']);
|
||||||
} else {
|
} else {
|
||||||
$this->__dbError(1022);
|
$this->__dbError(1022);
|
||||||
}
|
}
|
||||||
@@ -397,10 +532,6 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
if (count($table_array)) {
|
if (count($table_array)) {
|
||||||
$this->table_array = $table_array;
|
$this->table_array = $table_array;
|
||||||
}
|
}
|
||||||
// PK ID check
|
|
||||||
// if ($this->pk_id && !$this->table_array[$this->pk_name]["value"]) {
|
|
||||||
// $this->table_array[$this->pk_name]["value"]=$this->pk_id;
|
|
||||||
// }
|
|
||||||
// checken ob PKs gesetzt, wenn alle -> update, wenn keiner -> insert, wenn ein paar -> ERROR!
|
// checken ob PKs gesetzt, wenn alle -> update, wenn keiner -> insert, wenn ein paar -> ERROR!
|
||||||
if (!$this->table_array[$this->pk_name]['value']) {
|
if (!$this->table_array[$this->pk_name]['value']) {
|
||||||
$insert = 1;
|
$insert = 1;
|
||||||
@@ -624,16 +755,11 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
$q .= ' AND ' . $q_where;
|
$q .= ' AND ' . $q_where;
|
||||||
}
|
}
|
||||||
// set pk_id ... if it has changed or so
|
// set pk_id ... if it has changed or so
|
||||||
$this->pk_id = $this->table_array[$this->pk_name]['value'];
|
$this->setPkId($this->table_array[$this->pk_name]['value']);
|
||||||
} else {
|
} else {
|
||||||
$q = 'INSERT INTO ' . $this->table_name . ' ';
|
$q = 'INSERT INTO ' . $this->table_name . ' ';
|
||||||
$q .= '(' . $q_vars . ') ';
|
$q .= '(' . $q_vars . ') ';
|
||||||
$q .= 'VALUES (' . $q_data . ')';
|
$q .= 'VALUES (' . $q_data . ')';
|
||||||
// write primary key too
|
|
||||||
// if ($q_data)
|
|
||||||
// $q .= ", ";
|
|
||||||
// $q .= $this->pk_name." = ".$this->table_array[$this->pk_name]['value']." ";
|
|
||||||
// $this->pk_id = $this->table_array[$this->pk_name]['value'];
|
|
||||||
}
|
}
|
||||||
// return success or not
|
// return success or not
|
||||||
if (!$this->dbExec($q)) {
|
if (!$this->dbExec($q)) {
|
||||||
@@ -646,7 +772,7 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
$insert_id = 0;
|
$insert_id = 0;
|
||||||
}
|
}
|
||||||
$this->table_array[$this->pk_name]['value'] = $insert_id;
|
$this->table_array[$this->pk_name]['value'] = $insert_id;
|
||||||
$this->pk_id = $insert_id;
|
$this->setPkId($insert_id);
|
||||||
}
|
}
|
||||||
// return the table if needed
|
// return the table if needed
|
||||||
return $this->table_array;
|
return $this->table_array;
|
||||||
|
|||||||
@@ -3232,7 +3232,7 @@ class IO
|
|||||||
*
|
*
|
||||||
* @param array<mixed> $write_array list of elements to write
|
* @param array<mixed> $write_array list of elements to write
|
||||||
* @param array<mixed> $not_write_array list of elements not to write
|
* @param array<mixed> $not_write_array list of elements not to write
|
||||||
* @param int $primary_key id key to decide if we write insert or update
|
* @param int|null $primary_key id key to decide if we write insert or update
|
||||||
* @param string $table name for the target table
|
* @param string $table name for the target table
|
||||||
* @param array<mixed> $data data array to override _POST data
|
* @param array<mixed> $data data array to override _POST data
|
||||||
* @return int|false primary key
|
* @return int|false primary key
|
||||||
@@ -3240,7 +3240,7 @@ class IO
|
|||||||
public function dbWriteData(
|
public function dbWriteData(
|
||||||
array $write_array,
|
array $write_array,
|
||||||
array $not_write_array,
|
array $not_write_array,
|
||||||
int $primary_key,
|
?int $primary_key,
|
||||||
string $table,
|
string $table,
|
||||||
array $data = []
|
array $data = []
|
||||||
): int|false {
|
): int|false {
|
||||||
@@ -3260,19 +3260,19 @@ class IO
|
|||||||
* PARAM INFO: $primary key
|
* PARAM INFO: $primary key
|
||||||
* this can be a plain string/int and will be internal transformed into the array form
|
* this can be a plain string/int and will be internal transformed into the array form
|
||||||
* or it takes the array form of array [row => column, value => pk value]
|
* or it takes the array form of array [row => column, value => pk value]
|
||||||
* @param array<mixed> $write_array list of elements to write
|
* @param array<mixed> $write_array list of elements to write
|
||||||
* @param int|string|array<mixed> $primary_key primary key string or array set
|
* @param null|int|string|array<mixed> $primary_key primary key string or array set
|
||||||
* @param string $table name for the target table
|
* @param string $table name for the target table
|
||||||
* @param array<mixed> $not_write_array list of elements not to write (optional)
|
* @param array<mixed> $not_write_array list of elements not to write (optional)
|
||||||
* @param array<mixed> $not_write_update_array list of elements not
|
* @param array<mixed> $not_write_update_array list of elements not
|
||||||
* to write during update (optional)
|
* to write during update (optional)
|
||||||
* @param array<mixed> $data optional array with data
|
* @param array<mixed> $data optional array with data
|
||||||
* if not _POST vars are used
|
* if not _POST vars are used
|
||||||
* @return int|false primary key
|
* @return int|false primary key
|
||||||
*/
|
*/
|
||||||
public function dbWriteDataExt(
|
public function dbWriteDataExt(
|
||||||
array $write_array,
|
array $write_array,
|
||||||
int|string|array $primary_key,
|
null|int|string|array $primary_key,
|
||||||
string $table,
|
string $table,
|
||||||
array $not_write_array = [],
|
array $not_write_array = [],
|
||||||
array $not_write_update_array = [],
|
array $not_write_update_array = [],
|
||||||
|
|||||||
302
www/lib/CoreLibs/Logging/ErrorMessage.php
Normal file
302
www/lib/CoreLibs/Logging/ErrorMessage.php
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTOR: Clemens Schwaighofer
|
||||||
|
* CREATED: 2023/9/7
|
||||||
|
* DESCRIPTION:
|
||||||
|
* General error collection class for output to frontend or to log
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace CoreLibs\Logging;
|
||||||
|
|
||||||
|
use CoreLibs\Logging\Logger\MessageLevel;
|
||||||
|
|
||||||
|
class ErrorMessage
|
||||||
|
{
|
||||||
|
/** @var array<int,array{id:string,level:string,str:string,target:string,target_style:string,highlight:string[]}> */
|
||||||
|
private array $error_str = [];
|
||||||
|
/** @var array<string,string> */
|
||||||
|
private array $jump_targets;
|
||||||
|
/** @var \CoreLibs\Logging\Logging $log */
|
||||||
|
public \CoreLibs\Logging\Logging $log;
|
||||||
|
|
||||||
|
/** @var bool $log_error global flag to log error level message */
|
||||||
|
private bool $log_error = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* init ErrorMessage
|
||||||
|
*
|
||||||
|
* @param \CoreLibs\Logging\Logging $log
|
||||||
|
* @param null|bool $log_error [=null], defaults to false if log is not level debug
|
||||||
|
*/
|
||||||
|
public function __construct(
|
||||||
|
\CoreLibs\Logging\Logging $log,
|
||||||
|
?bool $log_error = null
|
||||||
|
) {
|
||||||
|
$this->log = $log;
|
||||||
|
// if log default logging is debug then log_error is default set to true
|
||||||
|
if ($this->log->loggingLevelIsDebug() && $log_error === null) {
|
||||||
|
$log_error = true;
|
||||||
|
} else {
|
||||||
|
$log_error = $log_error ?? false;
|
||||||
|
}
|
||||||
|
$this->log_error = $log_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pushes new error message into the error_str array
|
||||||
|
* error_id: internal Error ID (should be unique)
|
||||||
|
* level: error level, can only be ok, info, warn, error, abort, crash
|
||||||
|
* ok and info are positive response: success
|
||||||
|
* notice: a debug message for information only
|
||||||
|
* warn: success, but there might be some things that are not 100% ok
|
||||||
|
* error: input error or error in executing request
|
||||||
|
* abort: an internal error happened as mandatory information that normally is
|
||||||
|
* there is missing, or the ACL level that should normally match does not
|
||||||
|
* will be logged to "critical"
|
||||||
|
* crash: system failure or critical system problems (db connection failure)
|
||||||
|
* will be logged as "alert"
|
||||||
|
* not set: unkown, will be logged as "emergency"
|
||||||
|
* target/highlight: id target name for frontend where to attach this message
|
||||||
|
* highlight is a list of other target points to highlight
|
||||||
|
* for highlight targets css names are $level without a prefix and should be
|
||||||
|
* nested in the target element "input .error { ... }"
|
||||||
|
* jump_target: a target id for to jump and message, is stored in separate jump array
|
||||||
|
* where the target is unique, first one set is used for info message
|
||||||
|
* target_style: if not set uses 'error-' $level as css style. applies to targets or main only
|
||||||
|
*
|
||||||
|
* @param string $error_id Any internal error ID for this error
|
||||||
|
* @param string $level Error level in ok/info/warn/error
|
||||||
|
* @param string $str Error message (out)
|
||||||
|
* @param string $target alternate attachment point for this error message
|
||||||
|
* @param string $target_style Alternate color style for the error message
|
||||||
|
* @param array<string> $highlight Any additional error data as error OR
|
||||||
|
* highlight points for field highlights
|
||||||
|
* @param array{}|array{target:string,info?:string} $jump_target with "target" for where to jump and
|
||||||
|
* "info" for string to show in jump list
|
||||||
|
* target must be set, if info not set, default message used
|
||||||
|
* @param string|null $message If abort/crash, non localized $str
|
||||||
|
* @param array<mixed> $context Additionl info for abort/crash messages
|
||||||
|
* @param bool|null $log_error [=null] log level 'error' to error, if null use global,
|
||||||
|
* else set for this call only
|
||||||
|
*/
|
||||||
|
public function setErrorMsg(
|
||||||
|
string $error_id,
|
||||||
|
string $level,
|
||||||
|
string $str,
|
||||||
|
string $target = '',
|
||||||
|
string $target_style = '',
|
||||||
|
array $highlight = [],
|
||||||
|
array $jump_target = [],
|
||||||
|
?string $message = null,
|
||||||
|
array $context = [],
|
||||||
|
?bool $log_error = null,
|
||||||
|
): void {
|
||||||
|
if ($log_error === null) {
|
||||||
|
$log_error = $this->log_error;
|
||||||
|
}
|
||||||
|
$original_level = $level;
|
||||||
|
$level = MessageLevel::fromName($level)->name;
|
||||||
|
// if not string set, write message string if set, else level/error id
|
||||||
|
if (empty($str)) {
|
||||||
|
$str = $message ?? 'L:' . $level . '|E:' . $error_id;
|
||||||
|
}
|
||||||
|
$this->error_str[] = [
|
||||||
|
'id' => $error_id,
|
||||||
|
'level' => $level,
|
||||||
|
'str' => $str,
|
||||||
|
'target' => $target,
|
||||||
|
'target_style' => $target_style,
|
||||||
|
'highlight' => $highlight,
|
||||||
|
];
|
||||||
|
// set a jump target
|
||||||
|
$this->setJumpTarget($jump_target['target'] ?? null, $jump_target['info'] ?? null);
|
||||||
|
// write to log for abort/crash
|
||||||
|
switch ($level) {
|
||||||
|
case 'notice':
|
||||||
|
$this->log->notice($message ?? $str, array_merge([
|
||||||
|
'id' => $error_id,
|
||||||
|
'level' => $original_level,
|
||||||
|
], $context));
|
||||||
|
break;
|
||||||
|
case 'error':
|
||||||
|
if ($log_error) {
|
||||||
|
$this->log->error($message ?? $str, array_merge([
|
||||||
|
'id' => $error_id,
|
||||||
|
'level' => $original_level,
|
||||||
|
], $context));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'abort':
|
||||||
|
$this->log->critical($message ?? $str, array_merge([
|
||||||
|
'id' => $error_id,
|
||||||
|
'level' => $original_level,
|
||||||
|
], $context));
|
||||||
|
break;
|
||||||
|
case 'crash':
|
||||||
|
$this->log->alert($message ?? $str, array_merge([
|
||||||
|
'id' => $error_id,
|
||||||
|
'level' => $original_level,
|
||||||
|
], $context));
|
||||||
|
break;
|
||||||
|
case 'unknown':
|
||||||
|
$this->log->emergency($message ?? $str, array_merge([
|
||||||
|
'id' => $error_id,
|
||||||
|
'level' => $original_level,
|
||||||
|
], $context));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pushes new error message into the error_str array
|
||||||
|
* Note, the parameter order is different and does not need an error id
|
||||||
|
* This is for backend alerts
|
||||||
|
*
|
||||||
|
* @param string $level error level (ok/warn/info/error)
|
||||||
|
* @param string $str error string
|
||||||
|
* @param string|null $error_id optional error id for precise error lookup
|
||||||
|
* @param string $target Alternate id name for output target on frontend
|
||||||
|
* @param string $target_style Alternate color style for the error message
|
||||||
|
* @param array<string> $highlight Any additional error data as error OR
|
||||||
|
* highlight points for field highlights
|
||||||
|
* @param array{}|array{target:string,info?:string} $jump_target with "target" for where to jump and
|
||||||
|
* "info" for string to show in jump list
|
||||||
|
* target must be set, if info not set, default message used
|
||||||
|
* @param string|null $message If abort/crash, non localized $str
|
||||||
|
* @param array<mixed> $context Additionl info for abort/crash messages
|
||||||
|
* @param bool|null $log_error [=null] log level 'error' to error, if null use global,
|
||||||
|
* else set for this call only
|
||||||
|
*/
|
||||||
|
public function setMessage(
|
||||||
|
string $level,
|
||||||
|
string $str,
|
||||||
|
?string $error_id = null,
|
||||||
|
string $target = '',
|
||||||
|
string $target_style = '',
|
||||||
|
array $highlight = [],
|
||||||
|
array $jump_target = [],
|
||||||
|
?string $message = null,
|
||||||
|
array $context = [],
|
||||||
|
?bool $log_error = null,
|
||||||
|
): void {
|
||||||
|
$this->setErrorMsg(
|
||||||
|
$error_id ?? '',
|
||||||
|
$level,
|
||||||
|
$str,
|
||||||
|
$target,
|
||||||
|
$target_style,
|
||||||
|
$highlight,
|
||||||
|
$jump_target,
|
||||||
|
$message,
|
||||||
|
$context,
|
||||||
|
$log_error
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a jump target. This can be used to jump directly a frontend html block
|
||||||
|
* with the target id set
|
||||||
|
*
|
||||||
|
* @param string|null $target
|
||||||
|
* @param string|null $info
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setJumpTarget(
|
||||||
|
?string $target,
|
||||||
|
?string $info,
|
||||||
|
): void {
|
||||||
|
if (
|
||||||
|
empty($target) ||
|
||||||
|
!empty($this->jump_targets[$target])
|
||||||
|
// also check if this is an alphanumeric string? css id compatible?
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (empty($info)) {
|
||||||
|
$info = 'Jump to: ' . $target;
|
||||||
|
}
|
||||||
|
$this->jump_targets[$target] = $info;
|
||||||
|
}
|
||||||
|
|
||||||
|
// *********************************************************************
|
||||||
|
// GETTERS
|
||||||
|
// *********************************************************************
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current set error content from setErrorMsg method
|
||||||
|
*
|
||||||
|
* @return array<int,array{id:string,level:string,str:string,target:string,highlight:string[]}> Error messages array
|
||||||
|
*/
|
||||||
|
public function getErrorMsg(): array
|
||||||
|
{
|
||||||
|
return $this->error_str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Current set error ids
|
||||||
|
*
|
||||||
|
* @return array<string>
|
||||||
|
*/
|
||||||
|
public function getErrorIds(): array
|
||||||
|
{
|
||||||
|
return array_column($this->error_str, 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the LAST entry in the array list.
|
||||||
|
* If nothing found returns empty array set
|
||||||
|
*
|
||||||
|
* @return array{id:string,level:string,str:string,target:string,target:string,highlight:string[]} Error block
|
||||||
|
*/
|
||||||
|
public function getLastErrorMsg(): array
|
||||||
|
{
|
||||||
|
return $this->error_str[array_key_last($this->error_str)] ?? [
|
||||||
|
'level' => '',
|
||||||
|
'str' => '',
|
||||||
|
'id' => '',
|
||||||
|
'target' => '',
|
||||||
|
'target_string' => '',
|
||||||
|
'highlight' => [],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the jump target list
|
||||||
|
*
|
||||||
|
* @return array{}|array{string,string} List of jump targets with info text, or empty array if not set
|
||||||
|
*/
|
||||||
|
public function getJumpTarget(): array
|
||||||
|
{
|
||||||
|
return $this->jump_targets ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// *********************************************************************
|
||||||
|
// FLAG SETTERS
|
||||||
|
// *********************************************************************
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the log error flag
|
||||||
|
*
|
||||||
|
* @param bool $flag True to log level error too, False for do not (Default)
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setFlagLogError(bool $flag): void
|
||||||
|
{
|
||||||
|
$this->log_error = $flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current log error flag
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function getFlagLogError(): bool
|
||||||
|
{
|
||||||
|
return $this->log_error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
@@ -113,17 +113,32 @@ enum Level: int
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the passed $level is higher or equal to $this
|
* Returns true if the passed $level is higher or equal to $this
|
||||||
|
*
|
||||||
|
* @param Level $level
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function includes(Level $level): bool
|
public function includes(Level $level): bool
|
||||||
{
|
{
|
||||||
return $this->value <= $level->value;
|
return $this->value <= $level->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If level is higher than set one
|
||||||
|
*
|
||||||
|
* @param Level $level
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function isHigherThan(Level $level): bool
|
public function isHigherThan(Level $level): bool
|
||||||
{
|
{
|
||||||
return $this->value > $level->value;
|
return $this->value > $level->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* if level is lower than set one
|
||||||
|
*
|
||||||
|
* @param Level $level
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
public function isLowerThan(Level $level): bool
|
public function isLowerThan(Level $level): bool
|
||||||
{
|
{
|
||||||
return $this->value < $level->value;
|
return $this->value < $level->value;
|
||||||
|
|||||||
86
www/lib/CoreLibs/Logging/Logger/MessageLevel.php
Normal file
86
www/lib/CoreLibs/Logging/Logger/MessageLevel.php
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<?php // phpcs:disable Generic.Files.LineLength
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AUTOR: Clemens Schwaighofer
|
||||||
|
* CREATED: 2023-09-08
|
||||||
|
* DESCRIPTION:
|
||||||
|
* Error message return levels
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace CoreLibs\Logging\Logger;
|
||||||
|
|
||||||
|
enum MessageLevel: int
|
||||||
|
{
|
||||||
|
case ok = 100;
|
||||||
|
case info = 200;
|
||||||
|
case notice = 250;
|
||||||
|
case warn = 300;
|
||||||
|
case error = 400;
|
||||||
|
case abort = 500;
|
||||||
|
case crash = 550;
|
||||||
|
case unknown = 600;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $name any string name, if not matching use unkown
|
||||||
|
* @return static
|
||||||
|
*/
|
||||||
|
public static function fromName(string $name): self
|
||||||
|
{
|
||||||
|
return match (strtolower($name)) {
|
||||||
|
'ok' => self::ok,
|
||||||
|
'info' => self::info,
|
||||||
|
'notice' => self::notice,
|
||||||
|
'warn', 'warning' => self::warn,
|
||||||
|
'error' => self::error,
|
||||||
|
'abort' => self::abort,
|
||||||
|
'crash' => self::crash,
|
||||||
|
default => self::unknown,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $value
|
||||||
|
* @return static
|
||||||
|
*/
|
||||||
|
public static function fromValue(int $value): self
|
||||||
|
{
|
||||||
|
return self::tryFrom($value) ?? self::unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the passed $level is higher or equal to $this
|
||||||
|
*
|
||||||
|
* @param MessageLevel $level
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function includes(MessageLevel $level): bool
|
||||||
|
{
|
||||||
|
return $this->value <= $level->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If level is higher than set one
|
||||||
|
*
|
||||||
|
* @param MessageLevel $level
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isHigherThan(MessageLevel $level): bool
|
||||||
|
{
|
||||||
|
return $this->value > $level->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* if level is lower than set one
|
||||||
|
*
|
||||||
|
* @param MessageLevel $level
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isLowerThan(MessageLevel $level): bool
|
||||||
|
{
|
||||||
|
return $this->value < $level->value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
File diff suppressed because it is too large
Load Diff
40
www/lib/CoreLibs/Output/Form/TableArrays/EditOrder.php
Normal file
40
www/lib/CoreLibs/Output/Form/TableArrays/EditOrder.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace CoreLibs\Output\Form\TableArrays;
|
||||||
|
|
||||||
|
class EditOrder implements Interface\TableArraysInterface
|
||||||
|
{
|
||||||
|
/** @var \CoreLibs\Output\Form\Generate */
|
||||||
|
private \CoreLibs\Output\Form\Generate $form;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* constructor
|
||||||
|
* @param \CoreLibs\Output\Form\Generate $form base form class
|
||||||
|
*/
|
||||||
|
public function __construct(\CoreLibs\Output\Form\Generate $form)
|
||||||
|
{
|
||||||
|
$this->form = $form;
|
||||||
|
$this->form->log->debug('CLASS LOAD', __NAMESPACE__ . __CLASS__);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NOTE: this is a dummy array to just init the Form\Generate class and is not used for anything else
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function setTableArray(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'table_array' => [
|
||||||
|
'-'
|
||||||
|
],
|
||||||
|
'table_name' => '-',
|
||||||
|
'load_query' => '',
|
||||||
|
'show_fields' => [],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
3
www/vendor/composer/autoload_classmap.php
vendored
3
www/vendor/composer/autoload_classmap.php
vendored
@@ -57,8 +57,10 @@ return array(
|
|||||||
'CoreLibs\\Language\\Core\\StringReader' => $baseDir . '/lib/CoreLibs/Language/Core/StringReader.php',
|
'CoreLibs\\Language\\Core\\StringReader' => $baseDir . '/lib/CoreLibs/Language/Core/StringReader.php',
|
||||||
'CoreLibs\\Language\\GetLocale' => $baseDir . '/lib/CoreLibs/Language/GetLocale.php',
|
'CoreLibs\\Language\\GetLocale' => $baseDir . '/lib/CoreLibs/Language/GetLocale.php',
|
||||||
'CoreLibs\\Language\\L10n' => $baseDir . '/lib/CoreLibs/Language/L10n.php',
|
'CoreLibs\\Language\\L10n' => $baseDir . '/lib/CoreLibs/Language/L10n.php',
|
||||||
|
'CoreLibs\\Logging\\ErrorMessage' => $baseDir . '/lib/CoreLibs/Logging/ErrorMessage.php',
|
||||||
'CoreLibs\\Logging\\Logger\\Flag' => $baseDir . '/lib/CoreLibs/Logging/Logger/Flag.php',
|
'CoreLibs\\Logging\\Logger\\Flag' => $baseDir . '/lib/CoreLibs/Logging/Logger/Flag.php',
|
||||||
'CoreLibs\\Logging\\Logger\\Level' => $baseDir . '/lib/CoreLibs/Logging/Logger/Level.php',
|
'CoreLibs\\Logging\\Logger\\Level' => $baseDir . '/lib/CoreLibs/Logging/Logger/Level.php',
|
||||||
|
'CoreLibs\\Logging\\Logger\\MessageLevel' => $baseDir . '/lib/CoreLibs/Logging/Logger/MessageLevel.php',
|
||||||
'CoreLibs\\Logging\\Logging' => $baseDir . '/lib/CoreLibs/Logging/Logging.php',
|
'CoreLibs\\Logging\\Logging' => $baseDir . '/lib/CoreLibs/Logging/Logging.php',
|
||||||
'CoreLibs\\Output\\Form\\Elements' => $baseDir . '/lib/CoreLibs/Output/Form/Elements.php',
|
'CoreLibs\\Output\\Form\\Elements' => $baseDir . '/lib/CoreLibs/Output/Form/Elements.php',
|
||||||
'CoreLibs\\Output\\Form\\Generate' => $baseDir . '/lib/CoreLibs/Output/Form/Generate.php',
|
'CoreLibs\\Output\\Form\\Generate' => $baseDir . '/lib/CoreLibs/Output/Form/Generate.php',
|
||||||
@@ -66,6 +68,7 @@ return array(
|
|||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditGroups' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditGroups.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditGroups' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditGroups.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditLanguages' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditLanguages.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditLanguages' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditLanguages.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditMenuGroup' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditMenuGroup.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditMenuGroup' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditMenuGroup.php',
|
||||||
|
'CoreLibs\\Output\\Form\\TableArrays\\EditOrder' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditOrder.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditPages' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditPages.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditPages' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditPages.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditSchemas' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditSchemas.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditSchemas' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditSchemas.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditUsers' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditUsers.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditUsers' => $baseDir . '/lib/CoreLibs/Output/Form/TableArrays/EditUsers.php',
|
||||||
|
|||||||
3
www/vendor/composer/autoload_static.php
vendored
3
www/vendor/composer/autoload_static.php
vendored
@@ -108,8 +108,10 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
'CoreLibs\\Language\\Core\\StringReader' => __DIR__ . '/../..' . '/lib/CoreLibs/Language/Core/StringReader.php',
|
'CoreLibs\\Language\\Core\\StringReader' => __DIR__ . '/../..' . '/lib/CoreLibs/Language/Core/StringReader.php',
|
||||||
'CoreLibs\\Language\\GetLocale' => __DIR__ . '/../..' . '/lib/CoreLibs/Language/GetLocale.php',
|
'CoreLibs\\Language\\GetLocale' => __DIR__ . '/../..' . '/lib/CoreLibs/Language/GetLocale.php',
|
||||||
'CoreLibs\\Language\\L10n' => __DIR__ . '/../..' . '/lib/CoreLibs/Language/L10n.php',
|
'CoreLibs\\Language\\L10n' => __DIR__ . '/../..' . '/lib/CoreLibs/Language/L10n.php',
|
||||||
|
'CoreLibs\\Logging\\ErrorMessage' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/ErrorMessage.php',
|
||||||
'CoreLibs\\Logging\\Logger\\Flag' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logger/Flag.php',
|
'CoreLibs\\Logging\\Logger\\Flag' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logger/Flag.php',
|
||||||
'CoreLibs\\Logging\\Logger\\Level' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logger/Level.php',
|
'CoreLibs\\Logging\\Logger\\Level' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logger/Level.php',
|
||||||
|
'CoreLibs\\Logging\\Logger\\MessageLevel' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logger/MessageLevel.php',
|
||||||
'CoreLibs\\Logging\\Logging' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logging.php',
|
'CoreLibs\\Logging\\Logging' => __DIR__ . '/../..' . '/lib/CoreLibs/Logging/Logging.php',
|
||||||
'CoreLibs\\Output\\Form\\Elements' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/Elements.php',
|
'CoreLibs\\Output\\Form\\Elements' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/Elements.php',
|
||||||
'CoreLibs\\Output\\Form\\Generate' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/Generate.php',
|
'CoreLibs\\Output\\Form\\Generate' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/Generate.php',
|
||||||
@@ -117,6 +119,7 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditGroups' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditGroups.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditGroups' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditGroups.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditLanguages' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditLanguages.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditLanguages' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditLanguages.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditMenuGroup' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditMenuGroup.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditMenuGroup' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditMenuGroup.php',
|
||||||
|
'CoreLibs\\Output\\Form\\TableArrays\\EditOrder' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditOrder.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditPages' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditPages.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditPages' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditPages.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditSchemas' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditSchemas.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditSchemas' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditSchemas.php',
|
||||||
'CoreLibs\\Output\\Form\\TableArrays\\EditUsers' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditUsers.php',
|
'CoreLibs\\Output\\Form\\TableArrays\\EditUsers' => __DIR__ . '/../..' . '/lib/CoreLibs/Output/Form/TableArrays/EditUsers.php',
|
||||||
|
|||||||
Reference in New Issue
Block a user