Compare commits
83 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6001934d9c | ||
|
|
f622d59ed9 | ||
|
|
6147d28b37 | ||
|
|
f9072f64f1 | ||
|
|
0f38cb4f89 | ||
|
|
08bbc913a9 | ||
|
|
4c859ada01 | ||
|
|
58e61b8902 | ||
|
|
edfbe476c4 | ||
|
|
0907325a38 | ||
|
|
60b6fae33a | ||
|
|
0b7dba5e2f | ||
|
|
c1212d8116 | ||
|
|
5230cbf5d3 | ||
|
|
a6b42f243f | ||
|
|
736f822363 | ||
|
|
ffd1a86dcc | ||
|
|
b3d783bf63 | ||
|
|
e0cc766cc7 | ||
|
|
f151509bfe | ||
|
|
e252a76c4c | ||
|
|
7005e07f4c | ||
|
|
a86ae3efc3 | ||
|
|
8577345799 | ||
|
|
4779e4ccbe | ||
|
|
c1240c0614 | ||
|
|
6722468bdb | ||
|
|
11daac6d23 | ||
|
|
678aa7460e | ||
|
|
76e0c0ac06 | ||
|
|
3512fa73ee | ||
|
|
0a80b28553 | ||
|
|
2c5fcd973f | ||
|
|
4515a5fdd1 | ||
|
|
f04487d553 | ||
|
|
d068aaeed7 | ||
|
|
b628331a9b | ||
|
|
3035287b5c | ||
|
|
cb17b553b0 | ||
|
|
448b54f5c1 | ||
|
|
e80915cd5c | ||
|
|
4ae1c2bde0 | ||
|
|
ee6e0581da | ||
|
|
70a30c3182 | ||
|
|
9d54d6b0d1 | ||
|
|
a46888d101 | ||
|
|
be092fc449 | ||
|
|
6059b83637 | ||
|
|
b6c6d76b43 | ||
|
|
80993a06ac | ||
|
|
50073479d4 | ||
|
|
85f701ab2a | ||
|
|
519de8a23c | ||
|
|
d5fdb22e93 | ||
|
|
0ec0007569 | ||
|
|
7165a50b4d | ||
|
|
71ee80fa06 | ||
|
|
bb5276ee44 | ||
|
|
9c242ed1b9 | ||
|
|
0fcbe91ea2 | ||
|
|
ee4417fc52 | ||
|
|
ee1dafd8d8 | ||
|
|
96104095d0 | ||
|
|
a311552c56 | ||
|
|
f694539a0b | ||
|
|
2f1388494f | ||
|
|
06fe9657e2 | ||
|
|
d4e5f92277 | ||
|
|
b2c0a57924 | ||
|
|
5522348c8a | ||
|
|
ed01d248ec | ||
|
|
899ddc011c | ||
|
|
a86eaf0f02 | ||
|
|
3e29073664 | ||
|
|
5601b14d5f | ||
|
|
a1afc1fb2e | ||
|
|
d445bc3526 | ||
|
|
719d82d4ee | ||
|
|
6807f33120 | ||
|
|
114ca6c24a | ||
|
|
e46d0fa4a4 | ||
|
|
f7db84c62f | ||
|
|
3267fc0266 |
@@ -1,7 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Phan\Config;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This configuration will be read and overlaid on top of the
|
* This configuration will be read and overlaid on top of the
|
||||||
* default configuration. Command line arguments will be applied
|
* default configuration. Command line arguments will be applied
|
||||||
@@ -24,6 +22,9 @@ use Phan\Config;
|
|||||||
* of the phan executable or a path passed in via the CLI
|
* of the phan executable or a path passed in via the CLI
|
||||||
* '-d' flag.
|
* '-d' flag.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
use Phan\Config;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
// If true, missing properties will be created when
|
// If true, missing properties will be created when
|
||||||
// they are first seen. If false, we'll report an
|
// they are first seen. If false, we'll report an
|
||||||
@@ -56,6 +57,7 @@ return [
|
|||||||
"./www/configs/config.db.php",
|
"./www/configs/config.db.php",
|
||||||
"./www/configs/config.host.php",
|
"./www/configs/config.host.php",
|
||||||
"./www/configs/config.path.php",
|
"./www/configs/config.path.php",
|
||||||
|
"./www/configs/config.other.php",
|
||||||
"./www/configs/config.master.php",
|
"./www/configs/config.master.php",
|
||||||
"./www/includes/admin_header.php",
|
"./www/includes/admin_header.php",
|
||||||
],
|
],
|
||||||
@@ -68,14 +70,14 @@ return [
|
|||||||
// Thus, both first-party and third-party code being used by
|
// Thus, both first-party and third-party code being used by
|
||||||
// your application should be included in this list.
|
// your application should be included in this list.
|
||||||
'directory_list' => [
|
'directory_list' => [
|
||||||
// Change this to include the folders you wish to analyze
|
// Change this to include the folders you wish to analyze
|
||||||
// (and the folders of their dependencies)
|
// (and the folders of their dependencies)
|
||||||
'www',
|
'www',
|
||||||
// To speed up analysis, we recommend going back later and
|
// To speed up analysis, we recommend going back later and
|
||||||
// limiting this to only the vendor/ subdirectories your
|
// limiting this to only the vendor/ subdirectories your
|
||||||
// project depends on.
|
// project depends on.
|
||||||
// `phan --init` will generate a list of folders for you
|
// `phan --init` will generate a list of folders for you
|
||||||
//'www/vendor',
|
//'www/vendor',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
||||||
@@ -83,9 +85,7 @@ return [
|
|||||||
// to parse, but not analyze
|
// to parse, but not analyze
|
||||||
"exclude_analysis_directory_list" => [
|
"exclude_analysis_directory_list" => [
|
||||||
'www/vendor',
|
'www/vendor',
|
||||||
'www/lib/FileUpload',
|
'www/tests',
|
||||||
'www/lib/pChart',
|
|
||||||
'www/lib/pChart2.1.4',
|
|
||||||
'www/lib/Smarty',
|
'www/lib/Smarty',
|
||||||
'www/lib/smarty-3.1.30',
|
'www/lib/smarty-3.1.30',
|
||||||
'www/templates_c',
|
'www/templates_c',
|
||||||
@@ -108,6 +108,9 @@ return [
|
|||||||
// ignore the old qq tests
|
// ignore the old qq tests
|
||||||
'www/admin/qq_file_upload_front.php',
|
'www/admin/qq_file_upload_front.php',
|
||||||
'www/admin/qq_file_upload_ajax.php',
|
'www/admin/qq_file_upload_ajax.php',
|
||||||
|
// symlink ignore
|
||||||
|
'www/lib/smarty-3.1.30/SmartyBC.class.php',
|
||||||
|
'www/lib/htmlMimeMail-2.5.1/HtmlMimeMailCreate.php',
|
||||||
],
|
],
|
||||||
|
|
||||||
// what not to show as problem
|
// what not to show as problem
|
||||||
|
|||||||
3
4dev/checking/phan.sh
Normal file
3
4dev/checking/phan.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
base="/storage/var/www/html/developers/clemens/core_data/php_libraries/trunk/";
|
||||||
|
# must be run in ${base}www/
|
||||||
|
phan --progress-bar -C --analyze-twice
|
||||||
3
4dev/checking/phpstan.sh
Normal file
3
4dev/checking/phpstan.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
base="/storage/var/www/html/developers/clemens/core_data/php_libraries/trunk/";
|
||||||
|
# must be run in ${base}www/
|
||||||
|
phpstan
|
||||||
4
4dev/checking/phpunit.sh
Executable file
4
4dev/checking/phpunit.sh
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
base="/storage/var/www/html/developers/clemens/core_data/php_libraries/trunk/";
|
||||||
|
# -c phpunit.xml
|
||||||
|
# --testdox
|
||||||
|
${base}www/vendor/bin/phpunit -c ${base}phpunit.xml ${base}4dev/tests/
|
||||||
@@ -1,21 +1,27 @@
|
|||||||
Install composer:
|
Install composer:
|
||||||
curl -sS https://getcomposer.org/installer | /usr/local/php-7.3-httpd-2.4/bin/php
|
# old
|
||||||
|
curl -sS https://getcomposer.org/installer | /usr/local/php-8.0-httpd-2.4/bin/php
|
||||||
|
# new (4 steps) https://getcomposer.org/download/
|
||||||
|
/usr/local/php-8.0-httpd-2.4/bin/php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||||
|
/usr/local/php-8.0-httpd-2.4/bin/php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
||||||
|
/usr/local/php-8.0-httpd-2.4/bin/php composer-setup.php
|
||||||
|
/usr/local/php-8.0-httpd-2.4/bin/php -r "unlink('composer-setup.php');
|
||||||
|
|
||||||
Update composer phar file
|
Update composer phar file
|
||||||
/usr/local/php-7.3-httpd-2.4/bin/php composer.phar selfupdate
|
/usr/local/php-8.0-httpd-2.4/bin/php composer.phar selfupdate
|
||||||
|
|
||||||
Install something:
|
Install something:
|
||||||
/usr/local/php-7.3-httpd-2.4/bin/php composer.phar require something/something
|
/usr/local/php-8.0-httpd-2.4/bin/php composer.phar require something/something
|
||||||
|
|
||||||
Update all installed:
|
Update all installed:
|
||||||
/usr/local/php-7.3-httpd-2.4/bin/php composer.phar update
|
/usr/local/php-8.0-httpd-2.4/bin/php composer.phar update
|
||||||
|
|
||||||
Or update only one package:
|
Or update only one package:
|
||||||
/usr/local/php-7.3-httpd-2.4/bin/php composer.phar something/something
|
/usr/local/php-8.0-httpd-2.4/bin/php composer.phar something/something
|
||||||
|
|
||||||
Install AWS SDK:
|
Install AWS SDK:
|
||||||
/usr/local/php-7.3-httpd-2.4/bin/php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
|
/usr/local/php-8.0-httpd-2.4/bin/php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
|
||||||
|
|
||||||
Install zipStream:
|
Install zipStream:
|
||||||
/usr/local/php-7.3-httpd-2.4/bin/php composer.phar require maennchen/zipstream-php
|
/usr/local/php-8.0-httpd-2.4/bin/php composer.phar require maennchen/zipstream-php
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
# functions
|
# functions
|
||||||
function/update_function.sql
|
function/set_uid.sql
|
||||||
|
function/set_generic.sql
|
||||||
function/random_string.sql
|
function/random_string.sql
|
||||||
|
function/set_edit_generic.sql
|
||||||
function/edit_set_access_uid.sql
|
function/edit_set_access_uid.sql
|
||||||
|
function/edit_log_partition_insert.sql
|
||||||
# generic tables
|
# generic tables
|
||||||
table/edit_temp_files.sql
|
table/edit_temp_files.sql
|
||||||
table/edit_generic.sql
|
table/edit_generic.sql
|
||||||
@@ -19,6 +22,7 @@ table/edit_page_access.sql
|
|||||||
table/edit_page_content.sql
|
table/edit_page_content.sql
|
||||||
table/edit_user.sql
|
table/edit_user.sql
|
||||||
table/edit_log.sql
|
table/edit_log.sql
|
||||||
|
table/edit_log_overflow.sql
|
||||||
table/edit_access.sql
|
table/edit_access.sql
|
||||||
table/edit_access_user.sql
|
table/edit_access_user.sql
|
||||||
table/edit_access_data.sql
|
table/edit_access_data.sql
|
||||||
@@ -27,9 +31,9 @@ trigger/trg_edit_access_right.sql
|
|||||||
trigger/trg_edit_access.sql
|
trigger/trg_edit_access.sql
|
||||||
trigger/trg_edit_access_data.sql
|
trigger/trg_edit_access_data.sql
|
||||||
trigger/trg_edit_access_user.sql
|
trigger/trg_edit_access_user.sql
|
||||||
trigger/trg_edit_generic.sql
|
|
||||||
trigger/trg_edit_group.sql
|
trigger/trg_edit_group.sql
|
||||||
trigger/trg_edit_language.sql
|
trigger/trg_edit_language.sql
|
||||||
|
trigger/trg_edit_log_overflow.sql
|
||||||
trigger/trg_edit_log.sql
|
trigger/trg_edit_log.sql
|
||||||
trigger/trg_edit_page_access.sql
|
trigger/trg_edit_page_access.sql
|
||||||
trigger/trg_edit_page_content.sql
|
trigger/trg_edit_page_content.sql
|
||||||
@@ -39,6 +43,5 @@ trigger/trg_edit_scheme.sql
|
|||||||
trigger/trg_edit_user.sql
|
trigger/trg_edit_user.sql
|
||||||
trigger/trg_edit_visible_group.sql
|
trigger/trg_edit_visible_group.sql
|
||||||
trigger/trg_edit_menu_group.sql
|
trigger/trg_edit_menu_group.sql
|
||||||
trigger/trg_set_edit_access_uid.sql
|
|
||||||
# insert data
|
# insert data
|
||||||
data/edit_tables.sql
|
data/edit_tables.sql
|
||||||
|
|||||||
@@ -15,22 +15,20 @@ function_name="set_generic";
|
|||||||
#sql_path_prep=`echo $sql_path | sed -e "s/\///g"`;
|
#sql_path_prep=`echo $sql_path | sed -e "s/\///g"`;
|
||||||
|
|
||||||
# goes for each file and strips headers and endings, and creates trigger name
|
# goes for each file and strips headers and endings, and creates trigger name
|
||||||
for name in $sql_path*;
|
for name in $sql_path*; do
|
||||||
do
|
|
||||||
echo "Wokring on $name";
|
echo "Wokring on $name";
|
||||||
# strip ending
|
# strip ending
|
||||||
# t_name=`echo $name | sed -e 's/.sql$//g' | sed -e "s/^$sql_path_prep//g" | sed -e 's/\///g'`;
|
# t_name=`echo $name | sed -e 's/.sql$//g' | sed -e "s/^$sql_path_prep//g" | sed -e 's/\///g'`;
|
||||||
t_name=`echo $name | sed -e 's/^.*\///g' | sed -e 's/.sql$//g'`;
|
t_name=`echo $name | sed -e 's/^.*\///g' | sed -e 's/.sql$//g'`;
|
||||||
# clean all beginnings
|
# clean all beginnings
|
||||||
for prefix in $file_prefix;
|
for prefix in $file_prefix; do
|
||||||
do
|
|
||||||
prefix=$prefix"_";
|
prefix=$prefix"_";
|
||||||
t_name=`echo $t_name | sed -e "s/\$prefix//g"`;
|
t_name=`echo $t_name | sed -e "s/\$prefix//g"`;
|
||||||
done;
|
done;
|
||||||
|
|
||||||
# those tables don't need a trigger
|
# those tables don't need a trigger
|
||||||
# edit_generic
|
# edit_generic
|
||||||
# generic
|
# generic
|
||||||
|
|
||||||
# copy the trigger template to the target
|
# copy the trigger template to the target
|
||||||
trg_filename=$trigger_path$trigger_prefix"_"$t_name".sql";
|
trg_filename=$trigger_path$trigger_prefix"_"$t_name".sql";
|
||||||
|
|||||||
@@ -14,17 +14,14 @@ file_prefix="trg";
|
|||||||
trigger_prefix="trg";
|
trigger_prefix="trg";
|
||||||
index_prefix="idx";
|
index_prefix="idx";
|
||||||
|
|
||||||
for file in `cat ORDER`;
|
for file in `cat ORDER`; do
|
||||||
do
|
if [ -f $file ]; then
|
||||||
if [ -f $file ];
|
|
||||||
then
|
|
||||||
# write them into a var, so we can re order them in the other way
|
# write them into a var, so we can re order them in the other way
|
||||||
new_order=$file" "$new_order;
|
new_order=$file" "$new_order;
|
||||||
fi;
|
fi;
|
||||||
done;
|
done;
|
||||||
|
|
||||||
for file in $new_order;
|
for file in $new_order; do
|
||||||
do
|
|
||||||
sqltype=`echo $file | egrep "table/"`;
|
sqltype=`echo $file | egrep "table/"`;
|
||||||
trgtype=`echo $file | egrep "trigger/"`;
|
trgtype=`echo $file | egrep "trigger/"`;
|
||||||
idxtype=`echo $file | egrep "index/"`;
|
idxtype=`echo $file | egrep "index/"`;
|
||||||
@@ -32,43 +29,34 @@ do
|
|||||||
datatype=`echo $file | egrep "data/"`;
|
datatype=`echo $file | egrep "data/"`;
|
||||||
# remove all around to get table name
|
# remove all around to get table name
|
||||||
t_file=`echo $file | sed -e 's/^.*\///g' | sed -e 's/.sql$//g'`;
|
t_file=`echo $file | sed -e 's/^.*\///g' | sed -e 's/.sql$//g'`;
|
||||||
for prefix in $file_prefix;
|
for prefix in $file_prefix; do
|
||||||
do
|
|
||||||
prefix=$prefix"_";
|
prefix=$prefix"_";
|
||||||
t_file=`echo $t_file | sed -e "s/\$prefix//g"`;
|
t_file=`echo $t_file | sed -e "s/\$prefix//g"`;
|
||||||
done;
|
done;
|
||||||
# copy the trigger template to the target
|
# copy the trigger template to the target
|
||||||
|
|
||||||
for path in $schema;
|
for path in $schemas; do
|
||||||
do
|
if [ $sqltype ]; then
|
||||||
if [ $sqltype ];
|
|
||||||
then
|
|
||||||
echo "SQL "$path"."$t_file;
|
echo "SQL "$path"."$t_file;
|
||||||
echo "DROP TABLE "$path"."$t_file" CASCADE;" | psql -U $user -h $host $db
|
echo "DROP TABLE "$path"."$t_file" CASCADE;" | psql -U $user -h $host $db
|
||||||
fi;
|
fi;
|
||||||
if [ $trgtype ];
|
if [ $trgtype ]; then
|
||||||
then
|
|
||||||
trigger=$trigger_prefix"_"$t_file;
|
trigger=$trigger_prefix"_"$t_file;
|
||||||
echo "TRG $trigger TBL "$path".$t_file";
|
echo "TRG $trigger TBL "$path".$t_file";
|
||||||
echo "DROP TRIGGER "$path".$trigger ON "$t_file" CASCADE;" | psql -U $user -h $host $db
|
echo "DROP TRIGGER "$path".$trigger ON "$t_file" CASCADE;" | psql -U $user -h $host $db
|
||||||
fi;
|
fi;
|
||||||
if [ $fcttype ];
|
if [ $fcttype ]; then
|
||||||
then
|
|
||||||
echo "FCT "$path"."$t_file;
|
echo "FCT "$path"."$t_file;
|
||||||
echo "DROP FUNCTION "$path"."$t_file"();" | psql -U $user -h $host $db
|
echo "DROP FUNCTION "$path"."$t_file"();" | psql -U $user -h $host $db
|
||||||
fi;
|
fi;
|
||||||
if [ $idxtype ];
|
if [ $idxtype ]; then
|
||||||
then
|
|
||||||
index=$index_prefix"_"$t_file;
|
index=$index_prefix"_"$t_file;
|
||||||
# echo "IDX "$t_file;
|
# echo "IDX "$t_file;
|
||||||
# echo "DROP INDEX $index ON $t_file;" | psql -U $user -h $host $db
|
# echo "DROP INDEX $index ON $t_file;" | psql -U $user -h $host $db
|
||||||
fi;
|
fi;
|
||||||
if [ $datatype ];
|
if [ $datatype ]; then
|
||||||
then
|
|
||||||
echo "DATA "$t_file;
|
echo "DATA "$t_file;
|
||||||
# echo "DROP FUNCTION "$t_file"();" | psql -U $user -h $host $db
|
# echo "DROP FUNCTION "$t_file"();" | psql -U $user -h $host $db
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
# psql -U cms_user -h 192.168.12.14 -f $file CMSv2
|
|
||||||
done;
|
done;
|
||||||
done;
|
done;
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
-- AUTHOR: Clemens Schwaighofer
|
||||||
|
-- DATE: 2018-07-17
|
||||||
|
-- DESCRIPTION:
|
||||||
|
-- partition the edit_log table by year
|
||||||
|
-- auto creates table if missing, if failure writes to overflow table
|
||||||
|
-- HISTORY:
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION edit_log_insert_trigger ()
|
CREATE OR REPLACE FUNCTION edit_log_insert_trigger ()
|
||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
@@ -6,18 +13,23 @@ DECLARE
|
|||||||
end_date DATE;
|
end_date DATE;
|
||||||
timeformat TEXT := 'YYYY';
|
timeformat TEXT := 'YYYY';
|
||||||
selector TEXT := 'year';
|
selector TEXT := 'year';
|
||||||
_interval INTERVAL;
|
base_table TEXT := 'edit_log';
|
||||||
|
_interval INTERVAL := '1 ' || selector;
|
||||||
|
_interval_next INTERVAL := '2 ' || selector;
|
||||||
table_name TEXT;
|
table_name TEXT;
|
||||||
|
-- compare date column
|
||||||
|
compare_date DATE := NEW.event_date;
|
||||||
|
compare_date_name TEXT := 'event_date';
|
||||||
|
-- the create commands
|
||||||
|
command_create_table TEXT := 'CREATE TABLE IF NOT EXISTS {TABLE_NAME} (CHECK({COMPARE_DATE_NAME} >= {START_DATE} AND {COMPARE_DATE_NAME} < {END_DATE})) INHERITS ({BASE_NAME})';
|
||||||
|
command_create_primary_key TEXT := 'ALTER TABLE {TABLE_NAME} ADD PRIMARY KEY ({BASE_TABLE}_id)';
|
||||||
|
command_create_foreign_key_1 TEXT := 'ALTER TABLE {TABLE_NAME} ADD CONSTRAINT {TABLE_NAME}_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL';
|
||||||
|
command_create_trigger_1 TEXT = 'CREATE TRIGGER trg_{TABLE_NAME} BEFORE INSERT OR UPDATE ON {TABLE_NAME} FOR EACH ROW EXECUTE PROCEDURE set_edit_generic()';
|
||||||
BEGIN
|
BEGIN
|
||||||
-- get year and month from edit_log date so we can build the target edit_log table
|
|
||||||
|
|
||||||
-- move interval
|
|
||||||
_interval := '1 ' || selector;
|
|
||||||
-- current table name
|
|
||||||
table_name := 'edit_log_' || to_char(NEW.event_date, timeformat);
|
|
||||||
|
|
||||||
-- we are in valid start time area
|
-- we are in valid start time area
|
||||||
IF (NEW.event_date >= start_date) THEN
|
IF (NEW.event_date >= start_date) THEN
|
||||||
|
-- current table name
|
||||||
|
table_name := base_table || '_' || to_char(NEW.event_date, timeformat);
|
||||||
BEGIN
|
BEGIN
|
||||||
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
||||||
-- if insert failed because of missing table, create new below
|
-- if insert failed because of missing table, create new below
|
||||||
@@ -25,17 +37,45 @@ BEGIN
|
|||||||
WHEN undefined_table THEN
|
WHEN undefined_table THEN
|
||||||
-- another block, so in case the creation fails here too
|
-- another block, so in case the creation fails here too
|
||||||
BEGIN
|
BEGIN
|
||||||
-- create new talbe here + all indexes
|
-- create new table here + all indexes
|
||||||
start_date := date_trunc(selector, NEW.event_date);
|
start_date := date_trunc(selector, NEW.event_date);
|
||||||
end_date := date_trunc(selector, NEW.event_date + _interval);
|
end_date := date_trunc(selector, NEW.event_date + _interval);
|
||||||
-- creat table
|
-- creat table
|
||||||
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || quote_ident(table_name) || ' ( CHECK ( event_date >= ' || quote_literal(start_date) || ' AND event_date < ' || quote_literal(end_date) || ' ) ) INHERITS (edit_log)';
|
EXECUTE format(REPLACE( -- end date
|
||||||
|
REPLACE( -- start date
|
||||||
|
REPLACE( -- compare date name
|
||||||
|
REPLACE( -- base name (inherit)
|
||||||
|
REPLACE( -- table name
|
||||||
|
command_create_table,
|
||||||
|
'{TABLE_NAME}',
|
||||||
|
table_name
|
||||||
|
),
|
||||||
|
'{BASE_NAME}',
|
||||||
|
base_table
|
||||||
|
),
|
||||||
|
'{COMPARE_DATE_NAME}',
|
||||||
|
compare_date_name
|
||||||
|
),
|
||||||
|
'{START_DATE}',
|
||||||
|
quote_literal(start_date)
|
||||||
|
),
|
||||||
|
'{END_DATE}',
|
||||||
|
quote_literal(end_date)
|
||||||
|
));
|
||||||
-- create all indexes and triggers
|
-- create all indexes and triggers
|
||||||
EXECUTE 'ALTER TABLE ' || quote_ident(table_name) || ' ADD PRIMARY KEY (edit_log_id)';
|
EXECUTE format(REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
command_create_primary_key,
|
||||||
|
'{TABLE_NAME}',
|
||||||
|
table_name
|
||||||
|
),
|
||||||
|
'{BASE_TABLE}',
|
||||||
|
base_table
|
||||||
|
));
|
||||||
-- FK constraints
|
-- FK constraints
|
||||||
EXECUTE 'ALTER TABLE ' || quote_ident(table_name) || ' ADD CONSTRAINT fk_' || quote_ident(table_name) || '_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE CASCADE';
|
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
||||||
-- generic trigger
|
-- generic trigger
|
||||||
EXECUTE 'CREATE TRIGGER trg_' || quote_ident(table_name) || ' BEFORE INSERT OR UPDATE ON ' || quote_ident(table_name) || ' FOR EACH ROW EXECUTE PROCEDURE set_edit_generic()';
|
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
||||||
|
|
||||||
-- insert try again
|
-- insert try again
|
||||||
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
||||||
@@ -49,6 +89,57 @@ BEGIN
|
|||||||
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
||||||
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
||||||
END;
|
END;
|
||||||
|
-- main insert run done, check if we have to create next months table
|
||||||
|
BEGIN
|
||||||
|
-- check if next month table exists
|
||||||
|
table_name := base_table || '_' || to_char((SELECT NEW.event_date + _interval)::DATE, timeformat);
|
||||||
|
-- RAISE NOTICE 'SEARCH NEXT: %', table_name;
|
||||||
|
IF (SELECT to_regclass(table_name)) IS NULL THEN
|
||||||
|
-- move inner interval same
|
||||||
|
start_date := date_trunc(selector, NEW.event_date + _interval);
|
||||||
|
end_date := date_trunc(selector, NEW.event_date + _interval_next);
|
||||||
|
-- RAISE NOTICE 'CREATE NEXT: %', table_name;
|
||||||
|
-- create table
|
||||||
|
EXECUTE format(REPLACE( -- end date
|
||||||
|
REPLACE( -- start date
|
||||||
|
REPLACE( -- compare date name
|
||||||
|
REPLACE( -- base name (inherit)
|
||||||
|
REPLACE( -- table name
|
||||||
|
command_create_table,
|
||||||
|
'{TABLE_NAME}',
|
||||||
|
table_name
|
||||||
|
),
|
||||||
|
'{BASE_NAME}',
|
||||||
|
base_table
|
||||||
|
),
|
||||||
|
'{COMPARE_DATE_NAME}',
|
||||||
|
compare_date_name
|
||||||
|
),
|
||||||
|
'{START_DATE}',
|
||||||
|
quote_literal(start_date)
|
||||||
|
),
|
||||||
|
'{END_DATE}',
|
||||||
|
quote_literal(end_date)
|
||||||
|
));
|
||||||
|
-- create all indexes and triggers
|
||||||
|
EXECUTE format(REPLACE(
|
||||||
|
REPLACE(
|
||||||
|
command_create_primary_key,
|
||||||
|
'{TABLE_NAME}',
|
||||||
|
table_name
|
||||||
|
),
|
||||||
|
'{BASE_TABLE}',
|
||||||
|
base_table
|
||||||
|
));
|
||||||
|
-- FK constraints
|
||||||
|
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
||||||
|
-- generic trigger
|
||||||
|
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
||||||
|
END IF;
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
RAISE NOTICE 'Failed to create next table: %', table_name;
|
||||||
|
END;
|
||||||
ELSE
|
ELSE
|
||||||
-- if outside valid date, insert into overflow
|
-- if outside valid date, insert into overflow
|
||||||
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
||||||
@@ -56,4 +147,4 @@ BEGIN
|
|||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql'
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
28
4dev/database/function/edit_set_group_uid.sql
Executable file
28
4dev/database/function/edit_set_group_uid.sql
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
-- add uid add for edit_group table
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION set_edit_group_uid() RETURNS TRIGGER AS
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
myrec RECORD;
|
||||||
|
v_uid VARCHAR;
|
||||||
|
BEGIN
|
||||||
|
-- skip if NEW.name is not set
|
||||||
|
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
||||||
|
-- use NEW.name as base, remove all spaces
|
||||||
|
-- name data is already unique, so we do not need to worry about this here
|
||||||
|
v_uid := REPLACE(NEW.name, ' ', '');
|
||||||
|
IF TG_OP = 'INSERT' THEN
|
||||||
|
-- always set
|
||||||
|
NEW.uid := v_uid;
|
||||||
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
|
-- check if not set, then set
|
||||||
|
SELECT INTO myrec t.* FROM edit_group t WHERE edit_group_id = NEW.edit_group_id;
|
||||||
|
IF FOUND THEN
|
||||||
|
NEW.uid := v_uid;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
END IF;
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
LANGUAGE 'plpgsql';
|
||||||
0
4dev/database/function/random_string.sql
Executable file → Normal file
0
4dev/database/function/random_string.sql
Executable file → Normal file
2
4dev/database/function/set_uid.sql
Executable file → Normal file
2
4dev/database/function/set_uid.sql
Executable file → Normal file
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
CREATE OR REPLACE FUNCTION set_uid() RETURNS TRIGGER AS '
|
CREATE OR REPLACE FUNCTION set_uid() RETURNS TRIGGER AS '
|
||||||
DECLARE
|
DECLARE
|
||||||
random_length INT = 12; -- that should be long enough
|
random_length INT = 32; -- that should be long enough
|
||||||
BEGIN
|
BEGIN
|
||||||
IF TG_OP = ''INSERT'' THEN
|
IF TG_OP = ''INSERT'' THEN
|
||||||
NEW.uid := random_string(random_length);
|
NEW.uid := random_string(random_length);
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
-- adds the created or updated date tags
|
-- adds the created or updated date tags
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION set_generic() RETURNS TRIGGER AS '
|
-- OLD, DEPRECATED, use set_generic.sql
|
||||||
BEGIN
|
|
||||||
IF TG_OP = ''INSERT'' THEN
|
-- CREATE OR REPLACE FUNCTION set_generic() RETURNS TRIGGER AS '
|
||||||
NEW.date_created := clock_timestamp();
|
-- BEGIN
|
||||||
NEW.user_created := current_user;
|
-- IF TG_OP = ''INSERT'' THEN
|
||||||
ELSIF TG_OP = ''UPDATE'' THEN
|
-- NEW.date_created := clock_timestamp();
|
||||||
NEW.date_updated := clock_timestamp();
|
-- NEW.user_created := current_user;
|
||||||
NEW.user_updated := current_user;
|
-- ELSIF TG_OP = ''UPDATE'' THEN
|
||||||
END IF;
|
-- NEW.date_updated := clock_timestamp();
|
||||||
RETURN NEW;
|
-- NEW.user_updated := current_user;
|
||||||
END;
|
-- END IF;
|
||||||
' LANGUAGE 'plpgsql';
|
-- RETURN NEW;
|
||||||
|
-- END;
|
||||||
|
-- ' LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
-- DROP TABLE edit_access;
|
-- DROP TABLE edit_access;
|
||||||
CREATE TABLE edit_access (
|
CREATE TABLE edit_access (
|
||||||
edit_access_id SERIAL PRIMARY KEY,
|
edit_access_id SERIAL PRIMARY KEY,
|
||||||
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
protected SMALLINT DEFAULT 0,
|
||||||
|
deleted SMALLINT DEFAULT 0,
|
||||||
|
uid VARCHAR,
|
||||||
name VARCHAR UNIQUE,
|
name VARCHAR UNIQUE,
|
||||||
description VARCHAR,
|
description VARCHAR,
|
||||||
color VARCHAR,
|
color VARCHAR,
|
||||||
uid VARCHAR,
|
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
protected INT,
|
|
||||||
deleted SMALLINT DEFAULT 0,
|
|
||||||
additional_acl JSONB
|
additional_acl JSONB
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
CREATE TABLE edit_access_data (
|
CREATE TABLE edit_access_data (
|
||||||
edit_access_data_id SERIAL PRIMARY KEY,
|
edit_access_data_id SERIAL PRIMARY KEY,
|
||||||
edit_access_id INT NOT NULL,
|
edit_access_id INT NOT NULL,
|
||||||
name VARCHAR,
|
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
value VARCHAR,
|
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
name VARCHAR,
|
||||||
|
value VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
-- DROP TABLE edit_access_user;
|
-- DROP TABLE edit_access_user;
|
||||||
CREATE TABLE edit_access_user (
|
CREATE TABLE edit_access_user (
|
||||||
edit_access_user_id SERIAL PRIMARY KEY,
|
edit_access_user_id SERIAL PRIMARY KEY,
|
||||||
edit_default SMALLINT DEFAULT 0,
|
|
||||||
edit_access_id INT NOT NULL,
|
edit_access_id INT NOT NULL,
|
||||||
edit_user_id INT NOT NULL,
|
|
||||||
edit_access_right_id INT NOT NULL,
|
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_user_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
edit_access_right_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_default SMALLINT DEFAULT 0,
|
||||||
|
enabled SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -8,12 +8,13 @@
|
|||||||
-- DROP TABLE edit_group;
|
-- DROP TABLE edit_group;
|
||||||
CREATE TABLE edit_group (
|
CREATE TABLE edit_group (
|
||||||
edit_group_id SERIAL PRIMARY KEY,
|
edit_group_id SERIAL PRIMARY KEY,
|
||||||
name VARCHAR,
|
edit_scheme_id INT,
|
||||||
|
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_access_right_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
deleted SMALLINT DEFAULT 0,
|
deleted SMALLINT DEFAULT 0,
|
||||||
edit_scheme_id INT,
|
uid VARCHAR,
|
||||||
edit_access_right_id INT NOT NULL,
|
name VARCHAR,
|
||||||
additional_acl JSONB,
|
additional_acl JSONB
|
||||||
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
||||||
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
-- DROP TABLE edit_language;
|
-- DROP TABLE edit_language;
|
||||||
CREATE TABLE edit_language (
|
CREATE TABLE edit_language (
|
||||||
edit_language_id SERIAL PRIMARY KEY,
|
edit_language_id SERIAL PRIMARY KEY,
|
||||||
short_name VARCHAR,
|
|
||||||
long_name VARCHAR,
|
|
||||||
iso_name VARCHAR,
|
|
||||||
order_number INT,
|
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
lang_default SMALLINT NOT NULL DEFAULT 0
|
lang_default SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
long_name VARCHAR,
|
||||||
|
short_name VARCHAR,
|
||||||
|
iso_name VARCHAR,
|
||||||
|
order_number INT
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
-- DROP TABLE edit_log;
|
-- DROP TABLE edit_log;
|
||||||
CREATE TABLE edit_log (
|
CREATE TABLE edit_log (
|
||||||
edit_log_id SERIAL PRIMARY KEY,
|
edit_log_id SERIAL PRIMARY KEY,
|
||||||
|
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
||||||
|
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
||||||
username VARCHAR,
|
username VARCHAR,
|
||||||
password VARCHAR,
|
password VARCHAR,
|
||||||
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||||
@@ -26,7 +28,6 @@ CREATE TABLE edit_log (
|
|||||||
action_value VARCHAR,
|
action_value VARCHAR,
|
||||||
action_type VARCHAR,
|
action_type VARCHAR,
|
||||||
action_error VARCHAR,
|
action_error VARCHAR,
|
||||||
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
|
||||||
user_agent VARCHAR,
|
user_agent VARCHAR,
|
||||||
referer VARCHAR,
|
referer VARCHAR,
|
||||||
script_name VARCHAR,
|
script_name VARCHAR,
|
||||||
@@ -36,6 +37,5 @@ CREATE TABLE edit_log (
|
|||||||
http_accept VARCHAR,
|
http_accept VARCHAR,
|
||||||
http_accept_charset VARCHAR,
|
http_accept_charset VARCHAR,
|
||||||
http_accept_encoding VARCHAR,
|
http_accept_encoding VARCHAR,
|
||||||
session_id VARCHAR,
|
session_id VARCHAR
|
||||||
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE
|
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
12
4dev/database/table/edit_log_overflow.sql
Normal file
12
4dev/database/table/edit_log_overflow.sql
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
-- AUTHOR: Clemens Schwaighofer
|
||||||
|
-- DATE: 2020/1/28
|
||||||
|
-- DESCRIPTION:
|
||||||
|
-- edit log overflow table
|
||||||
|
-- this is the overflow table for partition
|
||||||
|
-- TABLE: edit_log_overflow
|
||||||
|
-- HISTORY:
|
||||||
|
|
||||||
|
-- DROP TABLE edit_log_overflow;
|
||||||
|
CREATE TABLE IF NOT EXISTS edit_log_overflow () INHERITS (edit_log);
|
||||||
|
ALTER TABLE edit_log_overflow ADD PRIMARY KEY (edit_log_id);
|
||||||
|
ALTER TABLE edit_log_overflow ADD CONSTRAINT edit_log_overflow_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL;
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
CREATE TABLE edit_page (
|
CREATE TABLE edit_page (
|
||||||
edit_page_id SERIAL PRIMARY KEY,
|
edit_page_id SERIAL PRIMARY KEY,
|
||||||
content_alias_edit_page_id INT, -- alias for page content, if the page content is defined on a different page, ege for ajax backend pages
|
content_alias_edit_page_id INT, -- alias for page content, if the page content is defined on a different page, ege for ajax backend pages
|
||||||
|
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
filename VARCHAR,
|
filename VARCHAR,
|
||||||
name VARCHAR UNIQUE,
|
name VARCHAR UNIQUE,
|
||||||
order_number INT NOT NULL,
|
order_number INT NOT NULL,
|
||||||
@@ -17,5 +18,5 @@ CREATE TABLE edit_page (
|
|||||||
popup SMALLINT NOT NULL DEFAULT 0,
|
popup SMALLINT NOT NULL DEFAULT 0,
|
||||||
popup_x SMALLINT,
|
popup_x SMALLINT,
|
||||||
popup_y SMALLINT,
|
popup_y SMALLINT,
|
||||||
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
hostname VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
-- DROP TABLE edit_page_access;
|
-- DROP TABLE edit_page_access;
|
||||||
CREATE TABLE edit_page_access (
|
CREATE TABLE edit_page_access (
|
||||||
edit_page_access_id SERIAL PRIMARY KEY,
|
edit_page_access_id SERIAL PRIMARY KEY,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
edit_group_id INT NOT NULL,
|
edit_group_id INT NOT NULL,
|
||||||
edit_page_id INT NOT NULL,
|
|
||||||
edit_access_right_id INT NOT NULL,
|
|
||||||
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_page_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
edit_access_right_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
enabled SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
10
4dev/database/table/edit_page_content.sql
Executable file → Normal file
10
4dev/database/table/edit_page_content.sql
Executable file → Normal file
@@ -10,11 +10,11 @@
|
|||||||
CREATE TABLE edit_page_content (
|
CREATE TABLE edit_page_content (
|
||||||
edit_page_content_id SERIAL PRIMARY KEY,
|
edit_page_content_id SERIAL PRIMARY KEY,
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_access_right_id INT NOT NULL,
|
edit_access_right_id INT NOT NULL,
|
||||||
name VARCHAR,
|
|
||||||
uid VARCHAR UNIQUE,
|
|
||||||
order_number INT NOT NULL,
|
|
||||||
online SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
uid VARCHAR UNIQUE,
|
||||||
|
name VARCHAR,
|
||||||
|
order_number INT NOT NULL,
|
||||||
|
online SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
-- DROP TABLE edit_page_menu_group;
|
-- DROP TABLE edit_page_menu_group;
|
||||||
CREATE TABLE edit_page_menu_group (
|
CREATE TABLE edit_page_menu_group (
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
edit_menu_group_id INT NOT NULL,
|
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_menu_group_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_menu_group_id) REFERENCES edit_menu_group (edit_menu_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (edit_menu_group_id) REFERENCES edit_menu_group (edit_menu_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
-- DROP TABLE edit_page_visible_group;
|
-- DROP TABLE edit_page_visible_group;
|
||||||
CREATE TABLE edit_page_visible_group (
|
CREATE TABLE edit_page_visible_group (
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
edit_visible_group_id INT NOT NULL,
|
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_visible_group_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_visible_group_id) REFERENCES edit_visible_group (edit_visible_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (edit_visible_group_id) REFERENCES edit_visible_group (edit_visible_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -8,10 +8,10 @@
|
|||||||
-- DROP TABLE edit_query_string;
|
-- DROP TABLE edit_query_string;
|
||||||
CREATE TABLE edit_query_string (
|
CREATE TABLE edit_query_string (
|
||||||
edit_query_string_id SERIAL PRIMARY KEY,
|
edit_query_string_id SERIAL PRIMARY KEY,
|
||||||
|
edit_page_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
value VARCHAR,
|
value VARCHAR,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
dynamic SMALLINT NOT NULL DEFAULT 0
|
||||||
dynamic SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
edit_page_id INT NOT NULL,
|
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,5 +7,6 @@
|
|||||||
|
|
||||||
-- DROP TABLE temp_files;
|
-- DROP TABLE temp_files;
|
||||||
CREATE TABLE temp_files (
|
CREATE TABLE temp_files (
|
||||||
filename VARCHAR
|
filename VARCHAR,
|
||||||
|
folder VARCHAR
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -9,34 +9,40 @@
|
|||||||
CREATE TABLE edit_user (
|
CREATE TABLE edit_user (
|
||||||
edit_user_id SERIAL PRIMARY KEY,
|
edit_user_id SERIAL PRIMARY KEY,
|
||||||
connect_edit_user_id INT, -- possible reference to other user
|
connect_edit_user_id INT, -- possible reference to other user
|
||||||
|
FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_language_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_language_id) REFERENCES edit_language (edit_language_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_group_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_scheme_id INT,
|
||||||
|
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
edit_access_right_id INT NOT NULL,
|
||||||
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
|
deleted SMALLINT NOT NULL DEFAULT 0,
|
||||||
username VARCHAR UNIQUE,
|
username VARCHAR UNIQUE,
|
||||||
password VARCHAR,
|
password VARCHAR,
|
||||||
first_name VARCHAR,
|
first_name VARCHAR,
|
||||||
last_name VARCHAR,
|
last_name VARCHAR,
|
||||||
first_name_furigana VARCHAR,
|
first_name_furigana VARCHAR,
|
||||||
last_name_furigana VARCHAR,
|
last_name_furigana VARCHAR,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
deleted SMALLINT NOT NULL DEFAULT 0,
|
|
||||||
debug SMALLINT NOT NULL DEFAULT 0,
|
debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
db_debug SMALLINT NOT NULL DEFAULT 0,
|
db_debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
email VARCHAR,
|
email VARCHAR,
|
||||||
protected SMALLINT NOT NULL DEFAULT 0,
|
protected SMALLINT NOT NULL DEFAULT 0,
|
||||||
admin SMALLINT NOT NULL DEFAULT 0,
|
admin SMALLINT NOT NULL DEFAULT 0,
|
||||||
edit_language_id INT NOT NULL,
|
last_login TIMESTAMP WITHOUT TIME ZONE,
|
||||||
edit_group_id INT NOT NULL,
|
login_error_count INT DEFAULT 0,
|
||||||
edit_scheme_id INT,
|
|
||||||
edit_access_right_id INT NOT NULL,
|
|
||||||
login_error_count INT,
|
|
||||||
login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
|
login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
|
||||||
login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
|
login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
|
||||||
strict SMALLINT DEFAULT 0,
|
strict SMALLINT DEFAULT 0,
|
||||||
locked SMALLINT DEFAULT 0,
|
locked SMALLINT DEFAULT 0,
|
||||||
password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed
|
password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed
|
||||||
password_change_interval INTERVAL, -- null if no change is needed, or d/m/y time interval
|
password_change_interval INTERVAL, -- null if no change is needed, or d/m/y time interval
|
||||||
additional_acl JSONB, -- additional ACL as JSON string (can be set by other pages)
|
password_reset_time TIMESTAMP WITHOUT TIME ZONE, -- when the password reset was requested
|
||||||
FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
password_reset_uid VARCHAR, -- the uid to access the password reset page
|
||||||
FOREIGN KEY (edit_language_id) REFERENCES edit_language (edit_language_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
||||||
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
||||||
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
||||||
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
COMMENT ON COLUMN edit_user.password_reset_time IS 'When the password reset was requested. For reset page uid valid check';
|
||||||
|
COMMENT ON COLUMN edit_user.password_reset_uid IS 'Password reset page uid';
|
||||||
|
|||||||
@@ -11,7 +11,3 @@ CREATE TABLE edit_visible_group (
|
|||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
flag VARCHAR
|
flag VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
DELETE FROM edit_visible_group;
|
|
||||||
INSERT INTO edit_visible_group (name, flag) VALUES ('Main Menu', 'main');
|
|
||||||
INSERT INTO edit_visible_group (name, flag) VALUES ('Data popup Menu', 'datapopup');
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
DROP TRIGGER trg_edit_access ON edit_access;
|
DROP TRIGGER IF EXISTS trg_edit_access ON edit_access;
|
||||||
CREATE TRIGGER trg_edit_access
|
CREATE TRIGGER trg_edit_access
|
||||||
BEFORE INSERT OR UPDATE ON edit_access
|
BEFORE INSERT OR UPDATE ON edit_access
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|
||||||
DROP TRIGGER trg_set_edit_access_uid ON edit_access;
|
DROP TRIGGER IF EXISTS trg_set_edit_access_uid ON edit_access;
|
||||||
CREATE TRIGGER trg_set_edit_access_uid
|
CREATE TRIGGER trg_set_edit_access_uid
|
||||||
BEFORE INSERT OR UPDATE ON edit_access
|
BEFORE INSERT OR UPDATE ON edit_access
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_access_data ON edit_access_data;
|
DROP TRIGGER IF EXISTS trg_edit_access_data ON edit_access_data;
|
||||||
CREATE TRIGGER trg_edit_access_data
|
CREATE TRIGGER trg_edit_access_data
|
||||||
BEFORE INSERT OR UPDATE ON edit_access_data
|
BEFORE INSERT OR UPDATE ON edit_access_data
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_access_right ON edit_access_right;
|
DROP TRIGGER IF EXISTS trg_edit_access_right ON edit_access_right;
|
||||||
CREATE TRIGGER trg_edit_access_right
|
CREATE TRIGGER trg_edit_access_right
|
||||||
BEFORE INSERT OR UPDATE ON edit_access_right
|
BEFORE INSERT OR UPDATE ON edit_access_right
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_access_user ON edit_access_user;
|
DROP TRIGGER IF EXISTS trg_edit_access_user ON edit_access_user;
|
||||||
CREATE TRIGGER trg_edit_access_user
|
CREATE TRIGGER trg_edit_access_user
|
||||||
BEFORE INSERT OR UPDATE ON edit_access_user
|
BEFORE INSERT OR UPDATE ON edit_access_user
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
DROP TRIGGER trg_edit_group ON edit_group;
|
DROP TRIGGER IF EXISTS trg_edit_group ON edit_group;
|
||||||
CREATE TRIGGER trg_edit_group
|
CREATE TRIGGER trg_edit_group
|
||||||
BEFORE INSERT OR UPDATE ON edit_group
|
BEFORE INSERT OR UPDATE ON edit_group
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS trg_set_edit_group_uid ON edit_group;
|
||||||
|
CREATE TRIGGER trg_set_edit_group_uid
|
||||||
|
BEFORE INSERT OR UPDATE ON edit_group
|
||||||
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_group_uid();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_language ON edit_language;
|
DROP TRIGGER IF EXISTS trg_edit_language ON edit_language;
|
||||||
CREATE TRIGGER trg_edit_language
|
CREATE TRIGGER trg_edit_language
|
||||||
BEFORE INSERT OR UPDATE ON edit_language
|
BEFORE INSERT OR UPDATE ON edit_language
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
DROP TRIGGER trg_edit_log ON edit_log;
|
DROP TRIGGER IF EXISTS trg_edit_log ON edit_log;
|
||||||
CREATE TRIGGER trg_edit_log
|
CREATE TRIGGER trg_edit_log
|
||||||
BEFORE INSERT OR UPDATE ON edit_log
|
BEFORE INSERT OR UPDATE ON edit_log
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|
||||||
DROP TRIGGER trg_edit_log_insert_partition ON edit_log;
|
DROP TRIGGER IF EXISTS trg_edit_log_insert_partition ON edit_log;
|
||||||
CREATE TRIGGER trg_edit_log_insert_partition
|
CREATE TRIGGER trg_edit_log_insert_partition
|
||||||
BEFORE INSERT OR UPDATE ON edit_log
|
BEFORE INSERT OR UPDATE ON edit_log
|
||||||
FOR EACH ROW EXECUTE PROCEDURE edit_log_insert_trigger();
|
FOR EACH ROW EXECUTE PROCEDURE edit_log_insert_trigger();
|
||||||
|
|||||||
4
4dev/database/trigger/trg_edit_log_overflow.sql
Normal file
4
4dev/database/trigger/trg_edit_log_overflow.sql
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
DROP TRIGGER IF EXISTS trg_edit_log_overflow ON edit_log_overflow;
|
||||||
|
CREATE TRIGGER trg_edit_log_overflow
|
||||||
|
BEFORE INSERT OR UPDATE ON edit_log_overflow
|
||||||
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_menu_group ON edit_menu_group;
|
DROP TRIGGER IF EXISTS trg_edit_menu_group ON edit_menu_group;
|
||||||
CREATE TRIGGER trg_edit_menu_group
|
CREATE TRIGGER trg_edit_menu_group
|
||||||
BEFORE INSERT OR UPDATE ON edit_menu_group
|
BEFORE INSERT OR UPDATE ON edit_menu_group
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_page ON edit_page;
|
DROP TRIGGER IF EXISTS trg_edit_page ON edit_page;
|
||||||
CREATE TRIGGER trg_edit_page
|
CREATE TRIGGER trg_edit_page
|
||||||
BEFORE INSERT OR UPDATE ON edit_page
|
BEFORE INSERT OR UPDATE ON edit_page
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_page_access ON edit_page_access;
|
DROP TRIGGER IF EXISTS trg_edit_page_access ON edit_page_access;
|
||||||
CREATE TRIGGER trg_edit_page_access
|
CREATE TRIGGER trg_edit_page_access
|
||||||
BEFORE INSERT OR UPDATE ON edit_page_access
|
BEFORE INSERT OR UPDATE ON edit_page_access
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
2
4dev/database/trigger/trg_edit_page_content.sql
Executable file → Normal file
2
4dev/database/trigger/trg_edit_page_content.sql
Executable file → Normal file
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_page_content ON edit_page_content;
|
DROP TRIGGER IF EXISTS trg_edit_page_content ON edit_page_content;
|
||||||
CREATE TRIGGER trg_edit_page_content
|
CREATE TRIGGER trg_edit_page_content
|
||||||
BEFORE INSERT OR UPDATE ON edit_page_content
|
BEFORE INSERT OR UPDATE ON edit_page_content
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_query_string ON edit_query_string;
|
DROP TRIGGER IF EXISTS trg_edit_query_string ON edit_query_string;
|
||||||
CREATE TRIGGER trg_edit_query_string
|
CREATE TRIGGER trg_edit_query_string
|
||||||
BEFORE INSERT OR UPDATE ON edit_query_string
|
BEFORE INSERT OR UPDATE ON edit_query_string
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_scheme ON edit_scheme;
|
DROP TRIGGER IF EXISTS trg_edit_scheme ON edit_scheme;
|
||||||
CREATE TRIGGER trg_edit_scheme
|
CREATE TRIGGER trg_edit_scheme
|
||||||
BEFORE INSERT OR UPDATE ON edit_scheme
|
BEFORE INSERT OR UPDATE ON edit_scheme
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_user ON edit_user;
|
DROP TRIGGER IF EXISTS trg_edit_user ON edit_user;
|
||||||
CREATE TRIGGER trg_edit_user
|
CREATE TRIGGER trg_edit_user
|
||||||
BEFORE INSERT OR UPDATE ON edit_user
|
BEFORE INSERT OR UPDATE ON edit_user
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
DROP TRIGGER trg_edit_visible_group ON edit_visible_group;
|
DROP TRIGGER IF EXISTS trg_edit_visible_group ON edit_visible_group;
|
||||||
CREATE TRIGGER trg_edit_visible_group
|
CREATE TRIGGER trg_edit_visible_group
|
||||||
BEFORE INSERT OR UPDATE ON edit_visible_group
|
BEFORE INSERT OR UPDATE ON edit_visible_group
|
||||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
||||||
|
|||||||
4
4dev/database/update/edit_tables_missing_columns.sql
Executable file → Normal file
4
4dev/database/update/edit_tables_missing_columns.sql
Executable file → Normal file
@@ -8,7 +8,7 @@ ALTER TABLE edit_access ADD protected SMALLINT DEFAULT 0;
|
|||||||
ALTER TABLE edit_group ADD uid VARCHAR;
|
ALTER TABLE edit_group ADD uid VARCHAR;
|
||||||
ALTER TABLE edit_group ADD deleted SMALLINT DEFAULT 0;
|
ALTER TABLE edit_group ADD deleted SMALLINT DEFAULT 0;
|
||||||
|
|
||||||
ALTER TABLE temp_files ADD folder varchar;
|
ALTER TABLE temp_files ADD folder VARCHAR;
|
||||||
ALTER TABLE edit_page ADD hostname varchar;
|
ALTER TABLE edit_page ADD hostname VARCHAR;
|
||||||
|
|
||||||
ALTER TABLE edit_user ADD deleted SMALLINT DEFAULT 0;
|
ALTER TABLE edit_user ADD deleted SMALLINT DEFAULT 0;
|
||||||
|
|||||||
0
4dev/database/update/edit_update_missing_cuid.sql
Executable file → Normal file
0
4dev/database/update/edit_update_missing_cuid.sql
Executable file → Normal file
@@ -27,3 +27,9 @@ msgstr "Month"
|
|||||||
|
|
||||||
msgid "INPUT TEST"
|
msgid "INPUT TEST"
|
||||||
msgstr "OUTPUT TEST EN"
|
msgstr "OUTPUT TEST EN"
|
||||||
|
|
||||||
|
msgid "I should be translated"
|
||||||
|
msgstr "I should be translated: I WAS TRANSLATED"
|
||||||
|
|
||||||
|
msgid "Are we translated?"
|
||||||
|
msgstr "Are we translated? Yes, we are!"
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ TARGET_HOST_WEB="<user>@<host>";
|
|||||||
TMP_DIR=$LOCAL_BASE_DIR"/4dev/tmp/";
|
TMP_DIR=$LOCAL_BASE_DIR"/4dev/tmp/";
|
||||||
tmpf_web=$TMP_DIR"sync.exclude.tmp";
|
tmpf_web=$TMP_DIR"sync.exclude.tmp";
|
||||||
|
|
||||||
|
# if vendor be sure group folder is +x
|
||||||
|
chmod -R ug+rX ${LOCAL_DIR}/vender/
|
||||||
|
|
||||||
# for web (ika)
|
# for web (ika)
|
||||||
rm -f $tmpf_web;
|
rm -f $tmpf_web;
|
||||||
echo ".*.swp" >> $tmpf_web;
|
echo ".*.swp" >> $tmpf_web;
|
||||||
@@ -35,20 +38,19 @@ cat $tmpf_web;
|
|||||||
|
|
||||||
echo "($1) Syncing from $LOCAL_DIR/* to $TARGET_HOST_WEB:$REMOTE_WEB";
|
echo "($1) Syncing from $LOCAL_DIR/* to $TARGET_HOST_WEB:$REMOTE_WEB";
|
||||||
echo "You hav 5 seconds to abort (<ctrl> + c)";
|
echo "You hav 5 seconds to abort (<ctrl> + c)";
|
||||||
#c=0;until [ $c -eq 10 ];do echo -n "#"; sleep 1; c=`expr $c + 1`;done;
|
|
||||||
for ((i=5;i>=1;i--));
|
for ((i=5;i>=1;i--));
|
||||||
do
|
do
|
||||||
echo -n $i" ";
|
echo -n $i" ";
|
||||||
sleep 1;
|
sleep 1;
|
||||||
done;
|
done;
|
||||||
|
|
||||||
if [ "$1" = "live" ];
|
if [ "$1" = "live" ];
|
||||||
then
|
then
|
||||||
# ika sync
|
# live sync
|
||||||
rsync -Plzvrupt --stats --include ".htaccess" --exclude-from=$tmpf_web --delete -e ssh $LOCAL_DIR/* $TARGET_HOST_WEB:$REMOTE_WEB
|
rsync -Plzvrupt --stats --include ".htaccess" --exclude-from=$tmpf_web --delete -e ssh $LOCAL_DIR/* $TARGET_HOST_WEB:$REMOTE_WEB
|
||||||
else
|
else
|
||||||
# ika sync
|
# test sync
|
||||||
rsync -n -Plzvrupt --stats --include ".htaccess" --exclude-from=$tmpf_web --delete -e ssh $LOCAL_DIR/* $TARGET_HOST_WEB:$REMOTE_WEB
|
rsync -n -Plzvrupt --stats --include ".htaccess" --exclude-from=$tmpf_web --delete -e ssh $LOCAL_DIR/* $TARGET_HOST_WEB:$REMOTE_WEB
|
||||||
fi;
|
fi;
|
||||||
|
|
||||||
# END
|
# END
|
||||||
|
|||||||
373
4dev/tests/CoreLibsCheckEmailTest.php
Normal file
373
4dev/tests/CoreLibsCheckEmailTest.php
Normal file
@@ -0,0 +1,373 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace tests;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented class
|
||||||
|
* @testdox CoreLibs\Check\Email method tests
|
||||||
|
*/
|
||||||
|
final class CoreLibsCheckEmailTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Array position to regex
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function emailRegexProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'get email regex invalid -1, will be 0' => [
|
||||||
|
-1,
|
||||||
|
"^[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~][A-Za-z0-9!#$%:\(\)&'*+\-\/=?^_`{|}~\.]{0,63}@"
|
||||||
|
. "[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*\.([a-zA-Z]{2,}){1}$"
|
||||||
|
],
|
||||||
|
'get email regex invalid 10, will be 0' => [
|
||||||
|
10,
|
||||||
|
"^[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~][A-Za-z0-9!#$%:\(\)&'*+\-\/=?^_`{|}~\.]{0,63}@"
|
||||||
|
. "[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*\.([a-zA-Z]{2,}){1}$"
|
||||||
|
],
|
||||||
|
'get email regex valid 1, will be 1' => [
|
||||||
|
1,
|
||||||
|
"@(.*)@(.*)"
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test regex level return
|
||||||
|
*
|
||||||
|
* @dataProvider emailRegexProvider
|
||||||
|
* @testdox Email::getEmailRegex $input will be $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param int $input
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetEmailRegexReturn(int $input, string $expected): void
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::getEmailRegex($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* provides data for emailCheckProvider and emailCheckFullProvider
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function emailCheckList(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'valid email' => ['test@test.com', true, []],
|
||||||
|
'invalid empty email' => ['', false, [0, 2, 3, 4, 5]],
|
||||||
|
'invalid email' => ['-@-', false, [0, 3, 4, 5]],
|
||||||
|
'invalid email leading dot' => ['.test@test.com', false, [0, 2]],
|
||||||
|
'invalid email invalid domain' => ['test@t_est.com', false, [0, 3, 4]],
|
||||||
|
'invalid email double @' => ['test@@test.com', false, [0, 1]],
|
||||||
|
'invalid email double dot' => ['test@test..com', false, [0, 3, 6]],
|
||||||
|
'invalid email end with dot' => ['test@test.', false, [0, 3, 5, 7]],
|
||||||
|
'invalid email bad top level' => ['test@test.j', false, [0, 3, 5]],
|
||||||
|
'invalid email double @ and double dot' => ['test@@test..com', false, [0, 1, 3, 6]],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Valids or not valid email address
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function emailCheckProvider(): array
|
||||||
|
{
|
||||||
|
$list = [];
|
||||||
|
foreach ($this->emailCheckList() as $key => $data) {
|
||||||
|
$list[$key] = [$data[0], $data[1]];
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider emailCheckProvider
|
||||||
|
* @testdox Email::checkEmail $input will be $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCheckEmail(string $input, bool $expected): void
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::checkEmail($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this is like emailCheckProvider but it has the full detail errors
|
||||||
|
* All errors should be tetsed in testGetEmailRegexErrorMessage
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function emailCheckFullProvider(): array
|
||||||
|
{
|
||||||
|
$list = [];
|
||||||
|
foreach ($this->emailCheckList() as $key => $data) {
|
||||||
|
$list[$key] = [$data[0], $data[2]];
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider emailCheckFullProvider
|
||||||
|
* @testdox Email::checkEmailFull $input will be $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $input
|
||||||
|
* @param array $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testCheckEmailFull(string $input, array $expected): void
|
||||||
|
{
|
||||||
|
$this->assertEqualsCanonicalizing(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::checkEmailFull($input, true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* error data returned for each error position
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function emailRegexErrorProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'error 0 will return general' => [
|
||||||
|
0,
|
||||||
|
[
|
||||||
|
'error' => 0,
|
||||||
|
'message' => 'Invalid email address',
|
||||||
|
'regex' => "^[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~][A-Za-z0-9!#$%:\(\)&'*+\-\/=?^_`{|}~\.]{0,63}@"
|
||||||
|
. "[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]{1,})*\.([a-zA-Z]{2,}){1}$"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 1 will return double @ error' => [
|
||||||
|
1,
|
||||||
|
[
|
||||||
|
'error' => 1,
|
||||||
|
'message' => 'Double @ mark in email address',
|
||||||
|
'regex' => "@(.*)@(.*)"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 2 will be invalid before @' => [
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
'error' => 2,
|
||||||
|
'message' => 'Invalid email part before @ sign',
|
||||||
|
'regex' => "^[A-Za-z0-9!#$%&'*+\-\/=?^_`{|}~][A-Za-z0-9!#$%:\(\)&'*+\-\/=?^_`{|}~\.]{0,63}@"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 3 will be invalid domain and top level' => [
|
||||||
|
3,
|
||||||
|
[
|
||||||
|
'error' => 3,
|
||||||
|
'message' => 'Invalid domain part after @ sign',
|
||||||
|
'regex' => "@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,})*\.([a-zA-Z]{2,}){1}$"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 4 will be invalid domain' => [
|
||||||
|
4,
|
||||||
|
[
|
||||||
|
'error' => 4,
|
||||||
|
'message' => 'Invalid domain name part',
|
||||||
|
'regex' => "@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{1,})*\."
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 5 will be invalid domain top level only' => [
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
'error' => 5,
|
||||||
|
'message' => 'Wrong domain top level part',
|
||||||
|
'regex' => "\.([a-zA-Z]{2,6}){1}$"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 6 will be domain double dot' => [
|
||||||
|
6,
|
||||||
|
[
|
||||||
|
'error' => 6,
|
||||||
|
'message' => 'Double consecutive dots in domain name (..)',
|
||||||
|
'regex' => "@(.*)\.{2,}"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'error 7 will domain ends with dot' => [
|
||||||
|
7,
|
||||||
|
[
|
||||||
|
'error' => 7,
|
||||||
|
'message' => 'Domain ends with a dot or is missing top level part',
|
||||||
|
'regex' => "@.*\.$"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider emailRegexErrorProvider
|
||||||
|
* @testdox Email::getEmailRegexErrorMessage $input will be $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param integer $input
|
||||||
|
* @param array $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetEmailRegexErrorMessage(int $input, array $expected): void
|
||||||
|
{
|
||||||
|
$this->assertEqualsCanonicalizing(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::getEmailRegexErrorMessage($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This holds all email type checks normal and short
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function emailTypeProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['test@test.com', 'pc_html', 'pc'],
|
||||||
|
['test@docomo.ne.jp', 'keitai_docomo', 'docomo'],
|
||||||
|
['test@softbank.ne.jp', 'keitai_softbank', 'softbank'],
|
||||||
|
['test@i.softbank.ne.jp', 'smartphone_softbank_iphone', 'iphone'],
|
||||||
|
// TODO: add more test emails here
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns only normal email type checks
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function emailTypeProviderLong(): array
|
||||||
|
{
|
||||||
|
$list = [];
|
||||||
|
foreach ($this->emailTypeProvider() as $set) {
|
||||||
|
$list['email ' . $set[0] . ' is valid and matches normal ' . $set[1]] = [$set[0], $set[1]];
|
||||||
|
}
|
||||||
|
$list['email is empty and not valid normal'] = ['', 'invalid'];
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* only short email type list
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function emailTypeProviderShort(): array
|
||||||
|
{
|
||||||
|
$list = [];
|
||||||
|
foreach ($this->emailTypeProvider() as $set) {
|
||||||
|
$list['email ' . $set[0] . ' is valid and matches short ' . $set[2]] = [$set[0], $set[2]];
|
||||||
|
}
|
||||||
|
$list['email is empty and not valid short'] = ['', 'invalid'];
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider emailTypeProviderLong
|
||||||
|
* @testdox Email::getEmailType $input will be normal $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $input
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetEmailTypeNormal(string $input, string $expected)
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::getEmailType($input, false)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider emailTypeProviderShort
|
||||||
|
* @testdox Email::getEmailType $input will be short $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $input
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetEmailTypeShort(string $input, string $expected)
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::getEmailType($input, true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function emailProviderTypeLongToShort(): array
|
||||||
|
{
|
||||||
|
$mobile_email_type_short = [
|
||||||
|
'keitai_docomo' => 'docomo',
|
||||||
|
'keitai_kddi_ezweb' => 'kddi',
|
||||||
|
'keitai_kddi' => 'kddi',
|
||||||
|
'keitai_kddi_tu-ka' => 'kddi',
|
||||||
|
'keitai_kddi_sky' => 'kddi',
|
||||||
|
'keitai_softbank' => 'softbank',
|
||||||
|
'smartphone_softbank_iphone' => 'iphone',
|
||||||
|
'keitai_softbank_disney' => 'softbank',
|
||||||
|
'keitai_softbank_vodafone' => 'softbank',
|
||||||
|
'keitai_softbank_j-phone' => 'softbank',
|
||||||
|
'keitai_willcom' => 'willcom',
|
||||||
|
'keitai_willcom_pdx' => 'willcom',
|
||||||
|
'keitai_willcom_bandai' => 'willcom',
|
||||||
|
'keitai_willcom_pipopa' => 'willcom',
|
||||||
|
'keitai_willcom_ymobile' => 'willcom',
|
||||||
|
'keitai_willcom_emnet' => 'willcom',
|
||||||
|
'pc_html' => 'pc',
|
||||||
|
];
|
||||||
|
$list = [];
|
||||||
|
// use the static one
|
||||||
|
foreach ($mobile_email_type_short as $long => $short) {
|
||||||
|
$list[$long . ' matches to ' . $short] = [$long, $short];
|
||||||
|
}
|
||||||
|
// add invalid check
|
||||||
|
$list['Not found will be bool false'] = ['invalid', false];
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider emailProviderTypeLongToShort
|
||||||
|
* @testdox Email::getShortEmailType $input will be $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param string $input
|
||||||
|
* @param string|bool $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetShortEmailType(string $input, $expected)
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\Email::getShortEmailType($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
89
4dev/tests/CoreLibsCheckFileTest.php
Normal file
89
4dev/tests/CoreLibsCheckFileTest.php
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace tests;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented class
|
||||||
|
* @testdox CoreLibs\Check\File method tests
|
||||||
|
*/
|
||||||
|
final class CoreLibsCheckFileTest extends TestCase
|
||||||
|
{
|
||||||
|
/** @var array<mixed> */
|
||||||
|
private $files = [];
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
// write a dummy files for testing
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function tearDown(): void
|
||||||
|
{
|
||||||
|
// unlink files
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main file list + data provider
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function filesList(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['filename.txt', 'txt', 5]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function filesExtensionProvider(): array
|
||||||
|
{
|
||||||
|
$list = [];
|
||||||
|
foreach ($this->filesList as $row) {
|
||||||
|
$list[$row[0] . ' must be extension ' . $row[1]] = [$row[0], $row[1]];
|
||||||
|
}
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @#dataProvider filesExtensionProvider
|
||||||
|
* @#testdox File::getFilenameEnding Input $input must be $expected
|
||||||
|
* //string $input, string $expected
|
||||||
|
*
|
||||||
|
* @param string $input
|
||||||
|
* @param string $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetFilenameEnding(): void
|
||||||
|
{
|
||||||
|
// getFilenameEnding
|
||||||
|
/* $this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Check\File::getFilenameEnding($input)
|
||||||
|
); */
|
||||||
|
$this->assertTrue(true, 'This should already work.');
|
||||||
|
$this->markTestIncomplete(
|
||||||
|
'testGetFilenameEnding has not been implemented yet.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
* // string $input, string $expected
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetLinesFromFile(): void
|
||||||
|
{
|
||||||
|
// getLinesFromFile
|
||||||
|
$this->assertTrue(true, 'This should already work.');
|
||||||
|
$this->markTestIncomplete(
|
||||||
|
'testGetLinesFromFile has not been implemented yet.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
134
4dev/tests/CoreLibsConvertMathTest.php
Normal file
134
4dev/tests/CoreLibsConvertMathTest.php
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace tests;
|
||||||
|
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented class
|
||||||
|
* @testdox CoreLibs\Convert\Math method tests
|
||||||
|
*/
|
||||||
|
final class CoreLibsConvertMathTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function fceilProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'5.5 must be 6' => [5.5, 6],
|
||||||
|
'5.1234567890 with 5 must be 6' => [5.1234567890, 6],
|
||||||
|
'6 must be 6' => [6, 6]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider fceilProvider
|
||||||
|
* @testdox Math::fceil: Input $input must be $expected
|
||||||
|
*
|
||||||
|
* @param float $input
|
||||||
|
* @param int $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testMathFceilValue(float $input, int $expected): void
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Convert\Math::fceil($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function floorProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'5123456 with -3 must be 5123000' => [5123456, -3, 5123000],
|
||||||
|
'5123456 with -10 must be 5000000' => [5123456, -10, 5000000]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider floorProvider
|
||||||
|
* @testdox Math::floor: Input $input with cutoff $cutoff must be $expected
|
||||||
|
*
|
||||||
|
* @param int $input
|
||||||
|
* @param int $cutoff
|
||||||
|
* @param int $expected
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testMathFloorValue(int $input, int $cutoff, int $expected): void
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Convert\Math::floorp($input, $cutoff)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
public function initNumericProvider(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'5 must be 5' => [5, 5, 'int'],
|
||||||
|
'5.123 must be 5.123' => [5.123, 5.123, 'float'],
|
||||||
|
"'5' must be 5" => ['5', 5, 'string'],
|
||||||
|
"'5.123' must be 5.123" => ['5.123', 5.123, 'string'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @dataProvider initNumericProvider
|
||||||
|
* @testdox Math::initNumeric: Input $info $input must match $expected [$_dataName]
|
||||||
|
*
|
||||||
|
* @param int|float|string $input
|
||||||
|
* @param float $expected
|
||||||
|
* @param string $info
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testMathInitNumericValue($input, float $expected, string $info): void
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Convert\Math::initNumeric($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A testWith sample
|
||||||
|
*
|
||||||
|
* @testdox Math::initNumeric: alternate tests $input => $expected ($info) [$_dataName]
|
||||||
|
* @testWith [123.123, 123.123, "float"]
|
||||||
|
* ["123.123", 123.123, "string"]
|
||||||
|
*
|
||||||
|
* @param int|float|string $input
|
||||||
|
* @param float $expected
|
||||||
|
* @param string $info
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testMathInitNumericValueAlt($input, float $expected, string $info): void
|
||||||
|
{
|
||||||
|
$this->assertEquals(
|
||||||
|
$expected,
|
||||||
|
\CoreLibs\Convert\Math::initNumeric($input)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// __END__
|
||||||
18
README.md
18
README.md
@@ -1,5 +1,13 @@
|
|||||||
# PHP Core Library
|
# PHP Core Library
|
||||||
|
|
||||||
|
## Code Standard
|
||||||
|
|
||||||
|
* Uses PSR-12
|
||||||
|
* tab indent instead of 4 spaces indent
|
||||||
|
* Warning at 120 character length, error at 240 character length
|
||||||
|
|
||||||
|
## General information
|
||||||
|
|
||||||
Base PHP class files to setup any project
|
Base PHP class files to setup any project
|
||||||
* login
|
* login
|
||||||
* database wrapper
|
* database wrapper
|
||||||
@@ -25,3 +33,13 @@ last tested PHP 5.6 and PHP 7.0
|
|||||||
### namespace
|
### namespace
|
||||||
|
|
||||||
The new namespace branch. This is the development area for the master branch
|
The new namespace branch. This is the development area for the master branch
|
||||||
|
|
||||||
|
## Static checks
|
||||||
|
|
||||||
|
With phpstan
|
||||||
|
`phpstan`
|
||||||
|
|
||||||
|
With phan
|
||||||
|
`phan --progress-bar -C --analyze-twice`
|
||||||
|
|
||||||
|
pslam is setup but not configured
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
<?php
|
<?php // phpcs:ignore PSR1.Files.SideEffects
|
||||||
|
|
||||||
// Boostrap file for PHPstand
|
// Boostrap file for PHPstand
|
||||||
// sets the _SERVER['HTTP_HOST'] var so we can have DB detection
|
// sets the _SERVER['HTTP_HOST'] var so we can have DB detection
|
||||||
$_SERVER['HTTP_HOST'] = 'soba.tokyo.tequila.jp';
|
$_SERVER['HTTP_HOST'] = 'soba.tokyo.tequila.jp';
|
||||||
|
// so www/includes/edit_base.php works
|
||||||
|
require_once('www/lib/Smarty/SmartyBC.class.php');
|
||||||
|
// for whatever reason it does not load that from the confing.master.php
|
||||||
|
// for includes/admin_header.php
|
||||||
|
define('BASE_NAME', '');
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
52
phpstan.neon
52
phpstan.neon
@@ -2,34 +2,34 @@
|
|||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
tmpDir: /tmp/phpstan-corelibs
|
tmpDir: /tmp/phpstan-corelibs
|
||||||
level: 1
|
level: 8 # max is now 9
|
||||||
paths:
|
paths:
|
||||||
- %currentWorkingDirectory%/www
|
- %currentWorkingDirectory%/www
|
||||||
#bootstrap: %currentWorkingDirectory%/phpstan-bootstrap.php
|
bootstrapFiles:
|
||||||
#bootstrap: phpstan-bootstrap.php
|
|
||||||
autoload_directories:
|
|
||||||
autoload_files:
|
|
||||||
- %currentWorkingDirectory%/phpstan-bootstrap.php
|
- %currentWorkingDirectory%/phpstan-bootstrap.php
|
||||||
|
# - %currentWorkingDirectory%/www/lib/autoloader.php
|
||||||
|
- %currentWorkingDirectory%/www/vendor/autoload.php
|
||||||
|
scanDirectories:
|
||||||
|
- www/lib/Smarty
|
||||||
|
scanFiles:
|
||||||
|
- www/configs/config.php
|
||||||
- www/configs/config.master.php
|
- www/configs/config.master.php
|
||||||
- www/lib/autoloader.php
|
# if composer.json autoloader defined, this is not needed
|
||||||
|
# - www/lib/autoloader.php
|
||||||
- www/vendor/autoload.php
|
- www/vendor/autoload.php
|
||||||
excludes_analyse:
|
- www/lib/Smarty/Autoloader.php
|
||||||
# no check admin
|
excludePaths:
|
||||||
- www/admin/qq_file_upload_front.php
|
# do not check old qq file uploader tests
|
||||||
- www/admin/qq_file_upload_ajax.php
|
- www/admin/qq_file_upload_*.php
|
||||||
|
# ignore all test files
|
||||||
|
- www/admin/class_test*php
|
||||||
|
- www/admin/error_test.php
|
||||||
# admin synlink files
|
# admin synlink files
|
||||||
- www/admin/edit_access.php
|
- www/admin/edit_*.php
|
||||||
- www/admin/edit_groups.php
|
|
||||||
- www/admin/edit_languages.php
|
|
||||||
- www/admin/edit_menu_group.php
|
|
||||||
- www/admin/edit_order.php
|
|
||||||
- www/admin/edit_pages.php
|
|
||||||
- www/admin/edit_schemes.php
|
|
||||||
- www/admin/edit_users.php
|
|
||||||
- www/admin/edit_visible_group.php
|
|
||||||
# ignore admin header stuff
|
# ignore admin header stuff
|
||||||
- www/includes/admin_header.php # ignore the admin include stuff
|
# - www/includes/admin_header.php # ignore the admin include stuff
|
||||||
- www/includes/admin_footer.php # ignore the admin include stuff
|
- www/includes/admin_footer.php # ignore the admin include stuff
|
||||||
|
# deprecated files
|
||||||
- www/includes/admin_set_paths.php # ignore the admin include stuff
|
- www/includes/admin_set_paths.php # ignore the admin include stuff
|
||||||
- www/includes/admin_smarty.php # ignore the admin include stuff
|
- www/includes/admin_smarty.php # ignore the admin include stuff
|
||||||
# folders with data no check needed
|
# folders with data no check needed
|
||||||
@@ -38,14 +38,18 @@ parameters:
|
|||||||
- www/log
|
- www/log
|
||||||
- www/media
|
- www/media
|
||||||
- www/tmp
|
- www/tmp
|
||||||
- www/lib/pChart
|
# external libs are not checked
|
||||||
- www/lib/pChart2.1.4
|
|
||||||
- www/lib/Smarty/
|
- www/lib/Smarty/
|
||||||
- www/lib/smarty-3.1.30/
|
- www/lib/smarty-*/
|
||||||
# ignore composer
|
# ignore composer
|
||||||
- www/vendor
|
- www/vendor
|
||||||
# ignore errores with
|
# ignore errores with
|
||||||
# ignoreErrors:
|
ignoreErrors:
|
||||||
|
# this is ignored for now
|
||||||
|
# - '#Expression in empty\(\) is always falsy.#'
|
||||||
|
# -
|
||||||
|
# message: '#Reflection error: [a-zA-Z0-9\\_]+ not found.#'
|
||||||
|
# path: www/includes/edit_base.php
|
||||||
#- 'error regex'
|
#- 'error regex'
|
||||||
#-
|
#-
|
||||||
# message: 'error regex'
|
# message: 'error regex'
|
||||||
|
|||||||
6
phpunit.xml
Normal file
6
phpunit.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<phpunit
|
||||||
|
cacheResultFile="/tmp/phpunit-corelibs.result.cache"
|
||||||
|
colors="true"
|
||||||
|
verbose="true"
|
||||||
|
>
|
||||||
|
</phpunit>
|
||||||
54
www/admin/class_test.admin.backend.php
Normal file
54
www/admin/class_test.admin.backend.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', true);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// override ECHO ALL FALSE
|
||||||
|
$ECHO_ALL = true;
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-admin';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$backend = new CoreLibs\Admin\Backend(DB_CONFIG);
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: ADMIN BACKEND</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// set acl, from eg login acl
|
||||||
|
print "SETACL[]: " . $backend->setACL([]) . "<br>";
|
||||||
|
print "ADBEDITLOG: " . $backend->adbEditLog('CLASSTEST-ADMIN', 'Some info stirng') . "<br>";
|
||||||
|
print "ADBTOPMENU(0): " . \CoreLibs\Debug\Support::printAr($backend->adbTopMenu()) . "<br>";
|
||||||
|
print "ADBMSG: " . $backend->adbMsg('info', 'Message: %1$d', [1]) . "<br>";
|
||||||
|
print "Messaes: " . \CoreLibs\Debug\Support::printAr($this->messages) . "<br>";
|
||||||
|
print "ADBPRINTDATETIME:<br>" . $backend->adbPrintDateTime(2021, 6, 21, 6, 38, '_test') . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
203
www/admin/class_test.array.php
Normal file
203
www/admin/class_test.array.php
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-array';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Combined\ArrayHandler;
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
// $_array = new CoreLibs\Combined\ArrayHandler();
|
||||||
|
// $array_class = 'CoreLibs\Combination\ArrayHandler';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: ARRAY HANDLER</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// recursive array search
|
||||||
|
$test_array = [
|
||||||
|
'foo' => 'bar',
|
||||||
|
'input' => [
|
||||||
|
'element_a' => [
|
||||||
|
'type' => 'text'
|
||||||
|
],
|
||||||
|
'element_b' => [
|
||||||
|
'type' => 'email'
|
||||||
|
],
|
||||||
|
'element_c' => [
|
||||||
|
'type' => 'email'
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
echo "SOURCE ARRAY: " . DgS::printAr($test_array) . "<br>";
|
||||||
|
// frist return
|
||||||
|
echo "ARRAYSEARCHRECURSIVE(email, [array], type): "
|
||||||
|
. DgS::printAr(ArrayHandler::arraySearchRecursive('email', $test_array, 'type')) . "<br>";
|
||||||
|
echo "ARRAYSEARCHRECURSIVE(email, [array]['input'], type): "
|
||||||
|
. DgS::printAr(ArrayHandler::arraySearchRecursive('email', $test_array['input'], 'type')) . "<br>";
|
||||||
|
// all return
|
||||||
|
echo "ARRAYSEARCHRECURSIVEALL(email, [array], type): "
|
||||||
|
. Dgs::printAr((array)ArrayHandler::arraySearchRecursiveAll('email', $test_array, 'type')) . "<br>";
|
||||||
|
|
||||||
|
// simple search
|
||||||
|
echo "ARRAYSEARCHSIMPLE([array], type, email): "
|
||||||
|
. (string)ArrayHandler::arraySearchSimple($test_array, 'type', 'email') . "<br>";
|
||||||
|
|
||||||
|
$array_1 = [
|
||||||
|
'foo' => 'bar'
|
||||||
|
];
|
||||||
|
$array_2 = [
|
||||||
|
1, 2, 3
|
||||||
|
];
|
||||||
|
$array_3 = [
|
||||||
|
'alpha' => [
|
||||||
|
'beta' => 4
|
||||||
|
]
|
||||||
|
];
|
||||||
|
// recusrice merge
|
||||||
|
print "ARRAYMERGERECURSIVE: " . DgS::printAr(ArrayHandler::arrayMergeRecursive($array_1, $array_2, $array_3)) . "<br>";
|
||||||
|
// array difference
|
||||||
|
$array_left = [
|
||||||
|
'same' => 'data',
|
||||||
|
'left' => 'Has L'
|
||||||
|
];
|
||||||
|
$array_right = [
|
||||||
|
'same' => 'data',
|
||||||
|
'right' => 'has R'
|
||||||
|
];
|
||||||
|
print "ARRAYDIFF: " . DgS::printAr(ArrayHandler::arrayDiff($array_left, $array_right)) . "<br>";
|
||||||
|
// in array check
|
||||||
|
print "INARRAYANY([1,3], [array]): " . DgS::printAr(ArrayHandler::inArrayAny([1, 3], $array_2)) . "<br>";
|
||||||
|
// flatten array
|
||||||
|
print "FLATTENARRAY: " . DgS::printAr(ArrayHandler::flattenArray($test_array)) . "<br>";
|
||||||
|
print "FLATTENARRAYKEY: " . DgS::printAr(ArrayHandler::flattenArrayKey($test_array)) . "<br>";
|
||||||
|
// flatten for key set
|
||||||
|
print "ARRAYFLATFORKEY: " . DgS::printAr(ArrayHandler::arrayFlatForKey($test_array, 'type')) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
// print "ARRAYMERGERECURSIVE: ".DgS::printAr($basic->arrayMergeRecursive($array_1, $array_2, $array_3))."<br>";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* attach key/value to an array so it becomes nested
|
||||||
|
*
|
||||||
|
* @param string $pre Attach to new (empty for new root node)
|
||||||
|
* @param string $cur New node
|
||||||
|
* @param array $node Previous created array
|
||||||
|
* @return array Updated array
|
||||||
|
*/
|
||||||
|
function rec(string $pre, string $cur, array $node = [])
|
||||||
|
{
|
||||||
|
if (!is_array($node)) {
|
||||||
|
$node = [];
|
||||||
|
}
|
||||||
|
print "<div style='color: green;'>#### PRE: " . $pre . ", CUR: " . $cur . ", N-c: "
|
||||||
|
. count($node) . " [" . join('|', array_keys($node)) . "]</div>";
|
||||||
|
if (!$pre) {
|
||||||
|
print "** <span style='color: red;'>NEW</span><br>";
|
||||||
|
$node[$cur] = [];
|
||||||
|
} else {
|
||||||
|
if (array_key_exists($pre, $node)) {
|
||||||
|
print "+ <span style='color: orange;'>KEY FOUND:</span> " . $pre . ", add: " . $cur . "<br>";
|
||||||
|
$node[$pre][$cur] = [];
|
||||||
|
} else {
|
||||||
|
print "- NOT FOUND: loop<br>";
|
||||||
|
foreach ($node as $_pre => $_cur) {
|
||||||
|
print "> TRY: " . $_pre . " => " . count($_cur) . " [" . join('|', array_keys($_cur)) . "]<br>";
|
||||||
|
if (count($_cur) > 0) {
|
||||||
|
$node[$_pre] = rec($pre, $cur, $_cur);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $node;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* flatten array down to own level
|
||||||
|
*
|
||||||
|
* @param array $array
|
||||||
|
* @param array $return
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function flattenArrayKey(array $array, array $return = [])
|
||||||
|
{
|
||||||
|
foreach ($array as $key => $sub) {
|
||||||
|
$return[] = $key;
|
||||||
|
if (count($sub) > 0) {
|
||||||
|
$return = flattenArrayKey($sub, $return);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// $test = [
|
||||||
|
// 'A' => [
|
||||||
|
// 'B' => [],
|
||||||
|
// 'C' => [
|
||||||
|
// 'D' => [],
|
||||||
|
// 'E' => [
|
||||||
|
// 'F' => []
|
||||||
|
// ]
|
||||||
|
// ]
|
||||||
|
// ],
|
||||||
|
// '1' => [],
|
||||||
|
// '2' => [],
|
||||||
|
// '3' => [
|
||||||
|
// 'G' => []
|
||||||
|
// ]
|
||||||
|
// ];
|
||||||
|
|
||||||
|
// build a tested array for flatten
|
||||||
|
$test = [];
|
||||||
|
// core
|
||||||
|
$test = rec('', 'A', $test);
|
||||||
|
$test = rec('', '1', $test);
|
||||||
|
$test = rec('', '2', $test);
|
||||||
|
$test = rec('', '3', $test);
|
||||||
|
$test = rec('3', 'G', $test);
|
||||||
|
$test = rec('A', 'B', $test);
|
||||||
|
$test = rec('A', 'C', $test);
|
||||||
|
$test = rec('C', 'D', $test);
|
||||||
|
$test = rec('C', 'E', $test);
|
||||||
|
$test = rec('E', 'F', $test);
|
||||||
|
// new
|
||||||
|
$test = rec('C', 'U', $test);
|
||||||
|
$test = rec('F', 'U', $test);
|
||||||
|
$test = rec('', 'Al', $test);
|
||||||
|
$test = rec('B', 'B1', $test);
|
||||||
|
print "ORIGINAL: " . \CoreLibs\Debug\Support::printAr($test) . "<br>";
|
||||||
|
print "FLATTEN: " . \CoreLibs\Debug\Support::printAr(flattenArrayKey($test)) . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
45
www/admin/class_test.autoloader.php
Normal file
45
www/admin/class_test.autoloader.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-autoloader';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
# Test if composer autoloader works here
|
||||||
|
|
||||||
|
use CoreLibs\Convert\Byte;
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: AUTOLOADER</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$bytes = 10242424;
|
||||||
|
$_bytes = Byte::humanReadableByteFormat($bytes);
|
||||||
|
print "BYTES: " . $_bytes . "<br>";
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
98
www/admin/class_test.byte.php
Normal file
98
www/admin/class_test.byte.php
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-byte';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Convert\Byte;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$byte_class = 'CoreLibs\Convert\Byte';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: BYTE CONVERT</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// class
|
||||||
|
$byte = 254779258;
|
||||||
|
$string = '242.98 MB';
|
||||||
|
// static
|
||||||
|
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte) . "<br>";
|
||||||
|
print "S::BYTE FROM: $string: " . $byte_class::stringByteFormat($string) . "<br>";
|
||||||
|
|
||||||
|
// *** BYTES TEST ***
|
||||||
|
$bytes = array(
|
||||||
|
-123123123,
|
||||||
|
999999, // KB-1
|
||||||
|
999999999, // MB-1
|
||||||
|
254779258, // MB-n
|
||||||
|
999999999999999, // TB-1
|
||||||
|
588795544887632, // TB-n
|
||||||
|
999999999999999999, // PB-1
|
||||||
|
9223372036854775807, // MAX INT
|
||||||
|
999999999999999999999, // EB-1
|
||||||
|
);
|
||||||
|
print "<b>BYTE FORMAT TESTS</b><br>";
|
||||||
|
foreach ($bytes as $byte) {
|
||||||
|
print '<div style="display: flex; border-bottom: 1px dashed gray;">';
|
||||||
|
//
|
||||||
|
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
||||||
|
print "(" . number_format($byte) . "/" . $byte . ") bytes :";
|
||||||
|
$_bytes = Byte::humanReadableByteFormat($byte);
|
||||||
|
print '</div><div style="width: 10%;">' . $_bytes;
|
||||||
|
print '</div><div style="width: 10%;">';
|
||||||
|
print Byte::stringByteFormat($_bytes);
|
||||||
|
print "</div>";
|
||||||
|
//
|
||||||
|
print "</div>";
|
||||||
|
//
|
||||||
|
print '<div style="display: flex; border-bottom: 1px dotted red;">';
|
||||||
|
//
|
||||||
|
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
||||||
|
print "bytes [si]:";
|
||||||
|
$_bytes = Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI);
|
||||||
|
print '</div><div style="width: 10%;">' . $_bytes;
|
||||||
|
print '</div><div style="width: 10%;">';
|
||||||
|
print Byte::stringByteFormat($_bytes);
|
||||||
|
print "</div>";
|
||||||
|
//
|
||||||
|
print "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $byte = 254779258;
|
||||||
|
$string = '242.98 MB';
|
||||||
|
print "BYTE TO: $byte: ".$basic->humanReadableByteFormat($byte)."<br>";
|
||||||
|
print "BYTE FROM: $string: ".$basic->stringByteFormat($string)."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
73
www/admin/class_test.colors.php
Normal file
73
www/admin/class_test.colors.php
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-colors';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Convert\Colors;
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$color_class = 'CoreLibs\Convert\Colors';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: COLORS</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
// A(out of bounds)
|
||||||
|
print "C::S/COLOR invalid rgb->hex (gray 125): -1, -1, -1: " . CoreLibs\Convert\Colors::rgb2hex(-1, -1, -1) . "<br>";
|
||||||
|
print "\$C::S/COLOR invalid rgb->hex (gary 125): -1, -1, -1: " . $color_class::rgb2hex(-1, -1, -1) . "<br>";
|
||||||
|
// B(valid)
|
||||||
|
$rgb = [10, 20, 30];
|
||||||
|
$hex = '#0a141e';
|
||||||
|
$hsb = [210, 67, 12];
|
||||||
|
$hsl = [210, 50, 7.8];
|
||||||
|
print "S::COLOR rgb->hex: $rgb[0], $rgb[1], $rgb[2]: " . Colors::rgb2hex($rgb[0], $rgb[1], $rgb[2]) . "<br>";
|
||||||
|
print "S::COLOR hex->rgb: $hex: " . DgS::printAr(Colors::hex2rgb($hex)) . "<br>";
|
||||||
|
print "C::S/COLOR rgb->hext: $hex: " . DgS::printAr(CoreLibs\Convert\Colors::hex2rgb($hex)) . "<br>";
|
||||||
|
// C(to hsb/hsl)
|
||||||
|
print "S::COLOR rgb->hsb: $rgb[0], $rgb[1], $rgb[2]: "
|
||||||
|
. DgS::printAr(Colors::rgb2hsb($rgb[0], $rgb[1], $rgb[2])) . "<br>";
|
||||||
|
print "S::COLOR rgb->hsl: $rgb[0], $rgb[1], $rgb[2]: "
|
||||||
|
. DgS::printAr(Colors::rgb2hsl($rgb[0], $rgb[1], $rgb[2])) . "<br>";
|
||||||
|
// D(from hsb/hsl) Note that param 2 + 3 is always 0-100 divided
|
||||||
|
print "S::COLOR hsb->rgb: $hsb[0], $hsb[1], $hsb[2]: "
|
||||||
|
. DgS::printAr(Colors::hsb2rgb($hsb[0], $hsb[1], $hsb[2])) . "<br>";
|
||||||
|
print "S::COLOR hsl->rgb: $hsl[0], $hsl[1], $hsl[2]: "
|
||||||
|
. DgS::printAr(Colors::hsl2rgb($hsl[0], $hsl[1], $hsl[2])) . "<br>";
|
||||||
|
|
||||||
|
// TODO: run compare check input must match output
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
159
www/admin/class_test.datetime.php
Normal file
159
www/admin/class_test.datetime.php
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-datetime';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Combined\DateTime;
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$datetime_class = 'CoreLibs\Combined\DateTime';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: DATE/TIME</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// class
|
||||||
|
$timestamp = 1622788315.123456;
|
||||||
|
// static
|
||||||
|
print "S::DATESTRINGFORMAT(sm:0): $timestamp: " . $datetime_class::dateStringFormat($timestamp) . "<br>";
|
||||||
|
|
||||||
|
// time string thest
|
||||||
|
$timestamp = 5887998.33445;
|
||||||
|
$time_string = DateTime::timeStringFormat($timestamp);
|
||||||
|
print "PLANE TIME STRING: " . $timestamp . "<br>";
|
||||||
|
print "TIME STRING TEST: " . $time_string . "<br>";
|
||||||
|
print "REVERSE TIME STRING: " . DateTime::stringToTime($time_string) . "<br>";
|
||||||
|
if (round($timestamp, 4) == DateTime::stringToTime($time_string)) {
|
||||||
|
print "REVERSE TIME STRING MATCH<br>";
|
||||||
|
} else {
|
||||||
|
print "REVERSE TRIME STRING DO NOT MATCH<br>";
|
||||||
|
}
|
||||||
|
print "ZERO TIME STRING: " . DateTime::timeStringFormat(0, true) . "<br>";
|
||||||
|
print "ZERO TIME STRING: " . DateTime::timeStringFormat(0.0, true) . "<br>";
|
||||||
|
print "ZERO TIME STRING: " . DateTime::timeStringFormat(1.005, true) . "<br>";
|
||||||
|
|
||||||
|
$timestamps = [
|
||||||
|
1622788315.123456,
|
||||||
|
-1622788315.456789
|
||||||
|
];
|
||||||
|
foreach ($timestamps as $timestamp) {
|
||||||
|
print "DATESTRINGFORMAT(sm:0): $timestamp: " . DateTime::dateStringFormat($timestamp) . "<br>";
|
||||||
|
print "DATESTRINGFORMAT(sm:1): $timestamp: " . DateTime::dateStringFormat($timestamp, true) . "<br>";
|
||||||
|
}
|
||||||
|
$intervals = [
|
||||||
|
788315.123456,
|
||||||
|
-123.456
|
||||||
|
];
|
||||||
|
foreach ($intervals as $interval) {
|
||||||
|
print "TIMESTRINGFORMAT(sm:0): $interval: " . DateTime::timeStringFormat($interval, false) . "<br>";
|
||||||
|
$reverse_interval = DateTime::timeStringFormat($interval);
|
||||||
|
print "TIMESTRINGFORMAT(sm:1): $interval: " . $reverse_interval . "<br>";
|
||||||
|
print "STRINGTOTIME: $reverse_interval: " . DateTime::stringToTime($reverse_interval) . "<br>";
|
||||||
|
}
|
||||||
|
$check_dates = [
|
||||||
|
'2021-05-01',
|
||||||
|
'2021-05-40'
|
||||||
|
];
|
||||||
|
foreach ($check_dates as $check_date) {
|
||||||
|
print "CHECKDATE: $check_date: " . (string)DateTime::checkDate($check_date) . "<br>";
|
||||||
|
}
|
||||||
|
$check_datetimes = [
|
||||||
|
'2021-05-01',
|
||||||
|
'2021-05-40',
|
||||||
|
'2021-05-01 12:13:14',
|
||||||
|
'2021-05-40 12:13:14',
|
||||||
|
'2021-05-01 25:13:14',
|
||||||
|
];
|
||||||
|
foreach ($check_datetimes as $check_datetime) {
|
||||||
|
print "CHECKDATETIME: $check_datetime: " . (string)DateTime::checkDateTime($check_datetime) . "<br>";
|
||||||
|
}
|
||||||
|
$compare_dates = [
|
||||||
|
[ '2021-05-01', '2021-05-02', ],
|
||||||
|
[ '2021-05-02', '2021-05-01', ],
|
||||||
|
[ '2021-05-02', '2021-05-02', ],
|
||||||
|
[ '2017/1/5', '2017-01-05', ],
|
||||||
|
];
|
||||||
|
// compareDate
|
||||||
|
foreach ($compare_dates as $compare_date) {
|
||||||
|
print "COMPAREDATE: $compare_date[0] = $compare_date[1]: "
|
||||||
|
. (string)DateTime::compareDate($compare_date[0], $compare_date[1]) . "<br>";
|
||||||
|
}
|
||||||
|
$compare_datetimes = [
|
||||||
|
[ '2021-05-01', '2021-05-02', ],
|
||||||
|
[ '2021-05-02', '2021-05-01', ],
|
||||||
|
[ '2021-05-02', '2021-05-02', ],
|
||||||
|
[ '2021-05-01 10:00:00', '2021-05-01 11:00:00', ],
|
||||||
|
[ '2021-05-01 11:00:00', '2021-05-01 10:00:00', ],
|
||||||
|
[ '2021-05-01 10:00:00', '2021-05-01 10:00:00', ],
|
||||||
|
];
|
||||||
|
foreach ($compare_datetimes as $compare_datetime) {
|
||||||
|
print "COMPAREDATE: $compare_datetime[0] = $compare_datetime[1]: "
|
||||||
|
. (string)DateTime::compareDateTime($compare_datetime[0], $compare_datetime[1]) . "<br>";
|
||||||
|
}
|
||||||
|
$compare_dates = [
|
||||||
|
[ '2021-05-01', '2021-05-10', ],
|
||||||
|
[ '2021-05-10', '2021-05-01', ],
|
||||||
|
[ '2021-05-02', '2021-05-01', ],
|
||||||
|
[ '2021-05-02', '2021-05-02', ],
|
||||||
|
];
|
||||||
|
foreach ($compare_dates as $compare_date) {
|
||||||
|
print "CALCDAYSINTERVAL: $compare_date[0] = $compare_date[1]: "
|
||||||
|
. DgS::printAr(DateTime::calcDaysInterval($compare_date[0], $compare_date[1])) . "<br>";
|
||||||
|
print "CALCDAYSINTERVAL(named): $compare_date[0] = $compare_date[1]: "
|
||||||
|
. DgS::printAr(DateTime::calcDaysInterval($compare_date[0], $compare_date[1], true)) . "<br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $timestamp = 1622788315.123456;
|
||||||
|
print "C->DATESTRINGFORMAT(sm:0): $timestamp: ".$basic->dateStringFormat($timestamp)."<br>";
|
||||||
|
$interval = 788315.123456;
|
||||||
|
$reverse_interval = $basic->timeStringFormat($interval);
|
||||||
|
print "TIMESTRINGFORMAT(sm:1): $interval: ".$reverse_interval."<br>";
|
||||||
|
print "STRINGTOTIME: $reverse_interval: ".$basic->stringToTime($reverse_interval)."<br>";
|
||||||
|
$check_date = '2021-05-01';
|
||||||
|
print "CHECKDATE: $check_date: ".(string)$basic->checkDate($check_date)."<br>";
|
||||||
|
$check_datetime = '2021-05-01 12:13:14';
|
||||||
|
print "CHECKDATETIME: $check_datetime: ".(string)$basic->checkDateTime($check_datetime)."<br>";
|
||||||
|
$compare_date = ['2021-05-01', '2021-05-02'];
|
||||||
|
print "COMPAREDATE: $compare_date[0] = $compare_date[1]: "
|
||||||
|
. (string)$basic->compareDate($compare_date[0], $compare_date[1])."<br>";
|
||||||
|
$compare_datetime = ['2021-05-01 10:00:00', '2021-05-01 11:00:00'];
|
||||||
|
print "COMPAREDATE: $compare_datetime[0] = $compare_datetime[1]: "
|
||||||
|
. (string)$basic->compareDateTime($compare_datetime[0], $compare_datetime[1])."<br>";
|
||||||
|
$compare_date = ['2021-05-01', '2021-05-10'];
|
||||||
|
print "CALCDAYSINTERVAL(named): $compare_date[0] = $compare_date[1]: "
|
||||||
|
. DgS::printAr($basic->calcDaysInterval($compare_date[0], $compare_date[1], true))."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
331
www/admin/class_test.db.php
Normal file
331
www/admin/class_test.db.php
Normal file
@@ -0,0 +1,331 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', true);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// override ECHO ALL FALSE
|
||||||
|
$ECHO_ALL = true;
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-db';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$db = $basic = new CoreLibs\Admin\Backend(DB_CONFIG);
|
||||||
|
|
||||||
|
// NEXT STEP
|
||||||
|
// $basic = new CoreLibs\Basic();
|
||||||
|
// change __construct
|
||||||
|
// add object $logger
|
||||||
|
// add $this->log = $logger;
|
||||||
|
// $db = new CoreLibs\DB\IO(DB_CONFIG, $basic->log);
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: DB</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
print "DBINFO: " . $db->dbInfo() . "<br>";
|
||||||
|
echo "DB_CONFIG_SET constant: <pre>" . print_r(DB_CONFIG, true) . "</pre><br>";
|
||||||
|
|
||||||
|
// DB client encoding
|
||||||
|
print "DB Client encoding: " . $db->dbGetEncoding() . "<br>";
|
||||||
|
|
||||||
|
while (is_array($res = $db->dbReturn("SELECT * FROM max_test", 0, true))) {
|
||||||
|
print "TIME: " . $res['time'] . "<br>";
|
||||||
|
}
|
||||||
|
print "CACHED DATA: <pre>" . print_r($db->cursor_ext, true) . "</pre><br>";
|
||||||
|
while (is_array($res = $db->dbReturn("SELECT * FROM max_test"))) {
|
||||||
|
print "[CACHED] TIME: " . $res['time'] . "<br>";
|
||||||
|
}
|
||||||
|
// alternate check for valid data
|
||||||
|
// while (($res = $db->dbReturn("SELECT * FROM max_test")) !== false) {
|
||||||
|
// print "[CACHED] TIME: " . $res['time'] . "<br>";
|
||||||
|
// }
|
||||||
|
|
||||||
|
print "<pre>";
|
||||||
|
|
||||||
|
// truncate test_foo table before testing
|
||||||
|
print "<b>TRUNCATE test_foo</b><br>";
|
||||||
|
$query = "TRUNCATE test_foo";
|
||||||
|
$db->dbExec($query);
|
||||||
|
print "<b>TRUNCATE test_foobar</b><br>";
|
||||||
|
$query = "TRUNCATE test_foobar";
|
||||||
|
$db->dbExec($query);
|
||||||
|
|
||||||
|
$status = $db->dbExec("INSERT INTO test_foo (test) VALUES ('FOO TEST " . time() . "') RETURNING test");
|
||||||
|
print "DIRECT INSERT STATUS: $status | "
|
||||||
|
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | "
|
||||||
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
|
// should throw deprecated error
|
||||||
|
// $db->getReturningExt();
|
||||||
|
print "DIRECT INSERT PREVIOUS INSERTED: "
|
||||||
|
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
|
||||||
|
. "WHERE test_foo_id = " . $db->dbGetInsertPK()), true) . "<br>";
|
||||||
|
|
||||||
|
// PREPARED INSERT
|
||||||
|
$db->dbPrepare("ins_test_foo", "INSERT INTO test_foo (test) VALUES ($1) RETURNING test");
|
||||||
|
$status = $db->dbExecute("ins_test_foo", array('BAR TEST ' . time()));
|
||||||
|
print "PREPARE INSERT[ins_test_foo] STATUS: $status | "
|
||||||
|
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
|
print "PREPARE INSERT PREVIOUS INSERTED: "
|
||||||
|
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
|
||||||
|
. "WHERE test_foo_id = " . $db->dbGetInsertPK()), true) . "<br>";
|
||||||
|
// returning test with multiple entries
|
||||||
|
// $status = $db->db_exec(
|
||||||
|
// "INSERT INTO test_foo (test) VALUES "
|
||||||
|
// . "('BAR 1 " . time() . "'), "
|
||||||
|
// . "('BAR 2 " . time() . "'), "
|
||||||
|
// . "('BAR 3 " . time() . "') "
|
||||||
|
// . "RETURNING test_foo_id"
|
||||||
|
// );
|
||||||
|
$status = $db->dbExec(
|
||||||
|
"INSERT INTO test_foo (test) VALUES "
|
||||||
|
. "('BAR 1 " . time() . "'), "
|
||||||
|
. "('BAR 2 " . time() . "'), "
|
||||||
|
. "('BAR 3 " . time() . "') "
|
||||||
|
. "RETURNING test_foo_id, test"
|
||||||
|
);
|
||||||
|
print "DIRECT MULTIPLE INSERT WITH RETURN STATUS: $status | "
|
||||||
|
. "PRIMARY KEYS: " . print_r($db->dbGetInsertPK(), true) . " | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | "
|
||||||
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
|
// no returning, but not needed ;
|
||||||
|
$status = $db->dbExec("INSERT INTO test_foo (test) VALUES ('FOO; TEST " . time() . "');");
|
||||||
|
print "DIRECT INSERT NO RETURN STATUS: $status | "
|
||||||
|
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
$last_insert_pk = $db->dbGetInsertPK();
|
||||||
|
|
||||||
|
// is_array read test
|
||||||
|
$q = "SELECT test_foo_id, test FROM test_foo WHERE test_foo_id = " . $last_insert_pk;
|
||||||
|
if (is_array($s_res = $db->dbReturnRow($q)) && !empty($s_res['test'])) {
|
||||||
|
print "WE HAVE DATA FOR: " . $last_insert_pk . " WITH: " . $s_res['test'] . "<br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// UPDATE WITH RETURNING
|
||||||
|
$status = $db->dbExec("UPDATE test_foo SET test = 'SOMETHING DIFFERENT' "
|
||||||
|
. "WHERE test_foo_id = " . $last_insert_pk . " RETURNING test");
|
||||||
|
print "UPDATE WITH PK " . $last_insert_pk . " RETURN STATUS: $status | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
|
|
||||||
|
// INSERT WITH NO RETURNING
|
||||||
|
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITH DATA', 123)");
|
||||||
|
print "INSERT WITH NO PRIMARY KEY NO RETURNING STATUS: $status | "
|
||||||
|
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
|
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITH DATA', 123) RETURNING type, integer");
|
||||||
|
print "INSERT WITH NO PRIMARY KEY WITH RETURNING STATUS: $status | "
|
||||||
|
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
||||||
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
|
print "</pre>";
|
||||||
|
|
||||||
|
// READ PREPARE
|
||||||
|
if (
|
||||||
|
$db->dbPrepare(
|
||||||
|
'sel_test_foo',
|
||||||
|
"SELECT test_foo_id, test, some_bool, string_a, number_a, number_a_numeric, some_time "
|
||||||
|
. "FROM test_foo ORDER BY test_foo_id DESC LIMIT 5"
|
||||||
|
) === false
|
||||||
|
) {
|
||||||
|
print "Error in sel_test_foo prepare<br>";
|
||||||
|
} else {
|
||||||
|
$max_rows = 6;
|
||||||
|
// do not run this in dbFetchArray directly as
|
||||||
|
// dbFetchArray(dbExecute(...))
|
||||||
|
// this will end in an endless loop
|
||||||
|
$cursor = $db->dbExecute('sel_test_foo', []);
|
||||||
|
$i = 1;
|
||||||
|
while (($res = $db->dbFetchArray($cursor, true)) !== false) {
|
||||||
|
print "DB PREP EXEC FETCH ARR: " . $i . ": <pre>" . print_r($res, true) . "</pre><br>";
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# db write class test
|
||||||
|
$table = 'test_foo';
|
||||||
|
print "TABLE META DATA: " . DgS::printAr($db->dbShowTableMetaData($table)) . "<br>";
|
||||||
|
// insert first, then use primary key to update
|
||||||
|
$primary_key = ''; # unset
|
||||||
|
$db_write_table = ['test', 'string_a', 'number_a', 'some_bool'];
|
||||||
|
$object_fields_not_touch = [];
|
||||||
|
$object_fields_not_update = [];
|
||||||
|
$data = [
|
||||||
|
'test' => 'dbWriteDataExt: BOOL TEST SOMETHING ' . time(), 'string_a' => 'SOME TEXT', 'number_a' => 5
|
||||||
|
];
|
||||||
|
$primary_key = $db->dbWriteDataExt(
|
||||||
|
$db_write_table,
|
||||||
|
$primary_key,
|
||||||
|
$table,
|
||||||
|
$object_fields_not_touch,
|
||||||
|
$object_fields_not_update,
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key<br>";
|
||||||
|
$data = [
|
||||||
|
'test' => 'dbWriteDataExt: BOOL TEST ON ' . time(), 'string_a' => '', 'number_a' => 0, 'some_bool' => 1
|
||||||
|
];
|
||||||
|
$primary_key = $db->dbWriteDataExt(
|
||||||
|
$db_write_table,
|
||||||
|
$primary_key,
|
||||||
|
$table,
|
||||||
|
$object_fields_not_touch,
|
||||||
|
$object_fields_not_update,
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key<br>";
|
||||||
|
$data = [
|
||||||
|
'test' => 'dbWriteDataExt: BOOL TEST OFF ' . time(), 'string_a' => null, 'number_a' => null, 'some_bool' => 0
|
||||||
|
];
|
||||||
|
$primary_key = $db->dbWriteDataExt(
|
||||||
|
$db_write_table,
|
||||||
|
$primary_key,
|
||||||
|
$table,
|
||||||
|
$object_fields_not_touch,
|
||||||
|
$object_fields_not_update,
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key<br>";
|
||||||
|
$data = [
|
||||||
|
'test' => 'dbWriteDataExt: BOOL TEST UNSET ' . time()
|
||||||
|
];
|
||||||
|
$primary_key = $db->dbWriteDataExt(
|
||||||
|
$db_write_table,
|
||||||
|
$primary_key,
|
||||||
|
$table,
|
||||||
|
$object_fields_not_touch,
|
||||||
|
$object_fields_not_update,
|
||||||
|
$data
|
||||||
|
);
|
||||||
|
print "Wrote to DB tabel $table with data " . print_r($data, true) . " and got primary key $primary_key<br>";
|
||||||
|
|
||||||
|
// return Array Test
|
||||||
|
$query = "SELECT type, sdate, integer FROM foobar";
|
||||||
|
$data = $db->dbReturnArray($query, true);
|
||||||
|
print "Full foobar list: <br><pre>" . print_r($data, true) . "</pre><br>";
|
||||||
|
|
||||||
|
# async test queries
|
||||||
|
/*
|
||||||
|
$db->dbExecAsync("SELECT test FROM test_foo, (SELECT pg_sleep(10)) as sub WHERE test_foo_id IN (27, 50, 67, 44, 10)");
|
||||||
|
echo "WAITING FOR ASYNC: ";
|
||||||
|
$chars = array('|', '/', '-', '\\');
|
||||||
|
while (($ret = $db->dbCheckAsync()) === true)
|
||||||
|
{
|
||||||
|
if ((list($_, $char) = each($chars)) === FALSE)
|
||||||
|
{
|
||||||
|
reset($chars);
|
||||||
|
list($_, $char) = each($chars);
|
||||||
|
}
|
||||||
|
print $char;
|
||||||
|
sleep(1);
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
print "<br>END STATUS: " . $ret . "<br>";
|
||||||
|
// while ($res = $db->dbFetchArray($ret))
|
||||||
|
while ($res = $db->dbFetchArray())
|
||||||
|
{
|
||||||
|
echo "RES: " . $res['test'] . "<br>";
|
||||||
|
}
|
||||||
|
# test async insert
|
||||||
|
$db->dbExecAsync("INSERT INTO test_foo (Test) VALUES ('ASYNC TEST " . time() . "')");
|
||||||
|
echo "WAITING FOR ASYNC INSERT: ";
|
||||||
|
while (($ret = $db->dbCheckAsync()) === true)
|
||||||
|
{
|
||||||
|
print " . ";
|
||||||
|
sleep(1);
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
print "<br>END STATUS: " . $ret . " | PK: " . $db->insert_id . "<br>";
|
||||||
|
print "ASYNC PREVIOUS INSERTED: "
|
||||||
|
. print_r(
|
||||||
|
$db->dbReturnRow("SELECT test_foo_id, test FROM test_foo WHERE test_foo_id = "
|
||||||
|
. $db->insert_id),
|
||||||
|
true
|
||||||
|
) . "<br>";
|
||||||
|
*/
|
||||||
|
|
||||||
|
$to_db_version = '9.1.9';
|
||||||
|
print "VERSION DB: " . $db->dbVersion() . "<br>";
|
||||||
|
print "DB Version smaller $to_db_version: " . $db->dbCompareVersion('<' . $to_db_version) . "<br>";
|
||||||
|
print "DB Version smaller than $to_db_version: " . $db->dbCompareVersion('<=' . $to_db_version) . "<br>";
|
||||||
|
print "DB Version equal $to_db_version: " . $db->dbCompareVersion('=' . $to_db_version) . "<br>";
|
||||||
|
print "DB Version bigger than $to_db_version: " . $db->dbCompareVersion('>=' . $to_db_version) . "<br>";
|
||||||
|
print "DB Version bigger $to_db_version: " . $db->dbCompareVersion('>' . $to_db_version) . "<br>";
|
||||||
|
|
||||||
|
/*
|
||||||
|
$q = "Select * from test_foo";
|
||||||
|
$test_foo = $db->dbExecAsync($q);
|
||||||
|
print "[ERR] Query: " . $q . "<br>";
|
||||||
|
print "[ERR] RESOURCE: $test_foo<br>";
|
||||||
|
while (($ret = $db->dbCheckAsync()) === true)
|
||||||
|
{
|
||||||
|
print "[ERR]: $ret<br>";
|
||||||
|
sleep(5);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// search path check
|
||||||
|
$q = "SHOW search_path";
|
||||||
|
$cursor = $db->dbExec($q);
|
||||||
|
$data = $db->dbFetchArray($cursor)['search_path'];
|
||||||
|
print "RETURN DATA FOR search_path: " . $data . "<br>";
|
||||||
|
// print "RETURN DATA FOR search_path: " . DgS::printAr($data) . "<br>";
|
||||||
|
// insert something into test.schema_test and see if we get the PK back
|
||||||
|
$status = $db->dbExec(
|
||||||
|
"INSERT INTO test.schema_test (contents, id) VALUES "
|
||||||
|
. "('TIME: " . time() . "', " . rand(1, 10) . ")"
|
||||||
|
);
|
||||||
|
print "OTHER SCHEMA INSERT STATUS: "
|
||||||
|
. $status . " | PK NAME: " . $db->dbGetInsertPKName() . ", PRIMARY KEY: " . $db->dbGetInsertPK() . "<br>";
|
||||||
|
|
||||||
|
print "<b>NULL TEST DB READ</b><br>";
|
||||||
|
$q = "SELECT uid, null_varchar, null_int FROM test_null_data WHERE uid = 'A'";
|
||||||
|
$res = $db->dbReturnRow($q);
|
||||||
|
var_dump($res);
|
||||||
|
print "RES: " . DgS::printAr($res) . "<br>";
|
||||||
|
print "ISSET: " . isset($res['null_varchar']) . "<br>";
|
||||||
|
print "EMPTY: " . empty($res['null_varchar']) . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
164
www/admin/class_test.debug.php
Normal file
164
www/admin/class_test.debug.php
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
// all the settings are overruled by config
|
||||||
|
$DEBUG_ALL_OVERRIDE = true; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = false;
|
||||||
|
$ECHO_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-debug';
|
||||||
|
ob_end_flush();
|
||||||
|
// override ECHO ALL FALSE
|
||||||
|
$ECHO_ALL = true;
|
||||||
|
|
||||||
|
use CoreLibs\Debug\Support as DebugSupport;
|
||||||
|
use CoreLibs\Debug\FileWriter;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$debug = new CoreLibs\Debug\Logging();
|
||||||
|
$debug_support_class = 'CoreLibs\Debug\Support';
|
||||||
|
$debug_logging_class = 'CoreLibs\Debug\Logging';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: DEBUG</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
function test()
|
||||||
|
{
|
||||||
|
return DebugSupport::getCallerMethod(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
print "S::GETCALLERMETHOD: " . DebugSupport::getCallerMethod(0) . "<br>";
|
||||||
|
print "S::GETCALLERMETHOD: " . test() . "<br>";
|
||||||
|
print "S::PRINTAR: " . DebugSupport::printAr(['Foo', 'Bar']) . "<br>";
|
||||||
|
print "V-S::PRINTAR: " . $debug_support_class::printAr(['Foo', 'Bar']) . "<br>";
|
||||||
|
print "S::DEBUSTRING(s): " . DebugSupport::debugString('SET') . "<br>";
|
||||||
|
print "S::DEBUSTRING(''): " . DebugSupport::debugString('') . "<br>";
|
||||||
|
print "S::DEBUSTRING(,s): " . DebugSupport::debugString(null, '{-}') . "<br>";
|
||||||
|
|
||||||
|
// debug
|
||||||
|
print "C->DEBUG: " . $debug->debug('CLASS-TEST-DEBUG', 'Class Test Debug') . "<br>";
|
||||||
|
print "C->DEBUG(html): " . $debug->debug('CLASS-TEST-DEBUG', 'HTML TAG<br><b>BOLD</b>') . "<br>";
|
||||||
|
print "C->DEBUG(html,strip): " . $debug->debug('CLASS-TEST-DEBUG', 'HTML TAG<br><b>BOLD</b>', true) . "<br>";
|
||||||
|
print "C->PRINTERRORMSG: <br>" . $debug->printErrorMsg() . "<br>";
|
||||||
|
echo "<b>CLASS DEBUG CALL</b><br>";
|
||||||
|
|
||||||
|
// @codingStandardsIgnoreLine
|
||||||
|
class TestL
|
||||||
|
{
|
||||||
|
public $log;
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->log = new CoreLibs\Debug\Logging();
|
||||||
|
}
|
||||||
|
public function test(string $ts = null)
|
||||||
|
{
|
||||||
|
print "* GETCALLERCLASS(INSIDE CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
||||||
|
$this->log->debug('TESTL', 'Logging in class testL' . ($ts !== null ? ': ' . $ts : ''));
|
||||||
|
$this->log->debug('TESTL', 'Some other message');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// @codingStandardsIgnoreLine
|
||||||
|
class TestR extends TestL
|
||||||
|
{
|
||||||
|
public $foo;
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
public function subTest()
|
||||||
|
{
|
||||||
|
print "** GETCALLERCLASS(INSIDE EXTND CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
||||||
|
$this->log->debug('TESTR', 'Logging in class testR (extends testL)');
|
||||||
|
$this->test('TESTR INSIDE');
|
||||||
|
$this->log->debug('TESTR', 'Array: '
|
||||||
|
. $this->log->prAr(['a', 'b']) . ', Other: ' . $this->log->prAr(['a', 'b']));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$tl = new TestL();
|
||||||
|
print "CLASS: LOG ECHO: " . (string)$tl->log->getLogLevelAll('echo') . "<br>";
|
||||||
|
print "CLASS: DEBUG: " . $tl->test() . "<br>";
|
||||||
|
print "CLASS: PRINTERRORMSG: <br>" . $tl->log->printErrorMsg() . "<br>";
|
||||||
|
$tr = new TestR();
|
||||||
|
print "CLASS: LOG ECHO: " . (string)$tr->log->getLogLevelAll('echo') . "<br>";
|
||||||
|
print "CLASS EXTEND: DEBUG/tl: " . $tr->test('TESTR OUTSIDE') . "<br>";
|
||||||
|
print "CLASS EXTEND: DEBUG/tr: " . $tr->subTest() . "<br>";
|
||||||
|
print "CLASS EXTEND: PRINTERRORMSG: <br>" . $tr->log->printErrorMsg() . "<br>";
|
||||||
|
|
||||||
|
// test attaching a logger from outside
|
||||||
|
// @codingStandardsIgnoreLine
|
||||||
|
class AttachOutside
|
||||||
|
{
|
||||||
|
public $log;
|
||||||
|
public function __construct(object $logger_class)
|
||||||
|
{
|
||||||
|
$this->log = $logger_class;
|
||||||
|
}
|
||||||
|
public function test()
|
||||||
|
{
|
||||||
|
$this->log->debug('ATTACHOUTSIDE', 'A test');
|
||||||
|
return get_class($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$ao = new AttachOutside($basic->log);
|
||||||
|
print "AO-CLASS: DEBUG: " . $ao->test() . "<br>";
|
||||||
|
|
||||||
|
// @codingStandardsIgnoreLine
|
||||||
|
class AttachFull
|
||||||
|
{
|
||||||
|
public $main;
|
||||||
|
public function __construct(object $class)
|
||||||
|
{
|
||||||
|
$this->main = $class;
|
||||||
|
}
|
||||||
|
public function test()
|
||||||
|
{
|
||||||
|
// should trigger deprecated
|
||||||
|
return $this->main->rgb2hex(2, 3, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$af = new AttachFull($basic);
|
||||||
|
// should trigger deprecated
|
||||||
|
print "DEPREACTEDTEST: " . $af->test() . "<br>";
|
||||||
|
|
||||||
|
|
||||||
|
print "GETCALLERCLASS(NON CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
||||||
|
|
||||||
|
// fdebug
|
||||||
|
print "S::FSETFILENAME: " . FileWriter::fsetFilename('class_test_debug_file.log') . "<br>";
|
||||||
|
print "S::FDEBUG: " . FileWriter::fdebug('CLASS TEST DEBUG FILE: ' . date('Y-m-d H:i:s')) . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
// future DEPRECATED
|
||||||
|
// $basic->debug('BASIC CLASS', 'Debug test');
|
||||||
|
$basic->log->debug('BASIC CLASS', 'Debug test');
|
||||||
|
print "BASIC PRINTERRORMSG:<br>" . $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
85
www/admin/class_test.email.php
Normal file
85
www/admin/class_test.email.php
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-email';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Check\Email;
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: HTML/ELEMENTS</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// regex get
|
||||||
|
print "S::GETEMAILREGEX(0): " . Email::getEmailRegex(0) . "<br>";
|
||||||
|
print "S::GETEMAILREGEX(2): " . Email::getEmailRegex(2) . "<br>";
|
||||||
|
print "S::GETEMAILREGEX(7): " . Email::getEmailRegex(7) . "<br>";
|
||||||
|
print "S::GETEMAILREGEX(8 invalid): " . Email::getEmailRegex(8) . "<br>";
|
||||||
|
print "S::GETEMAILREGEXCHECK: " . DgS::printAr(Email::getEmailRegexCheck()) . "<br>";
|
||||||
|
print "S::GETEMAILREGEXERRORMESSAGE " . Dgs::printAr(Email::getEmailRegexErrorMessage(1)) . "<br>";
|
||||||
|
|
||||||
|
$email = [
|
||||||
|
'foo@bar.org',
|
||||||
|
'foo@i.softbank.ne.jp'
|
||||||
|
];
|
||||||
|
foreach ($email as $s_email) {
|
||||||
|
print "S::EMAIL: $s_email: " . Email::getEmailType($s_email) . "<br>";
|
||||||
|
print "S::EMAIL SHORT: $s_email: " . Email::getEmailType($s_email, true) . "<br>";
|
||||||
|
}
|
||||||
|
$email = [
|
||||||
|
'test@test.com',
|
||||||
|
'',
|
||||||
|
'-@-',
|
||||||
|
'.test@test.com',
|
||||||
|
'test@t_est.com',
|
||||||
|
'test@@test.com',
|
||||||
|
'test@test..com',
|
||||||
|
'test@@test..com',
|
||||||
|
'test@test.',
|
||||||
|
'test@test.j',
|
||||||
|
];
|
||||||
|
foreach ($email as $s_email) {
|
||||||
|
print "S::CHECKEMAIL: " . $s_email . ": " . (Email::checkEmail($s_email) ? 'Yes' : 'No') . "<br>";
|
||||||
|
print "S::CHECKEMAILFULL: " . $s_email . ": " . Dgs::printAr(Email::checkEmailFull($s_email)) . "<br>";
|
||||||
|
print "S::CHECKEMAILFULL(true): " . $s_email . ": " . Dgs::printAr(Email::checkEmailFull($s_email, true)) . "<br>";
|
||||||
|
}
|
||||||
|
// DEPRECATED
|
||||||
|
/* foreach ($email as $s_email) {
|
||||||
|
print "D/S-EMAIL: $s_email: ".$basic->getEmailType($s_email)."<br>";
|
||||||
|
print "D/S-EMAIL SHORT: $s_email: ".$basic->getEmailType($s_email, true)."<br>";
|
||||||
|
} */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
100
www/admin/class_test.encoding.php
Normal file
100
www/admin/class_test.encoding.php
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-encoding';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Language\Encoding;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_encoding = new CoreLibs\Language\Encoding();
|
||||||
|
$encoding_class = 'CoreLibs\Language\Encoding';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: ENCODING</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// print "Valid encoding: ".$basic->printAr(mb_list_encodings())."<br>";
|
||||||
|
|
||||||
|
$mime_encodes = [
|
||||||
|
['Simple string UTF8', 'UTF-8'],
|
||||||
|
['Simple string ISO-2022-JP-MS', 'ISO-2022-JP-MS'],
|
||||||
|
['日本語ながい', 'UTF-8'],
|
||||||
|
['日本語ながい', 'ISO-2022-JP-MS'],
|
||||||
|
['日本語ながい日本語ながい日本語ながい日本語ながい日本語ながい日本語ながい日本語ながい', 'ISO-2022-JP-MS'],
|
||||||
|
];
|
||||||
|
foreach ($mime_encodes as $mime_encode) {
|
||||||
|
print "__MBMIMEENCODE: $mime_encode[0]: " . Encoding::__mbMimeEncode($mime_encode[0], $mime_encode[1]) . "<br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$enc_strings = [
|
||||||
|
'Normal Text',
|
||||||
|
'日本語',
|
||||||
|
// unworkable
|
||||||
|
''
|
||||||
|
];
|
||||||
|
// class
|
||||||
|
$_encoding->setErrorChar('∴');
|
||||||
|
foreach ($enc_strings as $_string) {
|
||||||
|
$string = $_encoding->checkConvertEncoding($_string, 'UTF-8', 'ISO-2022-JP-MS');
|
||||||
|
print "ENC CHECK: $_string: " . ($string === false ? '-OK-' : $string) . "<br>";
|
||||||
|
print "CONV ENCODING: $_string: " . $_encoding->convertEncoding($_string, 'ISO-2022-JP') . "<br>";
|
||||||
|
print "CONV ENCODING (s): $_string: " . $_encoding->convertEncoding($_string, 'ISO-2022-JP', 'UTF-8') . "<br>";
|
||||||
|
print "CONV ENCODING (s,a-false): $_string: "
|
||||||
|
. $_encoding->convertEncoding($_string, 'ISO-2022-JP', 'UTF-8', false) . "<br>";
|
||||||
|
}
|
||||||
|
print "ERROR CHAR: " . $_encoding->getErrorChar() . "<br>";
|
||||||
|
// static
|
||||||
|
$encoding_class::setErrorChar('∴');
|
||||||
|
foreach ($enc_strings as $_string) {
|
||||||
|
$string = $encoding_class::checkConvertEncoding($_string, 'UTF-8', 'ISO-2022-JP-MS');
|
||||||
|
print "S::ENC CHECK: $_string: " . ($string === false ? '-OK-' : $string) . "<br>";
|
||||||
|
print "S::CONV ENCODING: $_string: " . $encoding_class::convertEncoding($_string, 'ISO-2022-JP') . "<br>";
|
||||||
|
print "S::CONV ENCODING (s): $_string: "
|
||||||
|
. $encoding_class::convertEncoding($_string, 'ISO-2022-JP', 'UTF-8') . "<br>";
|
||||||
|
print "S::CONV ENCODING (s,a-false): $_string: "
|
||||||
|
. $encoding_class::convertEncoding($_string, 'ISO-2022-JP', 'UTF-8', false) . "<br>";
|
||||||
|
}
|
||||||
|
print "S::ERROR CHAR: " . $encoding_class::getErrorChar() . "<br>";
|
||||||
|
// static use
|
||||||
|
$_string = $enc_strings[1];
|
||||||
|
$string = Encoding::checkConvertEncoding($_string, 'UTF-8', 'ISO-2022-JP-MS');
|
||||||
|
print "S::ENC CHECK: $_string: " . ($string === false ? '-OK-' : $string) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $string = $basic->checkConvertEncoding($_string, 'UTF-8', 'ISO-2022-JP-MS');
|
||||||
|
print "ENC CHECK: $_string: ".($string === false ? '-OK-' : $string)."<br>";
|
||||||
|
print "CONV ENCODING: $_string: ".$basic->convertEncoding($_string, 'ISO-2022-JP')."<br>";
|
||||||
|
print "D/__MBMIMEENCODE: ".$basic->__mbMimeEncode('Some Text', 'UTF-8')."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
50
www/admin/class_test.file.php
Normal file
50
www/admin/class_test.file.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-datetime';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Check\File;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: FILE</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$file = '/some/path/to/some/file.txt';
|
||||||
|
print "GETFILENAMEENDING: $file: " . File::getFilenameEnding($file) . "<br>";
|
||||||
|
$file = getcwd() . DIRECTORY_SEPARATOR . 'class_test.file.php';
|
||||||
|
print "GETLINESFROMFILE: $file: " . File::getLinesFromFile($file) . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
65
www/admin/class_test.hash.php
Normal file
65
www/admin/class_test.hash.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-hash';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Create\Hash;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$hash_class = 'CoreLibs\Create\Hash';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: HASH</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$to_crc = 'Some text block';
|
||||||
|
// static
|
||||||
|
print "S::__CRC32B: $to_crc: " . $hash_class::__crc32b($to_crc) . "<br>";
|
||||||
|
print "S::__SHA1SHORT(off): $to_crc: " . $hash_class::__sha1short($to_crc) . "<br>";
|
||||||
|
print "S::__SHA1SHORT(on): $to_crc: " . $hash_class::__sha1short($to_crc, true) . "<br>";
|
||||||
|
print "S::__hash(d): $to_crc: " . $hash_class::__hash($to_crc) . "<br>";
|
||||||
|
foreach (['adler32', 'fnv132', 'fnv1a32', 'joaat'] as $__hash_c) {
|
||||||
|
print "S::__hash($__hash_c): $to_crc: " . $hash_class::__hash($to_crc, $__hash_c) . "<br>";
|
||||||
|
}
|
||||||
|
// static use
|
||||||
|
print "U-S::__CRC32B: $to_crc: " . Hash::__crc32b($to_crc) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* print "D/__CRC32B: $to_crc: ".$basic->__crc32b($to_crc)."<br>";
|
||||||
|
print "D/__SHA1SHORT(off): $to_crc: ".$basic->__sha1short($to_crc)."<br>";
|
||||||
|
print "D/__hash(d): $to_crc: ".$basic->__hash($to_crc)."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
116
www/admin/class_test.html.php
Normal file
116
www/admin/class_test.html.php
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-html';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Convert\Html;
|
||||||
|
use CoreLibs\Output\Form\Elements;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_html = new CoreLibs\Convert\Html();
|
||||||
|
$_elements = new CoreLibs\Output\Form\Elements();
|
||||||
|
$html_class = 'CoreLibs\Convert\Html';
|
||||||
|
$elements_class = 'CoreLibs\Output\Form\Elements';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: HTML/ELEMENTS</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$string = "Something < = > Other <br> Next line";
|
||||||
|
print "HTMLENT: " . Html::htmlent($string) . ": " . $_html->htmlent($string) . "<br>";
|
||||||
|
print "REMOVELB: " . Html::htmlent($string) . ": " . $_html->removeLB($string) . "<br>";
|
||||||
|
$date_str = [2021, 5, 1, 11, 10];
|
||||||
|
print "PRINTDATETIME: "
|
||||||
|
. $_elements->printDateTime($date_str[0], $date_str[1], $date_str[2], $date_str[3], $date_str[4]) . "<br>";
|
||||||
|
// STATIC
|
||||||
|
$string = "Something < = > Other <br> Next line";
|
||||||
|
print "S::HTMLENT: " . Html::htmlent($string) . ": " . $html_class::htmlent($string) . "<br>";
|
||||||
|
print "S::REMOVELB: " . Html::htmlent($string) . ": " . $html_class::removeLB($string) . "<br>";
|
||||||
|
$date_str = [2021, 5, 1, 11, 10];
|
||||||
|
print "S::PRINTDATETIME: "
|
||||||
|
. $elements_class::printDateTime($date_str[0], $date_str[1], $date_str[2], $date_str[3], $date_str[4]) . "<br>";
|
||||||
|
|
||||||
|
// STATIC use
|
||||||
|
echo "U-S::HTML ENT INT: " . Html::htmlent(5) . "<br>";
|
||||||
|
echo "U-S::HTML ENT STRING: " . Html::htmlent('5<<>') . "<br>";
|
||||||
|
echo "U-S::HTML ENT NULL: " . Html::htmlent(null) . "<br>";
|
||||||
|
|
||||||
|
// check convert
|
||||||
|
$checked_list = [
|
||||||
|
['foo', 'foo'],
|
||||||
|
['foo', 'bar'],
|
||||||
|
['foo', ['foo', 'bar']],
|
||||||
|
['foo', ['bar']],
|
||||||
|
];
|
||||||
|
foreach ($checked_list as $check) {
|
||||||
|
print "CHECKED(0): $check[0]: " . Html::checked($check[1], $check[0]) . "<br>";
|
||||||
|
print "CHECKED(1): $check[0]: " . Html::checked($check[1], $check[0], 1) . "<br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// magic link creation test
|
||||||
|
$magic_links = [
|
||||||
|
'mailto:user@bubu.at',
|
||||||
|
'user@bubu.at',
|
||||||
|
'user@bubu.at|Send me email|',
|
||||||
|
'http://www.somelink.com/?with=1234',
|
||||||
|
'http://www.somelink.com/?with=1234|Some Title|',
|
||||||
|
'http://www.somelink.com/?with=1234 <br>Some Title',
|
||||||
|
];
|
||||||
|
foreach ($magic_links as $magic_link) {
|
||||||
|
print "MAGICLINK: " . Html::htmlent($magic_link) . ": " . Html::htmlent(Elements::magicLinks($magic_link)) . "<br>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPREACTED
|
||||||
|
/* $string = "Deprecated Something < = > Other <br> Deprecated Next line";
|
||||||
|
print "D/HTMLENT: $string: ".$basic->htmlent($string)."<br>";
|
||||||
|
print "D/REMOVELB: $string: ".$basic->removeLB($string)."<br>";
|
||||||
|
$date_str = [2021, 5, 1, 11, 10];
|
||||||
|
print "D/PRINTDATETIME: "
|
||||||
|
. $basic->printDateTime($date_str[0], $date_str[1], $date_str[2], $date_str[3], $date_str[4])."<br>";
|
||||||
|
$magic_link = 'http://www.somelink.com/?with=1234|Some Title|';
|
||||||
|
print "D/MAGICLINK: ".Html::htmlent($basic->magicLinks($magic_link))."<Br>";
|
||||||
|
*/
|
||||||
|
|
||||||
|
$text = 'I am some text
|
||||||
|
with some
|
||||||
|
line breaks
|
||||||
|
in there. Theis
|
||||||
|
is sucky';
|
||||||
|
|
||||||
|
print "LB remove: " . \CoreLibs\Convert\Html::removeLB($text) . "<br>";
|
||||||
|
print "LB remove: " . \CoreLibs\Convert\Html::removeLB($text, '##BR##') . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
119
www/admin/class_test.image.php
Normal file
119
www/admin/class_test.image.php
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-image';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Output\Image;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_image = new CoreLibs\Output\Image();
|
||||||
|
$image_class = 'CoreLibs\Output\Image';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: IMAGE</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// thumb sizes
|
||||||
|
$thumb_width = 250;
|
||||||
|
$thumb_height = 300;
|
||||||
|
// class
|
||||||
|
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . 'no_picture_square.jpg';
|
||||||
|
// rotate image first
|
||||||
|
$_image->correctImageOrientation($image);
|
||||||
|
// thumbnail tests
|
||||||
|
echo "<div>CLASS->CREATETHUMBNAILSIMPLE: "
|
||||||
|
. basename($image) . ": WIDTH: $thumb_width<br><img src="
|
||||||
|
. $_image->createThumbnailSimple($image, $thumb_width) . "></div>";
|
||||||
|
// static
|
||||||
|
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . 'no_picture.jpg';
|
||||||
|
// rotate image first
|
||||||
|
$image_class::correctImageOrientation($image);
|
||||||
|
// thumbnail tests
|
||||||
|
echo "<div>S::CREATETHUMBNAILSIMPLE: "
|
||||||
|
. basename($image) . ": WIDTH: $thumb_width<br><img src="
|
||||||
|
. $image_class::createThumbnailSimple($image, $thumb_width) . "></div>";
|
||||||
|
|
||||||
|
echo "U-STATIC VARIOUS:<br>";
|
||||||
|
// image thumbnail
|
||||||
|
$images = array(
|
||||||
|
// height bigger
|
||||||
|
// 'no_picture.jpg',
|
||||||
|
// 'no_picture.png',
|
||||||
|
// width bigger
|
||||||
|
// 'no_picture_width_bigger.jpg',
|
||||||
|
// 'no_picture_width_bigger.png',
|
||||||
|
// square
|
||||||
|
// 'no_picture_square.jpg',
|
||||||
|
// 'no_picture_square.png',
|
||||||
|
// other sample images
|
||||||
|
// '5c501af48da6c.jpg',
|
||||||
|
// Apple HEIC files
|
||||||
|
// 'img_2145.heic',
|
||||||
|
// Photoshop
|
||||||
|
'photoshop_test.psd',
|
||||||
|
);
|
||||||
|
// return mime type ala mimetype
|
||||||
|
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
||||||
|
foreach ($images as $image) {
|
||||||
|
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . $image;
|
||||||
|
list ($height, $width, $img_type) = getimagesize($image);
|
||||||
|
echo "<div><b>IMAGE INFO</b>: " . $height . "x" . $width . ", TYPE: "
|
||||||
|
. $img_type . " [" . $finfo->file($image) . "]</div>";
|
||||||
|
// rotate image first
|
||||||
|
Image::correctImageOrientation($image);
|
||||||
|
// thumbnail tests
|
||||||
|
echo "<div>" . basename($image) . ": WIDTH: $thumb_width<br><img src="
|
||||||
|
. Image::createThumbnailSimple($image, $thumb_width) . "></div>";
|
||||||
|
echo "<div>" . basename($image) . ": HEIGHT: $thumb_height<br><img src="
|
||||||
|
. Image::createThumbnailSimple($image, 0, $thumb_height) . "></div>";
|
||||||
|
echo "<div>" . basename($image) . ": WIDTH/HEIGHT: $thumb_width x $thumb_height<br><img src="
|
||||||
|
. Image::createThumbnailSimple($image, $thumb_width, $thumb_height) . "></div>";
|
||||||
|
// test with dummy
|
||||||
|
echo "<div>" . basename($image) . ": WIDTH/HEIGHT: $thumb_width x $thumb_height (+DUMMY)<br><img src="
|
||||||
|
. Image::createThumbnailSimple($image, $thumb_width, $thumb_height, null, true, false) . "></div>";
|
||||||
|
echo "<hr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
// static
|
||||||
|
/* $image = BASE.LAYOUT.CONTENT_PATH.IMAGES.'no_picture.jpg';
|
||||||
|
// rotate image first
|
||||||
|
$basic->correctImageOrientation($image);
|
||||||
|
// thumbnail tests
|
||||||
|
echo "<div>S::CREATETHUMBNAILSIMPLE: ".basename($image).": WIDTH: $thumb_width<br><img src="
|
||||||
|
. $basic->createThumbnailSimple($image, $thumb_width)."></div>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
76
www/admin/class_test.json.php
Normal file
76
www/admin/class_test.json.php
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-json';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Check\Jason;
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$json_class = 'CoreLibs\Check\Jason';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: JSON</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$json = '{"foo": "bar"}';
|
||||||
|
$output = Jason::jsonConvertToArray($json);
|
||||||
|
print "S::JSON: $json: " . DgS::printAr($output) . "<br>";
|
||||||
|
print "S::JSON ERROR: " . Jason::jsonGetLastError() . ": " . Jason::jsonGetLastError(true) . "<br>";
|
||||||
|
|
||||||
|
$json = '["f: {b"""ar}]';
|
||||||
|
$output = Jason::jsonConvertToArray($json);
|
||||||
|
print "S::E-JSON: $json: " . DgS::printAr($output) . "<br>";
|
||||||
|
print "S::E-JSON ERROR: " . Jason::jsonGetLastError() . ": " . Jason::jsonGetLastError(true) . "<br>";
|
||||||
|
|
||||||
|
// direct
|
||||||
|
$json = '{"direct": "static function call"}';
|
||||||
|
$output = $json_class::jsonConvertToArray($json);
|
||||||
|
print "J/S::JSON: $json: " . DgS::printAr($output) . "<br>";
|
||||||
|
print "J/S::JSON ERROR: " . $json_class::jsonGetLastError() . ": " . $json_class::jsonGetLastError(true) . "<br>";
|
||||||
|
|
||||||
|
$json = '["f: {b"""ar}]';
|
||||||
|
$output = $json_class::jsonConvertToArray($json);
|
||||||
|
print "J/S::E-JSON: $json: " . DgS::printAr($output) . "<br>";
|
||||||
|
print "J/S::E-JSON ERROR: " . $json_class::jsonGetLastError() . ": " . $json_class::jsonGetLastError(true) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATE TEST
|
||||||
|
/* $json = '["f: {b"""ar}]';
|
||||||
|
$output = $basic->jsonConvertToArray($json);
|
||||||
|
print "E-JSON: $json: ".DgS::printAr($output)."<br>";
|
||||||
|
print "E-JSON ERROR: ".$basic->jsonGetLastError().": ".$basic->jsonGetLastError(true)."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
57
www/admin/class_test.lang.php
Normal file
57
www/admin/class_test.lang.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// init language
|
||||||
|
$lang = 'en_utf8';
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-lang';
|
||||||
|
|
||||||
|
$l = new CoreLibs\Language\L10n($lang);
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: LANG</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$string = 'INPUT TEST';
|
||||||
|
|
||||||
|
echo "LANGUAGE SET: " . $l->__getLang() . "<br>";
|
||||||
|
echo "LANGUAGE FILE: " . $l->__getMoFile() . "<br>";
|
||||||
|
echo "INPUT TEST: " . $string . " => " . $l->__($string) . "<br>";
|
||||||
|
|
||||||
|
// switch to other language
|
||||||
|
$lang = 'ja_utf8';
|
||||||
|
$l->l10nReloadMOfile($lang);
|
||||||
|
|
||||||
|
echo "LANGUAGE SET: " . $l->__getLang() . "<br>";
|
||||||
|
echo "LANGUAGE FILE: " . $l->__getMoFile() . "<br>";
|
||||||
|
echo "INPUT TEST: " . $string . " => " . $l->__($string) . "<br>";
|
||||||
|
// TODO: run compare check input must match output
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
64
www/admin/class_test.math.php
Normal file
64
www/admin/class_test.math.php
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-math';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_math = new CoreLibs\Convert\Math();
|
||||||
|
$math_class = 'CoreLibs\Convert\Math';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: MATH</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
print "FCEIL: " . $_math->fceil(5.1234567890, 5) . "<br>";
|
||||||
|
print "FLOORP: " . $_math->floorp(5123456, -3) . "<br>";
|
||||||
|
print "FLOORP: " . $_math->floorp(5123456, -10) . "<br>";
|
||||||
|
print "INITNUMERIC: " . $_math->initNumeric('123') . "<br>";
|
||||||
|
|
||||||
|
print "S-FCEIL: " . $math_class::fceil(5.1234567890, 5) . "<br>";
|
||||||
|
print "S-FLOORP: " . $math_class::floorp(5123456, -3) . "<br>";
|
||||||
|
print "S-INITNUMERIC: " . $math_class::initNumeric(123) . "<br>";
|
||||||
|
print "S-INITNUMERIC: " . $math_class::initNumeric(123.456) . "<br>";
|
||||||
|
print "S-INITNUMERIC: " . $math_class::initNumeric('123') . "<br>";
|
||||||
|
print "S-INITNUMERIC: " . $math_class::initNumeric('123.456') . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* print "FCEIL: ".$basic->fceil(5.1234567890, 5)."<br>";
|
||||||
|
print "FLOORP: ".$basic->floorp(5123456, -3)."<br>";
|
||||||
|
print "INITNUMERIC: ".$basic->initNumeric('123')."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
68
www/admin/class_test.mime.php
Normal file
68
www/admin/class_test.mime.php
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-mime';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_mime = new CoreLibs\Convert\MimeAppName();
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: MIME</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$mime = 'application/illustrator';
|
||||||
|
print "MIME $mime: " . $_mime->mimeGetAppName($mime) . "<br>";
|
||||||
|
$mime = 'fake/mime';
|
||||||
|
$_mime->mimeSetAppName($mime, 'This is a fake mime');
|
||||||
|
print "MIME $mime: " . $_mime->mimeGetAppName($mime) . "<br>";
|
||||||
|
|
||||||
|
// mime test
|
||||||
|
$mime = 'application/vnd.ms-excel';
|
||||||
|
print "App for mime $mime: " . $_mime->mimeGetAppName($mime) . "<br>";
|
||||||
|
$_mime->mimeSetAppName($mime, 'Microsoft (better) Excel');
|
||||||
|
print "App for mime changed $mime: " . $_mime->mimeGetAppName($mime) . "<br>";
|
||||||
|
|
||||||
|
// static call test
|
||||||
|
$mime = 'application/x-indesign';
|
||||||
|
print "S::App for mime $mime: " . \CoreLibs\Convert\MimeAppName::mimeGetAppName($mime) . "<br>";
|
||||||
|
$mime = 'application/vnd.ms-excel';
|
||||||
|
print "S::App for mime $mime: " . \CoreLibs\Convert\MimeAppName::mimeGetAppName($mime) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $mime = 'application/illustrator';
|
||||||
|
print "MIME $mime: ".$basic->mimeGetAppName($mime)."<br>";
|
||||||
|
$mime = 'fake/mime';
|
||||||
|
$basic->mimeSetAppName($mime, 'This is a fake mime');
|
||||||
|
print "MIME $mime: ".$basic->mimeGetAppName($mime)."<br>"; */
|
||||||
|
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
77
www/admin/class_test.output.form.php
Normal file
77
www/admin/class_test.output.form.php
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', true);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// override ECHO ALL FALSE
|
||||||
|
$ECHO_ALL = true;
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-form';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
// define an array for page use
|
||||||
|
$table_arrays = [];
|
||||||
|
$table_arrays[\CoreLibs\Get\System::getPageName(1)] = [
|
||||||
|
// form fields mtaching up with db fields
|
||||||
|
'table_array' => [
|
||||||
|
],
|
||||||
|
// laod query
|
||||||
|
'load_query' => '',
|
||||||
|
// database table to load from
|
||||||
|
'table_name' => '',
|
||||||
|
// for load dro pdown, format output
|
||||||
|
'show_fields' => [
|
||||||
|
[
|
||||||
|
'name' => 'name'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'enabled',
|
||||||
|
'binary' => ['Yes', 'No'],
|
||||||
|
'before_value' => 'Enabled: '
|
||||||
|
],
|
||||||
|
],
|
||||||
|
// a multi reference entry
|
||||||
|
'element_list' => [
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$form = new CoreLibs\Output\Form\Generate(DB_CONFIG);
|
||||||
|
// $db = new CoreLibs\DB\IO(DB_CONFIG, $basic->log);
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: FORM GENERATE</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
print "MOBILE PHONE: " . $form->mobile_phone . "<br>";
|
||||||
|
// sets table array to include
|
||||||
|
print "MY PAGE NAME: " . $form->my_page_name . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
70
www/admin/class_test.password.php
Normal file
70
www/admin/class_test.password.php
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-pass';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Check\Password as PwdChk;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_password = new CoreLibs\Check\Password();
|
||||||
|
$password_class = 'CoreLibs\Check\Password';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: PASSWORD</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$password = 'something1234';
|
||||||
|
$enc_password = $_password->passwordSet($password);
|
||||||
|
print "PASSWORD: $password: " . $enc_password . "<br>";
|
||||||
|
print "PASSWORD VERIFY: " . (string)$_password->passwordVerify($password, $enc_password) . "<br>";
|
||||||
|
print "PASSWORD REHASH: " . (string)$_password->passwordRehashCheck($enc_password) . "<br>";
|
||||||
|
// static verify
|
||||||
|
$password = 'othername7890';
|
||||||
|
$enc_password = $password_class::passwordSet($password);
|
||||||
|
print "PASSWORD: $password: " . $enc_password . "<br>";
|
||||||
|
print "S-PASSWORD VERIFY: " . (string)$password_class::passwordVerify($password, $enc_password) . "<br>";
|
||||||
|
print "PASSWORD REHASH: " . (string)$password_class::passwordRehashCheck($enc_password) . "<br>";
|
||||||
|
// direct static
|
||||||
|
print "S::PASSWORD VERFIY: " . (string)PwdChk::passwordVerify($password, $enc_password) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $password = 'deprecated4567';
|
||||||
|
$enc_password = $basic->passwordSet($password);
|
||||||
|
print "PASSWORD: $password: ".$enc_password."<br>";
|
||||||
|
print "PASSWORD VERIFY: ".(string)$basic->passwordVerify($password, $enc_password)."<br>";
|
||||||
|
print "PASSWORD REHASH: ".(string)$basic->passwordRehashCheck($enc_password)."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
<?php declare(strict_types=1);
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
declare(strict_types=1);
|
||||||
$DEBUG_ALL = 1;
|
|
||||||
$PRINT_ALL = 1;
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DB_DEBUG = 1;
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
if ($DEBUG_ALL) {
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
@@ -31,27 +34,46 @@ $basic = new CoreLibs\Admin\Backend(DB_CONFIG);
|
|||||||
$basic->dbInfo(true);
|
$basic->dbInfo(true);
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
|
|
||||||
echo "DB_CONFIG_SET constant: <pre>".print_r(DB_CONFIG, true)."</pre><br>";
|
print "<html><head><title>TEST CLASS</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
|
||||||
$basic->hrRunningTime();
|
print '<div><a href="class_test.db.php">Class Test: DB</a></div>';
|
||||||
$basic->runningTime();
|
print '<div><a href="class_test.colors.php">Class Test: Colors</a></div>';
|
||||||
echo "RANDOM KEY [50]: ".$basic->randomKeyGen(50)."<br>";
|
print '<div><a href="class_test.mime.php">Class Test: MIME</a></div>';
|
||||||
echo "TIMED [hr]: ".$basic->hrRunningTime()."<br>";
|
print '<div><a href="class_test.json.php">Class Test: Json</a></div>';
|
||||||
echo "TIMED [def]: ".$basic->runningTime()."<br>";
|
print '<div><a href="class_test.token.php">Class Test: Form Token</a></div>';
|
||||||
echo "TIMED [string]: ".$basic->runningtime_string."<br>";
|
print '<div><a href="class_test.password.php">Class Test: Password</a></div>';
|
||||||
$basic->hrRunningTime();
|
print '<div><a href="class_test.math.php">Class Test: Math</a></div>';
|
||||||
echo "RANDOM KEY [default]: ".$basic->randomKeyGen()."<br>";
|
print '<div><a href="class_test.html.php">Class Test: HTML/ELEMENTS</a></div>';
|
||||||
echo "TIMED [hr]: ".$basic->hrRunningTime()."<br>";
|
print '<div><a href="class_test.email.php">Class Test: EMAIL</a></div>';
|
||||||
|
print '<div><a href="class_test.uids.php">Class Test: UIDS</a></div>';
|
||||||
// color
|
print '<div><a href="class_test.phpv.php">Class Test: PHP VERSION</a></div>';
|
||||||
print "COLOR: -1, -1, -1: ".$basic->rgb2hex(-1, -1, -1)."<br>";
|
print '<div><a href="class_test.hash.php">Class Test: HASH</a></div>';
|
||||||
print "COLOR: 10, 20, 30: ".$basic->rgb2hex(10, 20, 30)."<br>";
|
print '<div><a href="class_test.encoding.php">Class Test: ENCODING</a></div>';
|
||||||
|
print '<div><a href="class_test.image.php">Class Test: IMAGE</a></div>';
|
||||||
|
print '<div><a href="class_test.byte.php">Class Test: BYTE CONVERT</a></div>';
|
||||||
|
print '<div><a href="class_test.datetime.php">Class Test: DATE/TIME</a></div>';
|
||||||
|
print '<div><a href="class_test.array.php">Class Test: ARRAY HANDLER</a></div>';
|
||||||
|
print '<div><a href="class_test.file.php">Class Test: FILE</a></div>';
|
||||||
|
print '<div><a href="class_test.randomkey.php">Class Test: RANDOM KEY</a></div>';
|
||||||
|
print '<div><a href="class_test.system.php">Class Test: SYSTEM</a></div>';
|
||||||
|
print '<div><a href="class_test.runningtime.php">Class Test: RUNNING TIME</a></div>';
|
||||||
|
print '<div><a href="class_test.debug.php">Class Test: DEBUG</a></div>';
|
||||||
|
print '<div><a href="class_test.form.php">Class Test: FORM</a></div>';
|
||||||
|
print '<div><a href="class_test.backend.php">Class Test: BACKEND ADMIN CLASS</a></div>';
|
||||||
|
print '<div><a href="class_test.lang.php">Class Test: LANG/L10n</a></div>';
|
||||||
|
print '<div><a href="class_test.smarty.php">Class Test: SMARTY</a></div>';
|
||||||
|
print '<div><a href="class_test.autoloader.php">Class Test: AUTOLOADER</a></div>';
|
||||||
|
|
||||||
|
print "<hr>";
|
||||||
|
// print all _ENV vars set
|
||||||
|
print "<div>READ _ENV ARRAY:</div>";
|
||||||
|
print "<pre>" . print_r(array_map('htmlentities', $_ENV), true) . "</pre>";
|
||||||
// set + check edit access id
|
// set + check edit access id
|
||||||
$edit_access_id = 3;
|
$edit_access_id = 3;
|
||||||
if (is_object($login) && isset($login->acl['unit'])) {
|
if (is_object($login) && isset($login->acl['unit'])) {
|
||||||
print "ACL UNIT: ".print_r(array_keys($login->acl['unit']), true)."<br>";
|
print "ACL UNIT: " . print_r(array_keys($login->acl['unit']), true) . "<br>";
|
||||||
print "ACCESS CHECK: ".(string)$login->loginCheckEditAccess($edit_access_id)."<br>";
|
print "ACCESS CHECK: " . (string)$login->loginCheckEditAccess($edit_access_id) . "<br>";
|
||||||
if ($login->loginCheckEditAccess($edit_access_id)) {
|
if ($login->loginCheckEditAccess($edit_access_id)) {
|
||||||
$basic->edit_access_id = $edit_access_id;
|
$basic->edit_access_id = $edit_access_id;
|
||||||
} else {
|
} else {
|
||||||
@@ -61,285 +83,64 @@ if (is_object($login) && isset($login->acl['unit'])) {
|
|||||||
print "Something went wrong with the login<br>";
|
print "Something went wrong with the login<br>";
|
||||||
}
|
}
|
||||||
|
|
||||||
// $basic->debug('SESSION', $basic->print_ar($_SESSION));
|
// $basic->log->debug('SESSION', \CoreLibs\Debug\Support::printAr($_SESSION));
|
||||||
|
|
||||||
print "<html><head><title>TEST CLASS</title><head>";
|
|
||||||
print "<body>";
|
|
||||||
print '<form method="post" name="loginlogout">';
|
print '<form method="post" name="loginlogout">';
|
||||||
print '<a href="javascript:document.loginlogout.login_logout.value=\'Logou\';document.loginlogout.submit();">Logout</a>';
|
print '<a href="javascript:document.loginlogout.login_logout.value=\'Logou\';'
|
||||||
|
. 'document.loginlogout.submit();">Logout</a>';
|
||||||
print '<input type="hidden" name="login_logout" value="">';
|
print '<input type="hidden" name="login_logout" value="">';
|
||||||
print '</form>';
|
print '</form>';
|
||||||
|
|
||||||
// print the debug core vars
|
// print the debug core vars
|
||||||
print "DEBUG OUT: ".$basic->debug_output."<br>";
|
foreach (['on', 'off'] as $flag) {
|
||||||
print "ECHO OUT: ".$basic->echo_output."<br>";
|
foreach (['debug', 'echo', 'print'] as $type) {
|
||||||
print "PRINT OUT: ".$basic->print_output."<br>";
|
$prefix = $flag == 'off' ? 'NOT ' : '';
|
||||||
print "NOT DEBUG OUT: ".$basic->debug_output_not."<br>";
|
print $prefix . strtoupper($type) . ' OUT: '
|
||||||
print "NOT ECHO OUT: ".$basic->echo_output_not."<br>";
|
. \CoreLibs\Debug\Support::printAr($basic->log->getLogLevel($type, $flag)) . '<br>';
|
||||||
print "NOT PRINT OUT: ".$basic->print_output_not."<br>";
|
}
|
||||||
print "DEBUG OUT ALL: ".$basic->debug_output_all."<br>";
|
}
|
||||||
print "ECHO OUT ALL: ".$basic->echo_output_all."<br>";
|
foreach (['debug', 'echo', 'print'] as $type) {
|
||||||
print "PRINT OUT ALL: ".$basic->print_output_all."<br>";
|
print strtoupper($type) . ' OUT ALL: ' . $basic->log->getLogLevelAll($type) . '<br>';
|
||||||
|
}
|
||||||
|
|
||||||
print "CALLER BACKTRACE: ".$basic->getCallerMethod()."<br>";
|
$basic->log->debug('SOME MARK', 'Some error output');
|
||||||
$basic->debug('SOME MARK', 'Some error output');
|
|
||||||
|
|
||||||
print "EDIT ACCESS ID: ".$basic->edit_access_id."<br>";
|
// INTERNAL SET
|
||||||
|
print "EDIT ACCESS ID: " . $basic->edit_access_id . "<br>";
|
||||||
if (is_object($login)) {
|
if (is_object($login)) {
|
||||||
// print "ACL: <br>".$basic->print_ar($login->acl)."<br>";
|
// print "ACL: <br>".$basic->print_ar($login->acl)."<br>";
|
||||||
$basic->debug('ACL', "ACL: ".$basic->printAr($login->acl));
|
$basic->log->debug('ACL', "ACL: " . \CoreLibs\Debug\Support::printAr($login->acl));
|
||||||
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
|
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
|
||||||
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
|
// print "DEFAULT ACL: <br>".$basic->print_ar($login->default_acl_list)."<br>";
|
||||||
// $result = array_flip(array_filter(array_flip($login->default_acl_list), function ($key) { if (is_numeric($key)) return $key; }));
|
// $result = array_flip(
|
||||||
|
// array_filter(
|
||||||
|
// array_flip($login->default_acl_list),
|
||||||
|
// function ($key) {
|
||||||
|
// if (is_numeric($key)) {
|
||||||
|
// return $key;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// )
|
||||||
|
// );
|
||||||
// print "DEFAULT ACL: <br>".$basic->print_ar($result)."<br>";
|
// print "DEFAULT ACL: <br>".$basic->print_ar($result)."<br>";
|
||||||
// DEPRICATED CALL
|
// DEPRICATED CALL
|
||||||
// $basic->adbSetACL($login->acl);
|
// $basic->adbSetACL($login->acl);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DB client encoding
|
print "THIS HOST: " . HOST_NAME . ", with PROTOCOL: " . HOST_PROTOCOL . " is running SSL: " . HOST_SSL . "<br>";
|
||||||
print "DB Client encoding: ".$basic->dbGetEncoding()."<br>";
|
print "DIR: " . DIR . "<br>";
|
||||||
|
print "BASE: " . BASE . "<br>";
|
||||||
|
print "ROOT: " . ROOT . "<br>";
|
||||||
|
print "HOST: " . HOST_NAME . " => DB HOST: " . DB_CONFIG_NAME . " => " . print_r(DB_CONFIG, true) . "<br>";
|
||||||
|
|
||||||
while ($res = $basic->dbReturn("SELECT * FROM max_test", 0, true)) {
|
$ds = defined('DS') ? DS : DIRECTORY_SEPARATOR;
|
||||||
print "TIME: ".$res['time']."<br>";
|
$du = DS ?? DIRECTORY_SEPARATOR;
|
||||||
}
|
print "DS is: " . $ds . "<br>";
|
||||||
print "CACHED DATA: <pre>".print_r($basic->cursor_ext, true)."</pre><br>";
|
print "SERVER HOST: " . $_SERVER['HTTP_HOST'] . "<br>";
|
||||||
while ($res = $basic->dbReturn("SELECT * FROM max_test")) {
|
|
||||||
print "[CACHED] TIME: ".$res['time']."<br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
$status = $basic->dbExec("INSERT INTO foo (test) VALUES ('FOO TEST ".time()."') RETURNING test");
|
|
||||||
print "DIRECT INSERT STATUS: $status | PRIMARY KEY: ".$basic->insert_id." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, true)."<br>";
|
|
||||||
print "DIRECT INSERT PREVIOUS INSERTED: ".print_r($basic->dbReturnRow("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), true)."<br>";
|
|
||||||
$basic->dbPrepare("ins_foo", "INSERT INTO foo (test) VALUES ($1)");
|
|
||||||
$status = $basic->dbExecute("ins_foo", array('BAR TEST '.time()));
|
|
||||||
print "PREPARE INSERT STATUS: $status | PRIMARY KEY: ".$basic->insert_id." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, true)."<br>";
|
|
||||||
print "PREPARE INSERT PREVIOUS INSERTED: ".print_r($basic->dbReturnRow("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), true)."<br>";
|
|
||||||
// returning test with multiple entries
|
|
||||||
// $status = $basic->db_exec("INSERT INTO foo (test) values ('BAR 1 ".time()."'), ('BAR 2 ".time()."'), ('BAR 3 ".time()."') RETURNING foo_id");
|
|
||||||
$status = $basic->dbExec("INSERT INTO foo (test) values ('BAR 1 ".time()."'), ('BAR 2 ".time()."'), ('BAR 3 ".time()."') RETURNING foo_id, test");
|
|
||||||
print "DIRECT MULTIPLE INSERT STATUS: $status | PRIMARY KEYS: ".print_r($basic->insert_id, true)." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, true)."<br>";
|
|
||||||
// no returning, but not needed ;
|
|
||||||
$status = $basic->dbExec("INSERT INTO foo (test) VALUES ('FOO; TEST ".time()."');");
|
|
||||||
print "DIRECT INSERT STATUS: $status | PRIMARY KEY: ".$basic->insert_id." | PRIMARY KEY EXT: ".print_r($basic->insert_id_ext, true)."<br>";
|
|
||||||
// UPDATE WITH RETURNING
|
|
||||||
$status = $basic->dbExec("UPDATE foo SET test = 'SOMETHING DIFFERENT' WHERE foo_id = 3688452 RETURNING test");
|
|
||||||
print "UPDATE STATUS: $status | RETURNING EXT: ".print_r($basic->insert_id_ext, true)."<br>";
|
|
||||||
|
|
||||||
# db write class test
|
|
||||||
$table = 'foo';
|
|
||||||
print "TABLE META DATA: ".$basic->printAr($basic->dbShowTableMetaData($table))."<br>";
|
|
||||||
$primary_key = ''; # unset
|
|
||||||
$db_write_table = array('test', 'string_a', 'number_a', 'some_bool');
|
|
||||||
// $db_write_table = array('test');
|
|
||||||
$object_fields_not_touch = array();
|
|
||||||
$object_fields_not_update = array();
|
|
||||||
$data = array('test' => 'BOOL TEST SOMETHING '.time(), 'string_a' => 'SOME TEXT', 'number_a' => 5);
|
|
||||||
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
|
|
||||||
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
|
|
||||||
$data = array('test' => 'BOOL TEST ON '.time(), 'string_a' => '', 'number_a' => 0, 'some_bool' => 1);
|
|
||||||
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
|
|
||||||
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
|
|
||||||
$data = array('test' => 'BOOL TEST OFF '.time(), 'string_a' => null, 'number_a' => null, 'some_bool' => 0);
|
|
||||||
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
|
|
||||||
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
|
|
||||||
$data = array('test' => 'BOOL TEST UNSET '.time());
|
|
||||||
$primary_key = $basic->dbWriteDataExt($db_write_table, $primary_key, $table, $object_fields_not_touch, $object_fields_not_update, $data);
|
|
||||||
print "Wrote to DB tabel $table and got primary key $primary_key<br>";
|
|
||||||
|
|
||||||
// return Array Test
|
|
||||||
$query = "SELECT type, sdate, integer FROM foobar";
|
|
||||||
$data = $basic->dbReturnArray($query, true);
|
|
||||||
print "Full foobar list: <br><pre>".print_r($data, true)."</pre><br>";
|
|
||||||
|
|
||||||
# async test queries
|
|
||||||
/* $basic->dbExecAsync("SELECT test FROM foo, (SELECT pg_sleep(10)) as sub WHERE foo_id IN (27, 50, 67, 44, 10)");
|
|
||||||
echo "WAITING FOR ASYNC: ";
|
|
||||||
$chars = array('|', '/', '-', '\\');
|
|
||||||
while (($ret = $basic->dbCheckAsync()) === true)
|
|
||||||
{
|
|
||||||
if ((list($_, $char) = each($chars)) === FALSE)
|
|
||||||
{
|
|
||||||
reset($chars);
|
|
||||||
list($_, $char) = each($chars);
|
|
||||||
}
|
|
||||||
print $char;
|
|
||||||
sleep(1);
|
|
||||||
flush();
|
|
||||||
}
|
|
||||||
print "<br>END STATUS: ".$ret."<br>";
|
|
||||||
// while ($res = $basic->dbFetchArray($ret))
|
|
||||||
while ($res = $basic->dbFetchArray())
|
|
||||||
{
|
|
||||||
echo "RES: ".$res['test']."<br>";
|
|
||||||
}
|
|
||||||
# test async insert
|
|
||||||
$basic->dbExecAsync("INSERT INTO foo (Test) VALUES ('ASYNC TEST ".time()."')");
|
|
||||||
echo "WAITING FOR ASYNC INSERT: ";
|
|
||||||
while (($ret = $basic->dbCheckAsync()) === true)
|
|
||||||
{
|
|
||||||
print ".";
|
|
||||||
sleep(1);
|
|
||||||
flush();
|
|
||||||
}
|
|
||||||
print "<br>END STATUS: ".$ret." | PK: ".$basic->insert_id."<br>";
|
|
||||||
print "ASYNC PREVIOUS INSERTED: ".print_r($basic->dbReturnRow("SELECT foo_id, test FROM foo WHERE foo_id = ".$basic->insert_id), true)."<br>"; */
|
|
||||||
|
|
||||||
$to_db_version = '9.1.9';
|
|
||||||
print "VERSION DB: ".$basic->dbVersion()."<br>";
|
|
||||||
print "DB Version smaller $to_db_version: ".$basic->dbCompareVersion('<'.$to_db_version)."<br>";
|
|
||||||
print "DB Version smaller than $to_db_version: ".$basic->dbCompareVersion('<='.$to_db_version)."<br>";
|
|
||||||
print "DB Version equal $to_db_version: ".$basic->dbCompareVersion('='.$to_db_version)."<br>";
|
|
||||||
print "DB Version bigger than $to_db_version: ".$basic->dbCompareVersion('>='.$to_db_version)."<br>";
|
|
||||||
print "DB Version bigger $to_db_version: ".$basic->dbCompareVersion('>'.$to_db_version)."<br>";
|
|
||||||
|
|
||||||
/* $q = "SELECT FOO FRO BAR";
|
|
||||||
// $q = "Select * from foo";
|
|
||||||
$foo = $basic->dbExecAsync($q);
|
|
||||||
print "[ERR] Query: ".$q."<br>";
|
|
||||||
print "[ERR] RESOURCE: $foo<br>";
|
|
||||||
while (($ret = $basic->dbCheckAsync()) === true)
|
|
||||||
{
|
|
||||||
print "[ERR]: $ret<br>";
|
|
||||||
sleep(5);
|
|
||||||
} */
|
|
||||||
|
|
||||||
// search path check
|
|
||||||
$q = "SHOW search_path";
|
|
||||||
$cursor = $basic->dbExec($q);
|
|
||||||
$data = $basic->dbFetchArray($cursor)['search_path'];
|
|
||||||
print "RETURN DATA FOR search_path: ".$data."<br>";
|
|
||||||
// print "RETURN DATA FOR search_path: ".$basic->printAr($data)."<br>";
|
|
||||||
// insert something into test.schema_test and see if we get the PK back
|
|
||||||
$status = $basic->dbExec("INSERT INTO test.schema_test (contents, id) VALUES ('TIME: ".time()."', ".rand(1, 10).")");
|
|
||||||
print "OTHER SCHEMA INSERT STATUS: ".$status." | PK NAME: ".$basic->pk_name.", PRIMARY KEY: ".$basic->insert_id."<br>";
|
|
||||||
|
|
||||||
// time string thest
|
|
||||||
$timestamp = 5887998.33445;
|
|
||||||
$time_string = $basic->timeStringFormat($timestamp);
|
|
||||||
print "PLANE TIME STRING: ".$timestamp."<br>";
|
|
||||||
print "TIME STRING TEST: ".$time_string."<br>";
|
|
||||||
print "REVERSE TIME STRING: ".$basic->stringToTime($time_string)."<br>";
|
|
||||||
if (round($timestamp, 4) == $basic->stringToTime($time_string)) {
|
|
||||||
print "REVERSE TIME STRING MATCH<br>";
|
|
||||||
} else {
|
|
||||||
print "REVERSE TRIME STRING DO NOT MATCH<br>";
|
|
||||||
}
|
|
||||||
print "ZERO TIME STRING: ".$basic->timeStringFormat(0, true)."<br>";
|
|
||||||
print "ZERO TIME STRING: ".$basic->timeStringFormat(0.0, true)."<br>";
|
|
||||||
print "ZERO TIME STRING: ".$basic->timeStringFormat(1.005, true)."<br>";
|
|
||||||
|
|
||||||
echo "HTML ENT INT: ".$basic->htmlent(5)."<br>";
|
|
||||||
echo "HTML ENT STRING: ".$basic->htmlent('5<<>')."<br>";
|
|
||||||
echo "HTML ENT NULL: ".$basic->htmlent(null)."<br>";
|
|
||||||
|
|
||||||
// magic links test
|
|
||||||
print $basic->magicLinks('user@bubu.at').'<br>';
|
|
||||||
print $basic->magicLinks('http://test.com/foo/bar.php?foo=1').'<br>';
|
|
||||||
|
|
||||||
// compare date
|
|
||||||
$date_1 = '2017/1/5';
|
|
||||||
$date_2 = '2017-01-05';
|
|
||||||
print "COMPARE DATE: ".$basic->compareDate($date_1, $date_2)."<br>";
|
|
||||||
|
|
||||||
// recursive array search
|
|
||||||
$test_array = array(
|
|
||||||
'foo' => 'bar',
|
|
||||||
'input' => array(
|
|
||||||
'element_a' => array(
|
|
||||||
'type' => 'text'
|
|
||||||
),
|
|
||||||
'element_b' => array(
|
|
||||||
'type' => 'email'
|
|
||||||
),
|
|
||||||
'element_c' => array(
|
|
||||||
'type' => 'email'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
echo "SOURCE ARRAY: ".$basic->printAr($test_array)."<br>";
|
|
||||||
echo "FOUND ELEMENTS [base]: ".$basic->printAr($basic->arraySearchRecursive('email', $test_array, 'type'))."<br>";
|
|
||||||
echo "FOUND ELEMENTS [input]: ".$basic->printAr($basic->arraySearchRecursive('email', $test_array['input'], 'type'))."<br>";
|
|
||||||
|
|
||||||
// *** BYTES TEST ***
|
|
||||||
$bytes = array(
|
|
||||||
-123123123,
|
|
||||||
999999, // KB-1
|
|
||||||
999999999, // MB-1
|
|
||||||
254779258, // MB-n
|
|
||||||
999999999999999, // TB-1
|
|
||||||
588795544887632, // TB-n
|
|
||||||
999999999999999999, // PB-1
|
|
||||||
9223372036854775807, // MAX INT
|
|
||||||
999999999999999999999, // EB-1
|
|
||||||
);
|
|
||||||
print "<b>BYTE FORMAT TESTS</b><br>";
|
|
||||||
foreach ($bytes as $byte) {
|
|
||||||
print '<div style="display: flex; border-bottom: 1px dashed gray;">';
|
|
||||||
//
|
|
||||||
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
|
||||||
print "(".number_format($byte)."/".$byte.") bytes :";
|
|
||||||
print '</div><div style="width: 40%;">';
|
|
||||||
print $basic->humanReadableByteFormat($byte);
|
|
||||||
print "</div>";
|
|
||||||
//
|
|
||||||
print "</div>";
|
|
||||||
//
|
|
||||||
print '<div style="display: flex; border-bottom: 1px dotted red;">';
|
|
||||||
//
|
|
||||||
print '<div style="width: 35%; text-align: right; padding-right: 2px;">';
|
|
||||||
print "bytes [si]:";
|
|
||||||
print '</div><div style="width: 40%;">';
|
|
||||||
// print $basic->byteStringFormat($byte, true, false, true);
|
|
||||||
print $basic->humanReadableByteFormat($byte, $basic::BYTE_FORMAT_SI);
|
|
||||||
print "</div>";
|
|
||||||
//
|
|
||||||
print "</div>";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// *** IMAGE TESTS ***
|
|
||||||
echo "<hr>";
|
|
||||||
// image thumbnail
|
|
||||||
$images = array(
|
|
||||||
// height bigger
|
|
||||||
// 'no_picture.jpg',
|
|
||||||
// 'no_picture.png',
|
|
||||||
// width bigger
|
|
||||||
// 'no_picture_width_bigger.jpg',
|
|
||||||
// 'no_picture_width_bigger.png',
|
|
||||||
// square
|
|
||||||
// 'no_picture_square.jpg',
|
|
||||||
// 'no_picture_square.png',
|
|
||||||
// other sample images
|
|
||||||
// '5c501af48da6c.jpg',
|
|
||||||
// Apple HEIC files
|
|
||||||
// 'img_2145.heic',
|
|
||||||
// Photoshop
|
|
||||||
'photoshop_test.psd',
|
|
||||||
);
|
|
||||||
$thumb_width = 250;
|
|
||||||
$thumb_height = 300;
|
|
||||||
// return mime type ala mimetype
|
|
||||||
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
|
||||||
foreach ($images as $image) {
|
|
||||||
$image = BASE.LAYOUT.CONTENT_PATH.IMAGES.$image;
|
|
||||||
list ($height, $width, $img_type) = getimagesize($image);
|
|
||||||
echo "<div>IMAGE INFO: ".$height."x".$width.", TYPE: ".$img_type." [".$finfo->file($image)."]</div>";
|
|
||||||
// rotate image first
|
|
||||||
$basic->correctImageOrientation($image);
|
|
||||||
// thumbnail tests
|
|
||||||
echo "<div>".basename($image).": WIDTH: $thumb_width<br><img src=".$basic->createThumbnailSimple($image, $thumb_width)."></div>";
|
|
||||||
echo "<div>".basename($image).": HEIGHT: $thumb_height<br><img src=".$basic->createThumbnailSimple($image, 0, $thumb_height)."></div>";
|
|
||||||
echo "<div>".basename($image).": WIDTH/HEIGHT: $thumb_width x $thumb_height<br><img src=".$basic->createThumbnailSimple($image, $thumb_width, $thumb_height)."></div>";
|
|
||||||
// test with dummy
|
|
||||||
echo "<div>".basename($image).": WIDTH/HEIGHT: $thumb_width x $thumb_height (+DUMMY)<br><img src=".$basic->createThumbnailSimple($image, $thumb_width, $thumb_height, null, true, false)."></div>";
|
|
||||||
echo "<hr>";
|
|
||||||
}
|
|
||||||
|
|
||||||
// print error messages
|
// print error messages
|
||||||
// print $login->printErrorMsg();
|
// print $login->log->printErrorMsg();
|
||||||
print $basic->printErrorMsg();
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
print "</body></html>";
|
print "</body></html>";
|
||||||
|
|
||||||
|
|||||||
70
www/admin/class_test.phpv.php
Normal file
70
www/admin/class_test.phpv.php
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-phpv';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Check\PhpVersion;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_phpv = new CoreLibs\Check\PhpVersion();
|
||||||
|
$phpv_class = 'CoreLibs\Check\PhpVersion';
|
||||||
|
|
||||||
|
// define a list of from to color sets for conversion test
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: PHP VERSION</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$min_version_s = '7';
|
||||||
|
$min_version_ss = '7.1';
|
||||||
|
$min_version = '7.1.0';
|
||||||
|
$max_version = '7.3.1';
|
||||||
|
// class
|
||||||
|
print "MIN: $min_version: " . (string)$_phpv->checkPHPVersion($min_version) . "<br>";
|
||||||
|
print "MIN/MAX: $min_version/$max_version: " . (string)$_phpv->checkPHPVersion($min_version, $max_version) . "<br>";
|
||||||
|
print "MIN/S: $min_version_s: " . (string)$_phpv->checkPHPVersion($min_version_s) . "<br>";
|
||||||
|
print "MIN/SS: $min_version_ss: " . (string)$_phpv->checkPHPVersion($min_version_ss) . "<br>";
|
||||||
|
// static
|
||||||
|
print "S::MIN: $min_version: " . (string)$phpv_class::checkPHPVersion($min_version) . "<br>";
|
||||||
|
print "S::MIN/MAX: $min_version/$max_version: "
|
||||||
|
. (string)$phpv_class::checkPHPVersion($min_version, $max_version) . "<br>";
|
||||||
|
print "S::MIN/S: $min_version_s: " . (string)$phpv_class::checkPHPVersion($min_version_s) . "<br>";
|
||||||
|
print "S::MIN/SS: $min_version_ss: " . (string)$phpv_class::checkPHPVersion($min_version_ss) . "<br>";
|
||||||
|
// use stats
|
||||||
|
print "U-S::MIN: $min_version: " . (string)PhpVersion::checkPHPVersion($min_version) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
// print "MIN: $min_version: ".(string)$basic->checkPHPVersion($min_version)."<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
58
www/admin/class_test.randomkey.php
Normal file
58
www/admin/class_test.randomkey.php
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-randomkey';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Create\RandomKey;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$array_class = 'CoreLibs\Create\RandomKey';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: RANDOM KEY</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$key_length = 10;
|
||||||
|
$key_length_b = 5;
|
||||||
|
print "S::RANDOMKEYGEN(auto): " . RandomKey::randomKeyGen() . "<br>";
|
||||||
|
print "S::SETRANDOMKEYLENGTH($key_length): " . RandomKey::setRandomKeyLength($key_length) . "<br>";
|
||||||
|
print "S::RANDOMKEYGEN($key_length): " . RandomKey::randomKeyGen() . "<br>";
|
||||||
|
print "S::RANDOMKEYGEN($key_length_b): " . RandomKey::randomKeyGen($key_length_b) . "<br>";
|
||||||
|
print "S::RANDOMKEYGEN($key_length): " . RandomKey::randomKeyGen() . "<br>";
|
||||||
|
$_array = new CoreLibs\Create\RandomKey();
|
||||||
|
print "C->RANDOMKEYGEN(auto): " . $_array->randomKeyGen() . "<br>";
|
||||||
|
// DEPRECATED
|
||||||
|
// print "D\RANDOMKEYGEN(auto): ".$basic->randomKeyGen()."<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
66
www/admin/class_test.runningtime.php
Normal file
66
www/admin/class_test.runningtime.php
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-runningtime';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Debug\RunningTime;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: RUNNING IMTE</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
RunningTime::hrRunningTime();
|
||||||
|
RunningTime::runningTime();
|
||||||
|
echo "RANDOM KEY [50]: " . \CoreLibs\Create\RandomKey::randomKeyGen(50) . "<br>";
|
||||||
|
echo "TIMED [hr]: " . RunningTime::hrRunningTime() . "<br>";
|
||||||
|
echo "TIMED [def]: " . RunningTime::runningTime() . "<br>";
|
||||||
|
echo "TIMED [string]: " . RunningTime::runningTimeString() . "<br>";
|
||||||
|
RunningTime::hrRunningTime();
|
||||||
|
echo "RANDOM KEY [default]: " . \CoreLibs\Create\RandomKey::randomKeyGen() . "<br>";
|
||||||
|
echo "TIMED [hr]: " . RunningTime::hrRunningTime() . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $basic->hrRunningTime();
|
||||||
|
$basic->runningTime();
|
||||||
|
echo "RANDOM KEY [50]: ".$basic->randomKeyGen(50)."<br>";
|
||||||
|
echo "TIMED [hr]: ".$basic->hrRunningTime()."<br>";
|
||||||
|
echo "TIMED [def]: ".$basic->runningTime()."<br>";
|
||||||
|
echo "TIMED [string]: ".$basic->runningtime_string."<br>";
|
||||||
|
$basic->hrRunningTime();
|
||||||
|
echo "RANDOM KEY [default]: ".$basic->randomKeyGen()."<br>";
|
||||||
|
echo "TIMED [hr]: ".$basic->hrRunningTime()."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
97
www/admin/class_test.smarty.php
Normal file
97
www/admin/class_test.smarty.php
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = true;
|
||||||
|
$PRINT_ALL = true;
|
||||||
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', true);
|
||||||
|
// set language
|
||||||
|
$lang = 'en_utf8';
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// override ECHO ALL FALSE
|
||||||
|
$ECHO_ALL = true;
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-smarty';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$smarty = new CoreLibs\Template\SmartyExtend();
|
||||||
|
// for testing with or without CMS
|
||||||
|
// $cms = new CoreLibs\Admin\Backend(DB_CONFIG);
|
||||||
|
$l = new CoreLibs\Language\L10n($lang);
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: SMARTY</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$smarty->DATA['JS_DEBUG'] = DEBUG;
|
||||||
|
$smarty->MASTER_TEMPLATE_NAME = 'main_body.tpl';
|
||||||
|
$smarty->TEMPLATE_NAME = 'smarty_test.tpl';
|
||||||
|
$smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css';
|
||||||
|
$smarty->USE_PROTOTYPE = false;
|
||||||
|
$smarty->USE_JQUERY = true;
|
||||||
|
$smarty->JS_DATEPICKR = false;
|
||||||
|
if ($smarty->USE_PROTOTYPE) {
|
||||||
|
$smarty->ADMIN_JAVASCRIPT = 'edit.pt.js';
|
||||||
|
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'prototype.test.js';
|
||||||
|
} elseif ($smarty->USE_JQUERY) {
|
||||||
|
$smarty->ADMIN_JAVASCRIPT = 'edit.jq.js';
|
||||||
|
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'jquery.test.js';
|
||||||
|
}
|
||||||
|
$smarty->PAGE_WIDTH = '100%';
|
||||||
|
// require BASE.INCLUDES.'admin_set_paths.php';
|
||||||
|
$smarty->setSmartyPaths();
|
||||||
|
|
||||||
|
// smarty test
|
||||||
|
$smarty->DATA['SMARTY_TEST'] = 'Test Data';
|
||||||
|
$smarty->DATA['TRANSLATE_TEST'] = $l->__('Are we translated?');
|
||||||
|
$smarty->DATA['TRANSLATE_TEST_SMARTY'] = $smarty->l10n->__('Are we translated?');
|
||||||
|
|
||||||
|
// drop down test with optgroups
|
||||||
|
$options = [
|
||||||
|
'' => '選択してください',
|
||||||
|
'4/25(木)' => [
|
||||||
|
'4/25(木) 11:00-11:50' => '4/25(木) 11:00-11:50',
|
||||||
|
'4/25(木) 12:20-13:00' => '4/25(木) 12:20-13:00'
|
||||||
|
],
|
||||||
|
'4/26(金)' => [
|
||||||
|
'4/26(金) 11:00-11:50' => '4/26(金) 11:00-11:50',
|
||||||
|
'4/26(金) 12:20-13:00' => '4/26(金) 12:20-13:00'
|
||||||
|
],
|
||||||
|
'4/27(土)' => [
|
||||||
|
'4/27(土) 11:00-11:50' => '4/27(土) 11:00-11:50',
|
||||||
|
'4/27(土) 12:20-13:00' => '4/27(土) 12:20-13:00'
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
$smarty->DATA['drop_down_test'] = $options;
|
||||||
|
$smarty->DATA['drop_down_test_selected'] = '';
|
||||||
|
$smarty->DATA['loop_start'] = 2;
|
||||||
|
// require BASE.INCLUDES.'admin_smarty.php';
|
||||||
|
$smarty->setSmartyVarsAdmin();
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
54
www/admin/class_test.system.php
Normal file
54
www/admin/class_test.system.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-system';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
use CoreLibs\Get\System;
|
||||||
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: SYSTEM</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
print "GETHOSTNAME: " . DgS::printAr(System::getHostName()) . "<br>";
|
||||||
|
print "GETPAGENAME(0): " . System::getPageName() . "<br>";
|
||||||
|
print "GETPAGENAME(1): " . System::getPageName(1) . "<br>";
|
||||||
|
print "GETPAGENAME(2): " . System::getPageName(2) . "<br>";
|
||||||
|
print "GETPAGENAMEARRAY: " . \CoreLibs\Debug\Support::printAr(System::getPageNameArray()) . "<br>";
|
||||||
|
// seting errro codes file upload
|
||||||
|
print "FILEUPLOADERRORMESSAGE(): " . System::fileUploadErrorMessage(-1) . "<br>";
|
||||||
|
print "FILEUPLOADERRORMESSAGE(UPLOAD_ERR_CANT_WRITE): "
|
||||||
|
. System::fileUploadErrorMessage(UPLOAD_ERR_CANT_WRITE) . "<br>";
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
61
www/admin/class_test.token.php
Normal file
61
www/admin/class_test.token.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-token';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_token = new CoreLibs\Output\Form\Token();
|
||||||
|
$token_class = 'CoreLibs\Output\Form\Token';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: FORM TOKEN</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
$token = 'test_form_token';
|
||||||
|
$token_id = $_token->setFormToken($token);
|
||||||
|
print "TOKEN: $token: (ID) " . $token_id . " => (S) " . $_SESSION[$token] . "<br>";
|
||||||
|
print "VALIDATE: $token: " . (string)$_token->validateFormToken($token_id, $token) . "<br>";
|
||||||
|
|
||||||
|
$token = 'test_form_token_static';
|
||||||
|
$token_id = $token_class::setFormToken($token);
|
||||||
|
print "S-TOKEN: $token: (ID) " . $token_id . " => (S) " . $_SESSION[$token] . "<br>";
|
||||||
|
print "S-VALIDATE: $token: " . (string)$token_class::validateFormToken($token_id, $token) . "<br>";
|
||||||
|
|
||||||
|
// DEPRECATED
|
||||||
|
/* $token = 'test_form_token_deprecated';
|
||||||
|
$token_id = $basic->setFormToken($token);
|
||||||
|
print "TOKEN: $token: (ID) ".$token_id." => (S) ".$_SESSION[$token]."<br>";
|
||||||
|
print "VALIDATE: $token: ".(string)$basic->validateFormToken($token_id, $token)."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
59
www/admin/class_test.uids.php
Normal file
59
www/admin/class_test.uids.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php // phpcs:ignore warning
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
|
$DEBUG_ALL = 1;
|
||||||
|
$PRINT_ALL = 1;
|
||||||
|
$DB_DEBUG = 1;
|
||||||
|
|
||||||
|
if ($DEBUG_ALL) {
|
||||||
|
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// basic class test file
|
||||||
|
define('USE_DATABASE', false);
|
||||||
|
// sample config
|
||||||
|
require 'config.php';
|
||||||
|
// set session name
|
||||||
|
if (!defined('SET_SESSION_NAME')) {
|
||||||
|
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
|
||||||
|
}
|
||||||
|
// define log file id
|
||||||
|
$LOG_FILE_ID = 'classTest-uids';
|
||||||
|
ob_end_flush();
|
||||||
|
|
||||||
|
$basic = new CoreLibs\Basic();
|
||||||
|
$_uids = new CoreLibs\Create\Uids();
|
||||||
|
$uids_class = 'CoreLibs\Create\Uids';
|
||||||
|
|
||||||
|
print "<html><head><title>TEST CLASS: UIDS</title><head>";
|
||||||
|
print "<body>";
|
||||||
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
|
|
||||||
|
// class
|
||||||
|
print "UUIDV4: " . $_uids->uuidv4() . "<br>";
|
||||||
|
print "UNIQID (d): " . $_uids->uniqId() . "<br>";
|
||||||
|
print "UNIQID (md5): " . $_uids->uniqId('md5') . "<br>";
|
||||||
|
print "UNIQID (sha256): " . $_uids->uniqId('sha256') . "<br>";
|
||||||
|
// statc
|
||||||
|
print "S::UUIDV4: " . $uids_class::uuidv4() . "<br>";
|
||||||
|
print "S::UNIQID (d): " . $uids_class::uniqId() . "<br>";
|
||||||
|
print "S::UNIQID (md5): " . $uids_class::uniqId('md5') . "<br>";
|
||||||
|
print "S::UNIQID (sha256): " . $uids_class::uniqId('sha256') . "<br>";
|
||||||
|
// DEPRECATED
|
||||||
|
/* print "D/UUIDV4: ".$basic->uuidv4()."<br>";
|
||||||
|
print "/DUNIQID (d): ".$basic->uniqId()."<br>"; */
|
||||||
|
|
||||||
|
// error message
|
||||||
|
print $basic->log->printErrorMsg();
|
||||||
|
|
||||||
|
print "</body></html>";
|
||||||
|
|
||||||
|
// __END__
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = 1;
|
||||||
@@ -11,9 +13,11 @@ if ($DEBUG_ALL) {
|
|||||||
|
|
||||||
// sample config
|
// sample config
|
||||||
require 'config.php';
|
require 'config.php';
|
||||||
echo "FILE: ".BASE.LIB."Error.Handling.php<br>";
|
echo "FILE: " . BASE . LIB . "Error.Handling.php<br>";
|
||||||
require(BASE.LIB."Error.Handling.php");
|
require(BASE . LIB . "Error.Handling.php");
|
||||||
|
|
||||||
if ($var) {
|
if ($var) {
|
||||||
echo "OUT<br>";
|
echo "OUT<br>";
|
||||||
}
|
}
|
||||||
|
// this wll throw an error and also write
|
||||||
|
// asdfa(09);
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
// debug for L10n issues in php 7.3
|
|
||||||
|
|
||||||
// namespace test
|
|
||||||
ob_start();
|
|
||||||
|
|
||||||
// init language
|
|
||||||
$lang = 'en_utf8';
|
|
||||||
// admin class tests
|
|
||||||
require 'config.php';
|
|
||||||
$l = new CoreLibs\Language\L10n($lang);
|
|
||||||
ob_end_flush();
|
|
||||||
|
|
||||||
$string = 'INPUT TEST';
|
|
||||||
|
|
||||||
echo "LANGUAGE SET: ".$l->__getLang()."<br>";
|
|
||||||
echo "LANGUAGE FILE: ".$l->__getMoFile()."<br>";
|
|
||||||
echo "INPUT TEST: ".$string." => ".$l->__($string)."<br>";
|
|
||||||
|
|
||||||
// switch to other language
|
|
||||||
$lang = 'ja_utf8';
|
|
||||||
$l->l10nReloadMOfile($lang);
|
|
||||||
|
|
||||||
echo "LANGUAGE SET: ".$l->__getLang()."<br>";
|
|
||||||
echo "LANGUAGE FILE: ".$l->__getMoFile()."<br>";
|
|
||||||
echo "INPUT TEST: ".$string." => ".$l->__($string)."<br>";
|
|
||||||
|
|
||||||
// __END__
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
|
||||||
$DEBUG_ALL = 1;
|
|
||||||
$PRINT_ALL = 1;
|
|
||||||
$DB_DEBUG = 1;
|
|
||||||
|
|
||||||
// namespace test
|
|
||||||
ob_start();
|
|
||||||
|
|
||||||
// admin class tests
|
|
||||||
require 'config.php';
|
|
||||||
$SET_SESSION_NAME = EDIT_SESSION_NAME;
|
|
||||||
|
|
||||||
echo "DIR: ".DIR."<br>ROOT: ".ROOT."<br>BASE: ".BASE."<br>";
|
|
||||||
|
|
||||||
$base = new CoreLibs\Admin\Backend(DB_CONFIG);
|
|
||||||
ob_end_flush();
|
|
||||||
if ($base->getConnectionStatus()) {
|
|
||||||
die("Cannot connect to database");
|
|
||||||
}
|
|
||||||
|
|
||||||
print "Start time: ".$base->runningTime()."<br>";
|
|
||||||
print "HumanReadableByteFormat: ".$base->HumanReadableByteFormat(1234567.12)."<br>";
|
|
||||||
print "humanReadableByteFormat: ".$base->humanReadableByteFormat(1234567.12)."<br>";
|
|
||||||
// print "get_page_name [DEPRECATED]: ".$base->get_page_name()."<br>";
|
|
||||||
print "getPageName: ".$base->getPageName()."<br>";
|
|
||||||
|
|
||||||
print "DB Info: ".$base->dbInfo(true)."<br>";
|
|
||||||
|
|
||||||
|
|
||||||
print "End Time: ".$base->runningTime()."<br>";
|
|
||||||
print "Start Time: ".$base->runningTime()."<br>";
|
|
||||||
|
|
||||||
print "Lang: ".$base->l->__getLang().", MO File: ".$base->l->__getMoFile()."<br>";
|
|
||||||
print "Translate test: Year -> ".$base->l->__('Year')."<br>";
|
|
||||||
|
|
||||||
print "End Time: ".$base->runningTime()."<br>";
|
|
||||||
// end error print
|
|
||||||
print $base->printErrorMsg();
|
|
||||||
|
|
||||||
# __END__
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace Foo;
|
|
||||||
|
|
||||||
class FooBar
|
|
||||||
{
|
|
||||||
public $foo = '';
|
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
$this->foo = 'BAR';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function otherBarBar($wrong)
|
|
||||||
{
|
|
||||||
echo "B: $wrong<br>";
|
|
||||||
}
|
|
||||||
|
|
||||||
public function barBar($wrong)
|
|
||||||
{
|
|
||||||
echo "B: $wrong<br>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$foo = $bar ?? 'EMPTY';
|
|
||||||
echo "BAR: ".$foo."<br>";
|
|
||||||
// define('DS', DIRECTORY_SEPARATOR);
|
|
||||||
$ds = defined('DS') ? DS : DIRECTORY_SEPARATOR;
|
|
||||||
$du = DS ?? DIRECTORY_SEPARATOR;
|
|
||||||
echo "DS is: ".$ds."<br>";
|
|
||||||
|
|
||||||
echo "SERVER HOST: ".$_SERVER['HTTP_HOST']."<br>";
|
|
||||||
|
|
||||||
// __END__
|
|
||||||
11
www/admin/phan_test.php
Executable file
11
www/admin/phan_test.php
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
require 'config.php';
|
||||||
|
require BASE . INCLUDES . 'admin_header.php';
|
||||||
|
|
||||||
|
// $DATA['foo'] = 'bar';
|
||||||
|
// $messages['foo'] = 'bar';
|
||||||
|
|
||||||
|
// __END__
|
||||||
@@ -15,17 +15,19 @@ $MAX_UPLOAD_SIZE = $base->StringByteFormat(ini_get('upload_max_filesize'));
|
|||||||
// test for qqFileUploader (AJAX side)
|
// test for qqFileUploader (AJAX side)
|
||||||
$allowedExtensions = array ('csv', 'zip', 'jpg', 'pdf', 'bz2');
|
$allowedExtensions = array ('csv', 'zip', 'jpg', 'pdf', 'bz2');
|
||||||
$sizeLimit = $MAX_UPLOAD_SIZE; // as set in php ini
|
$sizeLimit = $MAX_UPLOAD_SIZE; // as set in php ini
|
||||||
$base->debug('AJAX UPLOAD', 'Size: '.$sizeLimit.', Memory Limit: '.ini_get('memory_limit'));
|
$base->debug('AJAX UPLOAD', 'Size: ' . $sizeLimit . ', Memory Limit: ' . ini_get('memory_limit'));
|
||||||
$uploader = new FileUpload\qqFileUploader($allowedExtensions, $sizeLimit);
|
$uploader = new FileUpload\qqFileUploader($allowedExtensions, $sizeLimit);
|
||||||
// either in post or get
|
// either in post or get
|
||||||
$_action= $_POST['action'] ? $_POST['action'] : $_GET['action'];
|
$_action = $_POST['action'] ? $_POST['action'] : $_GET['action'];
|
||||||
$_task_uid = $_POST['task_uid'] ? $_POST['task_uid'] : $_GET['task_uid'];
|
$_task_uid = $_POST['task_uid'] ? $_POST['task_uid'] : $_GET['task_uid'];
|
||||||
$get_post['start'] = microtime(true);
|
$get_post['start'] = microtime(true);
|
||||||
$base->debug('AJAX UPLOAD', 'Action: '.$_action.', Task UID: '.$_task_uid.' => '.$base->dateStringFormat($get_post['start']));
|
$base->debug('AJAX UPLOAD', 'Action: ' . $_action . ', Task UID: '
|
||||||
|
. $_task_uid . ' => ' . $base->dateStringFormat($get_post['start']));
|
||||||
|
|
||||||
$upload_path = ROOT.MEDIA.UPLOADS;
|
$upload_path = ROOT . MEDIA . UPLOADS;
|
||||||
$get_post['result'] = $uploader->handleUpload($upload_path, false);
|
$get_post['result'] = $uploader->handleUpload($upload_path, false);
|
||||||
$base->debug('AJAX UPLOAD', 'Memory peak: '.$base->ByteStringFormat(memory_get_usage()).' | '.$base->ByteStringFormat(memory_get_peak_usage()));
|
$base->debug('AJAX UPLOAD', 'Memory peak: ' . $base->ByteStringFormat(memory_get_usage())
|
||||||
|
. ' | ' . $base->ByteStringFormat(memory_get_peak_usage()));
|
||||||
|
|
||||||
// set file name
|
// set file name
|
||||||
$get_post['filename'] = $uploader->uploadFileName;
|
$get_post['filename'] = $uploader->uploadFileName;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ require 'config.php';
|
|||||||
$base = new CoreLibs\Basic();
|
$base = new CoreLibs\Basic();
|
||||||
// set max upload size
|
// set max upload size
|
||||||
$MAX_UPLOAD_SIZE = $base->StringByteFormat(ini_get('upload_max_filesize'));
|
$MAX_UPLOAD_SIZE = $base->StringByteFormat(ini_get('upload_max_filesize'));
|
||||||
$base->debug('UPLOADED FRONT', 'With max size: '.$MAX_UPLOAD_SIZE);
|
$base->debug('UPLOADED FRONT', 'With max size: ' . $MAX_UPLOAD_SIZE);
|
||||||
|
|
||||||
// very basic template output with super basic div for two file upload
|
// very basic template output with super basic div for two file upload
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
$ENABLE_ERROR_HANDLING = 0;
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
|
||||||
$DEBUG_ALL = 1;
|
|
||||||
$PRINT_ALL = 1;
|
|
||||||
$DB_DEBUG = 1;
|
|
||||||
$LOG_PER_RUN = 1;
|
|
||||||
|
|
||||||
define('USE_DATABASE', true);
|
|
||||||
define('USE_HEADER', true);
|
|
||||||
require 'config.php';
|
|
||||||
require BASE.INCLUDES.'admin_header.php';
|
|
||||||
$smarty->MASTER_TEMPLATE_NAME = 'main_body.tpl';
|
|
||||||
$smarty->TEMPLATE_NAME = 'smarty_test.tpl';
|
|
||||||
$smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css';
|
|
||||||
$smarty->USE_PROTOTYPE = false;
|
|
||||||
$smarty->USE_JQUERY = true;
|
|
||||||
$smarty->JS_DATEPICKR = false;
|
|
||||||
if ($smarty->USE_PROTOTYPE) {
|
|
||||||
$smarty->ADMIN_JAVASCRIPT = 'edit.pt.js';
|
|
||||||
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'prototype.test.js';
|
|
||||||
} elseif ($smarty->USE_JQUERY) {
|
|
||||||
$smarty->ADMIN_JAVASCRIPT = 'edit.jq.js';
|
|
||||||
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'jquery.test.js';
|
|
||||||
}
|
|
||||||
$smarty->PAGE_WIDTH = "100%";
|
|
||||||
// require BASE.INCLUDES.'admin_set_paths.php';
|
|
||||||
$smarty->setSmartyPaths();
|
|
||||||
|
|
||||||
// smarty test
|
|
||||||
$smarty->DATA['SMARTY_TEST'] = 'Test Data';
|
|
||||||
$smarty->DATA['TRANSLATE_TEST'] = $cms->l->__('Are we translated?');
|
|
||||||
|
|
||||||
// drop down test with optgroups
|
|
||||||
$options = array (
|
|
||||||
'' => '選択してください',
|
|
||||||
'4/25(木)' => array (
|
|
||||||
'4/25(木) 11:00-11:50' => '4/25(木) 11:00-11:50',
|
|
||||||
'4/25(木) 12:20-13:00' => '4/25(木) 12:20-13:00'
|
|
||||||
),
|
|
||||||
'4/26(金)' => array (
|
|
||||||
'4/26(金) 11:00-11:50' => '4/26(金) 11:00-11:50',
|
|
||||||
'4/26(金) 12:20-13:00' => '4/26(金) 12:20-13:00'
|
|
||||||
),
|
|
||||||
'4/27(土)' => array (
|
|
||||||
'4/27(土) 11:00-11:50' => '4/27(土) 11:00-11:50',
|
|
||||||
'4/27(土) 12:20-13:00' => '4/27(土) 12:20-13:00'
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
$smarty->DATA['drop_down_test'] = $options;
|
|
||||||
|
|
||||||
// require BASE.INCLUDES.'admin_smarty.php';
|
|
||||||
$smarty->setSmartyVarsAdmin();
|
|
||||||
require BASE.INCLUDES.'admin_footer.php';
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
<?php
|
|
||||||
/**
|
|
||||||
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace CoreLibs;
|
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
|
||||||
$DEBUG_ALL = 1;
|
|
||||||
$PRINT_ALL = 1;
|
|
||||||
$DB_DEBUG = 1;
|
|
||||||
|
|
||||||
// admin class tests
|
|
||||||
require 'config.php';
|
|
||||||
$SET_SESSION_NAME = EDIT_SESSION_NAME;
|
|
||||||
$base = new Basic();
|
|
||||||
|
|
||||||
print "THIS HOST: ".HOST_NAME.", with PROTOCOL: ".HOST_PROTOCOL." is running SSL: ".HOST_SSL."<br>";
|
|
||||||
print "DIR: ".DIR."<br>";
|
|
||||||
print "BASE: ".BASE."<br>";
|
|
||||||
print "ROOT: ".ROOT."<br>";
|
|
||||||
print "HOST: ".HOST_NAME." => DB HOST: ".DB_CONFIG_NAME." => ".print_r(DB_CONFIG, true)."<br>";
|
|
||||||
|
|
||||||
$text = 'I am some text
|
|
||||||
with some
|
|
||||||
line breaks
|
|
||||||
in there. Theis
|
|
||||||
is sucky';
|
|
||||||
|
|
||||||
print "LB remove: ".$base->removeLB($text)."<br>";
|
|
||||||
print "LB remove: ".$base->removeLB($text, '##BR##')."<br>";
|
|
||||||
|
|
||||||
// $test = array (
|
|
||||||
// 'A' => array (
|
|
||||||
// 'B' => array (),
|
|
||||||
// 'C' => array (
|
|
||||||
// 'D' => array (),
|
|
||||||
// 'E' => array (
|
|
||||||
// 'F' => array ()
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
// ),
|
|
||||||
// '1' => array (),
|
|
||||||
// '2' => array (),
|
|
||||||
// '3' => array (
|
|
||||||
// 'G' => array ()
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
|
|
||||||
// $base->debug('ARRAY', $base->printAr($test));
|
|
||||||
|
|
||||||
function rec($pre, $cur, $node = array ())
|
|
||||||
{
|
|
||||||
if (!is_array($node)) {
|
|
||||||
$node = array ();
|
|
||||||
}
|
|
||||||
print "<div style='color: green;'>#### PRE: ".$pre.", CUR: ".$cur.", N-c: ".count($node)." [".join('|', array_keys($node))."]</div>";
|
|
||||||
if (!$pre) {
|
|
||||||
print "** <span style='color: red;'>NEW</span><br>";
|
|
||||||
$node[$cur] = array ();
|
|
||||||
} else {
|
|
||||||
if (array_key_exists($pre, $node)) {
|
|
||||||
print "+ <span style='color: orange;'>KEY FOUND:</span> ".$pre.", add: ".$cur."<br>";
|
|
||||||
$node[$pre][$cur] = array ();
|
|
||||||
} else {
|
|
||||||
print "- NOT FOUND: loop<br>";
|
|
||||||
foreach ($node as $_pre => $_cur) {
|
|
||||||
print "> TRY: ".$_pre." => ".count($_cur)." [".join('|', array_keys($_cur))."]<br>";
|
|
||||||
if (count($_cur) > 0) {
|
|
||||||
$node[$_pre] = rec($pre, $cur, $_cur);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $node;
|
|
||||||
}
|
|
||||||
|
|
||||||
function flattenArrayKey(array $array, array $return = array ())
|
|
||||||
{
|
|
||||||
foreach ($array as $key => $sub) {
|
|
||||||
$return[] = $key;
|
|
||||||
if (count($sub) > 0) {
|
|
||||||
$return = flattenArrayKey($sub, $return);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$test = array ();
|
|
||||||
// core
|
|
||||||
$test = rec('', 'A', $test);
|
|
||||||
$test = rec('', '1', $test);
|
|
||||||
$test = rec('', '2', $test);
|
|
||||||
$test = rec('', '3', $test);
|
|
||||||
$test = rec('3', 'G', $test);
|
|
||||||
$test = rec('A', 'B', $test);
|
|
||||||
$test = rec('A', 'C', $test);
|
|
||||||
$test = rec('C', 'D', $test);
|
|
||||||
$test = rec('C', 'E', $test);
|
|
||||||
$test = rec('E', 'F', $test);
|
|
||||||
// new
|
|
||||||
$test = rec('C', 'U', $test);
|
|
||||||
$test = rec('F', 'U', $test);
|
|
||||||
$test = rec('', 'Al', $test);
|
|
||||||
$test = rec('B', 'B1', $test);
|
|
||||||
$base->debug('REC', $base->printAr($test));
|
|
||||||
print "FLATTEN: ".$base->printAr(flattenArrayKey($test))."<br>";
|
|
||||||
|
|
||||||
print $base->printErrorMsg();
|
|
||||||
|
|
||||||
// __END__
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "gullevek/www",
|
"name": "gullevek/corelibs",
|
||||||
"description": "CoreLibs",
|
"description": "CoreLibs",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"authors": [
|
"authors": [
|
||||||
@@ -8,5 +8,12 @@
|
|||||||
"email": "clemens.schwaighofer@egplusww.com"
|
"email": "clemens.schwaighofer@egplusww.com"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"require": {}
|
"autoload": {
|
||||||
|
"classmap": [
|
||||||
|
"lib/"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^9"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2112
www/composer.lock
generated
Normal file
2112
www/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
8
www/configs/.env.example
Normal file
8
www/configs/.env.example
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Master configs
|
||||||
|
BASE_NAME=
|
||||||
|
G_TITLE=
|
||||||
|
# DB configs
|
||||||
|
DB_NAME_TEST=
|
||||||
|
DB_USER_TEST=
|
||||||
|
DB_PASS_TEST=
|
||||||
|
DB_HOST_TEST=
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
* AUTHOR: Clemens Schwaighofer
|
* AUTHOR: Clemens Schwaighofer
|
||||||
* CREATED: 2018/10/11
|
* CREATED: 2018/10/11
|
||||||
@@ -7,19 +8,21 @@
|
|||||||
* HISTORY:
|
* HISTORY:
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
// please be VERY carefull only to change the right side
|
// please be VERY carefull only to change the right side
|
||||||
$DB_CONFIG = array(
|
$DB_CONFIG = [
|
||||||
'test' => array(
|
'test' => [
|
||||||
'db_name' => 'gullevek',
|
'db_name' => $_ENV['DB_NAME_TEST'] ?? '',
|
||||||
'db_user' => 'gullevek',
|
'db_user' => $_ENV['DB_USER_TEST'] ?? '',
|
||||||
'db_pass' => 'gullevek',
|
'db_pass' => $_ENV['DB_PASS_TEST'] ?? '',
|
||||||
'db_host' => 'db.tokyo.tequila.jp',
|
'db_host' => $_ENV['DB_HOST_TEST'] ?? '',
|
||||||
'db_port' => 5432,
|
'db_port' => 5432,
|
||||||
'db_schema' => 'public',
|
'db_schema' => 'public',
|
||||||
'db_type' => 'pgsql',
|
'db_type' => 'pgsql',
|
||||||
'db_encoding' => '',
|
'db_encoding' => '',
|
||||||
'db_ssl' => 'disable' // allow, disable, require, prefer
|
'db_ssl' => 'allow' // allow, disable, require, prefer
|
||||||
)
|
],
|
||||||
);
|
];
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?php declare(strict_types=1);
|
<?php
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
* AUTHOR: Clemens Schwaighofer
|
* AUTHOR: Clemens Schwaighofer
|
||||||
* CREATED: 2018/10/11
|
* CREATED: 2018/10/11
|
||||||
@@ -11,19 +12,21 @@
|
|||||||
* HISTORY:
|
* HISTORY:
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
// other master config to attach
|
// other master config to attach
|
||||||
// $__LOCAL_CONFIG = array(
|
// $__LOCAL_CONFIG = [
|
||||||
// 'db_host' => '',
|
// 'db_host' => '',
|
||||||
// 'location' => '',
|
// 'location' => '',
|
||||||
// 'debug_flag' => true,
|
// 'debug_flag' => true,
|
||||||
// 'site_lang' => 'en_utf8',
|
// 'site_lang' => 'en_utf8',
|
||||||
// 'login_enabled' => true
|
// 'login_enabled' => true
|
||||||
// );
|
// ];
|
||||||
|
|
||||||
// each host has a different db_host
|
// each host has a different db_host
|
||||||
$SITE_CONFIG = array(
|
$SITE_CONFIG = [
|
||||||
// development host
|
// development host
|
||||||
'soba.tokyo.tequila.jp' => array(
|
'soba.tokyo.tequila.jp' => [
|
||||||
// db config selection
|
// db config selection
|
||||||
'db_host' => 'test',
|
'db_host' => 'test',
|
||||||
// other db connections
|
// other db connections
|
||||||
@@ -37,8 +40,8 @@ $SITE_CONFIG = array(
|
|||||||
'site_lang' => 'en_utf8',
|
'site_lang' => 'en_utf8',
|
||||||
// enable/disable login override
|
// enable/disable login override
|
||||||
'login_enabled' => true
|
'login_enabled' => true
|
||||||
),
|
],
|
||||||
// 'other.host.com' => $__LOCAL_CONFIG
|
// 'other.host.com' => $__LOCAL_CONFIG
|
||||||
);
|
];
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user