Compare commits
2 Commits
c467ed326c
...
v9.41.2
| Author | SHA1 | Date | |
|---|---|---|---|
| e1109e925b | |||
| 6c67ab6259 |
+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>
|
||||||
|
|||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
test.env
|
||||||
@@ -1602,6 +1602,7 @@ function createNavMenu(nav_menu, header_id = 'mainHeader') // eslint-disable-lin
|
|||||||
* HTML decode &something; entrie
|
* HTML decode &something; entrie
|
||||||
* @param {string} str
|
* @param {string} str
|
||||||
* @returns string
|
* @returns string
|
||||||
|
* @deprecated use utils.js
|
||||||
*/
|
*/
|
||||||
function decodeHtmlEntities(str) // eslint-disable-line no-unused-vars
|
function decodeHtmlEntities(str) // eslint-disable-line no-unused-vars
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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