Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c7e2782ae | |||
| 7bc7674021 | |||
| 3f02bee643 | |||
| e3306a096f | |||
| d66fce374c | |||
| 7e01886ad8 | |||
| e1109e925b | |||
| 6c67ab6259 | |||
| c467ed326c | |||
| 40cd64f667 | |||
| 05dae1031a | |||
| 82ba2a189a |
+1
-1
@@ -3,7 +3,7 @@ node_modules/
|
|||||||
**/composer.lock
|
**/composer.lock
|
||||||
**/vendor/
|
**/vendor/
|
||||||
tools/
|
tools/
|
||||||
**/.env
|
**/configs/.env
|
||||||
**/.target
|
**/.target
|
||||||
package-lock.json
|
package-lock.json
|
||||||
build/
|
build/
|
||||||
|
|||||||
+3
-3
@@ -3,10 +3,10 @@
|
|||||||
<phar name="phpunit" version="~9.6" installed="9.6.34" location="./tools/phpunit" copy="false"/>
|
<phar name="phpunit" version="~9.6" installed="9.6.34" location="./tools/phpunit" copy="false"/>
|
||||||
<phar name="phpcbf" version="4" installed="4.0.1" location="./tools/phpcbf" 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="phpcs" version="4" installed="4.0.1" location="./tools/phpcs" copy="false"/>
|
||||||
<phar name="phpstan" version="^2.0" installed="2.1.54" location="./tools/phpstan" copy="false"/>
|
<phar name="phpstan" version="^2.0" installed="2.2.2" location="./tools/phpstan" copy="false"/>
|
||||||
<phar name="phan" version="^5.4.3" installed="5.5.2" location="./tools/phan" 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="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="phpdox" version="^0.12.0" installed="0.12.0" location="./tools/phpdox" copy="false"/>
|
||||||
<phar name="phpdocumentor" version="^3.4.2" installed="3.9.1" location="./tools/phpDocumentor" 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.1" location="./tools/php-cs-fixer" copy="false"/>
|
<phar name="php-cs-fixer" version="^3.34.1" installed="3.95.10" location="./tools/php-cs-fixer" copy="false"/>
|
||||||
</phive>
|
</phive>
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: en.UTF-8 LC_MESSAGES admin\n"
|
"Project-Id-Version: en.UTF-8 LC_MESSAGES admin\n"
|
||||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: clemens.schwaighofer@egplusww.co\n"
|
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: en.UTF-8 LC_MESSAGES frontend\n"
|
"Project-Id-Version: en.UTF-8 LC_MESSAGES frontend\n"
|
||||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: clemens.schwaighofer@egplusww.co\n"
|
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||||
"Language: en\n"
|
"Language: en\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ja.UTF-8 LC_MESSAGES admin\n"
|
"Project-Id-Version: ja.UTF-8 LC_MESSAGES admin\n"
|
||||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: clemens.schwaighofer@egplusww.com\n"
|
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ja.UTF-8 LC_MESSAGES frontend\n"
|
"Project-Id-Version: ja.UTF-8 LC_MESSAGES frontend\n"
|
||||||
"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
|
"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
|
||||||
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: clemens.schwaighofer@egplusww.com\n"
|
"Last-Translator: clemens.schwaighofer@omc.com\n"
|
||||||
"Language-Team: E-GRAPHICS COMMUNICATIONS Japan <info.jp@egplusww.com>\n"
|
"Language-Team: Omnicom Content Experiences Japan <webmaster@ocex.jp>\n"
|
||||||
"Language: ja\n"
|
"Language: ja\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ use PHPUnit\Framework\TestCase;
|
|||||||
*/
|
*/
|
||||||
final class CoreLibsAAASetupDataTest extends TestCase
|
final class CoreLibsAAASetupDataTest extends TestCase
|
||||||
{
|
{
|
||||||
|
public const TIME_ZONE = 'Asia/Tokyo';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Covers nothing
|
* Covers nothing
|
||||||
*
|
*
|
||||||
@@ -34,6 +36,9 @@ final class CoreLibsAAASetupDataTest extends TestCase
|
|||||||
BASE,
|
BASE,
|
||||||
'BASE Path set check'
|
'BASE Path set check'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// if time zone is not set, errors can happen
|
||||||
|
ini_set('date.timezone', self::TIME_ZONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -80,21 +80,27 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
'log_file_id' => 'CoreLibs-ACL-Login-Test',
|
'log_file_id' => 'CoreLibs-ACL-Login-Test',
|
||||||
]);
|
]);
|
||||||
// test database we need to connect do, if not possible this test is skipped
|
// test database we need to connect do, if not possible this test is skipped
|
||||||
self::$db = new \CoreLibs\DB\IO(
|
try {
|
||||||
[
|
self::$db = new \CoreLibs\DB\IO(
|
||||||
'db_name' => $db_name,
|
[
|
||||||
'db_user' => $db_user,
|
'db_name' => $db_name,
|
||||||
'db_pass' => $db_password,
|
'db_user' => $db_user,
|
||||||
'db_host' => $db_host,
|
'db_pass' => $db_password,
|
||||||
'db_port' => 5432,
|
'db_host' => $db_host,
|
||||||
'db_schema' => 'public',
|
'db_port' => 5432,
|
||||||
'db_type' => 'pgsql',
|
'db_schema' => 'public',
|
||||||
'db_encoding' => '',
|
'db_type' => 'pgsql',
|
||||||
'db_ssl' => 'allow', // allow, disable, require, prefer
|
'db_encoding' => '',
|
||||||
'db_debug' => true,
|
'db_ssl' => 'allow', // allow, disable, require, prefer
|
||||||
],
|
'db_debug' => true,
|
||||||
self::$log
|
],
|
||||||
);
|
self::$log
|
||||||
|
);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
self::markTestSkipped(
|
||||||
|
'Cannot connect to Test DB for ACL\Login test: ' . $e->getMessage()
|
||||||
|
);
|
||||||
|
}
|
||||||
// ALWAYS drop DB and RECREATE DB
|
// ALWAYS drop DB and RECREATE DB
|
||||||
// dropdb -U corelibs_acl_login_test -h localhost corelibs_acl_login_test
|
// 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;
|
// createdb -U corelibs_acl_login_test -O corelibs_acl_login_test -E utf8 corelibs_acl_login_test;
|
||||||
|
|||||||
@@ -15,6 +15,12 @@ if [ ! -f "${load_sql}" ]; then
|
|||||||
echo 1;
|
echo 1;
|
||||||
exit 1;
|
exit 1;
|
||||||
fi;
|
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_user="${2}";
|
||||||
db_name="${3}";
|
db_name="${3}";
|
||||||
db_host="${4}";
|
db_host="${4}";
|
||||||
@@ -24,25 +30,25 @@ if [ -z "${db_user}" ] || [ -z "${db_name}" ] || [ -z "${db_host}" ]; then
|
|||||||
exit 2;
|
exit 2;
|
||||||
fi;
|
fi;
|
||||||
# drop database, on error exit with 3
|
# drop database, on error exit with 3
|
||||||
dropdb -U ${db_user} -h ${db_host} ${db_name} 2>&1;
|
dropdb -U "${db_user}" -h "${db_host}" "${db_name}" 2>&1;
|
||||||
if [ $? -ne 0 ]; then
|
if [ ! $? ]; then
|
||||||
echo 3;
|
echo 3;
|
||||||
exit 3;
|
exit 3;
|
||||||
fi;
|
fi;
|
||||||
# create database, on error exit with 4
|
# create database, on error exit with 4
|
||||||
createdb -U ${db_user} -O ${db_user} -h ${db_host} -E utf8 ${db_name} 2>&1;
|
createdb -U "${db_user}" -O "${db_user}" -h "${db_host}" -E utf8 "${db_name}" 2>&1;
|
||||||
if [ $? -ne 0 ]; then
|
if [ ! $? ]; then
|
||||||
echo 4;
|
echo 4;
|
||||||
exit 4;
|
exit 4;
|
||||||
fi;
|
fi;
|
||||||
# if error 5 thrown, test with enabled below
|
# if error 5 thrown, test with enabled below
|
||||||
if [ ! -z "${5}" ]; then
|
if [ -n "${5}" ]; then
|
||||||
psql -U ${db_user} -h ${db_host} -f ${load_sql} ${db_name};
|
psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}";
|
||||||
else
|
else
|
||||||
# load data (redirect ALL error to null), on error exit with 5
|
# 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;
|
fi;
|
||||||
if [ $? -ne 0 ]; then
|
if [ ! $? ]; then
|
||||||
echo 5;
|
echo 5;
|
||||||
exit 5;
|
exit 5;
|
||||||
fi;
|
fi;
|
||||||
|
|||||||
@@ -1266,7 +1266,8 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::arrayGetPrevKey, ::arrayGetNextKey
|
* @covers ::arrayGetPrevKey
|
||||||
|
* @covers ::arrayGetNextKey
|
||||||
* @dataProvider providerArrayGetNextPrevKey
|
* @dataProvider providerArrayGetNextPrevKey
|
||||||
* @testdox arrayGetNextPrevKey get next/prev key for $search wtih $expected_prev/$expected_next [$_dataName]
|
* @testdox arrayGetNextPrevKey get next/prev key for $search wtih $expected_prev/$expected_next [$_dataName]
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?php
|
<?php // phpcs:disable Generic.Files.LineLength
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
@@ -71,15 +71,16 @@ final class CoreLibsCombinedDateTimeTest extends TestCase
|
|||||||
*
|
*
|
||||||
* @covers ::dateStringFormat
|
* @covers ::dateStringFormat
|
||||||
* @dataProvider timestampProvider
|
* @dataProvider timestampProvider
|
||||||
* @testdox dateStringFormat $input (microtime $flag) will be $expected [$_dataName]
|
* @testdox dateStringFormat $input (mt $flag_show_micro, float mt $flag_micro_as_float) will be $expected [$_dataName]
|
||||||
*
|
*
|
||||||
* @param int|float $input
|
* @param int|float $input
|
||||||
* @param bool $flag
|
* @param bool $flag_show_micro
|
||||||
|
* @param bool $flag_micro_as_float
|
||||||
* @param string $expected
|
* @param string $expected
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testDateStringFormat(
|
public function testDateStringFormat(
|
||||||
$input,
|
int|float $input,
|
||||||
bool $flag_show_micro,
|
bool $flag_show_micro,
|
||||||
bool $flag_micro_as_float,
|
bool $flag_micro_as_float,
|
||||||
string $expected
|
string $expected
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
* @covers ::rgbToHwb
|
* @covers ::rgbToHwb
|
||||||
* @covers ::hsbToRgb
|
* @covers ::hsbToRgb
|
||||||
* @covers ::hslToRgb
|
* @covers ::hslToRgb
|
||||||
* @covers ::hwebToRgb
|
* @covers ::hwbToRgb
|
||||||
* @testdox Convert from and to RGB via HSL, HWB, HSB/V
|
* @testdox Convert from and to RGB via HSL, HWB, HSB/V
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -298,7 +298,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::returnAsHex()
|
|
||||||
* @testdox Convert from and to RGB via hex
|
* @testdox Convert from and to RGB via hex
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -342,8 +341,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* linear RGB conversion tests
|
* linear RGB conversion tests
|
||||||
*
|
*
|
||||||
* @covers ::fromLinear
|
|
||||||
* @covers ::toLinear
|
|
||||||
* @testdox Convert from and to RGB linear conversion check
|
* @testdox Convert from and to RGB linear conversion check
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -933,7 +930,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::__get
|
|
||||||
* @testdox Exception handling for RGB general calls
|
* @testdox Exception handling for RGB general calls
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -958,7 +954,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::setFromHex
|
|
||||||
* @testdox Exception handling for RGB setFromHex failues
|
* @testdox Exception handling for RGB setFromHex failues
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -1086,7 +1081,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::__get
|
|
||||||
* @testdox Exception handling for Lab general calls
|
* @testdox Exception handling for Lab general calls
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -1120,7 +1114,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::__get
|
|
||||||
* @testdox Exception handling for LCH general calls
|
* @testdox Exception handling for LCH general calls
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -1155,7 +1148,6 @@ final class CoreLibsConvertColorTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::__get
|
|
||||||
* @testdox Exception handling for XYZ general calls
|
* @testdox Exception handling for XYZ general calls
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
|
|||||||
@@ -671,7 +671,7 @@ final class CoreLibsConvertStringsTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::isValidRegexSimple
|
* @covers ::isValidRegex
|
||||||
* @dataProvider isValidRegexSimpleProvider
|
* @dataProvider isValidRegexSimpleProvider
|
||||||
* @testdox isValidRegexSimple make $input unqiue to $expected [$_dataName]
|
* @testdox isValidRegexSimple make $input unqiue to $expected [$_dataName]
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ final class CoreLibsCreateRandomKeyTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::randomKeyGeyn
|
* @covers ::randomKeyGen
|
||||||
* @dataProvider randomKeyGenProvider
|
* @dataProvider randomKeyGenProvider
|
||||||
* @testdox randomKeyGen use $input key length $expected [$_dataName]
|
* @testdox randomKeyGen use $input key length $expected [$_dataName]
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -78,7 +78,6 @@ final class CoreLibsCreateSessionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test session start
|
* Test session start
|
||||||
*
|
*
|
||||||
* @covers ::startSession
|
|
||||||
* @dataProvider sessionProvider
|
* @dataProvider sessionProvider
|
||||||
* @testdox startSession $input name for $type will be $expected (error: $expected_error) [$_dataName]
|
* @testdox startSession $input name for $type will be $expected (error: $expected_error) [$_dataName]
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ final class CoreLibsCreateUidsTest extends TestCase
|
|||||||
* must match 7e78fe0d-59b8-4637-af7f-e88d221a7d1e
|
* must match 7e78fe0d-59b8-4637-af7f-e88d221a7d1e
|
||||||
*
|
*
|
||||||
* @covers ::uuidv4
|
* @covers ::uuidv4
|
||||||
* @covers ::validateUuidv4
|
|
||||||
* @testdox uuidv4 check that return is matching regex [$_dataName]
|
* @testdox uuidv4 check that return is matching regex [$_dataName]
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
|
|||||||
@@ -123,10 +123,16 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
'log_file_id' => 'CoreLibs-DB-IO-Test',
|
'log_file_id' => 'CoreLibs-DB-IO-Test',
|
||||||
]);
|
]);
|
||||||
// will be true, default logging is true
|
// will be true, default logging is true
|
||||||
$db = new \CoreLibs\DB\IO(
|
try {
|
||||||
self::$db_config['valid'],
|
$db = new \CoreLibs\DB\IO(
|
||||||
self::$log
|
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()) {
|
if (!$db->dbGetConnectionStatus()) {
|
||||||
self::markTestSkipped(
|
self::markTestSkipped(
|
||||||
'Cannot connect to valid Test DB for DB\IO test.'
|
'Cannot connect to valid Test DB for DB\IO test.'
|
||||||
@@ -543,8 +549,6 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test dbSetDbug, dbGetDebug
|
* Test dbSetDbug, dbGetDebug
|
||||||
*
|
*
|
||||||
* @covers ::dbGetDbug
|
|
||||||
* @covers ::dbSetDebug
|
|
||||||
* @testdox Set and Get Debug flag
|
* @testdox Set and Get Debug flag
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -3021,8 +3025,6 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
* @covers ::dbReturnParams
|
* @covers ::dbReturnParams
|
||||||
* @covers ::dbCacheReset
|
* @covers ::dbCacheReset
|
||||||
* @covers ::dbGetCursorExt
|
* @covers ::dbGetCursorExt
|
||||||
* @covers ::dbCursorPos
|
|
||||||
* @covers ::dbCursorNumRows
|
|
||||||
* @dataProvider dbReturnProvider
|
* @dataProvider dbReturnProvider
|
||||||
* @testdox dbReturn Read First $read_first_only only and cache $flag_cache and assoc $flag_assoc with (Warning: $warning/Error: $error) [$_dataName]
|
* @testdox dbReturn Read First $read_first_only only and cache $flag_cache and assoc $flag_assoc with (Warning: $warning/Error: $error) [$_dataName]
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -13,29 +13,6 @@ use PHPUnit\Framework\TestCase;
|
|||||||
*/
|
*/
|
||||||
final class CoreLibsDebugFileWriterTest extends 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
|
* Undocumented function
|
||||||
*
|
*
|
||||||
@@ -85,18 +62,59 @@ final class CoreLibsDebugFileWriterTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @dataProvider fsetFolderProvider
|
* @testdox fsetFolder test correct return code
|
||||||
* @testdox fsetFolder $input will match $expected [$_dataName]
|
|
||||||
*
|
*
|
||||||
* @param string $input
|
|
||||||
* @param boolean $expected
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testFsetFolder(string $input, bool $expected): void
|
public function testFsetFolder(): 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(
|
$this->assertEquals(
|
||||||
$expected,
|
false,
|
||||||
\CoreLibs\Debug\FileWriter::fsetFolder($input)
|
\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)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ final class CoreLibsDebugSupportTest extends TestCase
|
|||||||
* @dataProvider printTimeProvider
|
* @dataProvider printTimeProvider
|
||||||
* @testdox printTime test with $microtime and match to regex [$_dataName]
|
* @testdox printTime test with $microtime and match to regex [$_dataName]
|
||||||
*
|
*
|
||||||
* @param int|null $mircrotime
|
* @param ?int $microtime
|
||||||
* @param string $expected
|
* @param string $regex
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testPrintTime(?int $microtime, string $regex): void
|
public function testPrintTime(?int $microtime, string $regex): void
|
||||||
@@ -460,10 +460,8 @@ final class CoreLibsDebugSupportTest extends TestCase
|
|||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @cover ::getCallerFileLine
|
* @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]
|
* @testdox getCallerFileLine check based on regex .../Framework/TestCase.php:\d+ [$_dataName]
|
||||||
*
|
*
|
||||||
* @param string $expected
|
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testGetCallerFileLine(): void
|
public function testGetCallerFileLine(): void
|
||||||
@@ -471,15 +469,19 @@ final class CoreLibsDebugSupportTest extends TestCase
|
|||||||
// regex prefix with path "/../" and then fixed vendor + \d+
|
// regex prefix with path "/../" and then fixed vendor + \d+
|
||||||
// or phar start if phiev installed
|
// or phar start if phiev installed
|
||||||
// phar:///home/clemens/.phive/phars/phpunit-9.6.13.phar/phpunit/Framework/TestCase.php
|
// phar:///home/clemens/.phive/phars/phpunit-9.6.13.phar/phpunit/Framework/TestCase.php
|
||||||
|
// phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php
|
||||||
$regex = "/^("
|
$regex = "/^("
|
||||||
. "\/.*\/vendor\/phpunit\/phpunit\/src"
|
. "\/.*\/vendor\/phpunit\/phpunit\/src"
|
||||||
. "|"
|
. "|"
|
||||||
. "phar:\/\/\/.*\.phive\/phars\/phpunit-\d+\.\d+\.\d+\.phar\/phpunit"
|
. "phar:\/\/\/.*\.phive\/phars\/phpunit-\d+\.\d+\.\d+\.phar\/phpunit"
|
||||||
|
. "|"
|
||||||
|
. "phar:\/\/\/usr\/local\/bin\/phpunit\/phpunit"
|
||||||
. ")"
|
. ")"
|
||||||
. "\/Framework\/TestCase.php:\d+$/";
|
. "\/Framework\/TestCase.php:\d+$/";
|
||||||
$this->assertMatchesRegularExpression(
|
$this->assertMatchesRegularExpression(
|
||||||
$regex,
|
$regex,
|
||||||
Support::getCallerFileLine()
|
Support::getCallerFileLine(),
|
||||||
|
'Failed for: ' . Support::getCallerFileLine()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -522,7 +524,7 @@ final class CoreLibsDebugSupportTest extends TestCase
|
|||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected,
|
$expected,
|
||||||
$compare,
|
$compare,
|
||||||
'assert expected 10'
|
'assert expected 10: ' . print_r($compare, true)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
@@ -545,27 +547,38 @@ final class CoreLibsDebugSupportTest extends TestCase
|
|||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected,
|
$expected,
|
||||||
$compare,
|
$compare,
|
||||||
'assert expected 11'
|
'assert expected 11: ' . print_r($compare, true)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
// add two "run" before "runBare"
|
// if compare starts with "main"
|
||||||
array_splice(
|
if ($compare[0] == 'main') {
|
||||||
$expected,
|
// add two more run after main
|
||||||
7,
|
array_splice(
|
||||||
0,
|
$expected,
|
||||||
['run']
|
1,
|
||||||
);
|
0,
|
||||||
array_splice(
|
['run', 'run']
|
||||||
$expected,
|
);
|
||||||
0,
|
} else {
|
||||||
0,
|
// add two "run" before "runBare"
|
||||||
['include']
|
array_splice(
|
||||||
);
|
$expected,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
['run']
|
||||||
|
);
|
||||||
|
array_splice(
|
||||||
|
$expected,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
['include']
|
||||||
|
);
|
||||||
|
}
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected,
|
$expected,
|
||||||
$compare,
|
$compare,
|
||||||
'assert expected 12'
|
'assert expected 12: ' . print_r($compare, true)
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -589,7 +602,7 @@ final class CoreLibsDebugSupportTest extends TestCase
|
|||||||
if ($call_stack < 8) {
|
if ($call_stack < 8) {
|
||||||
$this->assertFalse(true, 'getCallStack too low: 8');
|
$this->assertFalse(true, 'getCallStack too low: 8');
|
||||||
} else {
|
} else {
|
||||||
$this->assertTrue(true, 'getCallSteck ok');
|
$this->assertTrue(true, 'getCallStack ok');
|
||||||
}
|
}
|
||||||
// just test top entry
|
// just test top entry
|
||||||
$first = array_shift($call_stack);
|
$first = array_shift($call_stack);
|
||||||
|
|||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
test.env
|
||||||
@@ -442,7 +442,6 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
* init check and connected change translation
|
* init check and connected change translation
|
||||||
*
|
*
|
||||||
* @covers ::getTranslator
|
* @covers ::getTranslator
|
||||||
* @covers ::l10nReloadMOfile
|
|
||||||
* @dataProvider getTranslatorProvider
|
* @dataProvider getTranslatorProvider
|
||||||
* @testdox change locale from $locale and domain $domain to locale $locale_new and domain $domain_new [$_dataName]
|
* @testdox change locale from $locale and domain $domain to locale $locale_new and domain $domain_new [$_dataName]
|
||||||
*
|
*
|
||||||
@@ -639,7 +638,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
* plural and plural context
|
* plural and plural context
|
||||||
*
|
*
|
||||||
* @covers ::__n
|
* @covers ::__n
|
||||||
* @covers ::__pn
|
* @covers ::__np
|
||||||
* @dataProvider ngettextProvider
|
* @dataProvider ngettextProvider
|
||||||
* @testdox plural string test for locale $locale and domain $domain with $context [$_dataName]
|
* @testdox plural string test for locale $locale and domain $domain with $context [$_dataName]
|
||||||
*
|
*
|
||||||
@@ -865,6 +864,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
string $value,
|
string $value,
|
||||||
string $expected
|
string $expected
|
||||||
): void {
|
): void {
|
||||||
|
$old_value = null;
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case 'global':
|
case 'global':
|
||||||
$GLOBALS[$var] = $value;
|
$GLOBALS[$var] = $value;
|
||||||
@@ -1101,11 +1101,11 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
* fuctions check
|
* fuctions check
|
||||||
* TODO: others d/dn/dp/dnp gettext functions
|
* TODO: others d/dn/dp/dnp gettext functions
|
||||||
*
|
*
|
||||||
* @covers __setlocale
|
* @covers _setlocale
|
||||||
* @covers __bindtextdomain
|
* @covers _bindtextdomain
|
||||||
* @covers __bind_textdomain_codeset
|
* @covers _bind_textdomain_codeset
|
||||||
* @covers __textdomain
|
* @covers _textdomain
|
||||||
* @covers __gettext
|
* @covers _gettext
|
||||||
* @covers __
|
* @covers __
|
||||||
* @dataProvider functionsProvider
|
* @dataProvider functionsProvider
|
||||||
* @testdox check functions with locale $locale and domain $domain [$_dataName]
|
* @testdox check functions with locale $locale and domain $domain [$_dataName]
|
||||||
|
|||||||
@@ -514,7 +514,6 @@ final class CoreLibsLoggingLoggingTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers Logger\Flag
|
|
||||||
* @testdox Logger\Flag enum test
|
* @testdox Logger\Flag enum test
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
@@ -828,6 +827,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
|
|||||||
// clean all data in folder first
|
// clean all data in folder first
|
||||||
array_map('unlink', glob($log->getLogFolder() . $log->getLogFileId() . '*.log'));
|
array_map('unlink', glob($log->getLogFolder() . $log->getLogFileId() . '*.log'));
|
||||||
|
|
||||||
|
$log_status = false;
|
||||||
switch ($level->value) {
|
switch ($level->value) {
|
||||||
case 200:
|
case 200:
|
||||||
$log_status = $log->info($message);
|
$log_status = $log->info($message);
|
||||||
@@ -851,7 +851,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
|
|||||||
$log_status = $log->emergency($message);
|
$log_status = $log->emergency($message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$this->assertTrue($log_status, 'log write successful');
|
$this->assertTrue($log_status, 'log write unsuccessful for level: ' . $level->getName());
|
||||||
$file_content = file_get_contents(
|
$file_content = file_get_contents(
|
||||||
$log->getLogFolder() . $log->getLogFile()
|
$log->getLogFolder() . $log->getLogFile()
|
||||||
) ?: '';
|
) ?: '';
|
||||||
|
|||||||
@@ -334,7 +334,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -370,7 +369,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -397,7 +395,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -424,7 +421,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -469,7 +465,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test decryption with wrong key
|
* Test decryption with wrong key
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptFailed
|
* @dataProvider providerEncryptFailed
|
||||||
@@ -496,7 +491,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test decryption with wrong key
|
* Test decryption with wrong key
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptFailed
|
* @dataProvider providerEncryptFailed
|
||||||
@@ -521,7 +515,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test decryption with wrong key
|
* Test decryption with wrong key
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptFailed
|
* @dataProvider providerEncryptFailed
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -132,7 +131,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -158,7 +156,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* test encrypt/decrypt produce correct output
|
* test encrypt/decrypt produce correct output
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encryptKey
|
* @covers ::encryptKey
|
||||||
* @covers ::decryptKey
|
* @covers ::decryptKey
|
||||||
* @dataProvider providerEncryptDecryptSuccess
|
* @dataProvider providerEncryptDecryptSuccess
|
||||||
@@ -202,7 +199,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test decryption with wrong key
|
* Test decryption with wrong key
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptFailed
|
* @dataProvider providerEncryptFailed
|
||||||
@@ -228,7 +224,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test decryption with wrong key
|
* Test decryption with wrong key
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encrypt
|
* @covers ::encrypt
|
||||||
* @covers ::decrypt
|
* @covers ::decrypt
|
||||||
* @dataProvider providerEncryptFailed
|
* @dataProvider providerEncryptFailed
|
||||||
@@ -252,7 +247,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Test decryption with wrong key
|
* Test decryption with wrong key
|
||||||
*
|
*
|
||||||
* @covers ::generateRandomKey
|
|
||||||
* @covers ::encryptKey
|
* @covers ::encryptKey
|
||||||
* @covers ::decryptKey
|
* @covers ::decryptKey
|
||||||
* @dataProvider providerEncryptFailed
|
* @dataProvider providerEncryptFailed
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ final class CoreLibsTemplateHtmlBuilderElementTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::Element
|
|
||||||
* @covers ::buildHtml
|
* @covers ::buildHtml
|
||||||
* @covers ::getTag
|
* @covers ::getTag
|
||||||
* @covers ::getId
|
* @covers ::getId
|
||||||
|
|||||||
@@ -58,6 +58,11 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
if ($handle === false) {
|
if ($handle === false) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
$status = curl_exec($handle);
|
||||||
|
if ($status === false) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$this->url_basic = $url;
|
$this->url_basic = $url;
|
||||||
// print "Open: $url\n";
|
// print "Open: $url\n";
|
||||||
break;
|
break;
|
||||||
@@ -459,20 +464,19 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* set setup + header, base uri change
|
* set setup + header, base uri change
|
||||||
*
|
*
|
||||||
* @covers ::Curl
|
|
||||||
* @covers ::setBaseUri
|
* @covers ::setBaseUri
|
||||||
* @covers ::addHeader
|
* @covers ::setHeaders
|
||||||
* @covers ::removeHEader
|
* @covers ::removeHeaders
|
||||||
* @dataProvider providerUrlRequestsCurlSetup
|
* @dataProvider providerUrlRequestsCurlSetup
|
||||||
* @testdox UrlRequests\Curl Class setup tasks [$_dataName]
|
* @testdox UrlRequests\Curl Class setup tasks [$_dataName]
|
||||||
*
|
*
|
||||||
* @param null|array $config
|
* @param null|array $config
|
||||||
* @param array $expected
|
* @param array<string,mixed> $expected_set
|
||||||
* @param null|string $new_base_uri
|
* @param null|string $new_base_uri
|
||||||
* @param null|array $set_header
|
* @param null|array $set_header
|
||||||
* @param null|bool $set_header_add
|
* @param null|bool $set_header_add
|
||||||
* @param null|array $remove_header
|
* @param null|array $remove_header
|
||||||
* @param null|array $expected_change
|
* @param null|array $expected_change
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testUrlRequestsCurlSetupConfig(
|
public function testUrlRequestsCurlSetupConfig(
|
||||||
@@ -492,10 +496,18 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
};
|
};
|
||||||
// if ($new_base_uri === null && $set_header === null && $remove_header === null) {
|
// 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) {
|
if ($new_base_uri !== null) {
|
||||||
$curl->setBaseUri($new_base_uri);
|
$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 !== null) {
|
||||||
if ($set_header_add !== null) {
|
if ($set_header_add !== null) {
|
||||||
@@ -503,11 +515,19 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
} else {
|
} else {
|
||||||
$curl->setHeaders($set_header);
|
$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) {
|
if ($remove_header !== null) {
|
||||||
$curl->removeHeaders($remove_header);
|
$curl->removeHeaders($remove_header);
|
||||||
$this->assertEquals($expected_change, $curl->getConfig(), 'removed headers not matching');
|
$this->assertEquals(
|
||||||
|
$expected_change,
|
||||||
|
$curl->getConfig(),
|
||||||
|
'removed headers not matching'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -877,7 +897,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
string $return_content
|
string $return_content
|
||||||
) {
|
) {
|
||||||
if (!$this->url_basic) {
|
if (!$this->url_basic) {
|
||||||
$this->markTestSkipped('No backend interface setup for testing: GET');
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
}
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||||
// options
|
// options
|
||||||
@@ -960,6 +980,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testUrlRequestsCurlRequestMultiple()
|
public function testUrlRequestsCurlRequestMultiple()
|
||||||
{
|
{
|
||||||
|
if (!$this->url_basic) {
|
||||||
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||||
// get
|
// get
|
||||||
$response = $curl->get($this->url_basic, [
|
$response = $curl->get($this->url_basic, [
|
||||||
@@ -1051,6 +1074,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testUrlRequestsCurlAuthHeader()
|
public function testUrlRequestsCurlAuthHeader()
|
||||||
{
|
{
|
||||||
|
if (!$this->url_basic) {
|
||||||
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl([
|
$curl = new \CoreLibs\UrlRequests\Curl([
|
||||||
"auth" => ["user", "pass", "basic"],
|
"auth" => ["user", "pass", "basic"],
|
||||||
"http_errors" => false,
|
"http_errors" => false,
|
||||||
@@ -1117,6 +1143,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testExceptionInvalidHeaderKey(): void
|
public function testExceptionInvalidHeaderKey(): void
|
||||||
{
|
{
|
||||||
|
if (!$this->url_basic) {
|
||||||
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||||
$this->expectException(\RuntimeException::class);
|
$this->expectException(\RuntimeException::class);
|
||||||
$this->expectExceptionMessageMatches("/InvalidHeaderKey/");
|
$this->expectExceptionMessageMatches("/InvalidHeaderKey/");
|
||||||
@@ -1137,6 +1166,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testExceptionInvalidHeaderValue(): void
|
public function testExceptionInvalidHeaderValue(): void
|
||||||
{
|
{
|
||||||
|
if (!$this->url_basic) {
|
||||||
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl();
|
$curl = new \CoreLibs\UrlRequests\Curl();
|
||||||
$this->expectException(\RuntimeException::class);
|
$this->expectException(\RuntimeException::class);
|
||||||
$this->expectExceptionMessageMatches("/InvalidHeaderValue/");
|
$this->expectExceptionMessageMatches("/InvalidHeaderValue/");
|
||||||
@@ -1186,6 +1218,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testExceptionBadRequest(): void
|
public function testExceptionBadRequest(): void
|
||||||
{
|
{
|
||||||
|
if (!$this->url_basic) {
|
||||||
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
|
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
|
||||||
$this->expectException(\RuntimeException::class);
|
$this->expectException(\RuntimeException::class);
|
||||||
$this->expectExceptionMessageMatches("/ClientError/");
|
$this->expectExceptionMessageMatches("/ClientError/");
|
||||||
@@ -1207,6 +1242,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testExceptionBadRequestEnable(): void
|
public function testExceptionBadRequestEnable(): void
|
||||||
{
|
{
|
||||||
|
if (!$this->url_basic) {
|
||||||
|
$this->markTestSkipped('No backend interface setup for testing');
|
||||||
|
}
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => false]);
|
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => false]);
|
||||||
$this->expectException(\RuntimeException::class);
|
$this->expectException(\RuntimeException::class);
|
||||||
$this->expectExceptionMessageMatches("/ClientError/");
|
$this->expectExceptionMessageMatches("/ClientError/");
|
||||||
@@ -1229,6 +1267,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testExceptionBadRequestUnset(): void
|
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
|
// if true, with false it has to be off
|
||||||
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
|
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
|
||||||
$response = $curl->request('get', $this->url_basic, [
|
$response = $curl->request('get', $this->url_basic, [
|
||||||
|
|||||||
@@ -39,11 +39,25 @@ $file = getcwd() . DIRECTORY_SEPARATOR . 'class_test.file.php';
|
|||||||
print "GETLINESFROMFILE: $file: " . File::getLinesFromFile($file) . "<br>";
|
print "GETLINESFROMFILE: $file: " . File::getLinesFromFile($file) . "<br>";
|
||||||
print "MIMEINFO: $file: " . File::getMimeType($file) . "<br>";
|
print "MIMEINFO: $file: " . File::getMimeType($file) . "<br>";
|
||||||
try {
|
try {
|
||||||
print "MIMEINFO: $file: " . File::getMimeType("does_not_exists.txt") . "<br>";
|
print "MIMEINFO: does_not_exists.txt " . File::getMimeType("does_not_exists.txt") . "<br>";
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
print "Error: " . get_class($e) . ": " . $e->getMessage() . "<br>";
|
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>";
|
print "</body></html>";
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -1598,4 +1598,17 @@ 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 */
|
/* END */
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ var HtmlElementCreator = class {
|
|||||||
* @param {String} tag must set tag (div, span, etc)
|
* @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} [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 {String} [content=''] text content inside, is skipped if sub elements exist
|
||||||
* @param {Array} [css=[]] array for css tags
|
* @param {Array<String>} [css=[]] array for css tags
|
||||||
* @param {Object} [options={}] anything else (value, placeholder, OnClick, style)
|
* @param {Object} [options={}] anything else (value, placeholder, OnClick, style)
|
||||||
* @return {Object} created element as an object
|
* @return {Object} created element as an object
|
||||||
*/
|
*/
|
||||||
@@ -509,6 +509,11 @@ function numberWithCommas(number) {
|
|||||||
function convertLBtoBR(string) {
|
function convertLBtoBR(string) {
|
||||||
return string.replace(/(?:\r\n|\r|\n)/g, "<br>");
|
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
|
// src/utils/DateTimeHelpers.mjs
|
||||||
function getTimestamp() {
|
function getTimestamp() {
|
||||||
@@ -660,18 +665,19 @@ function getQueryStringParam(search = "", query = "", single = false) {
|
|||||||
if (search) {
|
if (search) {
|
||||||
let _params = url.searchParams.getAll(search);
|
let _params = url.searchParams.getAll(search);
|
||||||
if (_params.length == 1 || single === true) {
|
if (_params.length == 1 || single === true) {
|
||||||
param = _params[0];
|
return _params[0];
|
||||||
} else if (_params.length > 1) {
|
} else if (_params.length > 1) {
|
||||||
param = _params;
|
return _params;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
param = {};
|
let param2 = {};
|
||||||
for (const [key] of url.searchParams.entries()) {
|
for (const [key] of url.searchParams.entries()) {
|
||||||
if (typeof param[key] === "undefined") {
|
if (typeof param2[key] === "undefined") {
|
||||||
let _params = url.searchParams.getAll(key);
|
let _params = url.searchParams.getAll(key);
|
||||||
param[key] = _params.length < 2 || single === true ? _params[0] : _params;
|
param2[key] = _params.length < 2 || single === true ? _params[0] : _params;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return param2;
|
||||||
}
|
}
|
||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
@@ -1425,6 +1431,9 @@ function numberWithCommas2(x) {
|
|||||||
function convertLBtoBR2(string) {
|
function convertLBtoBR2(string) {
|
||||||
return convertLBtoBR(string);
|
return convertLBtoBR(string);
|
||||||
}
|
}
|
||||||
|
function decodeHtmlEntities2(string) {
|
||||||
|
return decodeHtmlEntities(string);
|
||||||
|
}
|
||||||
function getTimestamp2() {
|
function getTimestamp2() {
|
||||||
return getTimestamp();
|
return getTimestamp();
|
||||||
}
|
}
|
||||||
@@ -1549,7 +1558,7 @@ function acssel(_element, css) {
|
|||||||
return hec.acssel(_element, css);
|
return hec.acssel(_element, css);
|
||||||
}
|
}
|
||||||
function scssel(_element, rcss, acss) {
|
function scssel(_element, rcss, acss) {
|
||||||
hec.scssel(_element, rcss, acss);
|
return hec.scssel(_element, rcss, acss);
|
||||||
}
|
}
|
||||||
function phfo(tree) {
|
function phfo(tree) {
|
||||||
return hec.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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -43,71 +43,70 @@ class Byte
|
|||||||
public static function humanReadableByteFormat(string|int|float $bytes, int $flags = 0): string
|
public static function humanReadableByteFormat(string|int|float $bytes, int $flags = 0): string
|
||||||
{
|
{
|
||||||
// if not numeric, return as is
|
// if not numeric, return as is
|
||||||
if (is_numeric($bytes)) {
|
if (!is_numeric($bytes)) {
|
||||||
// flags bit wise check
|
|
||||||
// remove space between number and suffix
|
|
||||||
if ($flags & self::BYTE_FORMAT_NOSPACE) {
|
|
||||||
$space = false;
|
|
||||||
} else {
|
|
||||||
$space = true;
|
|
||||||
}
|
|
||||||
// use sprintf instead of round
|
|
||||||
if ($flags & self::BYTE_FORMAT_ADJUST) {
|
|
||||||
$adjust = true;
|
|
||||||
} else {
|
|
||||||
$adjust = false;
|
|
||||||
}
|
|
||||||
// use SI 1000 mod and not 1024 mod
|
|
||||||
if ($flags & self::BYTE_FORMAT_SI) {
|
|
||||||
$si = true;
|
|
||||||
} else {
|
|
||||||
$si = false;
|
|
||||||
}
|
|
||||||
if ($flags > 7) {
|
|
||||||
throw new \InvalidArgumentException("Invalid flags parameter: $flags", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// si or normal
|
|
||||||
$unit = $si ? 1000 : 1024;
|
|
||||||
// always positive
|
|
||||||
$abs_bytes = $bytes == PHP_INT_MIN ? PHP_INT_MAX : abs((float)$bytes);
|
|
||||||
// smaller than unit is always B
|
|
||||||
if ($abs_bytes < $unit) {
|
|
||||||
return $bytes . 'B';
|
|
||||||
}
|
|
||||||
// labels in order of size [Y, Z]
|
|
||||||
$labels = ['', 'K', 'M', 'G', 'T', 'P', 'E'];
|
|
||||||
// exp position calculation
|
|
||||||
$exp = (int)floor(log($abs_bytes, $unit));
|
|
||||||
// avoid printing out anything larger than max labels
|
|
||||||
if ($exp >= count($labels)) {
|
|
||||||
$exp = count($labels) - 1;
|
|
||||||
}
|
|
||||||
// deviation calculation
|
|
||||||
$dev = pow($unit, $exp) * ($unit - 0.05);
|
|
||||||
// shift the exp +1 for on the border units
|
|
||||||
if (
|
|
||||||
$exp < 6 &&
|
|
||||||
$abs_bytes > ($dev - (((int)$dev & 0xfff) == 0xd00 ? 52 : 0))
|
|
||||||
) {
|
|
||||||
$exp++;
|
|
||||||
}
|
|
||||||
// label name, including leading space if flagged
|
|
||||||
$pre = ($space ? ' ' : '') . ($labels[$exp] ?? '>E') . ($si ? 'i' : '') . 'B';
|
|
||||||
$bytes_calc = $abs_bytes / pow($unit, $exp);
|
|
||||||
// if original is negative, reverse
|
|
||||||
if ($bytes < 0) {
|
|
||||||
$bytes_calc *= -1;
|
|
||||||
}
|
|
||||||
if ($adjust) {
|
|
||||||
return sprintf("%.2f%s", $bytes_calc, $pre);
|
|
||||||
} else {
|
|
||||||
return round($bytes_calc, 2) . $pre;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// if anything other return as string
|
// if anything other return as string
|
||||||
return (string)$bytes;
|
return (string)$bytes;
|
||||||
}
|
}
|
||||||
|
// flags bit wise check
|
||||||
|
// remove space between number and suffix
|
||||||
|
if ($flags & self::BYTE_FORMAT_NOSPACE) {
|
||||||
|
$space = false;
|
||||||
|
} else {
|
||||||
|
$space = true;
|
||||||
|
}
|
||||||
|
// use sprintf instead of round
|
||||||
|
if ($flags & self::BYTE_FORMAT_ADJUST) {
|
||||||
|
$adjust = true;
|
||||||
|
} else {
|
||||||
|
$adjust = false;
|
||||||
|
}
|
||||||
|
// use SI 1000 mod and not 1024 mod
|
||||||
|
if ($flags & self::BYTE_FORMAT_SI) {
|
||||||
|
$si = true;
|
||||||
|
} else {
|
||||||
|
$si = false;
|
||||||
|
}
|
||||||
|
if ($flags > 7) {
|
||||||
|
throw new \InvalidArgumentException("Invalid flags parameter: $flags", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// si or normal
|
||||||
|
$unit = $si ? 1000 : 1024;
|
||||||
|
// always positive
|
||||||
|
$abs_bytes = $bytes == PHP_INT_MIN ? PHP_INT_MAX : abs((float)$bytes);
|
||||||
|
// smaller than unit is always B
|
||||||
|
if ($abs_bytes < $unit) {
|
||||||
|
return $bytes . 'B';
|
||||||
|
}
|
||||||
|
// labels in order of size [Y, Z]
|
||||||
|
$labels = ['', 'K', 'M', 'G', 'T', 'P', 'E'];
|
||||||
|
// exp position calculation
|
||||||
|
$exp = (int)floor(log($abs_bytes, $unit));
|
||||||
|
// avoid printing out anything larger than max labels
|
||||||
|
if ($exp >= count($labels)) {
|
||||||
|
$exp = count($labels) - 1;
|
||||||
|
}
|
||||||
|
// deviation calculation
|
||||||
|
$dev = pow($unit, $exp) * ($unit - 0.05);
|
||||||
|
// shift the exp +1 for on the border units
|
||||||
|
if (
|
||||||
|
$exp < 6 &&
|
||||||
|
$abs_bytes > ($dev - (((int)$dev & 0xfff) == 0xd00 ? 52 : 0))
|
||||||
|
) {
|
||||||
|
$exp++;
|
||||||
|
}
|
||||||
|
// label name, including leading space if flagged
|
||||||
|
$pre = ($space ? ' ' : '') . ($labels[$exp] ?? '>E') . ($si ? 'i' : '') . 'B';
|
||||||
|
$bytes_calc = $abs_bytes / pow($unit, $exp);
|
||||||
|
// if original is negative, reverse
|
||||||
|
if ($bytes < 0) {
|
||||||
|
$bytes_calc *= -1;
|
||||||
|
}
|
||||||
|
if ($adjust) {
|
||||||
|
return sprintf("%.2f%s", $bytes_calc, $pre);
|
||||||
|
} else {
|
||||||
|
return round($bytes_calc, 2) . $pre;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2232,9 +2232,9 @@ class IO
|
|||||||
$milliseconds = $matches[13] ?? '';
|
$milliseconds = $matches[13] ?? '';
|
||||||
|
|
||||||
// clean up, hide entries that have 00 in the time group
|
// clean up, hide entries that have 00 in the time group
|
||||||
$hour = $hour != '00' ? preg_replace('/^0/', '', $hour) : '';
|
$hour = !empty($hour) ? preg_replace('/^0/', '', $hour) : '';
|
||||||
$minutes = $minutes != '00' ? preg_replace('/^0/', '', $minutes) : '';
|
$minutes = !empty($minutes) ? preg_replace('/^0/', '', $minutes) : '';
|
||||||
$seconds = $seconds != '00' ? preg_replace('/^0/', '', $seconds) : '';
|
$seconds = !empty($seconds) ? preg_replace('/^0/', '', $seconds) : '';
|
||||||
|
|
||||||
// strip any leading or trailing spaces
|
// strip any leading or trailing spaces
|
||||||
$time_string = trim(
|
$time_string = trim(
|
||||||
|
|||||||
@@ -536,7 +536,7 @@ class PgSQL implements Interface\SqlFunctions
|
|||||||
$connection_string[] = 'sslmode=' . $db_ssl;
|
$connection_string[] = 'sslmode=' . $db_ssl;
|
||||||
}
|
}
|
||||||
// connect
|
// connect
|
||||||
$this->dbh = pg_connect(join(' ', $connection_string));
|
$this->dbh = @pg_connect(join(' ', $connection_string));
|
||||||
return $this->dbh;
|
return $this->dbh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ class FileWriter
|
|||||||
if (!is_writeable($folder)) {
|
if (!is_writeable($folder)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// if last is not / then add
|
if (!is_dir($folder)) {
|
||||||
if (substr($folder, -1, 1) != DIRECTORY_SEPARATOR) {
|
return false;
|
||||||
$folder .= DIRECTORY_SEPARATOR;
|
|
||||||
}
|
}
|
||||||
self::$debug_folder = $folder;
|
// if last is not / then add
|
||||||
|
self::$debug_folder = rtrim($folder, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ class L10n
|
|||||||
* @param string $locale language name, if not set, try previous set
|
* @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 $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 $path path, if not set try to get from paths array, else self
|
||||||
* @param string $override_encoding if locale does not env encoding set, use this one
|
* @param string $override_encoding if locale does not have encoding set, use this one
|
||||||
* @return GetTextReader the main gettext reader object
|
* @return GetTextReader the main gettext reader object
|
||||||
*/
|
*/
|
||||||
public function getTranslator(
|
public function getTranslator(
|
||||||
@@ -301,7 +301,7 @@ class L10n
|
|||||||
* Get the local as array same to the GetLocale::setLocale return
|
* Get the local as array same to the GetLocale::setLocale return
|
||||||
* This does not set from outside, but only what is set in the l10n class
|
* This does not set from outside, but only what is set in the l10n class
|
||||||
*
|
*
|
||||||
* @return array{locale: string, lang: string, lang_short: string, domain: string, encoding: string, path: string}
|
* @return array{locale:string,lang:string,lang_short:string,domain:string,encoding:string,path:string}
|
||||||
*/
|
*/
|
||||||
public function getLocaleAsArray(): array
|
public function getLocaleAsArray(): array
|
||||||
{
|
{
|
||||||
@@ -321,7 +321,7 @@ class L10n
|
|||||||
* parse the locale string for further processing
|
* parse the locale string for further processing
|
||||||
*
|
*
|
||||||
* @param string $locale Locale to parse
|
* @param string $locale Locale to parse
|
||||||
* @return array<string,string|null> array with lang, country, charset, modifier
|
* @return array{lang:string|null,country:string|null,charset:string|null,modifier:string|null} parsed locale
|
||||||
*/
|
*/
|
||||||
public static function parseLocale(string $locale = ''): array
|
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
|
* @param value-of<self::NAMES>|LogLevel::*|'Debug'|'Info'|'Notice'|'Warning'|'Error'|'Critical'|'Alert'|'Emergency' $name
|
||||||
* @return static
|
* @return self
|
||||||
*/
|
*/
|
||||||
public static function fromName(string $name): self
|
public static function fromName(string $name): self
|
||||||
{
|
{
|
||||||
@@ -104,7 +104,7 @@ enum Level: int
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param value-of<self::VALUES> $value
|
* @param value-of<self::VALUES> $value
|
||||||
* @return static
|
* @return self
|
||||||
*/
|
*/
|
||||||
public static function fromValue(int $value): self
|
public static function fromValue(int $value): self
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -232,8 +232,15 @@ class Elements
|
|||||||
* @param string $class style sheet
|
* @param string $class style sheet
|
||||||
* @return string correct string for url href process
|
* @return string correct string for url href process
|
||||||
*/
|
*/
|
||||||
private static function createUrl($href, $atag, $_1, $_2, $_3, $name, $class): string
|
private static function createUrl(
|
||||||
{
|
string $href,
|
||||||
|
string $atag,
|
||||||
|
string $_1,
|
||||||
|
string $_2,
|
||||||
|
string $_3,
|
||||||
|
string $name,
|
||||||
|
string $class
|
||||||
|
): string {
|
||||||
// $this->debug('URL', "1: $_1 - 2: $_2 - $_3 - atag: $atag - name: $name - class: $class");
|
// $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 $_1 ends with //, then we strip $_1 complete & target is also blanked (its an internal link)
|
||||||
if (preg_match("/\/\/$/", $_1) && preg_match("/^\//", $_2)) {
|
if (preg_match("/\/\/$/", $_1) && preg_match("/^\//", $_2)) {
|
||||||
@@ -250,11 +257,8 @@ class Elements
|
|||||||
. "##GT##" . ($name ? $name : $_2 . $_3) . "##LT##/a##GT##";
|
. "##GT##" . ($name ? $name : $_2 . $_3) . "##LT##/a##GT##";
|
||||||
} elseif ($href && !$atag) {
|
} elseif ($href && !$atag) {
|
||||||
return "href=##QUOT##$_1$_2$_3##QUOT##";
|
return "href=##QUOT##$_1$_2$_3##QUOT##";
|
||||||
} elseif ($atag) {
|
|
||||||
return $atag . $_2 . $_3;
|
|
||||||
} else {
|
|
||||||
return $href;
|
|
||||||
}
|
}
|
||||||
|
return $atag . $_2 . $_3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -269,8 +273,15 @@ class Elements
|
|||||||
* @param string $class style sheet
|
* @param string $class style sheet
|
||||||
* @return string created html email a href string
|
* @return string created html email a href string
|
||||||
*/
|
*/
|
||||||
private static function createEmail($mailto, $atag, $_1, $_2, $_3, $title, $class)
|
private static function createEmail(
|
||||||
{
|
string $mailto,
|
||||||
|
string $atag,
|
||||||
|
string $_1,
|
||||||
|
string $_2,
|
||||||
|
string $_3,
|
||||||
|
string $title,
|
||||||
|
string $class
|
||||||
|
): string {
|
||||||
$email = $_1 . "@" . $_2 . "." . $_3;
|
$email = $_1 . "@" . $_2 . "." . $_3;
|
||||||
if (!$mailto && !$atag) {
|
if (!$mailto && !$atag) {
|
||||||
return "##LT##a href=##QUOT##mailto:" . $email . "##QUOT##"
|
return "##LT##a href=##QUOT##mailto:" . $email . "##QUOT##"
|
||||||
@@ -278,12 +289,8 @@ class Elements
|
|||||||
. "##GT##" . ($title ? $title : $email) . "##LT##/a##GT##";
|
. "##GT##" . ($title ? $title : $email) . "##LT##/a##GT##";
|
||||||
} elseif ($mailto && !$atag) {
|
} elseif ($mailto && !$atag) {
|
||||||
return "mailto:" . $email;
|
return "mailto:" . $email;
|
||||||
} elseif ($atag) {
|
|
||||||
return $atag . $email;
|
|
||||||
} else {
|
|
||||||
// else just return email as is
|
|
||||||
return $email;
|
|
||||||
}
|
}
|
||||||
|
return $atag . $email;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -954,11 +954,10 @@ class Curl implements Interface\RequestsInterface
|
|||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
unset($this->config['headers'][$header_key]);
|
unset($this->config['headers'][$header_key]);
|
||||||
unset($this->headers_named[$header_key]);
|
unset($this->headers_named[strtolower($header_key)]);
|
||||||
} elseif (
|
} elseif (
|
||||||
// string value, array keys = in
|
// right side is array, and value is anything string or array
|
||||||
// or both array and not a full match in the one before
|
// if right side is string, and we give value array, we do nothing
|
||||||
(is_string($value) || is_array($value)) &&
|
|
||||||
is_array($this->config['headers'][$header_key])
|
is_array($this->config['headers'][$header_key])
|
||||||
) {
|
) {
|
||||||
// part remove of key, value must be array
|
// part remove of key, value must be array
|
||||||
@@ -966,10 +965,14 @@ class Curl implements Interface\RequestsInterface
|
|||||||
$value = [$value];
|
$value = [$value];
|
||||||
}
|
}
|
||||||
// array values so we rewrite the key pos
|
// array values so we rewrite the key pos
|
||||||
$this->config['headers'][$header_key] = array_values(array_diff(
|
/** @var array<int|string,string> $headers */
|
||||||
$this->config['headers'][$header_key],
|
$headers = $this->config['headers'][$header_key];
|
||||||
$value
|
$this->config['headers'][$header_key] = array_values(
|
||||||
));
|
array_diff(
|
||||||
|
$headers,
|
||||||
|
$value
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user