Compare commits
4 Commits
aa2b60973e
...
1b5437b675
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b5437b675 | ||
|
|
ef80cba561 | ||
|
|
2d71e760e8 | ||
|
|
a8d07634ff |
@@ -1,19 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
BASE_FOLDER=$(dirname $(readlink -f $0))"/";
|
||||
BASE_FOLDER=$(dirname "$(readlink -f "$0")")"/";
|
||||
# Assume script is in 4dev/bin
|
||||
base_folder="${BASE_FOLDER}../../www/";
|
||||
|
||||
# locale gettext po to mo translator master
|
||||
for file in $(ls -1 ${base_folder}../4dev/locale/*.po); do
|
||||
file=$(basename $file .po);
|
||||
for file in "${base_folder}"../4dev/locale/*.po; do
|
||||
[[ -e "$file" ]] || break
|
||||
file=$(basename "$file" .po);
|
||||
locale=$(echo "${file}" | cut -d "-" -f 1);
|
||||
domain=$(echo "${file}" | cut -d "-" -f 2);
|
||||
echo "- Translate language file '${file}' for locale '${locale}' and domain '${domain}':";
|
||||
if [ ! -d "${base_folder}/includes/locale/${locale}/LC_MESSAGES/" ]; then
|
||||
mkdir -p "${base_folder}/includes/locale/${locale}/LC_MESSAGES/";
|
||||
fi;
|
||||
msgfmt -o ${base_folder}/includes/locale/${locale}/LC_MESSAGES/${domain}.mo ${base_folder}../4dev/locale/${locale}-${domain}.po;
|
||||
msgfmt -o "${base_folder}/includes/locale/${locale}/LC_MESSAGES/${domain}.mo" "${base_folder}../4dev/locale/${locale}-${domain}.po";
|
||||
done;
|
||||
|
||||
# __END__
|
||||
|
||||
@@ -2,16 +2,18 @@
|
||||
|
||||
# read source mo files and writes target js files in object form
|
||||
|
||||
# check for ARG 1 is "mv"
|
||||
# then move the files directly and don't do manual check (don't create temp files)
|
||||
FILE_MOVE=0;
|
||||
if [ "${1}" = "mv" ]; then
|
||||
# check for ARG 1 is "no-move"
|
||||
# then do not move the files directly for manual check
|
||||
FILE_MOVE=1;
|
||||
if [ "${1}" = "no-move" ]; then
|
||||
echo "+++ CREATE TEMPORARY FILES +++";
|
||||
FILE_MOVE=0;
|
||||
else
|
||||
echo "*** Direct write ***";
|
||||
FILE_MOVE=1;
|
||||
fi;
|
||||
|
||||
target='';
|
||||
BASE_FOLDER=$(dirname $(readlink -f $0))"/";
|
||||
BASE_FOLDER=$(dirname "$(readlink -f "$0")")"/";
|
||||
# Assume script is in 4dev/bin
|
||||
base_folder="${BASE_FOLDER}../../www/";
|
||||
po_folder='../4dev/locale/'
|
||||
@@ -26,7 +28,7 @@ if [ "${target}" == '' ]; then
|
||||
echo "*** Non smarty ***";
|
||||
TEXTDOMAINDIR=${base_folder}${mo_folder}.
|
||||
# default is admin
|
||||
TEXTDOMAIN=admin;
|
||||
TEXTDOMAIN="admin";
|
||||
fi;
|
||||
js_folder="${TEXTDOMAIN}/layout/javascript/";
|
||||
|
||||
@@ -44,15 +46,16 @@ if [ ${error} -eq 1 ]; then
|
||||
fi;
|
||||
|
||||
# locale gettext po to mo translator master
|
||||
for file in $(ls -1 ${base_folder}../4dev/locale/*.po); do
|
||||
file=$(basename $file .po);
|
||||
echo "Translate language ${file}";
|
||||
for file in "${base_folder}"../4dev/locale/*.po; do
|
||||
[[ -e "$file" ]] || break
|
||||
file=$(basename "$file" .po);
|
||||
locale=$(echo "${file}" | cut -d "-" -f 1);
|
||||
domain=$(echo "${file}" | cut -d "-" -f 2);
|
||||
echo "- Translate language file '${file}' for locale '${locale}' and domain '${domain}':";
|
||||
if [ ! -d "${base_folder}/includes/locale/${locale}/LC_MESSAGES/" ]; then
|
||||
mkdir -p "${base_folder}/includes/locale/${locale}/LC_MESSAGES/";
|
||||
fi;
|
||||
msgfmt -o ${base_folder}/includes/locale/${locale}/LC_MESSAGES/${domain}.mo ${base_folder}${po_folder}${locale}-${domain}.po;
|
||||
msgfmt -o "${base_folder}/includes/locale/${locale}/LC_MESSAGES/${domain}.mo" "${base_folder}${po_folder}${locale}-${domain}.po";
|
||||
done;
|
||||
|
||||
rx_msgid_empty="^msgid \"\"";
|
||||
@@ -62,7 +65,7 @@ rx_msgstr="^msgstr \""
|
||||
# quick copy string at the end
|
||||
quick_copy='';
|
||||
|
||||
for language in ${language_list[*]}; do
|
||||
for language in "${language_list[@]}"; do
|
||||
# I don't know which one must be set, but I think at least LANGUAGE
|
||||
case ${language} in
|
||||
ja)
|
||||
@@ -79,7 +82,8 @@ for language in ${language_list[*]}; do
|
||||
esac;
|
||||
# write only one for language and then symlink files
|
||||
template_file=$(echo ${template_file_stump} | sed -e "s/##SUFFIX##//" | sed -e "s/##LANGUAGE##/${LANG}/");
|
||||
original_file=$(echo ${template_file} | sed -e 's/\.TMP//g');
|
||||
# original_file=$(echo ${template_file} | sed -e 's/\.TMP//g');
|
||||
original_file=${template_file//.TMP/};
|
||||
if [ "${FILE_MOVE}" -eq 0 ]; then
|
||||
file=${target_folder}${template_file};
|
||||
else
|
||||
@@ -88,16 +92,18 @@ for language in ${language_list[*]}; do
|
||||
echo "===> Write translation file ${file}";
|
||||
echo ". = normal, : = escape, x = skip";
|
||||
# init line [aka don't touch this file]
|
||||
echo "// AUTO FILL, changes will be overwritten" > $file;
|
||||
echo "// source: ${suffix}, language: ${language}" >> $file;
|
||||
echo "// Translation strings in the format" >> $file;
|
||||
echo "// \"Original\":\"Translated\""$'\n' >> $file;
|
||||
echo "var i18n = {" >> $file;
|
||||
echo "// AUTO FILL, changes will be overwritten" > "$file";
|
||||
{
|
||||
echo "// source: ${suffix}, language: ${language}";
|
||||
echo "// Translation strings in the format";
|
||||
echo "// \"Original\":\"Translated\""$'\n'
|
||||
echo "var i18n = {"
|
||||
} >> "$file"
|
||||
# translations stuff
|
||||
# read the po file
|
||||
pos=0; # do we add a , for the next line
|
||||
cat "${base_folder}${po_folder}${language}-${TEXTDOMAIN}.po" |
|
||||
while read str; do
|
||||
while read -r str; do
|
||||
# echo "S: ${str}";
|
||||
# skip empty
|
||||
if [[ "${str}" =~ ${rx_msgid_empty} ]]; then
|
||||
@@ -112,12 +118,13 @@ for language in ${language_list[*]}; do
|
||||
str_source=$(echo "${str}" | sed -e "s/^msgid \"//" | sed -e "s/\"$//");
|
||||
# close right side, if not last add ,
|
||||
if [ "${pos}" -eq 1 ]; then
|
||||
echo -n "," >> $file;
|
||||
echo -n "," >> "$file";
|
||||
fi;
|
||||
# all " inside string need to be escaped
|
||||
str_source=$(echo "${str_source}" | sed -e 's/"/\\"/g');
|
||||
# str_source=$(echo "${str_source}" | sed -e 's/"/\\"/g');
|
||||
str_source=${str_source//\"/\\\"}
|
||||
# fix with proper layout
|
||||
echo -n "\"$str_source\":\"$(TEXTDOMAINDIR=${TEXTDOMAINDIR} LANGUAGE=${language} LANG=${LANG} gettext ${TEXTDOMAIN} "${str_source}")\"" >> $file;
|
||||
echo -n "\"$str_source\":\"$(TEXTDOMAINDIR=${TEXTDOMAINDIR} LANGUAGE=${language} LANG=${LANG} gettext "${TEXTDOMAIN}" "${str_source}")\"" >> "$file";
|
||||
pos=1;
|
||||
elif [[ "${str}" =~ ${rx_msgstr} ]]; then
|
||||
# open right side (ignore)
|
||||
@@ -128,8 +135,8 @@ for language in ${language_list[*]}; do
|
||||
fi;
|
||||
done;
|
||||
|
||||
echo "" >> $file;
|
||||
echo "};" >> $file;
|
||||
echo "" >> "$file";
|
||||
echo "};" >> "$file";
|
||||
echo " [DONE]";
|
||||
|
||||
# on no move
|
||||
@@ -140,19 +147,19 @@ for language in ${language_list[*]}; do
|
||||
fi;
|
||||
|
||||
# symlink to master file
|
||||
for suffix in ${source_list[*]}; do
|
||||
for suffix in "${source_list[@]}"; do
|
||||
# symlink with full lang name
|
||||
symlink_file[0]=$(echo ${template_file_stump} | sed -e "s/##SUFFIX##/${suffix}_/" | sed -e "s/##LANGUAGE##/${LANG}/" | sed -e 's/\.TMP//g');
|
||||
# create second one with lang (no country) + encoding
|
||||
symlink_file[1]=$(echo ${template_file_stump} | sed -e "s/##SUFFIX##/${suffix}_/" | sed -e "s/##LANGUAGE##/${LANGUAGE}\.${ENCODING}/" | sed -e 's/\.TMP//g');
|
||||
for template_file in ${symlink_file[@]}; do
|
||||
for template_file in "${symlink_file[@]}"; do
|
||||
# if this is not symlink, create them
|
||||
if [ ! -h "${template_file}" ]; then
|
||||
echo "Create symlink: ${template_file}";
|
||||
# symlik to original
|
||||
cd "${target_folder}";
|
||||
cd "${target_folder}" || exit;
|
||||
ln -sf "${original_file}" "${template_file}";
|
||||
cd - >/dev/null;
|
||||
cd - >/dev/null || exit;
|
||||
fi;
|
||||
done;
|
||||
done;
|
||||
|
||||
@@ -13,6 +13,8 @@ use PHPUnit\Framework\TestCase;
|
||||
*/
|
||||
final class CoreLibsConvertStringsTest extends TestCase
|
||||
{
|
||||
private const DATA_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR;
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
@@ -330,6 +332,52 @@ final class CoreLibsConvertStringsTest extends TestCase
|
||||
\CoreLibs\Convert\Strings::stripMultiplePathSlashes($input)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function providerStripUTF8BomBytes(): array
|
||||
{
|
||||
return [
|
||||
"utf8-bom" => [
|
||||
"file" => "UTF8BOM.csv",
|
||||
"expect" => "Asset Type,Epic,File Name\n",
|
||||
],
|
||||
"utf8" => [
|
||||
"file" => "UTF8.csv",
|
||||
"expect" => "Asset Type,Epic,File Name\n",
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* test utf8 bom remove
|
||||
*
|
||||
* @covers ::stripUTF8BomBytes
|
||||
* @dataProvider providerStripUTF8BomBytes
|
||||
* @testdox stripUTF8BomBytes $file will be $expected [$_dataName]
|
||||
*
|
||||
* @param string $file
|
||||
* @param string $expected
|
||||
* @return void
|
||||
*/
|
||||
public function testStripUTF8BomBytes(string $file, string $expected): void
|
||||
{
|
||||
// load sample file
|
||||
if (!is_file(self::DATA_FOLDER . $file)) {
|
||||
$this->markTestSkipped('File: ' . $file . ' could not be opened');
|
||||
}
|
||||
$file = file_get_contents(self::DATA_FOLDER . $file);
|
||||
if ($file === false) {
|
||||
$this->markTestSkipped('File: ' . $file . ' could not be read');
|
||||
}
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
\CoreLibs\Convert\Strings::stripUTF8BomBytes($file)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
|
||||
1
4dev/tests/Convert/data/UTF8.csv
Normal file
1
4dev/tests/Convert/data/UTF8.csv
Normal file
@@ -0,0 +1 @@
|
||||
Asset Type,Epic,File Name
|
||||
|
1
4dev/tests/Convert/data/UTF8BOM.csv
Normal file
1
4dev/tests/Convert/data/UTF8BOM.csv
Normal file
@@ -0,0 +1 @@
|
||||
Asset Type,Epic,File Name
|
||||
|
@@ -216,6 +216,29 @@ final class CoreLibsGetSystemTest extends TestCase
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::getIpAddresses
|
||||
* @testdox getIpAddresses check
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testGetIpAddresses()
|
||||
{
|
||||
// response must have "REMOTE_ADDR" entry, others are optional
|
||||
// NOTE: we have no IP addresses on command line
|
||||
$this->assertTrue(
|
||||
true,
|
||||
"We do not have REMOTE_ADDR on command line"
|
||||
);
|
||||
// $this->assertContains(
|
||||
// 'REMOTE_ADDR',
|
||||
// array_keys(\CoreLibs\Get\System::getIpAddresses()),
|
||||
// 'failed REMOTE_ADDR assert'
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -41,7 +41,7 @@ print "GETPAGENAME(0): " . System::getPageName() . "<br>";
|
||||
print "GETPAGENAME(1): " . System::getPageName(System::NO_EXTENSION) . "<br>";
|
||||
print "GETPAGENAME(2): " . System::getPageName(System::FULL_PATH) . "<br>";
|
||||
print "System::getPageNameArray():<br>";
|
||||
print "GETPAGENAMEARRAY: " . \CoreLibs\Debug\Support::printAr(System::getPageNameArray()) . "<br>";
|
||||
print "GETPAGENAMEARRAY: " . DgS::printAr(System::getPageNameArray()) . "<br>";
|
||||
// seting errro codes file upload
|
||||
print "System::fileUploadErrorMessage():<br>";
|
||||
print "FILEUPLOADERRORMESSAGE(): " . System::fileUploadErrorMessage(-1) . "<br>";
|
||||
@@ -51,4 +51,6 @@ print "FILEUPLOADERRORMESSAGE(UPLOAD_ERR_CANT_WRITE): "
|
||||
print "System::checkCLI():<br>";
|
||||
print "Are we in an CLI: " . (System::checkCLI() ? 'Yes' : 'No') . "<br>";
|
||||
|
||||
print "Get Addresses: " . DgS::printAr(System::getIpAddresses()) . "<br>";
|
||||
|
||||
print "</body></html>";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* general edit javascript */
|
||||
/* jquery version */
|
||||
|
||||
/* jshint esversion: 6 */
|
||||
/* jshint esversion: 11 */
|
||||
|
||||
/* global i18n */
|
||||
|
||||
|
||||
12
www/composer.lock
generated
12
www/composer.lock
generated
@@ -38,16 +38,16 @@
|
||||
},
|
||||
{
|
||||
"name": "gullevek/dotenv",
|
||||
"version": "v2.0.8",
|
||||
"version": "v2.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/gullevek/dotEnv.git",
|
||||
"reference": "e29f9fcd8853a09bb89b0eb8ee555b754ecee36e"
|
||||
"reference": "b9feacaded4e48effff9da7d1173752aef3dc27f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/gullevek/dotEnv/zipball/e29f9fcd8853a09bb89b0eb8ee555b754ecee36e",
|
||||
"reference": "e29f9fcd8853a09bb89b0eb8ee555b754ecee36e",
|
||||
"url": "https://api.github.com/repos/gullevek/dotEnv/zipball/b9feacaded4e48effff9da7d1173752aef3dc27f",
|
||||
"reference": "b9feacaded4e48effff9da7d1173752aef3dc27f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -86,9 +86,9 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/gullevek/dotEnv/issues",
|
||||
"source": "https://github.com/gullevek/dotEnv/tree/v2.0.8"
|
||||
"source": "https://github.com/gullevek/dotEnv/tree/v2.1.0"
|
||||
},
|
||||
"time": "2023-03-03T00:32:02+00:00"
|
||||
"time": "2024-08-21T02:41:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
|
||||
@@ -24,35 +24,29 @@ declare(strict_types=1);
|
||||
// ];
|
||||
|
||||
$__LOCAL_CONFIG = [
|
||||
// db config selection
|
||||
'db_host' => 'test',
|
||||
// other db connections
|
||||
// 'db_host_target' => '',
|
||||
// 'db_host_other' => '',
|
||||
// location flagging (test/dev/live) for debug output
|
||||
'location' => 'test',
|
||||
// show DEBUG override
|
||||
'debug_level' => 'debug',
|
||||
// site locale
|
||||
'site_locale' => 'en_US.UTF-8',
|
||||
// site encoding
|
||||
'site_encoding' => 'UTF-8',
|
||||
// enable/disable login override
|
||||
'login_enabled' => true
|
||||
];
|
||||
|
||||
// each host has a different db_host
|
||||
$SITE_CONFIG = [
|
||||
// development host
|
||||
'soba.tokyo.tequila.jp' => [
|
||||
// db config selection
|
||||
'db_host' => 'test',
|
||||
// other db connections
|
||||
// 'db_host_target' => '',
|
||||
// 'db_host_other' => '',
|
||||
// location flagging (test/dev/live) for debug output
|
||||
'location' => 'test',
|
||||
// show DEBUG override
|
||||
'debug_level' => 'debug',
|
||||
// site locale
|
||||
'site_locale' => 'en_US.UTF-8',
|
||||
// site encoding
|
||||
'site_encoding' => 'UTF-8',
|
||||
// enable/disable login override
|
||||
'login_enabled' => true
|
||||
],
|
||||
'soba.tokyo.tequila.jp' => $__LOCAL_CONFIG,
|
||||
// 'other.host.com' => $__LOCAL_CONFIG
|
||||
'soba.egplusww.jp' => $__LOCAL_CONFIG,
|
||||
'soba-dev.tequila.jp' => $__LOCAL_CONFIG,
|
||||
'soba.tequila.jp' => $__LOCAL_CONFIG,
|
||||
'soba.teq.jp' => $__LOCAL_CONFIG,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php // phpcs:ignore PSR1.Files.SideEffects
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
@@ -11,6 +11,20 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
// find trigger name "admin/" or "frontend/" in the getcwd() folder
|
||||
$folder = '';
|
||||
foreach (['admin', 'frontend'] as $_folder) {
|
||||
if (strstr(getcwd() ?: '', DIRECTORY_SEPARATOR . $_folder)) {
|
||||
$folder = $_folder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if content path is empty, fallback is default
|
||||
if (empty($folder)) {
|
||||
$folder = 'default';
|
||||
}
|
||||
define('CONTENT_PATH', $folder . DIRECTORY_SEPARATOR);
|
||||
|
||||
// File and Folder paths
|
||||
// ID is TARGET (first array element)
|
||||
/*$PATHS = [
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php // phpcs:ignore warning
|
||||
<?php // phpcs:ignore PSR1.Files.SideEffects
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
@@ -53,19 +53,6 @@ for (
|
||||
\gullevek\dotEnv\DotEnv::readEnvFile(
|
||||
$__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH
|
||||
);
|
||||
// find trigger name "admin/" or "frontend/" in the getcwd() folder
|
||||
$folder = '';
|
||||
foreach (['admin', 'frontend'] as $_folder) {
|
||||
if (strstr(getcwd() ?: '', DIRECTORY_SEPARATOR . $_folder)) {
|
||||
$folder = $_folder;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if content path is empty, fallback is default
|
||||
if (empty($folder)) {
|
||||
$folder = 'default';
|
||||
}
|
||||
define('CONTENT_PATH', $folder . DIRECTORY_SEPARATOR);
|
||||
// load master config file that loads all other config files
|
||||
require $__DIR__PATH . $CONFIG_PATH_PREFIX . CONFIG_PATH . 'config.master.php';
|
||||
break;
|
||||
|
||||
@@ -134,6 +134,18 @@ class Strings
|
||||
$path
|
||||
) ?? $path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove UTF8 BOM Byte string from line
|
||||
* Note: this is often found in CSV files exported from Excel at the first row, first element
|
||||
*
|
||||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public static function stripUTF8BomBytes(string $text): string
|
||||
{
|
||||
return trim($text, pack('H*', 'EFBBBF'));
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -2402,7 +2402,7 @@ class IO
|
||||
// flag if we have cache data stored at the moment
|
||||
'cached' => false,
|
||||
// when fetch array or cache read returns false
|
||||
// in loop read that means dbReturn retuns false without erro
|
||||
// in loop read that means dbReturn retuns false without error
|
||||
'finished' => false,
|
||||
// read from cache/db (pos == rows)
|
||||
'read_finished' => false,
|
||||
|
||||
@@ -116,6 +116,29 @@ class System
|
||||
3
|
||||
) === 'cli' ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect all IP addresses
|
||||
* REMOTE_ADDR, HTTP_X_FORWARD_FOR, CLIENT_IP
|
||||
* and retuns them in an array with index of io source
|
||||
* if address source has addresses with "," will add "-array" with these as array block
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getIpAddresses(): array
|
||||
{
|
||||
$ip_addr = [];
|
||||
foreach (['REMOTE_ADDR', 'HTTP_X_FORWARDED_FOR', 'CLIENT_IP'] as $_ip_source) {
|
||||
if (!empty($_SERVER[$_ip_source])) {
|
||||
$ip_addr[$_ip_source] = $_SERVER[$_ip_source];
|
||||
// same level as ARRAY IF there is a , inside
|
||||
if (strstr($_SERVER[$_ip_source], ',') !== false) {
|
||||
$ip_addr[$_ip_source . '-array'] = explode(',', $_SERVER[$_ip_source]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ip_addr;
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -19,7 +19,7 @@ use CoreLibs\Template\HtmlBuilder\General\HtmlBuilderExcpetion;
|
||||
class Block
|
||||
{
|
||||
/**
|
||||
* Undocumented function
|
||||
* Create Element
|
||||
*
|
||||
* @param string $tag
|
||||
* @param string $id
|
||||
@@ -86,7 +86,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Add multiple elements to the base element
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $base
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} ...$attach
|
||||
@@ -101,7 +101,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Add multiple sub elements to the base element
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $element
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $sub
|
||||
@@ -117,7 +117,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Remove all sub element entries
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $element
|
||||
* @return array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>}
|
||||
@@ -131,7 +131,7 @@ class Block
|
||||
// CSS Elements
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Add css entry to the css entries
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $element
|
||||
* @param string ...$css
|
||||
@@ -144,7 +144,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Remove a css entry entry from the css array
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $element
|
||||
* @param string ...$css
|
||||
@@ -157,7 +157,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Switch CSS entries
|
||||
* scssel (switch) is not supported
|
||||
* use rcssel -> acssel
|
||||
*
|
||||
@@ -175,7 +175,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Build HTML from the content tree
|
||||
* alias phfo
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $tree
|
||||
@@ -231,7 +231,23 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Alias for phfo
|
||||
*
|
||||
* @param array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>} $tree
|
||||
* @param bool $add_nl [default=false]
|
||||
* @return string
|
||||
*
|
||||
* @param array $tree
|
||||
* @param bool $add_nl
|
||||
* @return string
|
||||
*/
|
||||
public static function phfo(array $tree, bool $add_nl = false): string
|
||||
{
|
||||
return self::buildHtml($tree, $add_nl);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build HTML elements from an array of elements
|
||||
* alias phfa
|
||||
*
|
||||
* @param array<array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>}> $list
|
||||
@@ -248,8 +264,7 @@ class Block
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* wrapper for buildHtmlFromList
|
||||
* alias for buildHtmlFromList
|
||||
*
|
||||
* @param array<array{tag:string,id:string,name:string,content:string,css:array<string>,options:array<string,string>,sub:array<mixed>}> $list array of Elements to build string from
|
||||
* @param bool $add_nl [default=false] Optional output string line break
|
||||
|
||||
@@ -203,7 +203,8 @@ class SmartyExtend extends \Smarty
|
||||
_bind_textdomain_codeset($this->domain, $this->encoding);
|
||||
|
||||
// register smarty variable
|
||||
$this->registerPlugin('modifier', 'getvar', [&$this, 'getTemplateVars']);
|
||||
// $this->registerPlugin(\Smarty\Smarty::PLUGIN_MODIFIER, 'getvar', [&$this, 'getTemplateVars']);
|
||||
$this->registerPlugin(self::PLUGIN_MODIFIER, 'getvar', [&$this, 'getTemplateVars']);
|
||||
|
||||
$this->page_name = \CoreLibs\Get\System::getPageName();
|
||||
|
||||
|
||||
14
www/vendor/composer/installed.json
vendored
14
www/vendor/composer/installed.json
vendored
@@ -35,17 +35,17 @@
|
||||
},
|
||||
{
|
||||
"name": "gullevek/dotenv",
|
||||
"version": "v2.0.8",
|
||||
"version_normalized": "2.0.8.0",
|
||||
"version": "v2.1.0",
|
||||
"version_normalized": "2.1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/gullevek/dotEnv.git",
|
||||
"reference": "e29f9fcd8853a09bb89b0eb8ee555b754ecee36e"
|
||||
"reference": "b9feacaded4e48effff9da7d1173752aef3dc27f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/gullevek/dotEnv/zipball/e29f9fcd8853a09bb89b0eb8ee555b754ecee36e",
|
||||
"reference": "e29f9fcd8853a09bb89b0eb8ee555b754ecee36e",
|
||||
"url": "https://api.github.com/repos/gullevek/dotEnv/zipball/b9feacaded4e48effff9da7d1173752aef3dc27f",
|
||||
"reference": "b9feacaded4e48effff9da7d1173752aef3dc27f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -56,7 +56,7 @@
|
||||
"phpstan/phpstan": "^1.10",
|
||||
"phpunit/phpunit": "^9"
|
||||
},
|
||||
"time": "2023-03-03T00:32:02+00:00",
|
||||
"time": "2024-08-21T02:41:15+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
@@ -86,7 +86,7 @@
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/gullevek/dotEnv/issues",
|
||||
"source": "https://github.com/gullevek/dotEnv/tree/v2.0.8"
|
||||
"source": "https://github.com/gullevek/dotEnv/tree/v2.1.0"
|
||||
},
|
||||
"install-path": "../gullevek/dotenv"
|
||||
},
|
||||
|
||||
6
www/vendor/composer/installed.php
vendored
6
www/vendor/composer/installed.php
vendored
@@ -29,9 +29,9 @@
|
||||
'dev_requirement' => false,
|
||||
),
|
||||
'gullevek/dotenv' => array(
|
||||
'pretty_version' => 'v2.0.8',
|
||||
'version' => '2.0.8.0',
|
||||
'reference' => 'e29f9fcd8853a09bb89b0eb8ee555b754ecee36e',
|
||||
'pretty_version' => 'v2.1.0',
|
||||
'version' => '2.1.0.0',
|
||||
'reference' => 'b9feacaded4e48effff9da7d1173752aef3dc27f',
|
||||
'type' => 'library',
|
||||
'install_path' => __DIR__ . '/../gullevek/dotenv',
|
||||
'aliases' => array(),
|
||||
|
||||
23
www/vendor/gullevek/dotenv/Readme.md
vendored
23
www/vendor/gullevek/dotenv/Readme.md
vendored
@@ -61,6 +61,29 @@ DOUBLE="I will be used"
|
||||
DOUBLE="This will be ignored"
|
||||
```
|
||||
|
||||
A prefix name can be set with `[PrefixName]`. Tne name rules are like for variables, but spaces
|
||||
are allowed, but will be converted to "_".
|
||||
The prefix is valid from the time set until the next prefix block appears or the file ends.
|
||||
|
||||
Example
|
||||
|
||||
```ini
|
||||
FOO="bar"
|
||||
FOOBAR="bar bar"
|
||||
[SecitonA]
|
||||
FOO="other bar"
|
||||
FOOBAR="other bar bar"
|
||||
```
|
||||
|
||||
Will have environmen variables as
|
||||
|
||||
```php
|
||||
$_ENV["FOO"];
|
||||
$_ENV["FOOBAR"];
|
||||
$_ENV["SecitonA.FOO"];
|
||||
$_ENV["SecitonA.FOOBAR"];
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Phan
|
||||
|
||||
13
www/vendor/gullevek/dotenv/src/DotEnv.php
vendored
13
www/vendor/gullevek/dotenv/src/DotEnv.php
vendored
@@ -22,6 +22,9 @@ class DotEnv
|
||||
* if there are two variables with the same name only the first is used
|
||||
* variables are case sensitive
|
||||
*
|
||||
* [] Grouping Block Name as prefix until next or end if set,
|
||||
* space replaced by _, all other var rules apply
|
||||
*
|
||||
* @param string $path Folder to file, default is __DIR__
|
||||
* @param string $env_file What file to load, default is .env
|
||||
* @return int -1 other error
|
||||
@@ -56,10 +59,14 @@ class DotEnv
|
||||
$status = 1;
|
||||
$block = false;
|
||||
$var = '';
|
||||
$prefix_name = '';
|
||||
while ($line = fgets($fp)) {
|
||||
// main match for variable = value part
|
||||
if (preg_match("/^\s*([\w_.]+)\s*=\s*((\"?).*)/", $line, $matches)) {
|
||||
$var = $matches[1];
|
||||
// [] block must be a single line, or it will be ignored
|
||||
if (preg_match("/^\s*\[([\w_.\s]+)\]/", $line, $matches)) {
|
||||
$prefix_name = preg_replace("/\s+/", "_", $matches[1]) . ".";
|
||||
} elseif (preg_match("/^\s*([\w_.]+)\s*=\s*((\"?).*)/", $line, $matches)) {
|
||||
// main match for variable = value part
|
||||
$var = $prefix_name . $matches[1];
|
||||
$value = $matches[2];
|
||||
$quotes = $matches[3];
|
||||
// write only if env is not set yet, and write only the first time
|
||||
|
||||
Reference in New Issue
Block a user