Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 71e34848d9 | |||
| f275180571 |
+1
-1
@@ -3,7 +3,7 @@ node_modules/
|
||||
**/composer.lock
|
||||
**/vendor/
|
||||
tools/
|
||||
**/configs/.env
|
||||
**/.env
|
||||
**/.target
|
||||
package-lock.json
|
||||
build/
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phive xmlns="https://phar.io/phive">
|
||||
<phar name="phpunit" version="~9.6" installed="9.6.34" location="./tools/phpunit" copy="false"/>
|
||||
<phar name="phpunit" version="~9.6" installed="9.6.31" location="./tools/phpunit" copy="false"/>
|
||||
<phar name="phpcbf" version="4" installed="4.0.1" location="./tools/phpcbf" copy="false"/>
|
||||
<phar name="phpcs" version="4" installed="4.0.1" location="./tools/phpcs" copy="false"/>
|
||||
<phar name="phpstan" version="^2.0" installed="2.2.2" location="./tools/phpstan" copy="false"/>
|
||||
<phar name="phpstan" version="^2.0" installed="2.1.33" location="./tools/phpstan" copy="false"/>
|
||||
<phar name="phan" version="^5.4.3" installed="5.5.2" location="./tools/phan" copy="false"/>
|
||||
<phar name="psalm" version="^5.26.1" installed="5.26.1" location="./tools/psalm" copy="false"/>
|
||||
<phar name="phpdox" version="^0.12.0" installed="0.12.0" location="./tools/phpdox" copy="false"/>
|
||||
<phar name="phpdocumentor" version="^3.4.2" installed="3.10.0" location="./tools/phpDocumentor" copy="false"/>
|
||||
<phar name="php-cs-fixer" version="^3.34.1" installed="3.95.10" location="./tools/php-cs-fixer" copy="false"/>
|
||||
<phar name="phpdocumentor" version="^3.4.2" installed="3.9.1" location="./tools/phpDocumentor" copy="false"/>
|
||||
<phar name="php-cs-fixer" version="^3.34.1" installed="3.92.4" location="./tools/php-cs-fixer" copy="false"/>
|
||||
</phive>
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: en.UTF-8 LC_MESSAGES admin\n"
|
||||
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||
"Last-Translator: clemens.schwaighofer@egplusww.co\n"
|
||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: en.UTF-8 LC_MESSAGES frontend\n"
|
||||
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||
"Last-Translator: clemens.schwaighofer@egplusww.co\n"
|
||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ja.UTF-8 LC_MESSAGES admin\n"
|
||||
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||
"Last-Translator: clemens.schwaighofer@egplusww.com\n"
|
||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ja.UTF-8 LC_MESSAGES frontend\n"
|
||||
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||
"Last-Translator: clemens.schwaighofer@egplusww.com\n"
|
||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
@@ -12,8 +12,6 @@ use PHPUnit\Framework\TestCase;
|
||||
*/
|
||||
final class CoreLibsAAASetupDataTest extends TestCase
|
||||
{
|
||||
public const TIME_ZONE = 'Asia/Tokyo';
|
||||
|
||||
/**
|
||||
* Covers nothing
|
||||
*
|
||||
@@ -36,9 +34,6 @@ final class CoreLibsAAASetupDataTest extends TestCase
|
||||
BASE,
|
||||
'BASE Path set check'
|
||||
);
|
||||
|
||||
// if time zone is not set, errors can happen
|
||||
ini_set('date.timezone', self::TIME_ZONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
||||
'log_file_id' => 'CoreLibs-ACL-Login-Test',
|
||||
]);
|
||||
// test database we need to connect do, if not possible this test is skipped
|
||||
try {
|
||||
self::$db = new \CoreLibs\DB\IO(
|
||||
[
|
||||
'db_name' => $db_name,
|
||||
@@ -96,11 +95,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
||||
],
|
||||
self::$log
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
self::markTestSkipped(
|
||||
'Cannot connect to Test DB for ACL\Login test: ' . $e->getMessage()
|
||||
);
|
||||
}
|
||||
// ALWAYS drop DB and RECREATE DB
|
||||
// dropdb -U corelibs_acl_login_test -h localhost corelibs_acl_login_test
|
||||
// createdb -U corelibs_acl_login_test -O corelibs_acl_login_test -E utf8 corelibs_acl_login_test;
|
||||
|
||||
@@ -15,12 +15,6 @@ if [ ! -f "${load_sql}" ]; then
|
||||
echo 1;
|
||||
exit 1;
|
||||
fi;
|
||||
# if we have no dropdb, createdb, psql, exit with 6
|
||||
if ! command -v dropdb &> /dev/null || ! command -v createdb &> /dev/null || ! command -v psql &> /dev/null; then
|
||||
echo 6;
|
||||
exit 6;
|
||||
fi;
|
||||
|
||||
db_user="${2}";
|
||||
db_name="${3}";
|
||||
db_host="${4}";
|
||||
@@ -30,25 +24,25 @@ if [ -z "${db_user}" ] || [ -z "${db_name}" ] || [ -z "${db_host}" ]; then
|
||||
exit 2;
|
||||
fi;
|
||||
# drop database, on error exit with 3
|
||||
dropdb -U "${db_user}" -h "${db_host}" "${db_name}" 2>&1;
|
||||
if [ ! $? ]; then
|
||||
dropdb -U ${db_user} -h ${db_host} ${db_name} 2>&1;
|
||||
if [ $? -ne 0 ]; then
|
||||
echo 3;
|
||||
exit 3;
|
||||
fi;
|
||||
# create database, on error exit with 4
|
||||
createdb -U "${db_user}" -O "${db_user}" -h "${db_host}" -E utf8 "${db_name}" 2>&1;
|
||||
if [ ! $? ]; then
|
||||
createdb -U ${db_user} -O ${db_user} -h ${db_host} -E utf8 ${db_name} 2>&1;
|
||||
if [ $? -ne 0 ]; then
|
||||
echo 4;
|
||||
exit 4;
|
||||
fi;
|
||||
# if error 5 thrown, test with enabled below
|
||||
if [ -n "${5}" ]; then
|
||||
psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}";
|
||||
if [ ! -z "${5}" ]; then
|
||||
psql -U ${db_user} -h ${db_host} -f ${load_sql} ${db_name};
|
||||
else
|
||||
# load data (redirect ALL error to null), on error exit with 5
|
||||
psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}" 2>&1 1>/dev/null 2>/dev/null;
|
||||
psql -U ${db_user} -h ${db_host} -f ${load_sql} ${db_name} 2>&1 1>/dev/null 2>/dev/null;
|
||||
fi;
|
||||
if [ ! $? ]; then
|
||||
if [ $? -ne 0 ]; then
|
||||
echo 5;
|
||||
exit 5;
|
||||
fi;
|
||||
|
||||
@@ -1266,8 +1266,7 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::arrayGetPrevKey
|
||||
* @covers ::arrayGetNextKey
|
||||
* @covers ::arrayGetPrevKey, ::arrayGetNextKey
|
||||
* @dataProvider providerArrayGetNextPrevKey
|
||||
* @testdox arrayGetNextPrevKey get next/prev key for $search wtih $expected_prev/$expected_next [$_dataName]
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php // phpcs:disable Generic.Files.LineLength
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
@@ -71,16 +71,15 @@ final class CoreLibsCombinedDateTimeTest extends TestCase
|
||||
*
|
||||
* @covers ::dateStringFormat
|
||||
* @dataProvider timestampProvider
|
||||
* @testdox dateStringFormat $input (mt $flag_show_micro, float mt $flag_micro_as_float) will be $expected [$_dataName]
|
||||
* @testdox dateStringFormat $input (microtime $flag) will be $expected [$_dataName]
|
||||
*
|
||||
* @param int|float $input
|
||||
* @param bool $flag_show_micro
|
||||
* @param bool $flag_micro_as_float
|
||||
* @param bool $flag
|
||||
* @param string $expected
|
||||
* @return void
|
||||
*/
|
||||
public function testDateStringFormat(
|
||||
int|float $input,
|
||||
$input,
|
||||
bool $flag_show_micro,
|
||||
bool $flag_micro_as_float,
|
||||
string $expected
|
||||
|
||||
@@ -101,7 +101,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
* @covers ::rgbToHwb
|
||||
* @covers ::hsbToRgb
|
||||
* @covers ::hslToRgb
|
||||
* @covers ::hwbToRgb
|
||||
* @covers ::hwebToRgb
|
||||
* @testdox Convert from and to RGB via HSL, HWB, HSB/V
|
||||
*
|
||||
* @return void
|
||||
@@ -298,6 +298,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::returnAsHex()
|
||||
* @testdox Convert from and to RGB via hex
|
||||
*
|
||||
* @return void
|
||||
@@ -341,6 +342,8 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* linear RGB conversion tests
|
||||
*
|
||||
* @covers ::fromLinear
|
||||
* @covers ::toLinear
|
||||
* @testdox Convert from and to RGB linear conversion check
|
||||
*
|
||||
* @return void
|
||||
@@ -930,6 +933,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::__get
|
||||
* @testdox Exception handling for RGB general calls
|
||||
*
|
||||
* @return void
|
||||
@@ -954,6 +958,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::setFromHex
|
||||
* @testdox Exception handling for RGB setFromHex failues
|
||||
*
|
||||
* @return void
|
||||
@@ -1081,6 +1086,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::__get
|
||||
* @testdox Exception handling for Lab general calls
|
||||
*
|
||||
* @return void
|
||||
@@ -1114,6 +1120,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::__get
|
||||
* @testdox Exception handling for LCH general calls
|
||||
*
|
||||
* @return void
|
||||
@@ -1148,6 +1155,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::__get
|
||||
* @testdox Exception handling for XYZ general calls
|
||||
*
|
||||
* @return void
|
||||
|
||||
@@ -277,38 +277,6 @@ final class CoreLibsConvertJsonTest extends TestCase
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if invalid flag throws exception
|
||||
*
|
||||
* @covers ::jsonValidate
|
||||
* @testdox jsonValidate test exception thrown on invalid flag
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testJsonValidateInvalidFlag(): void
|
||||
{
|
||||
$this->expectException("\InvalidArgumentException");
|
||||
\CoreLibs\Convert\Json::jsonValidate('{"valid": "json"}', 5);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if valid flag throws no exception
|
||||
*
|
||||
* @covers ::jsonValidate
|
||||
* @testdox jsonValidate test no exception on valid flag
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testJsonValidateValidflag(): void
|
||||
{
|
||||
$this->assertTrue(
|
||||
\CoreLibs\Convert\Json::jsonValidate('{"valid": "json"}', 0)
|
||||
);
|
||||
$this->assertTrue(
|
||||
\CoreLibs\Convert\Json::jsonValidate('{"valid": "json"}', JSON_INVALID_UTF8_IGNORE)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
|
||||
@@ -671,7 +671,7 @@ final class CoreLibsConvertStringsTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::isValidRegex
|
||||
* @covers ::isValidRegexSimple
|
||||
* @dataProvider isValidRegexSimpleProvider
|
||||
* @testdox isValidRegexSimple make $input unqiue to $expected [$_dataName]
|
||||
*
|
||||
|
||||
@@ -87,7 +87,7 @@ final class CoreLibsCreateRandomKeyTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::randomKeyGen
|
||||
* @covers ::randomKeyGeyn
|
||||
* @dataProvider randomKeyGenProvider
|
||||
* @testdox randomKeyGen use $input key length $expected [$_dataName]
|
||||
*
|
||||
|
||||
@@ -78,6 +78,7 @@ final class CoreLibsCreateSessionTest extends TestCase
|
||||
/**
|
||||
* Test session start
|
||||
*
|
||||
* @covers ::startSession
|
||||
* @dataProvider sessionProvider
|
||||
* @testdox startSession $input name for $type will be $expected (error: $expected_error) [$_dataName]
|
||||
*
|
||||
|
||||
@@ -121,6 +121,7 @@ final class CoreLibsCreateUidsTest extends TestCase
|
||||
* must match 7e78fe0d-59b8-4637-af7f-e88d221a7d1e
|
||||
*
|
||||
* @covers ::uuidv4
|
||||
* @covers ::validateUuidv4
|
||||
* @testdox uuidv4 check that return is matching regex [$_dataName]
|
||||
*
|
||||
* @return void
|
||||
|
||||
@@ -123,16 +123,10 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
'log_file_id' => 'CoreLibs-DB-IO-Test',
|
||||
]);
|
||||
// will be true, default logging is true
|
||||
try {
|
||||
$db = new \CoreLibs\DB\IO(
|
||||
self::$db_config['valid'],
|
||||
self::$log
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
self::markTestSkipped(
|
||||
'Cannot connect to Test DB for DB\IO test: ' . $e->getMessage()
|
||||
);
|
||||
}
|
||||
if (!$db->dbGetConnectionStatus()) {
|
||||
self::markTestSkipped(
|
||||
'Cannot connect to valid Test DB for DB\IO test.'
|
||||
@@ -549,6 +543,8 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
/**
|
||||
* Test dbSetDbug, dbGetDebug
|
||||
*
|
||||
* @covers ::dbGetDbug
|
||||
* @covers ::dbSetDebug
|
||||
* @testdox Set and Get Debug flag
|
||||
*
|
||||
* @return void
|
||||
@@ -3025,6 +3021,8 @@ final class CoreLibsDBIOTest extends TestCase
|
||||
* @covers ::dbReturnParams
|
||||
* @covers ::dbCacheReset
|
||||
* @covers ::dbGetCursorExt
|
||||
* @covers ::dbCursorPos
|
||||
* @covers ::dbCursorNumRows
|
||||
* @dataProvider dbReturnProvider
|
||||
* @testdox dbReturn Read First $read_first_only only and cache $flag_cache and assoc $flag_assoc with (Warning: $warning/Error: $error) [$_dataName]
|
||||
*
|
||||
|
||||
@@ -13,6 +13,29 @@ use PHPUnit\Framework\TestCase;
|
||||
*/
|
||||
final class CoreLibsDebugFileWriterTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function fsetFolderProvider(): array
|
||||
{
|
||||
return [
|
||||
'valid log folder name' => [
|
||||
0 => '/tmp/',
|
||||
1 => true,
|
||||
],
|
||||
'invalid log folder name' => [
|
||||
0 => 'some name',
|
||||
1 => false,
|
||||
],
|
||||
'not writeable log folder name' => [
|
||||
0 => '/opt',
|
||||
1 => false,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
@@ -62,59 +85,18 @@ final class CoreLibsDebugFileWriterTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @testdox fsetFolder test correct return code
|
||||
* @dataProvider fsetFolderProvider
|
||||
* @testdox fsetFolder $input will match $expected [$_dataName]
|
||||
*
|
||||
* @param string $input
|
||||
* @param boolean $expected
|
||||
* @return void
|
||||
*/
|
||||
public function testFsetFolder(): void
|
||||
public function testFsetFolder(string $input, bool $expected): void
|
||||
{
|
||||
// check the following
|
||||
// - valid folder, writeable
|
||||
// - valid folder, not writeable
|
||||
// - invalid folder (eg file)
|
||||
// - invalid folder name (eg contains spaces), must match ^[\w\-\/]+
|
||||
|
||||
// if we have no /tmp/ folder, we cannot test this, so skip the test
|
||||
if (!is_dir('/tmp')) {
|
||||
$this->markTestSkipped('No /tmp folder found, cannot test fsetFolder');
|
||||
}
|
||||
// TEST 3:
|
||||
// create a file in /tmp/ to test invalid folder (eg file)
|
||||
$test_file = '/tmp/somefile.txt';
|
||||
if (!is_file($test_file)) {
|
||||
touch($test_file);
|
||||
}
|
||||
$this->assertEquals(
|
||||
false,
|
||||
\CoreLibs\Debug\FileWriter::fsetFolder($test_file)
|
||||
);
|
||||
// TEST 4:
|
||||
// test invalid folder name (eg contains spaces), must match ^[\w\-\/]+
|
||||
$this->assertEquals(
|
||||
false,
|
||||
\CoreLibs\Debug\FileWriter::fsetFolder('some name')
|
||||
);
|
||||
// TEST 1:
|
||||
// create a folder in /tmp/ to test valid folder, writeable
|
||||
$test_folder = '/tmp/somefolder';
|
||||
if (!is_dir($test_folder)) {
|
||||
mkdir($test_folder);
|
||||
}
|
||||
$this->assertEquals(
|
||||
true,
|
||||
\CoreLibs\Debug\FileWriter::fsetFolder($test_folder)
|
||||
);
|
||||
// TEST 2:
|
||||
// create a folder in /tmp/ to test valid folder, not writeable
|
||||
$test_folder = '/tmp/somefolder2';
|
||||
if (!is_dir($test_folder)) {
|
||||
mkdir($test_folder);
|
||||
}
|
||||
// remove all write permissions for the folder
|
||||
chmod($test_folder, 0555);
|
||||
$this->assertEquals(
|
||||
false,
|
||||
\CoreLibs\Debug\FileWriter::fsetFolder($test_folder)
|
||||
$expected,
|
||||
\CoreLibs\Debug\FileWriter::fsetFolder($input)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,8 +48,8 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
* @dataProvider printTimeProvider
|
||||
* @testdox printTime test with $microtime and match to regex [$_dataName]
|
||||
*
|
||||
* @param ?int $microtime
|
||||
* @param string $regex
|
||||
* @param int|null $mircrotime
|
||||
* @param string $expected
|
||||
* @return void
|
||||
*/
|
||||
public function testPrintTime(?int $microtime, string $regex): void
|
||||
@@ -460,8 +460,10 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
* Undocumented function
|
||||
*
|
||||
* @cover ::getCallerFileLine
|
||||
* @testWith ["vendor/phpunit/phpunit/src/Framework/TestCase.php:6434","phar:///home/clemens/.phive/phars/phpunit-9.6.13.phar/phpunit/Framework/TestCase.php:6434"]
|
||||
* @testdox getCallerFileLine check based on regex .../Framework/TestCase.php:\d+ [$_dataName]
|
||||
*
|
||||
* @param string $expected
|
||||
* @return void
|
||||
*/
|
||||
public function testGetCallerFileLine(): void
|
||||
@@ -469,19 +471,15 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
// regex prefix with path "/../" and then fixed vendor + \d+
|
||||
// or phar start if phiev installed
|
||||
// phar:///home/clemens/.phive/phars/phpunit-9.6.13.phar/phpunit/Framework/TestCase.php
|
||||
// phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php
|
||||
$regex = "/^("
|
||||
. "\/.*\/vendor\/phpunit\/phpunit\/src"
|
||||
. "|"
|
||||
. "phar:\/\/\/.*\.phive\/phars\/phpunit-\d+\.\d+\.\d+\.phar\/phpunit"
|
||||
. "|"
|
||||
. "phar:\/\/\/usr\/local\/bin\/phpunit\/phpunit"
|
||||
. ")"
|
||||
. "\/Framework\/TestCase.php:\d+$/";
|
||||
$this->assertMatchesRegularExpression(
|
||||
$regex,
|
||||
Support::getCallerFileLine(),
|
||||
'Failed for: ' . Support::getCallerFileLine()
|
||||
Support::getCallerFileLine()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -524,7 +522,7 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$compare,
|
||||
'assert expected 10: ' . print_r($compare, true)
|
||||
'assert expected 10'
|
||||
);
|
||||
break;
|
||||
case 11:
|
||||
@@ -547,20 +545,10 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$compare,
|
||||
'assert expected 11: ' . print_r($compare, true)
|
||||
'assert expected 11'
|
||||
);
|
||||
break;
|
||||
case 12:
|
||||
// if compare starts with "main"
|
||||
if ($compare[0] == 'main') {
|
||||
// add two more run after main
|
||||
array_splice(
|
||||
$expected,
|
||||
1,
|
||||
0,
|
||||
['run', 'run']
|
||||
);
|
||||
} else {
|
||||
// add two "run" before "runBare"
|
||||
array_splice(
|
||||
$expected,
|
||||
@@ -574,11 +562,10 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
0,
|
||||
['include']
|
||||
);
|
||||
}
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$compare,
|
||||
'assert expected 12: ' . print_r($compare, true)
|
||||
'assert expected 12'
|
||||
);
|
||||
break;
|
||||
default:
|
||||
@@ -602,7 +589,7 @@ final class CoreLibsDebugSupportTest extends TestCase
|
||||
if ($call_stack < 8) {
|
||||
$this->assertFalse(true, 'getCallStack too low: 8');
|
||||
} else {
|
||||
$this->assertTrue(true, 'getCallStack ok');
|
||||
$this->assertTrue(true, 'getCallSteck ok');
|
||||
}
|
||||
// just test top entry
|
||||
$first = array_shift($call_stack);
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
test.env
|
||||
@@ -442,6 +442,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
* init check and connected change translation
|
||||
*
|
||||
* @covers ::getTranslator
|
||||
* @covers ::l10nReloadMOfile
|
||||
* @dataProvider getTranslatorProvider
|
||||
* @testdox change locale from $locale and domain $domain to locale $locale_new and domain $domain_new [$_dataName]
|
||||
*
|
||||
@@ -638,7 +639,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
* plural and plural context
|
||||
*
|
||||
* @covers ::__n
|
||||
* @covers ::__np
|
||||
* @covers ::__pn
|
||||
* @dataProvider ngettextProvider
|
||||
* @testdox plural string test for locale $locale and domain $domain with $context [$_dataName]
|
||||
*
|
||||
@@ -864,7 +865,6 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
string $value,
|
||||
string $expected
|
||||
): void {
|
||||
$old_value = null;
|
||||
switch ($type) {
|
||||
case 'global':
|
||||
$GLOBALS[$var] = $value;
|
||||
@@ -1101,11 +1101,11 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
||||
* fuctions check
|
||||
* TODO: others d/dn/dp/dnp gettext functions
|
||||
*
|
||||
* @covers _setlocale
|
||||
* @covers _bindtextdomain
|
||||
* @covers _bind_textdomain_codeset
|
||||
* @covers _textdomain
|
||||
* @covers _gettext
|
||||
* @covers __setlocale
|
||||
* @covers __bindtextdomain
|
||||
* @covers __bind_textdomain_codeset
|
||||
* @covers __textdomain
|
||||
* @covers __gettext
|
||||
* @covers __
|
||||
* @dataProvider functionsProvider
|
||||
* @testdox check functions with locale $locale and domain $domain [$_dataName]
|
||||
|
||||
@@ -514,6 +514,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers Logger\Flag
|
||||
* @testdox Logger\Flag enum test
|
||||
*
|
||||
* @return void
|
||||
@@ -827,7 +828,6 @@ final class CoreLibsLoggingLoggingTest extends TestCase
|
||||
// clean all data in folder first
|
||||
array_map('unlink', glob($log->getLogFolder() . $log->getLogFileId() . '*.log'));
|
||||
|
||||
$log_status = false;
|
||||
switch ($level->value) {
|
||||
case 200:
|
||||
$log_status = $log->info($message);
|
||||
@@ -851,7 +851,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
|
||||
$log_status = $log->emergency($message);
|
||||
break;
|
||||
}
|
||||
$this->assertTrue($log_status, 'log write unsuccessful for level: ' . $level->getName());
|
||||
$this->assertTrue($log_status, 'log write successful');
|
||||
$file_content = file_get_contents(
|
||||
$log->getLogFolder() . $log->getLogFile()
|
||||
) ?: '';
|
||||
|
||||
@@ -334,6 +334,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -369,6 +370,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -395,6 +397,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -421,6 +424,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -465,6 +469,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* Test decryption with wrong key
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptFailed
|
||||
@@ -491,6 +496,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* Test decryption with wrong key
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptFailed
|
||||
@@ -515,6 +521,7 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
||||
/**
|
||||
* Test decryption with wrong key
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptFailed
|
||||
|
||||
@@ -104,6 +104,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -131,6 +132,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -156,6 +158,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
||||
/**
|
||||
* test encrypt/decrypt produce correct output
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encryptKey
|
||||
* @covers ::decryptKey
|
||||
* @dataProvider providerEncryptDecryptSuccess
|
||||
@@ -199,6 +202,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
||||
/**
|
||||
* Test decryption with wrong key
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptFailed
|
||||
@@ -224,6 +228,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
||||
/**
|
||||
* Test decryption with wrong key
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encrypt
|
||||
* @covers ::decrypt
|
||||
* @dataProvider providerEncryptFailed
|
||||
@@ -247,6 +252,7 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
||||
/**
|
||||
* Test decryption with wrong key
|
||||
*
|
||||
* @covers ::generateRandomKey
|
||||
* @covers ::encryptKey
|
||||
* @covers ::decryptKey
|
||||
* @dataProvider providerEncryptFailed
|
||||
|
||||
@@ -42,6 +42,7 @@ final class CoreLibsTemplateHtmlBuilderElementTest extends TestCase
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::Element
|
||||
* @covers ::buildHtml
|
||||
* @covers ::getTag
|
||||
* @covers ::getId
|
||||
|
||||
@@ -58,11 +58,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
if ($handle === false) {
|
||||
continue;
|
||||
}
|
||||
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
|
||||
$status = curl_exec($handle);
|
||||
if ($status === false) {
|
||||
continue;
|
||||
}
|
||||
$this->url_basic = $url;
|
||||
// print "Open: $url\n";
|
||||
break;
|
||||
@@ -464,14 +459,15 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
/**
|
||||
* set setup + header, base uri change
|
||||
*
|
||||
* @covers ::Curl
|
||||
* @covers ::setBaseUri
|
||||
* @covers ::setHeaders
|
||||
* @covers ::removeHeaders
|
||||
* @covers ::addHeader
|
||||
* @covers ::removeHEader
|
||||
* @dataProvider providerUrlRequestsCurlSetup
|
||||
* @testdox UrlRequests\Curl Class setup tasks [$_dataName]
|
||||
*
|
||||
* @param null|array $config
|
||||
* @param array<string,mixed> $expected_set
|
||||
* @param array $expected
|
||||
* @param null|string $new_base_uri
|
||||
* @param null|array $set_header
|
||||
* @param null|bool $set_header_add
|
||||
@@ -496,18 +492,10 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
};
|
||||
// if ($new_base_uri === null && $set_header === null && $remove_header === null) {
|
||||
// }
|
||||
$this->assertEquals(
|
||||
$expected_set,
|
||||
$curl->getConfig(),
|
||||
'Class setup config mismatch'
|
||||
);
|
||||
$this->assertEquals($expected_set, $curl->getConfig(), 'Class setup config mismatch');
|
||||
if ($new_base_uri !== null) {
|
||||
$curl->setBaseUri($new_base_uri);
|
||||
$this->assertEquals(
|
||||
$expected_change,
|
||||
$curl->getConfig(),
|
||||
'new base_uri not matching'
|
||||
);
|
||||
$this->assertEquals($expected_change, $curl->getConfig(), 'new base_uri not matching');
|
||||
}
|
||||
if ($set_header !== null) {
|
||||
if ($set_header_add !== null) {
|
||||
@@ -515,19 +503,11 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
} else {
|
||||
$curl->setHeaders($set_header);
|
||||
}
|
||||
$this->assertEquals(
|
||||
$expected_change,
|
||||
$curl->getConfig(),
|
||||
'new headers not matching'
|
||||
);
|
||||
$this->assertEquals($expected_change, $curl->getConfig(), 'new headers not matching');
|
||||
}
|
||||
if ($remove_header !== null) {
|
||||
$curl->removeHeaders($remove_header);
|
||||
$this->assertEquals(
|
||||
$expected_change,
|
||||
$curl->getConfig(),
|
||||
'removed headers not matching'
|
||||
);
|
||||
$this->assertEquals($expected_change, $curl->getConfig(), 'removed headers not matching');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -897,7 +877,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
string $return_content
|
||||
) {
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
$this->markTestSkipped('No backend interface setup for testing: GET');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||
// options
|
||||
@@ -980,9 +960,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testUrlRequestsCurlRequestMultiple()
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||
// get
|
||||
$response = $curl->get($this->url_basic, [
|
||||
@@ -1074,9 +1051,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testUrlRequestsCurlAuthHeader()
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl([
|
||||
"auth" => ["user", "pass", "basic"],
|
||||
"http_errors" => false,
|
||||
@@ -1143,9 +1117,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testExceptionInvalidHeaderKey(): void
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessageMatches("/InvalidHeaderKey/");
|
||||
@@ -1166,9 +1137,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testExceptionInvalidHeaderValue(): void
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessageMatches("/InvalidHeaderValue/");
|
||||
@@ -1218,9 +1186,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testExceptionBadRequest(): void
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessageMatches("/ClientError/");
|
||||
@@ -1242,9 +1207,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testExceptionBadRequestEnable(): void
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => false]);
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessageMatches("/ClientError/");
|
||||
@@ -1267,9 +1229,6 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
||||
*/
|
||||
public function testExceptionBadRequestUnset(): void
|
||||
{
|
||||
if (!$this->url_basic) {
|
||||
$this->markTestSkipped('No backend interface setup for testing');
|
||||
}
|
||||
// if true, with false it has to be off
|
||||
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
|
||||
$response = $curl->request('get', $this->url_basic, [
|
||||
|
||||
@@ -23,10 +23,4 @@
|
||||
<directory>./www/lib/CoreLibs</directory>
|
||||
</include>
|
||||
</source> -->
|
||||
<logging>
|
||||
<!-- JUnit XML log (Most Common for CI/CD) -->
|
||||
<junit outputFile="build/logs/junit.xml"/>
|
||||
<!-- TestDox HTML log -->
|
||||
<testdoxHtml outputFile="build/testdox.html"/>
|
||||
</logging>
|
||||
</phpunit>
|
||||
|
||||
@@ -38,25 +38,6 @@ print "GETFILENAMEENDING: $file: " . File::getFilenameEnding($file) . "<br>";
|
||||
$file = getcwd() . DIRECTORY_SEPARATOR . 'class_test.file.php';
|
||||
print "GETLINESFROMFILE: $file: " . File::getLinesFromFile($file) . "<br>";
|
||||
print "MIMEINFO: $file: " . File::getMimeType($file) . "<br>";
|
||||
try {
|
||||
print "MIMEINFO: does_not_exists.txt " . File::getMimeType("does_not_exists.txt") . "<br>";
|
||||
} catch (\Exception $e) {
|
||||
print "Error: " . get_class($e) . ": " . $e->getMessage() . "<br>";
|
||||
}
|
||||
|
||||
$files = [
|
||||
'layout/css/edit.css',
|
||||
'layout/javascript/edit.jq.js',
|
||||
'class_test.file.php',
|
||||
getcwd() . DIRECTORY_SEPARATOR . 'class_test.file.php',
|
||||
];
|
||||
foreach ($files as $file) {
|
||||
try {
|
||||
print "MIMEINFO: $file: " . File::getMimeType($file) . "<br>";
|
||||
} catch (\Exception $e) {
|
||||
print "Error: " . get_class($e) . ": " . $e->getMessage() . "<br>";
|
||||
}
|
||||
}
|
||||
|
||||
print "</body></html>";
|
||||
|
||||
|
||||
@@ -1598,17 +1598,4 @@ function createNavMenu(nav_menu, header_id = 'mainHeader') // eslint-disable-lin
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* HTML decode &something; entrie
|
||||
* @param {string} str
|
||||
* @returns string
|
||||
* @deprecated use utils.js
|
||||
*/
|
||||
function decodeHtmlEntities(str) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(str, 'text/html');
|
||||
return doc.documentElement.textContent;
|
||||
}
|
||||
|
||||
/* END */
|
||||
|
||||
@@ -135,7 +135,7 @@ var HtmlElementCreator = class {
|
||||
* @param {String} tag must set tag (div, span, etc)
|
||||
* @param {String} [id=''] optional set for id, if input, select will be used for name
|
||||
* @param {String} [content=''] text content inside, is skipped if sub elements exist
|
||||
* @param {Array<String>} [css=[]] array for css tags
|
||||
* @param {Array} [css=[]] array for css tags
|
||||
* @param {Object} [options={}] anything else (value, placeholder, OnClick, style)
|
||||
* @return {Object} created element as an object
|
||||
*/
|
||||
@@ -509,11 +509,6 @@ function numberWithCommas(number) {
|
||||
function convertLBtoBR(string) {
|
||||
return string.replace(/(?:\r\n|\r|\n)/g, "<br>");
|
||||
}
|
||||
function decodeHtmlEntities(str) {
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(str, "text/html");
|
||||
return doc.documentElement.textContent;
|
||||
}
|
||||
|
||||
// src/utils/DateTimeHelpers.mjs
|
||||
function getTimestamp() {
|
||||
@@ -665,19 +660,18 @@ function getQueryStringParam(search = "", query = "", single = false) {
|
||||
if (search) {
|
||||
let _params = url.searchParams.getAll(search);
|
||||
if (_params.length == 1 || single === true) {
|
||||
return _params[0];
|
||||
param = _params[0];
|
||||
} else if (_params.length > 1) {
|
||||
return _params;
|
||||
param = _params;
|
||||
}
|
||||
} else {
|
||||
let param2 = {};
|
||||
param = {};
|
||||
for (const [key] of url.searchParams.entries()) {
|
||||
if (typeof param2[key] === "undefined") {
|
||||
if (typeof param[key] === "undefined") {
|
||||
let _params = url.searchParams.getAll(key);
|
||||
param2[key] = _params.length < 2 || single === true ? _params[0] : _params;
|
||||
param[key] = _params.length < 2 || single === true ? _params[0] : _params;
|
||||
}
|
||||
}
|
||||
return param2;
|
||||
}
|
||||
return param;
|
||||
}
|
||||
@@ -1431,9 +1425,6 @@ function numberWithCommas2(x) {
|
||||
function convertLBtoBR2(string) {
|
||||
return convertLBtoBR(string);
|
||||
}
|
||||
function decodeHtmlEntities2(string) {
|
||||
return decodeHtmlEntities(string);
|
||||
}
|
||||
function getTimestamp2() {
|
||||
return getTimestamp();
|
||||
}
|
||||
@@ -1558,7 +1549,7 @@ function acssel(_element, css) {
|
||||
return hec.acssel(_element, css);
|
||||
}
|
||||
function scssel(_element, rcss, acss) {
|
||||
return hec.scssel(_element, rcss, acss);
|
||||
hec.scssel(_element, rcss, acss);
|
||||
}
|
||||
function phfo(tree) {
|
||||
return hec.phfo(tree);
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
@@ -15,7 +15,7 @@
|
||||
]
|
||||
},
|
||||
"repositories": {
|
||||
"git.egplusww.jp.Composer": {
|
||||
"packages.omnicomproduction.jp.Composer": {
|
||||
"type": "composer",
|
||||
"url": "https://packages.omnicomproduction.jp/api/packages/Composer/composer"
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
"require": {
|
||||
"egrajp/smarty-extended": "^5.4",
|
||||
"php": ">=8.1",
|
||||
"gullevek/dotenv": "^3.0",
|
||||
"gullevek/dotenv": "^2.0",
|
||||
"psr/log": "^2.0 || ^3.0",
|
||||
"php-privacy/openpgp": "^2.1"
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -58,21 +58,15 @@ class File
|
||||
* else returns '' for any other finfo read problem
|
||||
*
|
||||
* @param string $read_file File to read, relative or absolute path
|
||||
* @return string mime type
|
||||
* @throws \UnexpectedValueException if file cannot be read or is not a file
|
||||
* @throws \RangeException if we cannot get a mime type and throw exception is on
|
||||
* @return string
|
||||
*/
|
||||
public static function getMimeType(string $read_file): string
|
||||
{
|
||||
$finfo = new \finfo(FILEINFO_MIME_TYPE);
|
||||
if (!is_file($read_file) || !is_readable($read_file)) {
|
||||
if (!is_file($read_file)) {
|
||||
throw new \UnexpectedValueException('[getMimeType] File not found: ' . $read_file);
|
||||
}
|
||||
$mime_type = $finfo->file($read_file);
|
||||
if ($mime_type === false) {
|
||||
throw new \RangeException('[getMimeType] Cannot get mime type for: ' . $read_file);
|
||||
}
|
||||
return $mime_type;
|
||||
return $finfo->file($read_file) ?: '';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -811,6 +811,87 @@ class ArrayHandler
|
||||
);
|
||||
return $in_array;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: move to CoreLibs ArrayCombined
|
||||
* return one random entry from an array (value)
|
||||
* the return entry is null if the incoming array is empty
|
||||
* the array can also be an array of arrays
|
||||
*
|
||||
* @param array<mixed> $array
|
||||
* @return string|int|float|bool|array<mixed>|null
|
||||
*/
|
||||
public static function getRandomEntryFromArray(array $array): string|int|float|bool|array|null
|
||||
{
|
||||
if (empty($array)) {
|
||||
return null;
|
||||
}
|
||||
$random_index = array_rand($array);
|
||||
return $array[$random_index];
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: move to CoreLibs ArrayCombined
|
||||
* find and remove one value
|
||||
* on default removes only the first entry
|
||||
* on default does not strict compare
|
||||
*
|
||||
* @param array<mixed> $array
|
||||
* @param string|int|float|bool|array<mixed> $value
|
||||
* @param bool $strict [false]
|
||||
* @return array<mixed>
|
||||
*/
|
||||
public static function removeArrayEntryByValue(
|
||||
array $array,
|
||||
string|int|float|bool|array $value,
|
||||
bool $strict = false,
|
||||
): array {
|
||||
return array_filter($array, function ($element) use ($value, $strict) {
|
||||
return $strict ?
|
||||
$element !== $value :
|
||||
$element != $value;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: move to CoreLibs ArrayCombined
|
||||
* add a string to each element in an array, default is at the end of the value,
|
||||
* can be switched with the prefix flag
|
||||
*
|
||||
* @param array<string> $array
|
||||
* @param string $string_to_add
|
||||
* @param bool $prefix [false]
|
||||
* @return array<string>
|
||||
*/
|
||||
public static function addStringToEachValueInArray(array $array, string $string_to_add, bool $prefix = false): array
|
||||
{
|
||||
return array_map(function ($value) use ($string_to_add, $prefix) {
|
||||
return $prefix ?
|
||||
$string_to_add . $value :
|
||||
$value . $string_to_add;
|
||||
}, $array);
|
||||
}
|
||||
|
||||
/**
|
||||
* sort by key any array, even if it is nested
|
||||
*
|
||||
* @param array<mixed> $data
|
||||
* @return array<mixed>
|
||||
*/
|
||||
public static function createSortedArrayByKey(array $data): array
|
||||
{
|
||||
// Sort by keys
|
||||
ksort($data);
|
||||
|
||||
// Recursively sort nested arrays
|
||||
foreach ($data as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
$data[$key] = self::createSortedArrayByKey($value);
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -133,7 +133,7 @@ class DateTime
|
||||
} else {
|
||||
for ($i = 0, $iMax = count($timegroups); $i < $iMax; $i++) {
|
||||
$output = floor((float)$timestamp / $timegroups[$i]);
|
||||
$timestamp = $timestamp % $timegroups[$i];
|
||||
$timestamp = (float)$timestamp % $timegroups[$i];
|
||||
// output has days|hours|min|sec
|
||||
if ($output || $time_string) {
|
||||
$time_string .= $output . $labels[$i] . (($i + 1) != count($timegroups) ? ' ' : '');
|
||||
@@ -453,7 +453,7 @@ class DateTime
|
||||
}
|
||||
if (isset($matches[11]) && is_numeric($matches[11])) {
|
||||
// for milliseconds, we need to divide by 1000 and add them
|
||||
$timestamp += ((float)$matches[11] / 1000);
|
||||
$timestamp += (float)($matches[11] / 1000);
|
||||
}
|
||||
if ($negative) {
|
||||
// cast to float so we can do a negative multiplication
|
||||
|
||||
@@ -43,10 +43,7 @@ class Byte
|
||||
public static function humanReadableByteFormat(string|int|float $bytes, int $flags = 0): string
|
||||
{
|
||||
// if not numeric, return as is
|
||||
if (!is_numeric($bytes)) {
|
||||
// if anything other return as string
|
||||
return (string)$bytes;
|
||||
}
|
||||
if (is_numeric($bytes)) {
|
||||
// flags bit wise check
|
||||
// remove space between number and suffix
|
||||
if ($flags & self::BYTE_FORMAT_NOSPACE) {
|
||||
@@ -107,6 +104,10 @@ class Byte
|
||||
} else {
|
||||
return round($bytes_calc, 2) . $pre;
|
||||
}
|
||||
} else {
|
||||
// if anything other return as string
|
||||
return (string)$bytes;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -153,7 +154,7 @@ class Byte
|
||||
if (!empty($matches[1])) {
|
||||
$number_negative = true;
|
||||
}
|
||||
if (isset($matches[2])) {
|
||||
if (isset($matches[2]) && isset($matches[3])) {
|
||||
// remove all non valid characters from the number
|
||||
$number = preg_replace('/[^0-9\.]/', '', $matches[2]);
|
||||
// final clean up and convert to float
|
||||
|
||||
@@ -957,9 +957,9 @@ class Color
|
||||
* Undocumented function
|
||||
*
|
||||
* @param HWB $hwb
|
||||
* @return LCH
|
||||
* @return Lch
|
||||
*/
|
||||
public static function hwbToLch(HWB $hwb): LCH
|
||||
public static function hwbToLch(HWB $hwb): Lch
|
||||
{
|
||||
return self::rgbToLch(
|
||||
self::hwbToRgb($hwb)
|
||||
@@ -1078,10 +1078,10 @@ class Color
|
||||
/**
|
||||
* OkLab to Lch (CIE)
|
||||
*
|
||||
* @param Lab $lab
|
||||
* @param LAB $lab
|
||||
* @return LCH
|
||||
*/
|
||||
public static function okLabToLch(Lab $lab): LCH
|
||||
public static function okLabToLch(LAB $lab): LCH
|
||||
{
|
||||
return self::labToLch(
|
||||
self::okLabToLab($lab)
|
||||
@@ -1092,9 +1092,9 @@ class Color
|
||||
* Lch (CIE) to OkLab
|
||||
*
|
||||
* @param LCH $lch
|
||||
* @return Lab
|
||||
* @return LAB
|
||||
*/
|
||||
public static function lchToOkLab(LCH $lch): Lab
|
||||
public static function lchToOkLab(LCH $lch): LAB
|
||||
{
|
||||
return self::labToOkLab(
|
||||
self::lchToLab($lch)
|
||||
|
||||
@@ -76,13 +76,9 @@ class Json
|
||||
* @param string $json
|
||||
* @param int $flags only JSON_INVALID_UTF8_IGNORE is currently allowed
|
||||
* @return bool
|
||||
* @throws \InvalidArgumentException if flags is invalid
|
||||
*/
|
||||
public static function jsonValidate(string $json, int $flags = 0): bool
|
||||
{
|
||||
if ($flags != 0 && $flags != JSON_INVALID_UTF8_IGNORE) {
|
||||
throw new \InvalidArgumentException("For flag only 0 or JSON_INVALID_UTF8_IGNORE is allwed: " . $flags);
|
||||
}
|
||||
$json_valid = json_validate($json, flags:$flags);
|
||||
self::$json_last_error = json_last_error();
|
||||
return $json_valid;
|
||||
|
||||
@@ -2232,9 +2232,9 @@ class IO
|
||||
$milliseconds = $matches[13] ?? '';
|
||||
|
||||
// clean up, hide entries that have 00 in the time group
|
||||
$hour = !empty($hour) ? preg_replace('/^0/', '', $hour) : '';
|
||||
$minutes = !empty($minutes) ? preg_replace('/^0/', '', $minutes) : '';
|
||||
$seconds = !empty($seconds) ? preg_replace('/^0/', '', $seconds) : '';
|
||||
$hour = $hour != '00' ? preg_replace('/^0/', '', $hour) : '';
|
||||
$minutes = $minutes != '00' ? preg_replace('/^0/', '', $minutes) : '';
|
||||
$seconds = $seconds != '00' ? preg_replace('/^0/', '', $seconds) : '';
|
||||
|
||||
// strip any leading or trailing spaces
|
||||
$time_string = trim(
|
||||
@@ -2562,27 +2562,21 @@ class IO
|
||||
// set field names
|
||||
$this->cursor_ext[$query_hash]['field_names'] = [];
|
||||
for ($i = 0; $i < $this->cursor_ext[$query_hash]['num_fields']; $i++) {
|
||||
if (
|
||||
($field_name = $this->db_functions->__dbFieldName(
|
||||
$this->cursor_ext[$query_hash]['field_names'][] =
|
||||
$this->db_functions->__dbFieldName(
|
||||
$this->cursor_ext[$query_hash]['cursor'],
|
||||
$i
|
||||
)) !== false
|
||||
) {
|
||||
$this->cursor_ext[$query_hash]['field_names'][] = $field_name;
|
||||
}
|
||||
);
|
||||
}
|
||||
$this->field_names = $this->cursor_ext[$query_hash]['field_names'];
|
||||
// field types
|
||||
$this->cursor_ext[$query_hash]['field_types'] = [];
|
||||
for ($i = 0; $i < $this->cursor_ext[$query_hash]['num_fields']; $i++) {
|
||||
if (
|
||||
($field_type = $this->db_functions->__dbFieldType(
|
||||
$this->cursor_ext[$query_hash]['field_types'][] =
|
||||
$this->db_functions->__dbFieldType(
|
||||
$this->cursor_ext[$query_hash]['cursor'],
|
||||
$i
|
||||
)) !== false
|
||||
) {
|
||||
$this->cursor_ext[$query_hash]['field_types'][] = $field_type;
|
||||
}
|
||||
);
|
||||
}
|
||||
$this->field_types = $this->cursor_ext[$query_hash]['field_types'];
|
||||
// combined name => type
|
||||
|
||||
@@ -536,7 +536,7 @@ class PgSQL implements Interface\SqlFunctions
|
||||
$connection_string[] = 'sslmode=' . $db_ssl;
|
||||
}
|
||||
// connect
|
||||
$this->dbh = @pg_connect(join(' ', $connection_string));
|
||||
$this->dbh = pg_connect(join(' ', $connection_string));
|
||||
return $this->dbh;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,11 +32,11 @@ class FileWriter
|
||||
if (!is_writeable($folder)) {
|
||||
return false;
|
||||
}
|
||||
if (!is_dir($folder)) {
|
||||
return false;
|
||||
}
|
||||
// if last is not / then add
|
||||
self::$debug_folder = rtrim($folder, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
|
||||
if (substr($folder, -1, 1) != DIRECTORY_SEPARATOR) {
|
||||
$folder .= DIRECTORY_SEPARATOR;
|
||||
}
|
||||
self::$debug_folder = $folder;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ class L10n
|
||||
* @param string $locale language name, if not set, try previous set
|
||||
* @param string $domain set name for mo file, if not set, try previous set
|
||||
* @param string $path path, if not set try to get from paths array, else self
|
||||
* @param string $override_encoding if locale does not have encoding set, use this one
|
||||
* @param string $override_encoding if locale does not env encoding set, use this one
|
||||
* @return GetTextReader the main gettext reader object
|
||||
*/
|
||||
public function getTranslator(
|
||||
@@ -321,7 +321,7 @@ class L10n
|
||||
* parse the locale string for further processing
|
||||
*
|
||||
* @param string $locale Locale to parse
|
||||
* @return array{lang:string|null,country:string|null,charset:string|null,modifier:string|null} parsed locale
|
||||
* @return array<string,string|null> array with lang, country, charset, modifier
|
||||
*/
|
||||
public static function parseLocale(string $locale = ''): array
|
||||
{
|
||||
|
||||
@@ -86,7 +86,7 @@ enum Level: int
|
||||
|
||||
/**
|
||||
* @param value-of<self::NAMES>|LogLevel::*|'Debug'|'Info'|'Notice'|'Warning'|'Error'|'Critical'|'Alert'|'Emergency' $name
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public static function fromName(string $name): self
|
||||
{
|
||||
@@ -104,7 +104,7 @@ enum Level: int
|
||||
|
||||
/**
|
||||
* @param value-of<self::VALUES> $value
|
||||
* @return self
|
||||
* @return static
|
||||
*/
|
||||
public static function fromValue(int $value): self
|
||||
{
|
||||
|
||||
@@ -178,11 +178,11 @@ class Elements
|
||||
"/(href=\")?(\>)?\b($protRegex)([\w\.\-?&=+%#~,;\/]+)\b([\.\-?&=+%#~,;\/]*)(\|([^\||^#]+)(#([^\|]+))?\|)?/",
|
||||
function ($matches) {
|
||||
return self::createUrl(
|
||||
$matches[1],
|
||||
$matches[2],
|
||||
$matches[3],
|
||||
$matches[4],
|
||||
$matches[5],
|
||||
$matches[1] ?? '',
|
||||
$matches[2] ?? '',
|
||||
$matches[3] ?? '',
|
||||
$matches[4] ?? '',
|
||||
$matches[5] ?? '',
|
||||
$matches[7] ?? '',
|
||||
$matches[9] ?? ''
|
||||
);
|
||||
@@ -232,15 +232,8 @@ class Elements
|
||||
* @param string $class style sheet
|
||||
* @return string correct string for url href process
|
||||
*/
|
||||
private static function createUrl(
|
||||
string $href,
|
||||
string $atag,
|
||||
string $_1,
|
||||
string $_2,
|
||||
string $_3,
|
||||
string $name,
|
||||
string $class
|
||||
): string {
|
||||
private static function createUrl($href, $atag, $_1, $_2, $_3, $name, $class): string
|
||||
{
|
||||
// $this->debug('URL', "1: $_1 - 2: $_2 - $_3 - atag: $atag - name: $name - class: $class");
|
||||
// if $_1 ends with //, then we strip $_1 complete & target is also blanked (its an internal link)
|
||||
if (preg_match("/\/\/$/", $_1) && preg_match("/^\//", $_2)) {
|
||||
@@ -257,8 +250,11 @@ class Elements
|
||||
. "##GT##" . ($name ? $name : $_2 . $_3) . "##LT##/a##GT##";
|
||||
} elseif ($href && !$atag) {
|
||||
return "href=##QUOT##$_1$_2$_3##QUOT##";
|
||||
}
|
||||
} elseif ($atag) {
|
||||
return $atag . $_2 . $_3;
|
||||
} else {
|
||||
return $href;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -273,15 +269,8 @@ class Elements
|
||||
* @param string $class style sheet
|
||||
* @return string created html email a href string
|
||||
*/
|
||||
private static function createEmail(
|
||||
string $mailto,
|
||||
string $atag,
|
||||
string $_1,
|
||||
string $_2,
|
||||
string $_3,
|
||||
string $title,
|
||||
string $class
|
||||
): string {
|
||||
private static function createEmail($mailto, $atag, $_1, $_2, $_3, $title, $class)
|
||||
{
|
||||
$email = $_1 . "@" . $_2 . "." . $_3;
|
||||
if (!$mailto && !$atag) {
|
||||
return "##LT##a href=##QUOT##mailto:" . $email . "##QUOT##"
|
||||
@@ -289,8 +278,12 @@ class Elements
|
||||
. "##GT##" . ($title ? $title : $email) . "##LT##/a##GT##";
|
||||
} elseif ($mailto && !$atag) {
|
||||
return "mailto:" . $email;
|
||||
}
|
||||
} elseif ($atag) {
|
||||
return $atag . $email;
|
||||
} else {
|
||||
// else just return email as is
|
||||
return $email;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -954,10 +954,11 @@ class Curl implements Interface\RequestsInterface
|
||||
)
|
||||
) {
|
||||
unset($this->config['headers'][$header_key]);
|
||||
unset($this->headers_named[strtolower($header_key)]);
|
||||
unset($this->headers_named[$header_key]);
|
||||
} elseif (
|
||||
// right side is array, and value is anything string or array
|
||||
// if right side is string, and we give value array, we do nothing
|
||||
// string value, array keys = in
|
||||
// or both array and not a full match in the one before
|
||||
(is_string($value) || is_array($value)) &&
|
||||
is_array($this->config['headers'][$header_key])
|
||||
) {
|
||||
// part remove of key, value must be array
|
||||
@@ -965,14 +966,10 @@ class Curl implements Interface\RequestsInterface
|
||||
$value = [$value];
|
||||
}
|
||||
// array values so we rewrite the key pos
|
||||
/** @var array<int|string,string> $headers */
|
||||
$headers = $this->config['headers'][$header_key];
|
||||
$this->config['headers'][$header_key] = array_values(
|
||||
array_diff(
|
||||
$headers,
|
||||
$this->config['headers'][$header_key] = array_values(array_diff(
|
||||
$this->config['headers'][$header_key],
|
||||
$value
|
||||
)
|
||||
);
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user