Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
@@ -1,7 +1,5 @@
|
||||
<?php
|
||||
|
||||
use Phan\Config;
|
||||
|
||||
/**
|
||||
* This configuration will be read and overlaid on top of the
|
||||
* 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
|
||||
* '-d' flag.
|
||||
*/
|
||||
|
||||
use Phan\Config;
|
||||
|
||||
return [
|
||||
// If true, missing properties will be created when
|
||||
// they are first seen. If false, we'll report an
|
||||
@@ -69,14 +70,14 @@ return [
|
||||
// Thus, both first-party and third-party code being used by
|
||||
// your application should be included in this list.
|
||||
'directory_list' => [
|
||||
// Change this to include the folders you wish to analyze
|
||||
// (and the folders of their dependencies)
|
||||
'www',
|
||||
// To speed up analysis, we recommend going back later and
|
||||
// limiting this to only the vendor/ subdirectories your
|
||||
// project depends on.
|
||||
// `phan --init` will generate a list of folders for you
|
||||
//'www/vendor',
|
||||
// Change this to include the folders you wish to analyze
|
||||
// (and the folders of their dependencies)
|
||||
'www',
|
||||
// To speed up analysis, we recommend going back later and
|
||||
// limiting this to only the vendor/ subdirectories your
|
||||
// project depends on.
|
||||
// `phan --init` will generate a list of folders for you
|
||||
//'www/vendor',
|
||||
],
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ table/edit_page_access.sql
|
||||
table/edit_page_content.sql
|
||||
table/edit_user.sql
|
||||
table/edit_log.sql
|
||||
table/edit_log_overflow.sql
|
||||
table/edit_access.sql
|
||||
table/edit_access_user.sql
|
||||
table/edit_access_data.sql
|
||||
@@ -32,6 +33,7 @@ trigger/trg_edit_access_data.sql
|
||||
trigger/trg_edit_access_user.sql
|
||||
trigger/trg_edit_group.sql
|
||||
trigger/trg_edit_language.sql
|
||||
trigger/trg_edit_log_overflow.sql
|
||||
trigger/trg_edit_log.sql
|
||||
trigger/trg_edit_page_access.sql
|
||||
trigger/trg_edit_page_content.sql
|
||||
@@ -41,6 +43,5 @@ trigger/trg_edit_scheme.sql
|
||||
trigger/trg_edit_user.sql
|
||||
trigger/trg_edit_visible_group.sql
|
||||
trigger/trg_edit_menu_group.sql
|
||||
trigger/trg_set_edit_access_uid.sql
|
||||
# insert data
|
||||
data/edit_tables.sql
|
||||
|
||||
@@ -147,4 +147,4 @@ BEGIN
|
||||
RETURN NULL;
|
||||
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
0
4dev/database/function/set_uid.sql
Executable file → Normal file
0
4dev/database/function/set_uid.sql
Executable file → Normal file
@@ -9,8 +9,8 @@
|
||||
CREATE TABLE edit_access_data (
|
||||
edit_access_data_id SERIAL PRIMARY KEY,
|
||||
edit_access_id INT NOT NULL,
|
||||
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||
name VARCHAR,
|
||||
value VARCHAR,
|
||||
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||
value VARCHAR
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
CREATE TABLE edit_access_user (
|
||||
edit_access_user_id SERIAL PRIMARY KEY,
|
||||
edit_access_id INT NOT NULL,
|
||||
edit_user_id INT NOT NULL,
|
||||
edit_access_right_id INT NOT NULL,
|
||||
edit_default SMALLINT 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,
|
||||
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_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;
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
CREATE TABLE edit_group (
|
||||
edit_group_id SERIAL PRIMARY KEY,
|
||||
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 DEFAULT 0,
|
||||
uid VARCHAR,
|
||||
name VARCHAR,
|
||||
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
|
||||
additional_acl JSONB
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
-- DROP TABLE edit_log;
|
||||
CREATE TABLE edit_log (
|
||||
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,
|
||||
password VARCHAR,
|
||||
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
@@ -26,7 +28,6 @@ CREATE TABLE edit_log (
|
||||
action_value VARCHAR,
|
||||
action_type VARCHAR,
|
||||
action_error VARCHAR,
|
||||
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
||||
user_agent VARCHAR,
|
||||
referer VARCHAR,
|
||||
script_name VARCHAR,
|
||||
@@ -36,6 +37,5 @@ CREATE TABLE edit_log (
|
||||
http_accept VARCHAR,
|
||||
http_accept_charset VARCHAR,
|
||||
http_accept_encoding VARCHAR,
|
||||
session_id VARCHAR,
|
||||
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL
|
||||
session_id VARCHAR
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
0
4dev/database/table/edit_log_overflow.sql
Executable file → Normal file
0
4dev/database/table/edit_log_overflow.sql
Executable file → Normal file
@@ -9,6 +9,7 @@
|
||||
CREATE TABLE edit_page (
|
||||
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
|
||||
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||
filename VARCHAR,
|
||||
name VARCHAR UNIQUE,
|
||||
order_number INT NOT NULL,
|
||||
@@ -17,6 +18,5 @@ CREATE TABLE edit_page (
|
||||
popup SMALLINT NOT NULL DEFAULT 0,
|
||||
popup_x SMALLINT,
|
||||
popup_y SMALLINT,
|
||||
hostname VARCHAR,
|
||||
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;
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
CREATE TABLE edit_page_access (
|
||||
edit_page_access_id SERIAL PRIMARY KEY,
|
||||
edit_group_id INT NOT NULL,
|
||||
edit_page_id INT NOT NULL,
|
||||
edit_access_right_id INT NOT NULL,
|
||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||
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_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;
|
||||
|
||||
|
||||
|
||||
6
4dev/database/table/edit_page_content.sql
Executable file → Normal file
6
4dev/database/table/edit_page_content.sql
Executable file → Normal file
@@ -10,11 +10,11 @@
|
||||
CREATE TABLE edit_page_content (
|
||||
edit_page_content_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,
|
||||
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,
|
||||
uid VARCHAR UNIQUE,
|
||||
name VARCHAR,
|
||||
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_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||
online SMALLINT NOT NULL DEFAULT 0
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
-- DROP TABLE edit_page_menu_group;
|
||||
CREATE TABLE edit_page_menu_group (
|
||||
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,
|
||||
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
|
||||
);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
-- DROP TABLE edit_page_visible_group;
|
||||
CREATE TABLE edit_page_visible_group (
|
||||
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,
|
||||
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
|
||||
);
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
CREATE TABLE edit_query_string (
|
||||
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,
|
||||
value VARCHAR,
|
||||
dynamic SMALLINT NOT NULL DEFAULT 0,
|
||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||
dynamic SMALLINT NOT NULL DEFAULT 0
|
||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||
|
||||
@@ -9,10 +9,15 @@
|
||||
CREATE TABLE edit_user (
|
||||
edit_user_id SERIAL PRIMARY KEY,
|
||||
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,
|
||||
@@ -26,17 +31,18 @@ CREATE TABLE edit_user (
|
||||
email VARCHAR,
|
||||
protected SMALLINT NOT NULL DEFAULT 0,
|
||||
admin SMALLINT NOT NULL DEFAULT 0,
|
||||
login_error_count INT,
|
||||
last_login TIMESTAMP WITHOUT TIME ZONE,
|
||||
login_error_count INT DEFAULT 0,
|
||||
login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
|
||||
login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
|
||||
strict SMALLINT DEFAULT 0,
|
||||
locked SMALLINT DEFAULT 0,
|
||||
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
|
||||
additional_acl JSONB, -- additional ACL as JSON string (can be set by other pages)
|
||||
FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
FOREIGN KEY (edit_language_id) REFERENCES edit_language (edit_language_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,
|
||||
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
|
||||
password_reset_time TIMESTAMP WITHOUT TIME ZONE, -- when the password reset was requested
|
||||
password_reset_uid VARCHAR, -- the uid to access the password reset page
|
||||
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
||||
) 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';
|
||||
|
||||
@@ -2,3 +2,8 @@ DROP TRIGGER IF EXISTS trg_edit_group ON edit_group;
|
||||
CREATE TRIGGER trg_edit_group
|
||||
BEFORE INSERT OR UPDATE ON edit_group
|
||||
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();
|
||||
|
||||
0
4dev/database/trigger/trg_edit_log_overflow.sql
Executable file → Normal file
0
4dev/database/trigger/trg_edit_log_overflow.sql
Executable file → Normal file
0
4dev/database/trigger/trg_edit_page_content.sql
Executable file → Normal file
0
4dev/database/trigger/trg_edit_page_content.sql
Executable file → Normal file
@@ -1,4 +0,0 @@
|
||||
-- DROP TRIGGER trg_set_edit_access_uid ON edit_access;
|
||||
CREATE TRIGGER trg_set_edit_access_uid
|
||||
BEFORE INSERT OR UPDATE ON edit_access
|
||||
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();
|
||||
0
4dev/database/update/edit_tables_missing_columns.sql
Executable file → Normal file
0
4dev/database/update/edit_tables_missing_columns.sql
Executable file → Normal file
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"
|
||||
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!"
|
||||
|
||||
1
4dev/static_checker/phan.sh
Normal file
1
4dev/static_checker/phan.sh
Normal file
@@ -0,0 +1 @@
|
||||
phan --progress-bar -C --analyze-twice
|
||||
1
4dev/static_checker/phpstan.sh
Normal file
1
4dev/static_checker/phpstan.sh
Normal file
@@ -0,0 +1 @@
|
||||
phpstan
|
||||
18
README.md
18
README.md
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
* login
|
||||
* database wrapper
|
||||
@@ -25,3 +33,13 @@ last tested PHP 5.6 and PHP 7.0
|
||||
### namespace
|
||||
|
||||
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
|
||||
// sets the _SERVER['HTTP_HOST'] var so we can have DB detection
|
||||
$_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__
|
||||
|
||||
43
phpstan.neon
43
phpstan.neon
@@ -2,37 +2,34 @@
|
||||
|
||||
parameters:
|
||||
tmpDir: /tmp/phpstan-corelibs
|
||||
level: 1
|
||||
level: max
|
||||
paths:
|
||||
- %currentWorkingDirectory%/www
|
||||
bootstrapFiles:
|
||||
- %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/lib/autoloader.php
|
||||
# if composer.json autoloader defined, this is not needed
|
||||
# - www/lib/autoloader.php
|
||||
- www/vendor/autoload.php
|
||||
- www/lib/Smarty/Autoloader.php
|
||||
- www/lib/CoreLibs/Template/SmartyExtend.php
|
||||
excludes_analyse:
|
||||
# no check admin
|
||||
- www/admin/qq_file_upload_front.php
|
||||
- www/admin/qq_file_upload_ajax.php
|
||||
# do not check old qq file uploader tests
|
||||
- www/admin/qq_file_upload_*.php
|
||||
# ignore all test files
|
||||
- www/admin/class_test*php
|
||||
- www/admin/error_test.php
|
||||
# admin synlink files
|
||||
- www/admin/edit_access.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
|
||||
- www/admin/edit_*.php
|
||||
# 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
|
||||
# deprecated files
|
||||
- www/includes/admin_set_paths.php # ignore the admin include stuff
|
||||
- www/includes/admin_smarty.php # ignore the admin include stuff
|
||||
# folders with data no check needed
|
||||
@@ -41,16 +38,16 @@ parameters:
|
||||
- www/log
|
||||
- www/media
|
||||
- www/tmp
|
||||
- www/lib/pChart
|
||||
- www/lib/pChart2.1.4
|
||||
- www/lib/Smarty
|
||||
- www/lib/smarty-3.1.30
|
||||
# external libs are not checked
|
||||
- www/lib/pChart*
|
||||
- www/lib/Smarty*
|
||||
# ignore composer
|
||||
- www/vendor
|
||||
# ignore the smartyextend
|
||||
- www/lib/CoreLibs/Template/SmartyExtend.php
|
||||
# ignore errores with
|
||||
# ignoreErrors:
|
||||
ignoreErrors:
|
||||
# -
|
||||
# message: '#Reflection error: [a-zA-Z0-9\\_]+ not found.#'
|
||||
# path: www/includes/edit_base.php
|
||||
#- 'error regex'
|
||||
#-
|
||||
# message: 'error regex'
|
||||
|
||||
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__
|
||||
323
www/admin/class_test.db.php
Normal file
323
www/admin/class_test.db.php
Normal file
@@ -0,0 +1,323 @@
|
||||
<?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>";
|
||||
|
||||
// UPDATE WITH RETURNING
|
||||
$status = $db->dbExec("UPDATE test_foo SET test = 'SOMETHING DIFFERENT' WHERE test_foo_id = 3688452 RETURNING test");
|
||||
print "UPDATE WITH 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__
|
||||
67
www/admin/class_test.email.php
Normal file
67
www/admin/class_test.email.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?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>";
|
||||
|
||||
$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>";
|
||||
}
|
||||
// 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__
|
||||
60
www/admin/class_test.math.php
Normal file
60
www/admin/class_test.math.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?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 "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>";
|
||||
|
||||
// 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
|
||||
*/
|
||||
|
||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
||||
$DEBUG_ALL = 1;
|
||||
$PRINT_ALL = 1;
|
||||
$DB_DEBUG = 1;
|
||||
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);
|
||||
@@ -31,27 +34,46 @@ $basic = new CoreLibs\Admin\Backend(DB_CONFIG);
|
||||
$basic->dbInfo(true);
|
||||
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();
|
||||
$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>";
|
||||
|
||||
// color
|
||||
print "COLOR: -1, -1, -1: ".$basic->rgb2hex(-1, -1, -1)."<br>";
|
||||
print "COLOR: 10, 20, 30: ".$basic->rgb2hex(10, 20, 30)."<br>";
|
||||
print '<div><a href="class_test.db.php">Class Test: DB</a></div>';
|
||||
print '<div><a href="class_test.colors.php">Class Test: Colors</a></div>';
|
||||
print '<div><a href="class_test.mime.php">Class Test: MIME</a></div>';
|
||||
print '<div><a href="class_test.json.php">Class Test: Json</a></div>';
|
||||
print '<div><a href="class_test.token.php">Class Test: Form Token</a></div>';
|
||||
print '<div><a href="class_test.password.php">Class Test: Password</a></div>';
|
||||
print '<div><a href="class_test.math.php">Class Test: Math</a></div>';
|
||||
print '<div><a href="class_test.html.php">Class Test: HTML/ELEMENTS</a></div>';
|
||||
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>';
|
||||
print '<div><a href="class_test.phpv.php">Class Test: PHP VERSION</a></div>';
|
||||
print '<div><a href="class_test.hash.php">Class Test: HASH</a></div>';
|
||||
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
|
||||
$edit_access_id = 3;
|
||||
if (is_object($login) && isset($login->acl['unit'])) {
|
||||
print "ACL UNIT: ".print_r(array_keys($login->acl['unit']), true)."<br>";
|
||||
print "ACCESS CHECK: ".(string)$login->loginCheckEditAccess($edit_access_id)."<br>";
|
||||
print "ACL UNIT: " . print_r(array_keys($login->acl['unit']), true) . "<br>";
|
||||
print "ACCESS CHECK: " . (string)$login->loginCheckEditAccess($edit_access_id) . "<br>";
|
||||
if ($login->loginCheckEditAccess($edit_access_id)) {
|
||||
$basic->edit_access_id = $edit_access_id;
|
||||
} else {
|
||||
@@ -61,295 +83,64 @@ if (is_object($login) && isset($login->acl['unit'])) {
|
||||
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 '<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 '</form>';
|
||||
|
||||
// print the debug core vars
|
||||
print "DEBUG OUT: ".$basic->debug_output."<br>";
|
||||
print "ECHO OUT: ".$basic->echo_output."<br>";
|
||||
print "PRINT OUT: ".$basic->print_output."<br>";
|
||||
print "NOT DEBUG OUT: ".$basic->debug_output_not."<br>";
|
||||
print "NOT ECHO OUT: ".$basic->echo_output_not."<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>";
|
||||
print "PRINT OUT ALL: ".$basic->print_output_all."<br>";
|
||||
foreach (['on', 'off'] as $flag) {
|
||||
foreach (['debug', 'echo', 'print'] as $type) {
|
||||
$prefix = $flag == 'off' ? 'NOT ' : '';
|
||||
print $prefix . strtoupper($type) . ' OUT: '
|
||||
. \CoreLibs\Debug\Support::printAr($basic->log->getLogLevel($type, $flag)) . '<br>';
|
||||
}
|
||||
}
|
||||
foreach (['debug', 'echo', 'print'] as $type) {
|
||||
print strtoupper($type) . ' OUT ALL: ' . $basic->log->getLogLevelAll($type) . '<br>';
|
||||
}
|
||||
|
||||
print "CALLER BACKTRACE: ".$basic->getCallerMethod()."<br>";
|
||||
$basic->debug('SOME MARK', 'Some error output');
|
||||
$basic->log->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)) {
|
||||
// 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>";
|
||||
// $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>";
|
||||
// DEPRICATED CALL
|
||||
// $basic->adbSetACL($login->acl);
|
||||
}
|
||||
|
||||
// DB client encoding
|
||||
print "DB Client encoding: ".$basic->dbGetEncoding()."<br>";
|
||||
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>";
|
||||
|
||||
while ($res = $basic->dbReturn("SELECT * FROM max_test", 0, true)) {
|
||||
print "TIME: ".$res['time']."<br>";
|
||||
}
|
||||
print "CACHED DATA: <pre>".print_r($basic->cursor_ext, true)."</pre><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>";
|
||||
|
||||
print "<b>NULL TEST DB READ</b><br>";
|
||||
$q = "SELECT uid, null_varchar, null_int FROM test_null_data WHERE uid = 'A'";
|
||||
$res = $basic->dbReturnRow($q);
|
||||
var_dump($res);
|
||||
print "RES: ".$basic->printAr($res)."<br>";
|
||||
print "ISSET: ".isset($res['null_varchar'])."<br>";
|
||||
print "EMPTY: ".empty($res['null_varchar'])."<br>";
|
||||
|
||||
// data read test
|
||||
|
||||
// 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>";
|
||||
}
|
||||
$ds = defined('DS') ? DS : DIRECTORY_SEPARATOR;
|
||||
$du = DS ?? DIRECTORY_SEPARATOR;
|
||||
print "DS is: " . $ds . "<br>";
|
||||
print "SERVER HOST: " . $_SERVER['HTTP_HOST'] . "<br>";
|
||||
|
||||
// print error messages
|
||||
// print $login->printErrorMsg();
|
||||
print $basic->printErrorMsg();
|
||||
// print $login->log->printErrorMsg();
|
||||
print $basic->log->printErrorMsg();
|
||||
|
||||
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 = 1;
|
||||
@@ -11,9 +13,11 @@ if ($DEBUG_ALL) {
|
||||
|
||||
// sample config
|
||||
require 'config.php';
|
||||
echo "FILE: ".BASE.LIB."Error.Handling.php<br>";
|
||||
require(BASE.LIB."Error.Handling.php");
|
||||
echo "FILE: " . BASE . LIB . "Error.Handling.php<br>";
|
||||
require(BASE . LIB . "Error.Handling.php");
|
||||
|
||||
if ($var) {
|
||||
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__
|
||||
@@ -1,7 +1,9 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
require 'config.php';
|
||||
require BASE.INCLUDES.'admin_header.php';
|
||||
require BASE . INCLUDES . 'admin_header.php';
|
||||
|
||||
// $DATA['foo'] = 'bar';
|
||||
// $messages['foo'] = 'bar';
|
||||
|
||||
@@ -15,17 +15,19 @@ $MAX_UPLOAD_SIZE = $base->StringByteFormat(ini_get('upload_max_filesize'));
|
||||
// test for qqFileUploader (AJAX side)
|
||||
$allowedExtensions = array ('csv', 'zip', 'jpg', 'pdf', 'bz2');
|
||||
$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);
|
||||
// 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'];
|
||||
$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);
|
||||
$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
|
||||
$get_post['filename'] = $uploader->uploadFileName;
|
||||
|
||||
@@ -10,7 +10,7 @@ require 'config.php';
|
||||
$base = new CoreLibs\Basic();
|
||||
// set max upload size
|
||||
$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
|
||||
?>
|
||||
|
||||
@@ -1,59 +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';
|
||||
if (is_object($smarty)) {
|
||||
$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'
|
||||
)
|
||||
);
|
||||
|
||||
if (is_object($smarty)) {
|
||||
$smarty->DATA['drop_down_test'] = $options;
|
||||
$smarty->DATA['loop_start'] = 2;
|
||||
// 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",
|
||||
"type": "library",
|
||||
"authors": [
|
||||
@@ -8,5 +8,12 @@
|
||||
"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
|
||||
* CREATED: 2018/10/11
|
||||
@@ -7,19 +8,21 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
// please be VERY carefull only to change the right side
|
||||
$DB_CONFIG = array(
|
||||
'test' => array(
|
||||
'db_name' => 'gullevek',
|
||||
'db_user' => 'gullevek',
|
||||
'db_pass' => 'gullevek',
|
||||
'db_host' => 'db.tokyo.tequila.jp',
|
||||
$DB_CONFIG = [
|
||||
'test' => [
|
||||
'db_name' => $_ENV['DB_NAME_TEST'] ?? '',
|
||||
'db_user' => $_ENV['DB_USER_TEST'] ?? '',
|
||||
'db_pass' => $_ENV['DB_PASS_TEST'] ?? '',
|
||||
'db_host' => $_ENV['DB_HOST_TEST'] ?? '',
|
||||
'db_port' => 5432,
|
||||
'db_schema' => 'public',
|
||||
'db_type' => 'pgsql',
|
||||
'db_encoding' => '',
|
||||
'db_ssl' => 'disable' // allow, disable, require, prefer
|
||||
)
|
||||
);
|
||||
'db_ssl' => 'allow' // allow, disable, require, prefer
|
||||
],
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2018/10/11
|
||||
@@ -11,19 +12,21 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
// other master config to attach
|
||||
// $__LOCAL_CONFIG = array(
|
||||
// $__LOCAL_CONFIG = [
|
||||
// 'db_host' => '',
|
||||
// 'location' => '',
|
||||
// 'debug_flag' => true,
|
||||
// 'site_lang' => 'en_utf8',
|
||||
// 'login_enabled' => true
|
||||
// );
|
||||
// ];
|
||||
|
||||
// each host has a different db_host
|
||||
$SITE_CONFIG = array(
|
||||
$SITE_CONFIG = [
|
||||
// development host
|
||||
'soba.tokyo.tequila.jp' => array(
|
||||
'soba.tokyo.tequila.jp' => [
|
||||
// db config selection
|
||||
'db_host' => 'test',
|
||||
// other db connections
|
||||
@@ -37,8 +40,8 @@ $SITE_CONFIG = array(
|
||||
'site_lang' => 'en_utf8',
|
||||
// enable/disable login override
|
||||
'login_enabled' => true
|
||||
),
|
||||
],
|
||||
// 'other.host.com' => $__LOCAL_CONFIG
|
||||
);
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php // phpcs:ignore PSR1.Files.SideEffects
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2003/06/10
|
||||
@@ -7,73 +8,75 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/************* PATHS *********************/
|
||||
// directory seperator
|
||||
define('DS', DIRECTORY_SEPARATOR);
|
||||
// ** NEW/BETTER DIR DECLARATIONS **
|
||||
// path to original file (if symlink)
|
||||
define('DIR', __DIR__.DS);
|
||||
define('DIR', __DIR__ . DS);
|
||||
// base dir root folder level
|
||||
define('BASE', str_replace('/configs', '', __DIR__).DS);
|
||||
define('BASE', str_replace('/configs', '', __DIR__) . DS);
|
||||
|
||||
// ** OLD DIR DECLARATIONS **
|
||||
// path to document root of file called
|
||||
define('ROOT', getcwd().DS);
|
||||
define('ROOT', getcwd() . DS);
|
||||
// libs path
|
||||
define('LIB', 'lib'.DS);
|
||||
define('LIBS', 'lib'.DS);
|
||||
define('LIB', 'lib' . DS);
|
||||
define('LIBS', 'lib' . DS);
|
||||
// configs folder
|
||||
define('CONFIGS', 'configs'.DS);
|
||||
define('CONFIGS', 'configs' . DS);
|
||||
// includes (strings, arrays for static, etc)
|
||||
define('INCLUDES', 'includes'.DS);
|
||||
// data folder (mostly in includes)
|
||||
define('DATA', 'data'.DS);
|
||||
define('INCLUDES', 'includes' . DS);
|
||||
// data folder (mostly in includes, or root for internal data)
|
||||
define('DATA', 'data' . DS);
|
||||
// layout base path
|
||||
define('LAYOUT', 'layout'.DS);
|
||||
define('LAYOUT', 'layout' . DS);
|
||||
// pic-root (compatible to CMS)
|
||||
define('PICTURES', 'images'.DS);
|
||||
define('PICTURES', 'images' . DS);
|
||||
// images
|
||||
define('IMAGES', 'images'.DS);
|
||||
define('IMAGES', 'images' . DS);
|
||||
// icons (below the images/ folder)
|
||||
define('ICONS', 'icons'.DS);
|
||||
// media
|
||||
define('MEDIA', 'media'.DS);
|
||||
// flash-root (below media)
|
||||
define('FLASH', 'flash'.DS);
|
||||
// uploads (anything to keep)
|
||||
define('UPLOADS', 'uploads'.DS);
|
||||
// files (binaries) (below media)
|
||||
define('BINARIES', 'binaries'.DS);
|
||||
// files (videos) (below media)
|
||||
define('VIDEOS', 'videos'.DS);
|
||||
// files (documents) (below media)
|
||||
define('DOCUMENTS', 'documents'.DS);
|
||||
// files (pdfs) (below media)
|
||||
define('PDFS', 'documents'.DS);
|
||||
define('ICONS', 'icons' . DS);
|
||||
// media (accessable from outside)
|
||||
define('MEDIA', 'media' . DS);
|
||||
// uploads (anything to keep or data)
|
||||
define('UPLOADS', 'uploads' . DS);
|
||||
// files (binaries) (below media or data)
|
||||
define('BINARIES', 'binaries' . DS);
|
||||
// files (videos) (below media or data)
|
||||
define('VIDEOS', 'videos' . DS);
|
||||
// files (documents) (below media or data)
|
||||
define('DOCUMENTS', 'documents' . DS);
|
||||
// files (pdfs) (below media or data)
|
||||
define('PDFS', 'documents' . DS);
|
||||
// files (general) (below media or data)
|
||||
define('FILES', 'files' . DS);
|
||||
// CSV
|
||||
define('CSV', 'csv'.DS);
|
||||
define('CSV', 'csv' . DS);
|
||||
// css
|
||||
define('CSS', 'css'.DS);
|
||||
define('CSS', 'css' . DS);
|
||||
// font (web)
|
||||
define('FONT', 'font'.DS);
|
||||
define('FONT', 'font' . DS);
|
||||
// js
|
||||
define('JS', 'javascript'.DS);
|
||||
define('JS', 'javascript' . DS);
|
||||
// table arrays
|
||||
define('TABLE_ARRAYS', 'table_arrays'.DS);
|
||||
define('TABLE_ARRAYS', 'table_arrays' . DS);
|
||||
// smarty libs path
|
||||
define('SMARTY', 'Smarty'.DS);
|
||||
define('SMARTY', 'Smarty' . DS);
|
||||
// po langs
|
||||
define('LANG', 'lang'.DS);
|
||||
define('LANG', 'lang' . DS);
|
||||
// cache path
|
||||
define('CACHE', 'cache'.DS);
|
||||
define('CACHE', 'cache' . DS);
|
||||
// temp path
|
||||
define('TMP', 'tmp'.DS);
|
||||
define('TMP', 'tmp' . DS);
|
||||
// log files
|
||||
define('LOG', 'log'.DS);
|
||||
define('LOG', 'log' . DS);
|
||||
// compiled template folder
|
||||
define('TEMPLATES_C', 'templates_c'.DS);
|
||||
define('TEMPLATES_C', 'templates_c' . DS);
|
||||
// template base
|
||||
define('TEMPLATES', 'templates'.DS);
|
||||
define('TEMPLATES', 'templates' . DS);
|
||||
|
||||
/************* HASH / ACL DEFAULT / ERROR SETTINGS / SMARTY *************/
|
||||
// default hash type
|
||||
@@ -81,7 +84,7 @@ define('DEFAULT_HASH', 'sha256');
|
||||
// default acl level
|
||||
define('DEFAULT_ACL_LEVEL', 80);
|
||||
// SSL host name
|
||||
// define('SSL_HOST', 'ssl.host.name');
|
||||
// define('SSL_HOST', $_ENV['SSL_HOST'] ?? '');
|
||||
// error page strictness, Default is 3
|
||||
// 1: only show error page as the last mesure if really no mid & aid can be loaded and found at all
|
||||
// 2: if template not found, do not search, show error template
|
||||
@@ -101,8 +104,23 @@ define('LOGOUT_TARGET', '');
|
||||
define('PASSWORD_CHANGE', false);
|
||||
define('PASSWORD_FORGOT', false);
|
||||
// min/max password length
|
||||
define('PASSWORD_MIN_LENGTH', 8);
|
||||
define('PASSWORD_MIN_LENGTH', 9);
|
||||
define('PASSWORD_MAX_LENGTH', 255);
|
||||
// defines allowed special characters
|
||||
define('PASSWORD_SPECIAL_RANGE', '@$!%*?&');
|
||||
// password must have upper case, lower case, number, special
|
||||
// comment out for not mandatory
|
||||
define('PASSWORD_LOWER', '(?=.*[a-z])');
|
||||
define('PASSWORD_UPPER', '(?=.*[A-Z])');
|
||||
define('PASSWORD_NUMBER', '(?=.*\d)');
|
||||
define('PASSWORD_SPECIAL', "(?=.*[" . PASSWORD_SPECIAL_RANGE . "])");
|
||||
// define full regex
|
||||
define('PASSWORD_REGEX', "/^"
|
||||
. (defined('PASSWORD_LOWER') ? PASSWORD_LOWER : '')
|
||||
. (defined('PASSWORD_UPPER') ? PASSWORD_UPPER : '')
|
||||
. (defined('PASSWORD_NUMBER') ? PASSWORD_NUMBER : '')
|
||||
. (defined('PASSWORD_SPECIAL') ? PASSWORD_SPECIAL : '')
|
||||
. "[A-Za-z\d" . PASSWORD_SPECIAL_RANGE . "]{" . PASSWORD_MIN_LENGTH . "," . PASSWORD_MAX_LENGTH . "}$/");
|
||||
|
||||
/************* AJAX / ACCESS *************/
|
||||
// ajax request type
|
||||
@@ -113,30 +131,31 @@ define('USE_SCRIPTACULOUS', false);
|
||||
define('USE_JQUERY', true);
|
||||
|
||||
/************* LAYOUT WIDTHS *************/
|
||||
define('PAGE_WIDTH', 800);
|
||||
define('CONTENT_WIDTH', 800);
|
||||
define('PAGE_WIDTH', '100%');
|
||||
define('CONTENT_WIDTH', '100%');
|
||||
// the default template name
|
||||
define('MASTER_TEMPLATE_NAME', 'main_body.tpl');
|
||||
|
||||
/************* OVERALL CONTROL NAMES *************/
|
||||
// BELOW has HAS to be changed
|
||||
// base name for all session and log names
|
||||
define('BASE_NAME', 'CoreLibs');
|
||||
// only alphanumeric characters, strip all others
|
||||
define('BASE_NAME', preg_replace('/[^A-Za-z0-9]/', '', $_ENV['BASE_NAME'] ?? ''));
|
||||
|
||||
/************* SESSION NAMES *************/
|
||||
// server name HASH
|
||||
define('SERVER_NAME_HASH', hash('crc32b', $_SERVER['HTTP_HOST']));
|
||||
define('SERVER_PATH_HASH', hash('crc32b', BASE));
|
||||
// backend
|
||||
define('EDIT_SESSION_NAME', BASE_NAME.'Admin'.SERVER_NAME_HASH.SERVER_PATH_HASH);
|
||||
define('EDIT_SESSION_NAME', BASE_NAME . 'Admin' . SERVER_NAME_HASH . SERVER_PATH_HASH);
|
||||
// frontend
|
||||
define('SESSION_NAME', BASE_NAME.SERVER_NAME_HASH.SERVER_PATH_HASH);
|
||||
define('SESSION_NAME', BASE_NAME . SERVER_NAME_HASH . SERVER_PATH_HASH);
|
||||
// SET_SESSION_NAME should be set in the header if a special session name is needed
|
||||
define('SET_SESSION_NAME', SESSION_NAME);
|
||||
|
||||
/************* CACHE/COMPILE IDS *************/
|
||||
define('CACHE_ID', 'CACHE_'.BASE_NAME.'_'.SERVER_NAME_HASH);
|
||||
define('COMPILE_ID', 'COMPILE_'.BASE_NAME.'_'.SERVER_NAME_HASH);
|
||||
define('CACHE_ID', 'CACHE_' . BASE_NAME . '_' . SERVER_NAME_HASH);
|
||||
define('COMPILE_ID', 'COMPILE_' . BASE_NAME . '_' . SERVER_NAME_HASH);
|
||||
|
||||
/************* LANGUAGE / ENCODING *******/
|
||||
define('DEFAULT_LANG', 'en_utf8');
|
||||
@@ -150,13 +169,6 @@ define('DEFAULT_ENCODING', 'UTF-8');
|
||||
// see Basic class constructor
|
||||
define('LOG_FILE_ID', BASE_NAME);
|
||||
|
||||
/************* CLASS ERRORS *******************/
|
||||
// 0 = default all OFF
|
||||
// 1 = throw notice on unset class var
|
||||
// 2 = no notice on unset class var, but do not set undefined class var
|
||||
// 3 = throw error and do not set class var
|
||||
define('CLASS_VARIABLE_ERROR_MODE', 3);
|
||||
|
||||
/************* QUEUE TABLE *************/
|
||||
// if we have a dev/live system
|
||||
// set_live is a per page/per item
|
||||
@@ -173,22 +185,22 @@ define('GLOBAL_DB_SCHEMA', '');
|
||||
define('LOGIN_DB_SCHEMA', '');
|
||||
|
||||
/************* CORE HOST SETTINGS *****************/
|
||||
if (file_exists(BASE.CONFIGS.'config.host.php')) {
|
||||
require BASE.CONFIGS.'config.host.php';
|
||||
if (file_exists(BASE . CONFIGS . 'config.host.php')) {
|
||||
require BASE . CONFIGS . 'config.host.php';
|
||||
}
|
||||
if (!isset($SITE_CONFIG)) {
|
||||
$SITE_CONFIG = array();
|
||||
$SITE_CONFIG = [];
|
||||
}
|
||||
/************* DB ACCESS *****************/
|
||||
if (file_exists(BASE.CONFIGS.'config.db.php')) {
|
||||
require BASE.CONFIGS.'config.db.php';
|
||||
if (file_exists(BASE . CONFIGS . 'config.db.php')) {
|
||||
require BASE . CONFIGS . 'config.db.php';
|
||||
}
|
||||
if (!isset($DB_CONFIG)) {
|
||||
$DB_CONFIG = array();
|
||||
$DB_CONFIG = [];
|
||||
}
|
||||
/************* OTHER PATHS *****************/
|
||||
if (file_exists(BASE.CONFIGS.'config.path.php')) {
|
||||
require BASE.CONFIGS.'config.path.php';
|
||||
if (file_exists(BASE . CONFIGS . 'config.path.php')) {
|
||||
require BASE . CONFIGS . 'config.path.php';
|
||||
}
|
||||
|
||||
/************* MASTER INIT *****************/
|
||||
@@ -200,14 +212,15 @@ list($HOST_NAME) = array_pad(explode(':', $_SERVER['HTTP_HOST'], 2), 2, null);
|
||||
define('HOST_NAME', $HOST_NAME);
|
||||
// BAIL ON MISSING MASTER SITE CONFIG
|
||||
if (!isset($SITE_CONFIG[HOST_NAME]['location'])) {
|
||||
echo 'Missing SITE_CONFIG entry for: "'.HOST_NAME.'". Contact Administrator';
|
||||
echo 'Missing SITE_CONFIG entry for: "' . HOST_NAME . '" . Contact Administrator';
|
||||
exit;
|
||||
}
|
||||
// BAIL ON MISSING DB CONFIG:
|
||||
// we have either no db selction for this host but have db config entries
|
||||
// or we have a db selection but no db config as array or empty
|
||||
// or we have a selection but no matching db config entry
|
||||
if ((!isset($SITE_CONFIG[HOST_NAME]['db_host']) && count($DB_CONFIG)) ||
|
||||
if (
|
||||
(!isset($SITE_CONFIG[HOST_NAME]['db_host']) && count($DB_CONFIG)) ||
|
||||
(isset($SITE_CONFIG[HOST_NAME]['db_host']) &&
|
||||
// missing DB CONFIG
|
||||
((is_array($DB_CONFIG) && !count($DB_CONFIG)) ||
|
||||
@@ -216,12 +229,14 @@ if ((!isset($SITE_CONFIG[HOST_NAME]['db_host']) && count($DB_CONFIG)) ||
|
||||
(is_array($DB_CONFIG) && count($DB_CONFIG) && !isset($DB_CONFIG[$SITE_CONFIG[HOST_NAME]['db_host']])))
|
||||
)
|
||||
) {
|
||||
echo 'No matching DB config found for: "'.HOST_NAME.'". Contact Administrator';
|
||||
echo 'No matching DB config found for: "' . HOST_NAME . '" . Contact Administrator';
|
||||
exit;
|
||||
}
|
||||
// set SSL on
|
||||
if ((array_key_exists('HTTPS', $_SERVER) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||
|
||||
$_SERVER['SERVER_PORT'] == 443) {
|
||||
if (
|
||||
(array_key_exists('HTTPS', $_SERVER) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||
|
||||
$_SERVER['SERVER_PORT'] == 443
|
||||
) {
|
||||
define('HOST_SSL', true);
|
||||
define('HOST_PROTOCOL', 'https://');
|
||||
} else {
|
||||
@@ -230,12 +245,14 @@ if ((array_key_exists('HTTPS', $_SERVER) && !empty($_SERVER['HTTPS']) && $_SERVE
|
||||
}
|
||||
// define the db config set name, the db config and the db schema
|
||||
define('DB_CONFIG_NAME', $SITE_CONFIG[HOST_NAME]['db_host']);
|
||||
define('DB_CONFIG', isset($DB_CONFIG[DB_CONFIG_NAME]) ? $DB_CONFIG[DB_CONFIG_NAME] : array());
|
||||
define('DB_CONFIG', isset($DB_CONFIG[DB_CONFIG_NAME]) ? $DB_CONFIG[DB_CONFIG_NAME] : []);
|
||||
// define('DB_CONFIG_TARGET', SITE_CONFIG[$HOST_NAME]['db_host_target']);
|
||||
// define('DB_CONFIG_OTHER', SITE_CONFIG[$HOST_NAME]['db_host_other']);
|
||||
// override for login and global schemas
|
||||
// define('LOGIN_DB_SCHEMA', PUBLIC_SCHEMA); // where the edit* tables are
|
||||
// define('GLOBAL_DB_SCHEMA', PUBLIC_SCHEMA); // where global tables are that are used by all schemas (eg queue tables for online, etc)
|
||||
// where the edit* tables are
|
||||
// define('LOGIN_DB_SCHEMA', PUBLIC_SCHEMA);
|
||||
// where global tables are that are used by all schemas (eg queue tables for online, etc)
|
||||
// define('GLOBAL_DB_SCHEMA', PUBLIC_SCHEMA);
|
||||
// debug settings, site lang, etc
|
||||
define('TARGET', $SITE_CONFIG[HOST_NAME]['location']);
|
||||
define('DEBUG', $SITE_CONFIG[HOST_NAME]['debug_flag']);
|
||||
@@ -250,7 +267,7 @@ define('LOGIN_ENABLED', $SITE_CONFIG[HOST_NAME]['login_enabled']);
|
||||
define('SHOW_ALL_ERRORS', true);
|
||||
|
||||
/************* GENERAL PAGE TITLE ********/
|
||||
define('G_TITLE', '<OVERALL FALLBACK PAGE TITLE>');
|
||||
define('G_TITLE', $_ENV['G_TITLE'] ?? '');
|
||||
|
||||
/************ STYLE SHEETS / JS **********/
|
||||
define('ADMIN_STYLESHEET', 'edit.css');
|
||||
@@ -261,8 +278,8 @@ define('JAVASCRIPT', 'frontend.js');
|
||||
// anything optional
|
||||
/************* INTERNAL ******************/
|
||||
// any other global definitons in the config.other.php
|
||||
if (file_exists(BASE.CONFIGS.'config.other.php')) {
|
||||
require BASE.CONFIGS.'config.other.php';
|
||||
if (file_exists(BASE . CONFIGS . 'config.other.php')) {
|
||||
require BASE . CONFIGS . 'config.other.php';
|
||||
}
|
||||
|
||||
/************* DEBUG *******************/
|
||||
@@ -284,7 +301,15 @@ if (defined('DEBUG') && DEBUG == false) {
|
||||
}
|
||||
|
||||
/************* AUTO LOADER *******************/
|
||||
// read auto loader
|
||||
require BASE.LIB.'autoloader.php';
|
||||
// read auto loader for lib only
|
||||
// require BASE . LIB . 'autoloader.php';
|
||||
// composer auto loader, IF composer.json file includes classmap for lib/:
|
||||
// "autoload": {
|
||||
// "classmap": [
|
||||
// "lib/"
|
||||
// ]
|
||||
// },
|
||||
// NOTE BASE: __DIR__ . DIRECTORY_SEPARATOR . '..' DIRECTORY_SEPARATOR;
|
||||
require BASE . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php // phpcs:ignore PSR1.Files.SideEffects
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2019/10/28
|
||||
@@ -7,20 +8,22 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
// DEFINE('SOME_ID', <SOME VALUE>);
|
||||
declare(strict_types=1);
|
||||
|
||||
// define('SOME_ID', <SOME VALUE>);
|
||||
|
||||
/************* CONVERT *******************/
|
||||
// this only needed if the external thumbnail create is used
|
||||
$paths = array(
|
||||
$paths = [
|
||||
'/bin',
|
||||
'/usr/bin',
|
||||
'/usr/local/bin'
|
||||
);
|
||||
'/usr/local/bin',
|
||||
];
|
||||
// find convert
|
||||
foreach ($paths as $path) {
|
||||
if (file_exists($path.DS.'convert') && is_file($path.DS.'convert')) {
|
||||
if (file_exists($path . DS . 'convert') && is_file($path . DS . 'convert')) {
|
||||
// image magick convert location
|
||||
define('CONVERT', $path.DS.'convert');
|
||||
define('CONVERT', $path . DS . 'convert');
|
||||
}
|
||||
}
|
||||
unset($paths);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2018/10/11
|
||||
@@ -8,14 +9,16 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
// File and Folder paths
|
||||
// ID is TARGET (first array element)
|
||||
/*$PATHS = array(
|
||||
'test' => array(
|
||||
/*$PATHS = [
|
||||
'test' => [
|
||||
'csv_path' => '',
|
||||
'perl_bin' => '',
|
||||
'other_url' => '',
|
||||
)
|
||||
)*/
|
||||
],
|
||||
];*/
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php // phpcs:ignore warning
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2018/10/11
|
||||
@@ -7,13 +8,22 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
define('CONFIG_PATH', 'configs'.DIRECTORY_SEPARATOR);
|
||||
declare(strict_types=1);
|
||||
|
||||
define('CONFIG_PATH', 'configs' . DIRECTORY_SEPARATOR);
|
||||
// config path prefix search, start with 0, got down each level __DIR__ has, if nothing found -> bail
|
||||
$CONFIG_PATH_PREFIX = '';
|
||||
for ($dir_pos = 0, $dir_max = count(explode(DIRECTORY_SEPARATOR, __DIR__)); $dir_pos <= $dir_max; $dir_pos ++) {
|
||||
$CONFIG_PATH_PREFIX .= '..'.DIRECTORY_SEPARATOR;
|
||||
if (file_exists($CONFIG_PATH_PREFIX.CONFIG_PATH.'config.master.php')) {
|
||||
require $CONFIG_PATH_PREFIX.CONFIG_PATH.'config.master.php';
|
||||
for ($dir_pos = 0, $dir_max = count(explode(DIRECTORY_SEPARATOR, __DIR__)); $dir_pos <= $dir_max; $dir_pos++) {
|
||||
$CONFIG_PATH_PREFIX .= '..' . DIRECTORY_SEPARATOR;
|
||||
if (file_exists($CONFIG_PATH_PREFIX . CONFIG_PATH . 'config.master.php')) {
|
||||
// check if there is an read env file, load it
|
||||
if (file_exists($CONFIG_PATH_PREFIX . CONFIG_PATH . 'read_env_file.php')) {
|
||||
require $CONFIG_PATH_PREFIX . CONFIG_PATH . 'read_env_file.php';
|
||||
// load env variables first
|
||||
readEnvFile($CONFIG_PATH_PREFIX . CONFIG_PATH);
|
||||
}
|
||||
// then load master config file that loads all other config files
|
||||
require $CONFIG_PATH_PREFIX . CONFIG_PATH . 'config.master.php';
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -22,9 +32,9 @@ if (!defined('DS')) {
|
||||
exit('Base config unloadable');
|
||||
}
|
||||
// find trigger name "admin/" or "frontend/" in the getcwd() folder
|
||||
foreach (array('admin', 'frontend') as $folder) {
|
||||
if (strstr(getcwd(), DS.$folder)) {
|
||||
define('CONTENT_PATH', $folder.DS);
|
||||
foreach (['admin', 'frontend'] as $folder) {
|
||||
if (strstr(getcwd() ?: '', DS . $folder)) {
|
||||
define('CONTENT_PATH', $folder . DS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
84
www/configs/read_env_file.php
Normal file
84
www/configs/read_env_file.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* parses .env file
|
||||
*
|
||||
* Rules for .env file
|
||||
* variable is any alphanumeric string followed by = on the same line
|
||||
* content starts with the first non space part
|
||||
* strings can be contained in "
|
||||
* strings MUST be contained in " if they are multiline
|
||||
* if string starts with " it will match until another " is found
|
||||
* anything AFTER " is ignored
|
||||
* if there are two variables with the same name only the first is used
|
||||
* variables are case sensitive
|
||||
*
|
||||
* @param string $path Folder to file, default is __DIR__
|
||||
* @param string $env_file What file to load, default is .env
|
||||
* @return int -1 other error
|
||||
* 0 for success full load
|
||||
* 1 for file loadable, but no data inside
|
||||
* 2 for file not readable
|
||||
* 3 for file not found
|
||||
*/
|
||||
function readEnvFile(string $path = __DIR__, string $env_file = '.env'): int
|
||||
{
|
||||
// default -1;
|
||||
$status = -1;
|
||||
$env_file_target = $path . DIRECTORY_SEPARATOR . $env_file;
|
||||
// this is not a file -> abort
|
||||
if (!is_file($env_file_target)) {
|
||||
$status = 3;
|
||||
return $status;
|
||||
}
|
||||
// cannot open file -> abort
|
||||
if (($fp = fopen($env_file_target, 'r')) === false) {
|
||||
$status = 2;
|
||||
return $status;
|
||||
}
|
||||
// set to readable but not yet any data loaded
|
||||
$status = 1;
|
||||
$block = false;
|
||||
$var = '';
|
||||
while ($line = fgets($fp)) {
|
||||
// main match for variable = value part
|
||||
if (preg_match("/^\s*([\w_.]+)\s*=\s*((\"?).*)/", $line, $matches)) {
|
||||
$var = $matches[1];
|
||||
$value = $matches[2];
|
||||
$quotes = $matches[3];
|
||||
// wirte only if env is not set yet, and write only the first time
|
||||
if (empty($_ENV[$var])) {
|
||||
if (!empty($quotes)) {
|
||||
// match greedy for first to last so we move any " if there are
|
||||
if (preg_match('/^"(.*[^\\\])"/U', $value, $matches)) {
|
||||
$value = $matches[1];
|
||||
} else {
|
||||
// this is a multi line
|
||||
$block = true;
|
||||
// first " in string remove
|
||||
// add removed new line back because this is a multi line
|
||||
$value = ltrim($value, '"') . PHP_EOL;
|
||||
}
|
||||
}
|
||||
// if block is set, we strip line of slashes
|
||||
$_ENV[$var] = $block === true ? stripslashes($value) : $value;
|
||||
// set successful load
|
||||
$status = 0;
|
||||
}
|
||||
} elseif ($block === true) {
|
||||
// read line until there is a unescaped "
|
||||
// this also strips everything after the last "
|
||||
if (preg_match("/(.*[^\\\])\"/", $line, $matches)) {
|
||||
$block = false;
|
||||
// strip ending " and EVERYTHING that follows after that
|
||||
$line = $matches[1];
|
||||
}
|
||||
// strip line of slashes
|
||||
$_ENV[$var] .= stripslashes($line);
|
||||
}
|
||||
}
|
||||
fclose($fp);
|
||||
return $status;
|
||||
}
|
||||
|
||||
// __END__
|
||||
@@ -1,3 +1,7 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
require 'config.php';
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2005/07/19
|
||||
@@ -7,7 +8,9 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
$day_short = array(
|
||||
declare(strict_types=1);
|
||||
|
||||
$day_short = [
|
||||
1 => 'Mon',
|
||||
2 => 'Tue',
|
||||
3 => 'Wed',
|
||||
@@ -15,9 +18,9 @@ $day_short = array(
|
||||
5 => 'Fri',
|
||||
6 => 'Sat',
|
||||
7 => 'Sun'
|
||||
);
|
||||
];
|
||||
|
||||
$day_long = array(
|
||||
$day_long = [
|
||||
1 => 'Monday',
|
||||
2 => 'Tuesday',
|
||||
3 => 'Wednesday',
|
||||
@@ -25,10 +28,10 @@ $day_long = array(
|
||||
5 => 'Friday',
|
||||
6 => 'Saturday',
|
||||
7 => 'Sunday'
|
||||
);
|
||||
];
|
||||
|
||||
// months
|
||||
$month_long = array(
|
||||
$month_long = [
|
||||
1 => 'January',
|
||||
2 => 'February',
|
||||
3 => 'March',
|
||||
@@ -41,9 +44,9 @@ $month_long = array(
|
||||
10 => 'October',
|
||||
11 => 'November',
|
||||
12 => 'December'
|
||||
);
|
||||
];
|
||||
|
||||
$month_short = array(
|
||||
$month_short = [
|
||||
1 => 'Jan',
|
||||
2 => 'Feb',
|
||||
3 => 'Mar',
|
||||
@@ -56,6 +59,6 @@ $month_short = array(
|
||||
10 => 'Oct',
|
||||
11 => 'Nov',
|
||||
12 => 'Dec'
|
||||
);
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2008/08/14
|
||||
@@ -7,8 +8,11 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
// print debug messages
|
||||
echo $login->printErrorMsg();
|
||||
echo $cms->printErrorMsg();
|
||||
echo $login->log->printErrorMsg();
|
||||
echo $cms->log->printErrorMsg();
|
||||
$cms->log->debug('DEBUGEND', '==================================== [END]');
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2008/08/01
|
||||
@@ -7,13 +8,13 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
//------------------------------ variable init start
|
||||
// for dev test we set full error reporting; writes everything, except E_ERROR into logs/php_error-<day>.log
|
||||
if ($DEBUG_ALL && $ENABLE_ERROR_HANDLING) {
|
||||
include BASE.LIBS."Error.Handling.php";
|
||||
if (!empty($DEBUG_ALL) && !empty($ENABLE_ERROR_HANDLING)) {
|
||||
include BASE . LIBS . "Error.Handling.php";
|
||||
}
|
||||
// predefine vars
|
||||
$messages = array();
|
||||
//------------------------------ variable init end
|
||||
|
||||
//------------------------------ library include start
|
||||
@@ -21,7 +22,7 @@ $messages = array();
|
||||
ob_start();
|
||||
// set the session name
|
||||
$SET_SESSION_NAME = EDIT_SESSION_NAME;
|
||||
$LOG_FILE_ID = BASE_NAME.'Admin';
|
||||
$LOG_FILE_ID = BASE_NAME . 'Admin';
|
||||
//------------------------------ library include end
|
||||
|
||||
//------------------------------ basic variable settings start
|
||||
@@ -37,7 +38,7 @@ if (!isset($ENCODING) || !$ENCODING) {
|
||||
}
|
||||
// end the stop of the output flow, but only if we didn't request a csv file download
|
||||
if (isset($_POST['action']) && $_POST['action'] != 'download_csv' && !$AJAX_PAGE) {
|
||||
header("Content-type: text/html; charset=".$ENCODING);
|
||||
header("Content-type: text/html; charset=" . $ENCODING);
|
||||
}
|
||||
if ($AJAX_PAGE && !$ZIP_STREAM) {
|
||||
header("Content-Type: application/json; charset=UTF-8");
|
||||
@@ -79,13 +80,11 @@ if (!$login->login) {
|
||||
|
||||
// automatic hide for DEBUG messages on live server
|
||||
// can be overridden when setting DEBUG_ALL_OVERRIDE on top of the script (for emergency debugging of one page only)
|
||||
if ((TARGET == 'live' || TARGET == 'remote') && !$DEBUG_ALL_OVERRIDE) {
|
||||
$login->debug_output_all = false;
|
||||
$login->echo_output_all = false;
|
||||
$login->print_output_all = false;
|
||||
$cms->debug_output_all = false;
|
||||
$cms->echo_output_all = false;
|
||||
$cms->print_output_all = false;
|
||||
if ((TARGET == 'live' || TARGET == 'remote') && !empty($DEBUG_ALL_OVERRIDE)) {
|
||||
foreach (['debug', 'echo', 'print'] as $target) {
|
||||
$login->log->setLogLevelAll($target, false);
|
||||
$cms->log->setLogLevelAll($target, false);
|
||||
}
|
||||
}
|
||||
$smarty->DATA['JS_DEBUG'] = DEBUG;
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2007/09/03
|
||||
@@ -7,6 +8,8 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/******
|
||||
NOTE THAT THIS INCLUDE IS OBSOLETE
|
||||
USE THE BELOW FUNCTION CALL IN THE SCRIPT ITSELF
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens Schwaighofer
|
||||
* CREATED: 2005/07/12
|
||||
@@ -7,11 +8,16 @@
|
||||
* HISTORY:
|
||||
*********************************************************************/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/******
|
||||
NOTE THAT THIS INCLUDE IS OBSOLETE
|
||||
USE THE BELOW FUNCTION CALL IN THE SCRIPT ITSELF
|
||||
*******/
|
||||
trigger_error('admin_smarty.php is deprecated. Use SmartyExtended->setSmartyVarsAdmin(); or setSmartyVarsFrontend();', E_USER_DEPRECATED);
|
||||
trigger_error(
|
||||
'admin_smarty.php is deprecated. Use SmartyExtended->setSmartyVarsAdmin(); or setSmartyVarsFrontend();',
|
||||
E_USER_DEPRECATED
|
||||
);
|
||||
$smarty->setSmartyVarsAdmin();
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
/********************************************************************
|
||||
* AUTHOR: Clemens "Gullevek" Schwaighofer (www.gullevek.org)
|
||||
* CREATED: 2003/06/10
|
||||
@@ -12,14 +13,19 @@
|
||||
* - edit_visible_group.php
|
||||
* HISTORY:
|
||||
* 2005/06/30 (cs) remove color settings, they are in CSS File now
|
||||
* 2005/06/22 (cs) moved load of config array into form class, set lang and lang is must set var for form class; removed the page name setting, moved it into the form class, remove all HTML from main page
|
||||
* 2005/06/22 (cs) moved load of config array into form class, set lang
|
||||
* and lang is must set var for form class; removed the
|
||||
* page name setting, moved it into the form class,
|
||||
* emove all HTML from main page
|
||||
* 2004/09/30 (cs) changed layout to fit default layout & changed LIBS, etc
|
||||
* 2003-06-10: creation of this page
|
||||
*********************************************************************/
|
||||
|
||||
$DEBUG_ALL = 1;
|
||||
$PRINT_ALL = 1;
|
||||
$DB_DEBUG = 1;
|
||||
declare(strict_types=1);
|
||||
|
||||
$DEBUG_ALL = true;
|
||||
$PRINT_ALL = true;
|
||||
$DB_DEBUG = true;
|
||||
|
||||
// TODO: only extract _POST data that is needed
|
||||
extract($_POST, EXTR_SKIP);
|
||||
@@ -30,14 +36,14 @@ require 'config.php';
|
||||
$SET_SESSION_NAME = EDIT_SESSION_NAME;
|
||||
// overrride debug flags
|
||||
if (!DEBUG) {
|
||||
$DEBUG_ALL = 0;
|
||||
$PRINT_ALL = 0;
|
||||
$DB_DEBUG = 0;
|
||||
$ECHO_ALL = 0;
|
||||
$DEBUG_ALL = false;
|
||||
$PRINT_ALL = false;
|
||||
$DB_DEBUG = false;
|
||||
$ECHO_ALL = false;
|
||||
}
|
||||
|
||||
// should be utf8
|
||||
header("Content-type: text/html; charset=".DEFAULT_ENCODING);
|
||||
header("Content-type: text/html; charset=" . DEFAULT_ENCODING);
|
||||
ob_end_flush();
|
||||
$login = new CoreLibs\ACL\Login(DB_CONFIG);
|
||||
|
||||
@@ -50,30 +56,30 @@ if ($form->mobile_phone) {
|
||||
// smarty template engine (extended Translation version)
|
||||
$smarty = new CoreLibs\Template\SmartyExtend();
|
||||
|
||||
// $form->debug('POST', $form->printAr($_POST));
|
||||
// $form->log->debug('POST', $form->log->prAr($_POST));
|
||||
|
||||
if (TARGET == 'live' || TARGET == 'remote') {
|
||||
// login
|
||||
$login->debug_output_all = DEBUG ? 1 : 0;
|
||||
$login->echo_output_all = 0;
|
||||
$login->print_output_all = DEBUG ? 1 : 0;
|
||||
$login->log->setLogLevelAll('debug', DEBUG ? true : false);
|
||||
$login->log->setLogLevelAll('echo', false);
|
||||
$login->log->setLogLevelAll('print', DEBUG ? true : false);
|
||||
// form
|
||||
$form->debug_output_all = DEBUG ? 1 : 0;
|
||||
$form->echo_output_all = 0;
|
||||
$form->print_output_all = DEBUG ? 1 : 0;
|
||||
$form->log->setLogLevelAll('debug', DEBUG ? true : false);
|
||||
$form->log->setLogLevelAll('echo', false);
|
||||
$form->log->setLogLevelAll('print', DEBUG ? true : false);
|
||||
}
|
||||
// space for setting special debug flags
|
||||
$login->debug_output_all = 1;
|
||||
$login->log->setLogLevelAll('debug', true);
|
||||
// set smarty arrays
|
||||
$HEADER = array();
|
||||
$DATA = array();
|
||||
$DEBUG_DATA = array();
|
||||
$HEADER = [];
|
||||
$DATA = [];
|
||||
$DEBUG_DATA = [];
|
||||
// set the template dir
|
||||
// WARNING: this has a special check for the mailing tool layout (old layout)
|
||||
if (defined('LAYOUT')) {
|
||||
$smarty->setTemplateDir(BASE.INCLUDES.TEMPLATES.CONTENT_PATH);
|
||||
$DATA['css'] = LAYOUT.CSS;
|
||||
$DATA['js'] = LAYOUT.JS;
|
||||
$smarty->setTemplateDir(BASE . INCLUDES . TEMPLATES . CONTENT_PATH);
|
||||
$DATA['css'] = LAYOUT . CSS;
|
||||
$DATA['js'] = LAYOUT . JS;
|
||||
} else {
|
||||
$smarty->setTemplateDir(TEMPLATES);
|
||||
$DATA['css'] = CSS;
|
||||
@@ -94,13 +100,13 @@ if ($form->my_page_name == 'edit_order') {
|
||||
// order name is _always_ order_number for the edit interface
|
||||
|
||||
// follwing arrays do exist here:
|
||||
// $position ... has the positions of the array(0..max), cause in a <select>
|
||||
// $position ... has the positions of the [0..max], cause in a <select>
|
||||
// I can't put an number into the array field, in this array,
|
||||
// there are the POSITION stored, that should CHANGE there order (up/down)
|
||||
// $row_data_id ... has ALL ids from the sorting part
|
||||
// $row_data_order ... has ALL order positions from the soirting part
|
||||
if (!isset($position)) {
|
||||
$position = array();
|
||||
$position = [];
|
||||
}
|
||||
$row_data_id = $_POST['row_data_id'] ?? [];
|
||||
$original_id = $row_data_id;
|
||||
@@ -115,17 +121,22 @@ if ($form->my_page_name == 'edit_order') {
|
||||
// this gets temp, id before that, gets actual (moves one "down")
|
||||
// this gets the old before (moves one "up")
|
||||
// is done for every element in row
|
||||
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
|
||||
// echo "A: ".$row_data_id[$position[$i]]
|
||||
// ." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]
|
||||
// ." (".$row_data_order[$position[$i]-1].")<br>";
|
||||
$temp_id = $row_data_id[$position[$i]] ?? null;
|
||||
$row_data_id[$position[$i]] = $row_data_id[$position[$i] - 1] ?? null;
|
||||
$row_data_id[$position[$i] - 1] = $temp_id;
|
||||
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
|
||||
// echo "A: ".$row_data_id[$position[$i]]
|
||||
// ." (".$row_data_order[$position[$i]].") -- "
|
||||
// .$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
|
||||
} // for
|
||||
} // if up
|
||||
|
||||
// the last position id from position array is not to be the count-1 of row_data_id array, or it is the last element
|
||||
// the last position id from position array is not to be the count - 1 of
|
||||
// row_data_id array, or it is the last element
|
||||
if (isset($down) && ($position[count($position) - 1] != (count($row_data_id) - 1))) {
|
||||
for ($i = count($position) - 1; $i >= 0; $i --) {
|
||||
for ($i = count($position) - 1; $i >= 0; $i--) {
|
||||
// same as up, just up in other way, starts from bottom (last element) and moves "up"
|
||||
// element before actuel gets temp, this element, becomes element after this,
|
||||
// element after this, gets this
|
||||
@@ -136,12 +147,15 @@ if ($form->my_page_name == 'edit_order') {
|
||||
} // if down
|
||||
|
||||
// write data ... (which has to be abstrackt ...)
|
||||
if ((isset($up) && $position[0] > 0) ||
|
||||
if (
|
||||
(isset($up) && $position[0] > 0) ||
|
||||
(isset($down) && ($position[count($position) - 1] != (count($row_data_id) - 1)))
|
||||
) {
|
||||
for ($i = 0; $i < count($row_data_id); $i ++) {
|
||||
for ($i = 0; $i < count($row_data_id); $i++) {
|
||||
if (isset($row_data_order[$i]) && isset($row_data_id[$i])) {
|
||||
$q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
|
||||
$q = "UPDATE " . $table_name
|
||||
. " SET order_number = " . $row_data_order[$i]
|
||||
. " WHERE " . $table_name . "_id = " . $row_data_id[$i];
|
||||
$q = $form->dbExec($q);
|
||||
}
|
||||
} // for all article ids ...
|
||||
@@ -149,47 +163,52 @@ if ($form->my_page_name == 'edit_order') {
|
||||
} // if there is something to move
|
||||
|
||||
// get ...
|
||||
$q = "SELECT ".$table_name."_id, name, order_number FROM ".$table_name." ";
|
||||
$q = "SELECT " . $table_name . "_id, name, order_number FROM " . $table_name . " ";
|
||||
if (!empty($where_string)) {
|
||||
$q .= "WHERE $where_string ";
|
||||
}
|
||||
$q .= "ORDER BY order_number";
|
||||
|
||||
// init arrays
|
||||
$row_data = array();
|
||||
$options_id = array();
|
||||
$options_name = array();
|
||||
$options_selected = array();
|
||||
$row_data = [];
|
||||
$options_id = [];
|
||||
$options_name = [];
|
||||
$options_selected = [];
|
||||
// DB read data for menu
|
||||
while ($res = $form->dbReturn($q)) {
|
||||
$row_data[] = array(
|
||||
"id" => $res[$table_name."_id"],
|
||||
while (is_array($res = $form->dbReturn($q))) {
|
||||
$row_data[] = [
|
||||
"id" => $res[$table_name . "_id"],
|
||||
"name" => $res["name"],
|
||||
"order" => $res["order_number"]
|
||||
);
|
||||
];
|
||||
} // while read data ...
|
||||
|
||||
// html title
|
||||
$HEADER['HTML_TITLE'] = $form->l->__('Edit Order');
|
||||
|
||||
$messages = array();
|
||||
$messages = [];
|
||||
// error msg
|
||||
if (isset($error)) {
|
||||
if (!isset($msg)) {
|
||||
$msg = array();
|
||||
$msg = [];
|
||||
}
|
||||
$messages[] = array('msg' => $msg, 'class' => 'error', 'width' => '100%');
|
||||
$messages[] = [
|
||||
'msg' => $msg,
|
||||
'class' => 'error',
|
||||
'width' => '100%'
|
||||
];
|
||||
}
|
||||
$DATA['form_error_msg'] = $messages;
|
||||
|
||||
// all the row data
|
||||
for ($i = 0; $i < count($row_data); $i ++) {
|
||||
for ($i = 0; $i < count($row_data); $i++) {
|
||||
$options_id[] = $i;
|
||||
$options_name[] = $row_data[$i]['name'];
|
||||
// list of points to order
|
||||
for ($j = 0; $j < count($position); $j++) {
|
||||
// if matches, put into select array
|
||||
if (isset($original_id[$position[$j]]) && isset($row_data[$i]['id']) &&
|
||||
if (
|
||||
isset($original_id[$position[$j]]) && isset($row_data[$i]['id']) &&
|
||||
$original_id[$position[$j]] == $row_data[$i]['id']
|
||||
) {
|
||||
$options_selected[] = $i;
|
||||
@@ -201,8 +220,8 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$DATA['options_selected'] = $options_selected;
|
||||
|
||||
// hidden list for the data (id, order number)
|
||||
$row_data_id = array();
|
||||
$row_data_order = array();
|
||||
$row_data_id = [];
|
||||
$row_data_order = [];
|
||||
for ($i = 0; $i < count($row_data); $i++) {
|
||||
$row_data_id[] = $row_data[$i]['id'];
|
||||
$row_data_order[] = $row_data[$i]['order'];
|
||||
@@ -230,7 +249,7 @@ if ($form->my_page_name == 'edit_order') {
|
||||
|
||||
$DATA['table_width'] = $table_width;
|
||||
|
||||
$messages = array();
|
||||
$messages = [];
|
||||
// write out error / status messages
|
||||
$messages[] = $form->formPrintMsg();
|
||||
$DATA['form_error_msg'] = $messages;
|
||||
@@ -248,13 +267,13 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$DATA['GROUP_LEVEL'] = $_SESSION['GROUP_ACL_LEVEL'];
|
||||
$PAGES = $_SESSION['PAGES'];
|
||||
|
||||
//$form->debug('menu', $form->printAr($PAGES));
|
||||
//$form->log->debug('menu', $form->log->prAr($PAGES));
|
||||
|
||||
// build nav from $PAGES ...
|
||||
if (!isset($PAGES) || !is_array($PAGES)) {
|
||||
$PAGES = array();
|
||||
$PAGES = [];
|
||||
}
|
||||
$menuarray = array();
|
||||
$menuarray = [];
|
||||
foreach ($PAGES as $PAGE_CUID => $PAGE_DATA) {
|
||||
if ($PAGE_DATA['menu'] && $PAGE_DATA['online']) {
|
||||
$menuarray[] = $PAGE_DATA;
|
||||
@@ -273,7 +292,7 @@ if ($form->my_page_name == 'edit_order') {
|
||||
}
|
||||
|
||||
$position = 0;
|
||||
$menu_data = array();
|
||||
$menu_data = [];
|
||||
// for ($i = 1; $i <= count($menuarray); $i ++) {
|
||||
foreach ($menuarray as $i => $data) {
|
||||
// do that for new array
|
||||
@@ -284,11 +303,11 @@ if ($form->my_page_name == 'edit_order') {
|
||||
(isset($data['hostname']) && $data['hostname'] ?
|
||||
$data['hostname'] :
|
||||
''
|
||||
).
|
||||
)
|
||||
// filename
|
||||
($data['filename'] ?? '').
|
||||
. ($data['filename'] ?? '')
|
||||
// query string
|
||||
(isset($data['query_string']) && $data['query_string'] ?
|
||||
. (isset($data['query_string']) && $data['query_string'] ?
|
||||
$data['query_string'] :
|
||||
''
|
||||
);
|
||||
@@ -298,8 +317,9 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$menu_data[$i]['splitfactor_in'] = 0;
|
||||
}
|
||||
// on matching, we also need to check if we are in the same folder
|
||||
if (isset($data['filename']) &&
|
||||
$data['filename'] == $form->getPageName() &&
|
||||
if (
|
||||
isset($data['filename']) &&
|
||||
$data['filename'] == \CoreLibs\Get\System::getPageName() &&
|
||||
(!isset($data['hostname']) || (
|
||||
isset($data['hostname']) &&
|
||||
(!$data['hostname'] || strstr($data['hostname'], CONTENT_PATH) !== false)
|
||||
@@ -328,9 +348,9 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$menu_data[$i]['splitfactor_out'] = 0;
|
||||
}
|
||||
} // for
|
||||
// $form->debug('MENU ARRAY', $form->printAr($menu_data));
|
||||
// $form->log->debug('MENU ARRAY', $form->log->prAr($menu_data));
|
||||
$DATA['menu_data'] = $menu_data;
|
||||
$DATA['page_name'] = $menuarray[$position]['page_name'] ?? '-Undefined ['.$position.'] -';
|
||||
$DATA['page_name'] = $menuarray[$position]['page_name'] ?? '-Undefined [' . $position . '] -';
|
||||
$L_TITLE = $DATA['page_name'];
|
||||
// html title
|
||||
$HEADER['HTML_TITLE'] = $form->l->__($L_TITLE);
|
||||
@@ -344,7 +364,7 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$DATA['form_my_page_name'] = $form->my_page_name;
|
||||
$DATA['filename_exist'] = 0;
|
||||
$DATA['drop_down_input'] = 0;
|
||||
$elements = array();
|
||||
$elements = [];
|
||||
// depending on the "getPageName()" I show different stuff
|
||||
switch ($form->my_page_name) {
|
||||
case 'edit_users':
|
||||
@@ -382,18 +402,18 @@ if ($form->my_page_name == 'edit_order') {
|
||||
$q = "DELETE FROM temp_files";
|
||||
$form->dbExec($q);
|
||||
// gets all files in the current dir and dirs given ending with .php
|
||||
$folders = array('../admin/', '../frontend/');
|
||||
$files = array('*.php');
|
||||
$search_glob = array();
|
||||
$folders = ['../admin/', '../frontend/'];
|
||||
$files = ['*.php'];
|
||||
$search_glob = [];
|
||||
foreach ($folders as $folder) {
|
||||
// make sure this folder actually exists
|
||||
if (is_dir(ROOT.$folder)) {
|
||||
if (is_dir(ROOT . $folder)) {
|
||||
foreach ($files as $file) {
|
||||
$search_glob[] = $folder.$file;
|
||||
$search_glob[] = $folder . $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
$crap = exec('ls '.join(' ', $search_glob), $output, $status);
|
||||
$crap = exec('ls ' . join(' ', $search_glob), $output, $status);
|
||||
// now get all that are NOT in de DB
|
||||
$q = "INSERT INTO temp_files (folder, filename) VALUES ";
|
||||
$t_q = '';
|
||||
@@ -406,10 +426,11 @@ if ($form->my_page_name == 'edit_order') {
|
||||
if ($t_q) {
|
||||
$t_q .= ', ';
|
||||
}
|
||||
$t_q .= "('".$form->dbEscapeString($matches[1])."', '".$form->dbEscapeString($matches[2])."')";
|
||||
$t_q .= "('" . $form->dbEscapeString($matches[1]) . "', '"
|
||||
. $form->dbEscapeString($matches[2]) . "')";
|
||||
}
|
||||
}
|
||||
$form->dbExec($q.$t_q, 'NULL');
|
||||
$form->dbExec($q . $t_q, 'NULL');
|
||||
$elements[] = $form->formCreateElement('filename');
|
||||
} else {
|
||||
// show file menu
|
||||
@@ -470,7 +491,7 @@ if ($form->my_page_name == 'edit_order') {
|
||||
print '[No valid page definition given]';
|
||||
break;
|
||||
}
|
||||
// $form->debug('edit', "Elements: <pre>".$form->printAr($elements));
|
||||
// $form->log->debug('edit', "Elements: <pre>".$form->log->prAr($elements));
|
||||
$DATA['elements'] = $elements;
|
||||
$DATA['hidden'] = $form->formCreateHiddenFields();
|
||||
$DATA['save_delete'] = $form->formCreateSaveDelete();
|
||||
@@ -489,16 +510,16 @@ $CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
|
||||
foreach ($CONTENT_DATA as $key => $value) {
|
||||
$smarty->assign($key, $value);
|
||||
}
|
||||
if (is_dir(BASE.TEMPLATES_C)) {
|
||||
$smarty->setCompileDir(BASE.TEMPLATES_C);
|
||||
if (is_dir(BASE . TEMPLATES_C)) {
|
||||
$smarty->setCompileDir(BASE . TEMPLATES_C);
|
||||
}
|
||||
if (is_dir(BASE.CACHE)) {
|
||||
$smarty->setCacheDir(BASE.CACHE);
|
||||
if (is_dir(BASE . CACHE)) {
|
||||
$smarty->setCacheDir(BASE . CACHE);
|
||||
}
|
||||
$smarty->display($EDIT_TEMPLATE, 'editAdmin_'.$smarty->lang, 'editAdmin_'.$smarty->lang);
|
||||
$smarty->display($EDIT_TEMPLATE, 'editAdmin_' . $smarty->lang, 'editAdmin_' . $smarty->lang);
|
||||
|
||||
// debug output
|
||||
echo $login->printErrorMsg();
|
||||
echo $form->printErrorMsg();
|
||||
echo $login->log->printErrorMsg();
|
||||
echo $form->log->printErrorMsg();
|
||||
|
||||
// __END__
|
||||
|
||||
Binary file not shown.
@@ -1,26 +1,28 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_access = array(
|
||||
'table_array' => array(
|
||||
'edit_access_id' => array(
|
||||
'value' => isset($GLOBALS['edit_access_id']) ? $GLOBALS['edit_access_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_access = [
|
||||
'table_array' => [
|
||||
'edit_access_id' => [
|
||||
'value' => $GLOBALS['edit_access_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
],
|
||||
'name' => [
|
||||
'value' => $GLOBALS['name'] ?? '',
|
||||
'output_name' => 'Access Group Name',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text',
|
||||
'error_check' => 'alphanumericspace|unique'
|
||||
),
|
||||
'description' => array(
|
||||
'value' => isset($GLOBALS['description']) ? $GLOBALS['description'] : '',
|
||||
],
|
||||
'description' => [
|
||||
'value' => $GLOBALS['description'] ?? '',
|
||||
'output_name' => 'Description',
|
||||
'type' => 'textarea'
|
||||
),
|
||||
'color' => array(
|
||||
'value' => isset($GLOBALS['color']) ? $GLOBALS['color'] : '',
|
||||
],
|
||||
'color' => [
|
||||
'value' => $GLOBALS['color'] ?? '',
|
||||
'output_name' => 'Color',
|
||||
'mandatory' => 0,
|
||||
'type' => 'text',
|
||||
@@ -29,80 +31,80 @@ $edit_access = array(
|
||||
'error_check' => 'custom',
|
||||
'error_regex' => "/[\dA-Fa-f]{6}/",
|
||||
'error_example' => 'F6A544'
|
||||
),
|
||||
'enabled' => array(
|
||||
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : 0,
|
||||
],
|
||||
'enabled' => [
|
||||
'value' => $GLOBALS['enabled'] ?? 0,
|
||||
'output_name' => 'Enabled',
|
||||
'type' => 'binary',
|
||||
'int' => 1, // OR 'bool' => 1
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'protected' => array(
|
||||
'value' => isset($GLOBALS['protected']) ? $GLOBALS['protected'] : 0,
|
||||
],
|
||||
],
|
||||
'protected' => [
|
||||
'value' => $GLOBALS['protected'] ?? 0,
|
||||
'output_name' => 'Protected',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'additional_acl' => array(
|
||||
'value' => isset($GLOBALS['additional_acl']) ? $GLOBALS['additional_acl'] : '',
|
||||
],
|
||||
],
|
||||
'additional_acl' => [
|
||||
'value' => $GLOBALS['additional_acl'] ?? '',
|
||||
'output_name' => 'Additional ACL (as JSON)',
|
||||
'type' => 'textarea',
|
||||
'error_check' => 'json',
|
||||
'rows' => 10,
|
||||
'cols' => 60
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
'table_name' => 'edit_access',
|
||||
"load_query" => "SELECT edit_access_id, name FROM edit_access ORDER BY name",
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'name'
|
||||
)
|
||||
),
|
||||
'element_list' => array(
|
||||
'edit_access_data' => array(
|
||||
],
|
||||
],
|
||||
'element_list' => [
|
||||
'edit_access_data' => [
|
||||
'output_name' => 'Edit Access Data',
|
||||
'delete_name' => 'remove_edit_access_data',
|
||||
// 'type' => 'reference_data', # is not a sub table read and connect, but only a sub table with data
|
||||
'max_empty' => 5, # maxium visible if no data is set, if filled add this number to visible
|
||||
// 'type' => 'reference_data', // is not a sub table read and connect, but only a sub table with data
|
||||
'max_empty' => 5, // maxium visible if no data is set, if filled add this number to visible
|
||||
'prefix' => 'ead',
|
||||
'elements' => array(
|
||||
'name' => array(
|
||||
'elements' => [
|
||||
'name' => [
|
||||
'type' => 'text',
|
||||
'error_check' => 'alphanumeric|unique',
|
||||
'output_name' => 'Name',
|
||||
'mandatory' => 1
|
||||
),
|
||||
'value' => array(
|
||||
],
|
||||
'value' => [
|
||||
'type' => 'text',
|
||||
'output_name' => 'Value'
|
||||
),
|
||||
'enabled' => array(
|
||||
],
|
||||
'enabled' => [
|
||||
'type' => 'checkbox',
|
||||
'output_name' => 'Activate',
|
||||
'int' => 1,
|
||||
'element_list' => array(1)
|
||||
),
|
||||
/*'edit_access_id' => array(
|
||||
'element_list' => [1]
|
||||
],
|
||||
/*'edit_access_id' => [
|
||||
'int' => 1,
|
||||
'type' => 'hidden',
|
||||
'fk_id' => 1 # reference main key from master table above
|
||||
),*/
|
||||
'edit_access_data_id' => array(
|
||||
'fk_id' => 1 // reference main key from master table above
|
||||
],*/
|
||||
'edit_access_data_id' => [
|
||||
'type' => 'hidden',
|
||||
'int' => 1,
|
||||
'pk_id' => 1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,109 +1,111 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_groups = array(
|
||||
'table_array' => array(
|
||||
'edit_group_id' => array(
|
||||
'value' => isset($GLOBALS['edit_group_id']) ? $GLOBALS['edit_group_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_groups = [
|
||||
'table_array' => [
|
||||
'edit_group_id' => [
|
||||
'value' => $GLOBALS['edit_group_id'] ?? '',
|
||||
'pk' => 1,
|
||||
'type' => 'hidden'
|
||||
),
|
||||
'enabled' => array(
|
||||
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
|
||||
],
|
||||
'enabled' => [
|
||||
'value' => $GLOBALS['enabled'] ?? '',
|
||||
'output_name' => 'Enabled',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
],
|
||||
],
|
||||
'name' => [
|
||||
'value' => $GLOBALS['name'] ?? '',
|
||||
'output_name' => 'Group Name',
|
||||
'type' => 'text',
|
||||
'mandatory' => 1
|
||||
),
|
||||
'edit_access_right_id' => array(
|
||||
'value' => isset($GLOBALS['edit_access_right_id']) ? $GLOBALS['edit_access_right_id'] : '',
|
||||
],
|
||||
'edit_access_right_id' => [
|
||||
'value' => $GLOBALS['edit_access_right_id'] ?? '',
|
||||
'output_name' => 'Group Level',
|
||||
'mandatory' => 1,
|
||||
'int' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
|
||||
),
|
||||
'edit_scheme_id' => array(
|
||||
'value' => isset($GLOBALS['edit_scheme_id']) ? $GLOBALS['edit_scheme_id'] : '',
|
||||
],
|
||||
'edit_scheme_id' => [
|
||||
'value' => $GLOBALS['edit_scheme_id'] ?? '',
|
||||
'output_name' => 'Group Scheme',
|
||||
'int_null' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT edit_scheme_id, name FROM edit_scheme WHERE enabled = 1 ORDER BY name"
|
||||
),
|
||||
'additional_acl' => array(
|
||||
'value' => isset($GLOBALS['additional_acl']) ? $GLOBALS['additional_acl'] : '',
|
||||
],
|
||||
'additional_acl' => [
|
||||
'value' => $GLOBALS['additional_acl'] ?? '',
|
||||
'output_name' => 'Additional ACL (as JSON)',
|
||||
'type' => 'textarea',
|
||||
'error_check' => 'json',
|
||||
'rows' => 10,
|
||||
'cols' => 60
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
'load_query' => "SELECT edit_group_id, name, enabled FROM edit_group ORDER BY name",
|
||||
'table_name' => 'edit_group',
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'name'
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'enabled',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Enabled: '
|
||||
)
|
||||
),
|
||||
'element_list' => array(
|
||||
'edit_page_access' => array(
|
||||
],
|
||||
],
|
||||
'element_list' => [
|
||||
'edit_page_access' => [
|
||||
'output_name' => 'Pages',
|
||||
'mandatory' => 1,
|
||||
'delete' => 0, // set then reference entries are deleted, else the 'enable' flag is only set
|
||||
'enable_name' => 'enable_page_access',
|
||||
'prefix' => 'epa',
|
||||
'read_data' => array(
|
||||
'read_data' => [
|
||||
'table_name' => 'edit_page',
|
||||
'pk_id' => 'edit_page_id',
|
||||
'name' => 'name',
|
||||
'order' => 'order_number'
|
||||
),
|
||||
'elements' => array(
|
||||
'edit_page_access_id' => array(
|
||||
],
|
||||
'elements' => [
|
||||
'edit_page_access_id' => [
|
||||
'type' => 'hidden',
|
||||
'int' => 1,
|
||||
'pk_id' => 1
|
||||
),
|
||||
'enabled' => array(
|
||||
],
|
||||
'enabled' => [
|
||||
'type' => 'checkbox',
|
||||
'output_name' => 'Activate',
|
||||
'int' => 1,
|
||||
'element_list' => array(1)
|
||||
),
|
||||
'edit_access_right_id' => array(
|
||||
'element_list' => [1],
|
||||
],
|
||||
'edit_access_right_id' => [
|
||||
'type' => 'drop_down_db',
|
||||
'output_name' => 'Access Level',
|
||||
'int' => 1,
|
||||
'preset' => 1, // first of the select
|
||||
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
|
||||
),
|
||||
'edit_page_id' => array(
|
||||
],
|
||||
'edit_page_id' => [
|
||||
'int' => 1,
|
||||
'type' => 'hidden'
|
||||
)
|
||||
],
|
||||
/*,
|
||||
'edit_default' => array(
|
||||
'edit_default' => [
|
||||
'output_name' => 'Default',
|
||||
'type' => 'radio',
|
||||
'mandatory' => 1
|
||||
)*/
|
||||
)
|
||||
) // edit pages ggroup
|
||||
)
|
||||
);
|
||||
],*/
|
||||
],
|
||||
], // edit pages ggroup
|
||||
],
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,75 +1,77 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_languages=array(
|
||||
'table_array' => array(
|
||||
'edit_language_id' => array(
|
||||
'value' => isset($GLOBALS['edit_language_id']) ? $GLOBALS['edit_language_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_languages = [
|
||||
'table_array' => [
|
||||
'edit_language_id' => [
|
||||
'value' => $GLOBALS['edit_language_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1
|
||||
),
|
||||
'short_name' => array(
|
||||
'value' => isset($GLOBALS['short_name']) ? $GLOBALS['short_name'] : '',
|
||||
],
|
||||
'short_name' => [
|
||||
'value' => $GLOBALS['short_name'] ?? '',
|
||||
'output_name' => 'Language (short)',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text',
|
||||
'size' => 2,
|
||||
'length' => 2
|
||||
),
|
||||
'long_name' => array(
|
||||
'value' => isset($GLOBALS['long_name']) ? $GLOBALS['long_name'] : '',
|
||||
],
|
||||
'long_name' => [
|
||||
'value' => $GLOBALS['long_name'] ?? '',
|
||||
'output_name' => 'Language (long)',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text',
|
||||
'size' => 40
|
||||
),
|
||||
'iso_name' => array(
|
||||
'value' => isset($GLOBALS['iso_name']) ? $GLOBALS['iso_name'] : '',
|
||||
],
|
||||
'iso_name' => [
|
||||
'value' => $GLOBALS['iso_name'] ?? '',
|
||||
'output_name' => 'ISO Code',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text'
|
||||
),
|
||||
'order_number' => array(
|
||||
'value' => isset($GLOBALS['order_number']) ? $GLOBALS['order_number'] : '',
|
||||
],
|
||||
'order_number' => [
|
||||
'value' => $GLOBALS['order_number'] ?? '',
|
||||
'int' => 1,
|
||||
'order' => 1
|
||||
),
|
||||
'enabled' => array(
|
||||
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
|
||||
],
|
||||
'enabled' => [
|
||||
'value' => $GLOBALS['enabled'] ?? '',
|
||||
'output_name' => 'Enabled',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'lang_default' => array(
|
||||
'value' => isset($GLOBALS['lang_default']) ? $GLOBALS['lang_default'] : '',
|
||||
],
|
||||
],
|
||||
'lang_default' => [
|
||||
'value' => $GLOBALS['lang_default'] ?? '',
|
||||
'output_name' => 'Default Language',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
)
|
||||
),
|
||||
],
|
||||
],
|
||||
],
|
||||
'load_query' => "SELECT edit_language_id, long_name, iso_name, enabled FROM edit_language ORDER BY long_name",
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'long_name'
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'iso_name',
|
||||
'before_value' => 'ISO: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'enabled',
|
||||
'before_value' => 'Enabled: ',
|
||||
'binary' => array('Yes','No')
|
||||
)
|
||||
),
|
||||
'binary' => ['Yes','No'],
|
||||
],
|
||||
],
|
||||
'table_name' => 'edit_language'
|
||||
);
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,40 +1,42 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_menu_group = array(
|
||||
'table_array' => array(
|
||||
'edit_menu_group_id' => array(
|
||||
'value' => isset($GLOBALS['edit_menu_group_id']) ? $GLOBALS['edit_menu_group_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_menu_group = [
|
||||
'table_array' => [
|
||||
'edit_menu_group_id' => [
|
||||
'value' => $GLOBALS['edit_menu_group_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
],
|
||||
'name' => [
|
||||
'value' => $GLOBALS['name'] ?? '',
|
||||
'output_name' => 'Group name',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text'
|
||||
),
|
||||
'flag' => array(
|
||||
'value' => isset($GLOBALS['flag']) ? $GLOBALS['flag'] : '',
|
||||
],
|
||||
'flag' => [
|
||||
'value' => $GLOBALS['flag'] ?? '',
|
||||
'output_name' => 'Flag',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text',
|
||||
'error_check' => 'alphanumeric|unique'
|
||||
),
|
||||
'order_number' => array(
|
||||
'value' => isset($GLOBALS['order_number']) ? $GLOBALS['order_number'] : '',
|
||||
],
|
||||
'order_number' => [
|
||||
'value' => $GLOBALS['order_number'] ?? '',
|
||||
'output_name' => 'Group order',
|
||||
'type' => 'order',
|
||||
'int' => 1,
|
||||
'order' => 1
|
||||
)
|
||||
),
|
||||
],
|
||||
],
|
||||
'table_name' => 'edit_menu_group',
|
||||
'load_query' => "SELECT edit_menu_group_id, name FROM edit_menu_group ORDER BY name",
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'name'
|
||||
)
|
||||
)
|
||||
);
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,101 +1,103 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_pages = array(
|
||||
'table_array' => array(
|
||||
'edit_page_id' => array(
|
||||
'value' => isset($GLOBALS['edit_page_id']) ? $GLOBALS['edit_page_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_pages = [
|
||||
'table_array' => [
|
||||
'edit_page_id' => [
|
||||
'value' => $GLOBALS['edit_page_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1
|
||||
),
|
||||
'filename' => array(
|
||||
'value' => isset($GLOBALS['filename']) ? $GLOBALS['filename'] : '',
|
||||
],
|
||||
'filename' => [
|
||||
'value' => $GLOBALS['filename'] ?? '',
|
||||
'output_name' => 'Add File ...',
|
||||
'mandatory' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT DISTINCT temp_files.filename AS id, temp_files.folder || temp_files.filename AS name ".
|
||||
"FROM temp_files ".
|
||||
"LEFT JOIN edit_page ep ON temp_files.filename = ep.filename ".
|
||||
"WHERE ep.filename IS NULL"
|
||||
),
|
||||
'hostname' => array(
|
||||
'value' => isset($GLOBALS['hostname']) ? $GLOBALS['hostname'] : '',
|
||||
'query' => "SELECT DISTINCT temp_files.filename AS id, temp_files.folder || temp_files.filename AS name "
|
||||
. "FROM temp_files "
|
||||
. "LEFT JOIN edit_page ep ON temp_files.filename = ep.filename "
|
||||
. "WHERE ep.filename IS NULL"
|
||||
],
|
||||
'hostname' => [
|
||||
'value' => $GLOBALS['hostname'] ?? '',
|
||||
'output_name' => 'Hostname or folder',
|
||||
'type' => 'text'
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
],
|
||||
'name' => [
|
||||
'value' => $GLOBALS['name'] ?? '',
|
||||
'output_name' => 'Page name',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text'
|
||||
),
|
||||
'order_number' => array(
|
||||
'value' => isset($GLOBALS['order_number']) ? $GLOBALS['order_number'] : '',
|
||||
],
|
||||
'order_number' => [
|
||||
'value' => $GLOBALS['order_number'] ?? '',
|
||||
'output_name' => 'Page order',
|
||||
'type' => 'order',
|
||||
'int' => 1,
|
||||
'order' => 1
|
||||
),
|
||||
/* 'flag' => array(
|
||||
],
|
||||
/* 'flag' => [
|
||||
'value' => isset($GLOBALS['flag']) ? $GLOBALS['flag'] : '',
|
||||
'output_name' => 'Page Flag',
|
||||
'type' => 'drop_down_array',
|
||||
'query' => array(
|
||||
'query' => [
|
||||
'0' => '0',
|
||||
'1' => '1',
|
||||
'2' => '2',
|
||||
'3' => '3',
|
||||
'4' => '4',
|
||||
'5' => '5'
|
||||
)
|
||||
),*/
|
||||
'online' => array(
|
||||
'value' => isset($GLOBALS['online']) ? $GLOBALS['online'] : '',
|
||||
],
|
||||
],*/
|
||||
'online' => [
|
||||
'value' => $GLOBALS['online'] ?? '',
|
||||
'output_name' => 'Online',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'menu' => array(
|
||||
'value' => isset($GLOBALS['menu']) ? $GLOBALS['menu'] : '',
|
||||
],
|
||||
],
|
||||
'menu' => [
|
||||
'value' => $GLOBALS['menu'] ?? '',
|
||||
'output_name' => 'Menu',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'popup' => array(
|
||||
'value' => isset($GLOBALS['popup']) ? $GLOBALS['popup'] : '',
|
||||
],
|
||||
],
|
||||
'popup' => [
|
||||
'value' => $GLOBALS['popup'] ?? '',
|
||||
'output_name' => 'Popup',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'popup_x' => array(
|
||||
'value' => isset($GLOBALS['popup_x']) ? $GLOBALS['popup_x'] : '',
|
||||
],
|
||||
],
|
||||
'popup_x' => [
|
||||
'value' => $GLOBALS['popup_x'] ?? '',
|
||||
'output_name' => 'Popup Width',
|
||||
'int_null' => 1,
|
||||
'type' => 'text',
|
||||
'size' => 4,
|
||||
'length' => 4
|
||||
),
|
||||
'popup_y' => array(
|
||||
'value' => isset($GLOBALS['popup_y']) ? $GLOBALS['popup_y'] : '',
|
||||
],
|
||||
'popup_y' => [
|
||||
'value' => $GLOBALS['popup_y'] ?? '',
|
||||
'output_name' => 'Popup Height',
|
||||
'int_null' => 1,
|
||||
'type' => 'text',
|
||||
'size' => 4,
|
||||
'length' => 4
|
||||
),
|
||||
'content_alias_edit_page_id' => array(
|
||||
'value' => isset($GLOBALS['content_alias_edit_page_id']) ? $GLOBALS['content_alias_edit_page_id'] : '',
|
||||
],
|
||||
'content_alias_edit_page_id' => [
|
||||
'value' => $GLOBALS['content_alias_edit_page_id'] ?? '',
|
||||
'output_name' => 'Content Alias Source',
|
||||
'int_null' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
@@ -110,132 +112,138 @@ $edit_pages = array(
|
||||
// "FROM edit_page ".
|
||||
// (isset($GLOBALS['edit_page_id']) ? " WHERE edit_page_id <> ".$GLOBALS['edit_page_id'] : "")." ".
|
||||
// "ORDER BY order_number"
|
||||
)
|
||||
),
|
||||
'load_query' => "SELECT edit_page_id, CASE WHEN hostname IS NOT NULL THEN hostname ELSE ''::VARCHAR END || filename AS filename, name, online, menu, popup FROM edit_page ORDER BY order_number",
|
||||
],
|
||||
],
|
||||
'load_query' => "SELECT edit_page_id, "
|
||||
. "CASE WHEN hostname IS NOT NULL THEN hostname ELSE ''::VARCHAR END || filename AS filename, "
|
||||
. "name, online, menu, popup "
|
||||
. "FROM edit_page "
|
||||
. "ORDER BY order_number",
|
||||
'table_name' => 'edit_page',
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'name'
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'filename',
|
||||
'before_value' => 'Filename: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'online',
|
||||
'binary' => array('Yes','No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Online: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'menu',
|
||||
'binary' => array('Yes','No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Menu: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'popup',
|
||||
'binary' => array('Yes','No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Popup: '
|
||||
)
|
||||
),
|
||||
'reference_arrays' => array(
|
||||
'edit_visible_group' => array(
|
||||
],
|
||||
],
|
||||
'reference_arrays' => [
|
||||
'edit_visible_group' => [
|
||||
'table_name' => 'edit_page_visible_group',
|
||||
'other_table_pk' => 'edit_visible_group_id',
|
||||
'output_name' => 'Visible Groups (access)',
|
||||
'mandatory' => 1,
|
||||
'select_size' => 10,
|
||||
'selected' => isset($GLOBALS['edit_visible_group_id']) ? $GLOBALS['edit_visible_group_id'] : '',
|
||||
'query' => "SELECT edit_visible_group_id, 'Name: ' || name || ', ' || 'Flag: ' || flag FROM edit_visible_group ORDER BY name"
|
||||
),
|
||||
'edit_menu_group' => array(
|
||||
'selected' => $GLOBALS['edit_visible_group_id'] ?? '',
|
||||
'query' => "SELECT edit_visible_group_id, 'Name: ' || name || ', ' || 'Flag: ' || flag "
|
||||
. "FROM edit_visible_group ORDER BY name"
|
||||
],
|
||||
'edit_menu_group' => [
|
||||
'table_name' => 'edit_page_menu_group',
|
||||
'other_table_pk' => 'edit_menu_group_id',
|
||||
'output_name' => 'Menu Groups (grouping)',
|
||||
'mandatory' => 1,
|
||||
'select_size' => 10,
|
||||
'selected' => isset($GLOBALS['edit_menu_group_id']) ? $GLOBALS['edit_menu_group_id'] : '',
|
||||
'query' => "SELECT edit_menu_group_id, 'Name: ' || name || ', ' || 'Flag: ' || flag FROM edit_menu_group ORDER BY order_number"
|
||||
)
|
||||
'selected' => $GLOBALS['edit_menu_group_id'] ?? '',
|
||||
'query' => "SELECT edit_menu_group_id, 'Name: ' || name || ', ' || 'Flag: ' || flag "
|
||||
. "FROM edit_menu_group ORDER BY order_number"
|
||||
],
|
||||
|
||||
),
|
||||
'element_list' => array(
|
||||
'edit_query_string' => array(
|
||||
],
|
||||
'element_list' => [
|
||||
'edit_query_string' => [
|
||||
'output_name' => 'Query Strings',
|
||||
'delete_name' => 'remove_query_string',
|
||||
'prefix' => 'eqs',
|
||||
'elements' => array(
|
||||
'name' => array(
|
||||
'elements' => [
|
||||
'name' => [
|
||||
'output_name' => 'Name',
|
||||
'type' => 'text',
|
||||
'error_check' => 'unique|alphanumeric',
|
||||
'mandatory' => 1
|
||||
),
|
||||
'value' => array(
|
||||
],
|
||||
'value' => [
|
||||
'output_name' => 'Value',
|
||||
'type' => 'text'
|
||||
),
|
||||
'enabled' => array(
|
||||
],
|
||||
'enabled' => [
|
||||
'output_name' => 'Enabled',
|
||||
'int' => 1,
|
||||
'type' => 'checkbox',
|
||||
'element_list' => array(1)
|
||||
),
|
||||
'dynamic' => array(
|
||||
'element_list' => [1],
|
||||
],
|
||||
'dynamic' => [
|
||||
'output_name' => 'Dynamic',
|
||||
'int' => 1,
|
||||
'type' => 'checkbox',
|
||||
'element_list' => array(1)
|
||||
),
|
||||
'edit_query_string_id' => array(
|
||||
'element_list' => [1],
|
||||
],
|
||||
'edit_query_string_id' => [
|
||||
'type' => 'hidden',
|
||||
'pk_id' => 1
|
||||
)
|
||||
) // elements
|
||||
), // query_string element list
|
||||
'edit_page_content' => array(
|
||||
],
|
||||
], // elements
|
||||
], // query_string element list
|
||||
'edit_page_content' => [
|
||||
'output_name' => 'Page Content',
|
||||
'delete_name' => 'remove_page_content',
|
||||
'prefix' => 'epc',
|
||||
'elements' => array(
|
||||
'name' => array(
|
||||
'elements' => [
|
||||
'name' => [
|
||||
'output_name' => 'Content',
|
||||
'type' => 'text',
|
||||
'error_check' => 'alphanumeric',
|
||||
'mandatory' => 1
|
||||
),
|
||||
'uid' => array(
|
||||
],
|
||||
'uid' => [
|
||||
'output_name' => 'UID',
|
||||
'type' => 'text',
|
||||
'error_check' => 'unique|alphanumeric',
|
||||
'mandatory' => 1
|
||||
),
|
||||
'order_number' => array(
|
||||
],
|
||||
'order_number' => [
|
||||
'output_name' => 'Order',
|
||||
'type' => 'text',
|
||||
'error_check' => 'int',
|
||||
'mandatory' => 1
|
||||
),
|
||||
'online' => array(
|
||||
],
|
||||
'online' => [
|
||||
'output_name' => 'Online',
|
||||
'int' => 1,
|
||||
'type' => 'checkbox',
|
||||
'element_list' => array(1)
|
||||
),
|
||||
'edit_access_right_id' => array(
|
||||
'element_list' => [1],
|
||||
],
|
||||
'edit_access_right_id' => [
|
||||
'type' => 'drop_down_db',
|
||||
'output_name' => 'Access Level',
|
||||
'int' => 1,
|
||||
'preset' => 1, // first of the select
|
||||
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
|
||||
),
|
||||
'edit_page_content_id' => array(
|
||||
],
|
||||
'edit_page_content_id' => [
|
||||
'type' => 'hidden',
|
||||
'pk_id' => 1
|
||||
)
|
||||
)
|
||||
)
|
||||
) // element list
|
||||
);
|
||||
],
|
||||
],
|
||||
],
|
||||
], // element list
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_schemes = array(
|
||||
'table_array' => array(
|
||||
'edit_scheme_id' => array(
|
||||
'value' => isset($GLOBALS['edit_scheme_id']) ? $GLOBALS['edit_scheme_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_schemes = [
|
||||
'table_array' => [
|
||||
'edit_scheme_id' => [
|
||||
'value' => $GLOBALS['edit_scheme_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
],
|
||||
'name' => [
|
||||
'value' => $GLOBALS['name'] ?? '',
|
||||
'output_name' => 'Scheme Name',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text'
|
||||
),
|
||||
'header_color' => array(
|
||||
'value' => isset($GLOBALS['header_color']) ? $GLOBALS['header_color'] : '',
|
||||
],
|
||||
'header_color' => [
|
||||
'value' => $GLOBALS['header_color'] ?? '',
|
||||
'output_name' => 'Header Color',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text',
|
||||
@@ -23,35 +25,35 @@ $edit_schemes = array(
|
||||
'error_check' => 'custom',
|
||||
'error_regex' => '/[\dA-Fa-f]{6}/',
|
||||
'error_example' => 'F6A544'
|
||||
),
|
||||
'enabled' => array(
|
||||
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
|
||||
],
|
||||
'enabled' => [
|
||||
'value' => $GLOBALS['enabled'] ?? '',
|
||||
'output_name' => 'Enabled',
|
||||
'int' => 1,
|
||||
'type' => 'binary',
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'template' => array(
|
||||
'value' => isset($GLOBALS['template']) ? $GLOBALS['template'] : '',
|
||||
],
|
||||
],
|
||||
'template' => [
|
||||
'value' => $GLOBALS['template'] ?? '',
|
||||
'output_name' => 'Template',
|
||||
'type' => 'text'
|
||||
)
|
||||
),
|
||||
],
|
||||
],
|
||||
'table_name' => 'edit_scheme',
|
||||
'load_query' => "SELECT edit_scheme_id, name, enabled FROM edit_scheme ORDER BY name",
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'name'
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'enabled',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Enabled: '
|
||||
)
|
||||
)
|
||||
); // main array
|
||||
],
|
||||
],
|
||||
]; // main array
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,270 +1,274 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_users = array(
|
||||
'table_array' => array(
|
||||
'edit_user_id' => array(
|
||||
'value' => isset($GLOBALS['edit_user_id']) ? $GLOBALS['edit_user_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_users = [
|
||||
'table_array' => [
|
||||
'edit_user_id' => [
|
||||
'value' => $GLOBALS['edit_user_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1,
|
||||
'int' => 1
|
||||
),
|
||||
'username' => array(
|
||||
'value' => isset($GLOBALS['username']) ? $GLOBALS['username'] : '',
|
||||
],
|
||||
'username' => [
|
||||
'value' => $GLOBALS['username'] ?? '',
|
||||
'output_name' => 'Username',
|
||||
'mandatory' => 1,
|
||||
'error_check' => 'unique|alphanumericextended',
|
||||
'type' => 'text'
|
||||
),
|
||||
'password' => array(
|
||||
'value' => isset($GLOBALS['password']) ? $GLOBALS['password'] : '',
|
||||
'HIDDEN_value' => isset($GLOBALS['HIDDEN_password']) ? $GLOBALS['HIDDEN_password'] : '',
|
||||
'CONFIRM_value' => isset($GLOBALS['CONFIRM_password']) ? $GLOBALS['CONFIRM_password'] : '',
|
||||
],
|
||||
'password' => [
|
||||
'value' => $GLOBALS['password'] ?? '',
|
||||
'HIDDEN_value' => $GLOBALS['HIDDEN_password'] ?? '',
|
||||
'CONFIRM_value' => $GLOBALS['CONFIRM_password'] ?? '',
|
||||
'output_name' => 'Password',
|
||||
'mandatory' => 1,
|
||||
'type' => 'password', // later has to be password for encryption in database
|
||||
'update' => array( // connected field updates, and update data
|
||||
'password_change_date' => array( // db row to update
|
||||
'update' => [ // connected field updates, and update data
|
||||
'password_change_date' => [ // db row to update
|
||||
'type' => 'date', // type of field (int/text/date/etc)
|
||||
'value' => 'NOW()' // value [todo: complex reference
|
||||
)
|
||||
)
|
||||
),
|
||||
],
|
||||
],
|
||||
],
|
||||
// password date when first insert and password is set, needs special field with connection to password
|
||||
// password reset force interval, if set, user needs to reset password after X time period
|
||||
'password_change_interval' => array(
|
||||
'value' => isset($GLOBALS['password_change_interval']) ? $GLOBALS['password_change_interval'] : '',
|
||||
'password_change_interval' => [
|
||||
'value' => $GLOBALS['password_change_interval'] ?? '',
|
||||
'output_name' => 'Password change interval',
|
||||
'error_check' => 'intervalshort', // can be any date length format. n Y/M/D [not H/M/S], only one set, no combination
|
||||
// can be any date length format. n Y/M/D [not H/M/S], only one set, no combination
|
||||
'error_check' => 'intervalshort',
|
||||
'type' => 'text',
|
||||
'interval' => 1, // interval needs NULL write for empty
|
||||
'size' => 5, // make it 5 chars long
|
||||
'length' => 5
|
||||
),
|
||||
'enabled' => array(
|
||||
'value' => isset($GLOBALS['enabled']) ? $GLOBALS['enabled'] : '',
|
||||
],
|
||||
'enabled' => [
|
||||
'value' => $GLOBALS['enabled'] ?? '',
|
||||
'output_name' => 'Enabled',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'strict' => array(
|
||||
'value' => isset($GLOBALS['strict']) ? $GLOBALS['strict'] : '',
|
||||
],
|
||||
],
|
||||
'strict' => [
|
||||
'value' => $GLOBALS['strict'] ?? '',
|
||||
'output_name' => 'Strict (Lock after errors)',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'locked' => array(
|
||||
'value' => isset($GLOBALS['locked']) ? $GLOBALS['locked'] : '',
|
||||
],
|
||||
],
|
||||
'locked' => [
|
||||
'value' => $GLOBALS['locked'] ?? '',
|
||||
'output_name' => 'Locked (auto set if strict with errors)',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'admin' => array(
|
||||
'value' => isset($GLOBALS['admin']) ? $GLOBALS['admin'] : '',
|
||||
],
|
||||
],
|
||||
'admin' => [
|
||||
'value' => $GLOBALS['admin'] ?? '',
|
||||
'output_name' => 'Admin',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'debug' => array(
|
||||
'value' => isset($GLOBALS['debug']) ? $GLOBALS['debug'] : '',
|
||||
],
|
||||
],
|
||||
'debug' => [
|
||||
'value' => $GLOBALS['debug'] ?? '',
|
||||
'output_name' => 'Debug',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'db_debug' => array(
|
||||
'value' => isset($GLOBALS['db_debug']) ? $GLOBALS['db_debug'] : '',
|
||||
],
|
||||
],
|
||||
'db_debug' => [
|
||||
'value' => $GLOBALS['db_debug'] ?? '',
|
||||
'output_name' => 'DB Debug',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'email' => array(
|
||||
'value' => isset($GLOBALS['email']) ? $GLOBALS['email'] : '',
|
||||
],
|
||||
],
|
||||
'email' => [
|
||||
'value' => $GLOBALS['email'] ?? '',
|
||||
'output_name' => 'E-Mail',
|
||||
'type' => 'text',
|
||||
'error_check' => 'email'
|
||||
),
|
||||
'last_name' => array(
|
||||
'value' => isset($GLOBALS['last_name']) ? $GLOBALS['last_name'] : '',
|
||||
],
|
||||
'last_name' => [
|
||||
'value' => $GLOBALS['last_name'] ?? '',
|
||||
'output_name' => 'Last Name',
|
||||
'type' => 'text'
|
||||
),
|
||||
'first_name' => array(
|
||||
'value' => isset($GLOBALS['first_name']) ? $GLOBALS['first_name'] : '',
|
||||
],
|
||||
'first_name' => [
|
||||
'value' => $GLOBALS['first_name'] ?? '',
|
||||
'output_name' => 'First Name',
|
||||
'type' => 'text'
|
||||
),
|
||||
'edit_language_id' => array(
|
||||
'value' => isset($GLOBALS['edit_language_id']) ? $GLOBALS['edit_language_id'] : '',
|
||||
],
|
||||
'edit_language_id' => [
|
||||
'value' => $GLOBALS['edit_language_id'] ?? '',
|
||||
'output_name' => 'Language',
|
||||
'mandatory' => 1,
|
||||
'int' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT edit_language_id, long_name FROM edit_language WHERE enabled = 1 ORDER BY order_number"
|
||||
),
|
||||
'edit_scheme_id' => array(
|
||||
'value' => isset($GLOBALS['edit_scheme_id']) ? $GLOBALS['edit_scheme_id'] : '',
|
||||
],
|
||||
'edit_scheme_id' => [
|
||||
'value' => $GLOBALS['edit_scheme_id'] ?? '',
|
||||
'output_name' => 'Scheme',
|
||||
'int_null' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT edit_scheme_id, name FROM edit_scheme WHERE enabled = 1 ORDER BY name"
|
||||
),
|
||||
'edit_group_id' => array(
|
||||
'value' => isset($GLOBALS['edit_group_id']) ? $GLOBALS['edit_group_id'] : '',
|
||||
],
|
||||
'edit_group_id' => [
|
||||
'value' => $GLOBALS['edit_group_id'] ?? '',
|
||||
'output_name' => 'Group',
|
||||
'int' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT edit_group_id, name FROM edit_group WHERE enabled = 1 ORDER BY name",
|
||||
'mandatory' => 1
|
||||
),
|
||||
'edit_access_right_id' => array(
|
||||
'value' => isset($GLOBALS['edit_access_right_id']) ? $GLOBALS['edit_access_right_id'] : '',
|
||||
],
|
||||
'edit_access_right_id' => [
|
||||
'value' => $GLOBALS['edit_access_right_id'] ?? '',
|
||||
'output_name' => 'User Level',
|
||||
'mandatory' => 1,
|
||||
'int' => 1,
|
||||
'type' => 'drop_down_db',
|
||||
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
|
||||
),
|
||||
'login_error_count' => array(
|
||||
],
|
||||
'login_error_count' => [
|
||||
'output_name' => 'Login error count',
|
||||
'value' => isset($GLOBALS['login_error_count']) ? $GLOBALS['login_error_count'] : '',
|
||||
'value' => $GLOBALS['login_error_count'] ?? '',
|
||||
'type' => 'view',
|
||||
'empty' => '0'
|
||||
),
|
||||
'login_error_date_last' => array(
|
||||
],
|
||||
'login_error_date_last' => [
|
||||
'output_name' => 'Last login error',
|
||||
'value' => isset($GLOBALS['login_error_date_liast']) ? $GLOBALS['login_error_date_liast'] : '',
|
||||
'value' => $GLOBALS['login_error_date_liast'] ?? '',
|
||||
'type' => 'view',
|
||||
'empty' => '-'
|
||||
),
|
||||
'login_error_date_first' => array(
|
||||
],
|
||||
'login_error_date_first' => [
|
||||
'output_name' => 'First login error',
|
||||
'value' => isset($GLOBALS['login_error_date_first']) ? $GLOBALS['login_error_date_first'] : '',
|
||||
'value' => $GLOBALS['login_error_date_first'] ?? '',
|
||||
'type' => 'view',
|
||||
'empty' => '-'
|
||||
),
|
||||
'protected' => array(
|
||||
'value' => isset($GLOBALS['protected']) ? $GLOBALS['protected'] : '',
|
||||
],
|
||||
'protected' => [
|
||||
'value' => $GLOBALS['protected'] ?? '',
|
||||
'output_name' => 'Protected',
|
||||
'type' => 'binary',
|
||||
'int' => 1,
|
||||
'element_list' => array(
|
||||
'element_list' => [
|
||||
'1' => 'Yes',
|
||||
'0' => 'No'
|
||||
)
|
||||
),
|
||||
'additional_acl' => array(
|
||||
'value' => isset($GLOBALS['additional_acl']) ? $GLOBALS['additional_acl'] : '',
|
||||
],
|
||||
],
|
||||
'additional_acl' => [
|
||||
'value' => $GLOBALS['additional_acl'] ?? '',
|
||||
'output_name' => 'Additional ACL (as JSON)',
|
||||
'type' => 'textarea',
|
||||
'error_check' => 'json',
|
||||
'rows' => 10,
|
||||
'cols' => 60
|
||||
),
|
||||
),
|
||||
'load_query' => "SELECT edit_user_id, username, enabled, debug, db_debug, strict, locked, login_error_count FROM edit_user ORDER BY username",
|
||||
],
|
||||
],
|
||||
'load_query' => "SELECT edit_user_id, username, enabled, debug, db_debug, strict, locked, login_error_count "
|
||||
. "FROM edit_user ORDER BY username",
|
||||
'table_name' => 'edit_user',
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'username'
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'enabled',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Enabled: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'debug',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Debug: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'db_debug',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'DB Debug: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'strict',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Strict: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'locked',
|
||||
'binary' => array('Yes', 'No'),
|
||||
'binary' => ['Yes', 'No'],
|
||||
'before_value' => 'Locked: '
|
||||
),
|
||||
array(
|
||||
],
|
||||
[
|
||||
'name' => 'login_error_count',
|
||||
'before_value' => 'Errors: '
|
||||
)
|
||||
),
|
||||
'element_list' => array(
|
||||
'edit_access_user' => array(
|
||||
],
|
||||
],
|
||||
'element_list' => [
|
||||
'edit_access_user' => [
|
||||
'output_name' => 'Accounts',
|
||||
'mandatory' => 1,
|
||||
'delete' => 0, // set then reference entries are deleted, else the 'enable' flag is only set
|
||||
'prefix' => 'ecu',
|
||||
'read_data' => array(
|
||||
'read_data' => [
|
||||
'table_name' => 'edit_access',
|
||||
'pk_id' => 'edit_access_id',
|
||||
'name' => 'name',
|
||||
'order' => 'name'
|
||||
),
|
||||
'elements' => array(
|
||||
'edit_access_user_id' => array(
|
||||
],
|
||||
'elements' => [
|
||||
'edit_access_user_id' => [
|
||||
'output_name' => 'Activate',
|
||||
'type' => 'hidden',
|
||||
'int' => 1,
|
||||
'pk_id' => 1
|
||||
),
|
||||
'enabled' => array(
|
||||
],
|
||||
'enabled' => [
|
||||
'type' => 'checkbox',
|
||||
'output_name' => 'Activate',
|
||||
'int' => 1,
|
||||
'element_list' => array(1)
|
||||
),
|
||||
'edit_access_right_id' => array(
|
||||
'element_list' => [1],
|
||||
],
|
||||
'edit_access_right_id' => [
|
||||
'type' => 'drop_down_db',
|
||||
'output_name' => 'Access Level',
|
||||
'preset' => 1, // first of the select
|
||||
'int' => 1,
|
||||
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
|
||||
),
|
||||
'edit_default' => array(
|
||||
],
|
||||
'edit_default' => [
|
||||
'type' => 'radio_group',
|
||||
'output_name' => 'Default',
|
||||
'int' => 1,
|
||||
'element_list' => 'radio_group'
|
||||
),
|
||||
'edit_access_id' => array(
|
||||
],
|
||||
'edit_access_id' => [
|
||||
'type' => 'hidden',
|
||||
'int' => 1
|
||||
)
|
||||
)
|
||||
) // edit pages ggroup
|
||||
)
|
||||
);
|
||||
],
|
||||
],
|
||||
], // edit pages ggroup
|
||||
],
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
<?php declare(strict_types=1);
|
||||
<?php
|
||||
|
||||
$edit_visible_group = array(
|
||||
'table_array' => array(
|
||||
'edit_visible_group_id' => array(
|
||||
'value' => isset($GLOBALS['edit_visible_group_id']) ? $GLOBALS['edit_visible_group_id'] : '',
|
||||
declare(strict_types=1);
|
||||
|
||||
$edit_visible_group = [
|
||||
'table_array' => [
|
||||
'edit_visible_group_id' => [
|
||||
'value' => $GLOBALS['edit_visible_group_id'] ?? '',
|
||||
'type' => 'hidden',
|
||||
'pk' => 1
|
||||
),
|
||||
'name' => array(
|
||||
'value' => isset($GLOBALS['name']) ? $GLOBALS['name'] : '',
|
||||
],
|
||||
'name' => [
|
||||
'value' => $GLOBALS['name'] ?? '',
|
||||
'output_name' => 'Group name',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text'
|
||||
),
|
||||
'flag' => array(
|
||||
'value' => isset($GLOBALS['flag']) ? $GLOBALS['flag'] : '',
|
||||
],
|
||||
'flag' => [
|
||||
'value' => $GLOBALS['flag'] ?? '',
|
||||
'output_name' => 'Flag',
|
||||
'mandatory' => 1,
|
||||
'type' => 'text',
|
||||
'error_check' => 'alphanumeric|unique'
|
||||
)
|
||||
),
|
||||
],
|
||||
],
|
||||
'table_name' => 'edit_visible_group',
|
||||
'load_query' => "SELECT edit_visible_group_id, name FROM edit_visible_group ORDER BY name",
|
||||
'show_fields' => array(
|
||||
array(
|
||||
'show_fields' => [
|
||||
[
|
||||
'name' => 'name'
|
||||
)
|
||||
)
|
||||
);
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
// __END__
|
||||
|
||||
@@ -100,10 +100,10 @@
|
||||
</script>
|
||||
<!-- /TinyMCE -->
|
||||
{/if}
|
||||
{popup_init src="`$js`/overlib/overlib.js"}
|
||||
</head>
|
||||
<body>
|
||||
<div style="margin: 2px; width: {$table_width}px; margin-bottom: 10px;">
|
||||
{popup_init src="`$js`/overlib/overlib.js"}
|
||||
<div style="margin: 2px; width: {$table_width}; margin-bottom: 10px;">
|
||||
<div style="position: relative; height: 20px;" class="menu">
|
||||
<div style="position: absolute; width: 200px;">{t 1=$USER_NAME|upper}Hello %1{/t}</div>
|
||||
<div style="position: absolute; text-align: right; right: 0px; width: 120px;">
|
||||
@@ -127,13 +127,13 @@
|
||||
{/if}
|
||||
{/foreach}
|
||||
</div>
|
||||
<div class="pagename">
|
||||
<div id="pagename" class="pagename">
|
||||
{$page_name}
|
||||
</div>
|
||||
</div>
|
||||
{* error/warning *}
|
||||
{if $messages}
|
||||
<div style="margin: 2px; width: {$table_width}px;">
|
||||
<div style="margin: 2px; width: {$table_width};">
|
||||
{foreach from=$messages item=item key=key}
|
||||
<div class="{$item.class}">{$item.msg}</div>
|
||||
{/foreach}
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
{* debug info *}
|
||||
{if $DEBUG}
|
||||
<div style="width:{$table_width}px;" class="debug_message">
|
||||
<div style="width:{$table_width};" class="debug_message">
|
||||
{$Id}<br>
|
||||
<b>{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}</b><br>
|
||||
{$debug_error_msg}
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
{$SMARTY_TEST}
|
||||
</div>
|
||||
<div>
|
||||
TRANSLATION CLASS: {$TRANSLATE_TEST}
|
||||
TRANSLATION CLASS (OUT): {$TRANSLATE_TEST}
|
||||
</div>
|
||||
<div>
|
||||
TRANSLATION CLASS (SMARTY): {$TRANSLATE_TEST_SMARTY}
|
||||
</div>
|
||||
<div>
|
||||
<select id="drop_down_test" name="drop_down_test">
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
{if $STYLESHEET}
|
||||
<link rel=stylesheet type="text/css" href="{$css}{$STYLESHEET}">
|
||||
{/if}
|
||||
{if $CSS_CORE_INCLUDE}
|
||||
<link rel=stylesheet type="text/css" href="{$CSS_CORE_INCLUDE}">
|
||||
{/if}
|
||||
{if $CSS_INCLUDE}
|
||||
<link rel=stylesheet type="text/css" href="{$CSS_INCLUDE}">
|
||||
{/if}
|
||||
@@ -23,9 +26,6 @@
|
||||
<link rel=stylesheet type="text/css" href="{$CSS_SPECIAL_INCLUDE}">
|
||||
{/if}
|
||||
<script language="JavaScript" src="{$js}/firebug.js"></script>
|
||||
{if $JAVASCRIPT}
|
||||
<script language="JavaScript" src="{$js}{$JAVASCRIPT}"></script>
|
||||
{/if}
|
||||
{if $USE_JQUERY}
|
||||
{* JQuery *}
|
||||
<script type="text/javascript" src="{$js}/jquery.min.js"></script>
|
||||
@@ -37,6 +37,12 @@
|
||||
<script src="{$js}/scriptaculous/scriptaculous.js" type="text/javascript"></script>
|
||||
{/if}
|
||||
{/if}
|
||||
{if $JAVASCRIPT}
|
||||
<script language="JavaScript" src="{$js}{$JAVASCRIPT}"></script>
|
||||
{/if}
|
||||
{if $JS_CORE_INCLUDE}
|
||||
<script language="JavaScript" src="{$JS_CORE_INCLUDE}"></script>
|
||||
{/if}
|
||||
{if $JS_INCLUDE}
|
||||
<script language="JavaScript" src="{$JS_INCLUDE}"></script>
|
||||
{/if}
|
||||
|
||||
0
www/layout/admin/javascript/datepickr/datepickr.init.js
Executable file → Normal file
0
www/layout/admin/javascript/datepickr/datepickr.init.js
Executable file → Normal file
@@ -3,6 +3,8 @@
|
||||
|
||||
/* jshint esversion: 6 */
|
||||
|
||||
/* global i18n */
|
||||
|
||||
// debug set
|
||||
/*var FRONTEND_DEBUG = false;
|
||||
var DEBUG = true;
|
||||
@@ -13,8 +15,8 @@ if (!DEBUG) {
|
||||
}*/
|
||||
|
||||
// open overlay boxes counter
|
||||
var GL_OB_S = 10;
|
||||
var GL_OB_BASE = 10;
|
||||
var GL_OB_S = 30;
|
||||
var GL_OB_BASE = 30;
|
||||
|
||||
/**
|
||||
* opens a popup window with winName and given features (string)
|
||||
@@ -22,7 +24,8 @@ var GL_OB_BASE = 10;
|
||||
* @param {String} winName window name
|
||||
* @param {Object} features popup features
|
||||
*/
|
||||
function pop(theURL, winName, features) {
|
||||
function pop(theURL, winName, features) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
winName = window.open(theURL, winName, features);
|
||||
winName.focus();
|
||||
}
|
||||
@@ -31,7 +34,8 @@ function pop(theURL, winName, features) {
|
||||
* automatically resize a text area based on the amount of lines in it
|
||||
* @param {[string} ta_id element id
|
||||
*/
|
||||
function expandTA(ta_id) {
|
||||
function expandTA(ta_id) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var ta;
|
||||
// if a string comes, its a get by id, else use it as an element pass on
|
||||
if (!ta_id.length) {
|
||||
@@ -40,7 +44,7 @@ function expandTA(ta_id) {
|
||||
ta = document.getElementById(ta_id);
|
||||
}
|
||||
var maxChars = ta.cols;
|
||||
var theRows = ta.value.split("\n");
|
||||
var theRows = ta.value.split('\n');
|
||||
var numNewRows = 0;
|
||||
|
||||
for ( var i = 0; i < theRows.length; i++ ) {
|
||||
@@ -119,16 +123,18 @@ function setCenter(id, left, top)
|
||||
|
||||
/**
|
||||
* goes to an element id position
|
||||
* @param {String} element element id to move to
|
||||
* @param {Number} offset offset from top, default is 0 (px)
|
||||
* @param {String} element element id to move to
|
||||
* @param {Number} [offset=0] offset from top, default is 0 (px)
|
||||
* @param {Number} [duration=500] animation time, default 500ms
|
||||
* @param {String} [base='body,html'] base element for offset scroll
|
||||
*/
|
||||
function goToPos(element, offset = 0)
|
||||
function goToPos(element, offset = 0, duration = 500, base = 'body,html') // eslint-disable-line no-unused-vars
|
||||
{
|
||||
try {
|
||||
if ($('#' + element).length) {
|
||||
$('body,html').animate({
|
||||
$(base).animate({
|
||||
scrollTop: $('#' + element).offset().top - offset
|
||||
}, 500);
|
||||
}, duration);
|
||||
}
|
||||
} catch (err) {
|
||||
errorCatch(err);
|
||||
@@ -154,8 +160,8 @@ function __(string)
|
||||
* simple sprintf formater for replace
|
||||
* usage: "{0} is cool, {1} is not".format("Alpha", "Beta");
|
||||
* First, checks if it isn't implemented yet.
|
||||
* @param {String} !String.prototype.format string with elements to be replaced
|
||||
* @return {String} Formated string
|
||||
* @param {String} String.prototype.format string with elements to be replaced
|
||||
* @return {String} Formated string
|
||||
*/
|
||||
if (!String.prototype.format) {
|
||||
String.prototype.format = function()
|
||||
@@ -171,16 +177,28 @@ if (!String.prototype.format) {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* round to digits (float)
|
||||
* @param {Float} Number.prototype.round Float type number to round
|
||||
* @param {Number} prec Precision to round to
|
||||
* @return {Float} Rounded number
|
||||
*/
|
||||
if (Number.prototype.round) {
|
||||
Number.prototype.round = function (prec) {
|
||||
return Math.round(this * Math.pow(10, prec)) / Math.pow(10, prec);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* formats flat number 123456 to 123,456
|
||||
* @param {Number} x number to be formated
|
||||
* @return {String} formatted with , in thousands
|
||||
*/
|
||||
function numberWithCommas(x)
|
||||
function numberWithCommas(x) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var parts = x.toString().split(".");
|
||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
return parts.join(".");
|
||||
var parts = x.toString().split('.');
|
||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||
return parts.join('.');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -188,7 +206,7 @@ function numberWithCommas(x)
|
||||
* @param {String} string any string
|
||||
* @return {String} string with <br>
|
||||
*/
|
||||
function convertLBtoBR(string)
|
||||
function convertLBtoBR(string) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
return string.replace(/(?:\r\n|\r|\n)/g, '<br>');
|
||||
}
|
||||
@@ -200,14 +218,14 @@ function convertLBtoBR(string)
|
||||
*/
|
||||
if (!String.prototype.escapeHTML) {
|
||||
String.prototype.escapeHTML = function() {
|
||||
return this.replace(/[&<>"'\/]/g, function (s) {
|
||||
return this.replace(/[&<>"'/]/g, function (s) {
|
||||
var entityMap = {
|
||||
"&": "&",
|
||||
"<": "<",
|
||||
">": ">",
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
"'": ''',
|
||||
"/": '/'
|
||||
'\'': ''',
|
||||
'/': '/'
|
||||
};
|
||||
|
||||
return entityMap[s];
|
||||
@@ -224,12 +242,12 @@ if (!String.prototype.unescapeHTML) {
|
||||
String.prototype.unescapeHTML = function() {
|
||||
return this.replace(/&[#\w]+;/g, function (s) {
|
||||
var entityMap = {
|
||||
"&": "&",
|
||||
"<": "<",
|
||||
">": ">",
|
||||
'&': '&',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
'"': '"',
|
||||
''': "'",
|
||||
'/': "/"
|
||||
''': '\'',
|
||||
'/': '/'
|
||||
};
|
||||
|
||||
return entityMap[s];
|
||||
@@ -241,7 +259,7 @@ if (!String.prototype.unescapeHTML) {
|
||||
* returns current timestamp (unix timestamp)
|
||||
* @return {Number} timestamp (in milliseconds)
|
||||
*/
|
||||
function getTimestamp()
|
||||
function getTimestamp() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var date = new Date();
|
||||
return date.getTime();
|
||||
@@ -264,7 +282,7 @@ function dec2hex(dec)
|
||||
* @param {Number} len length of unique id string
|
||||
* @return {String} random string in length of len
|
||||
*/
|
||||
function generateId(len)
|
||||
function generateId(len) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var arr = new Uint8Array((len || 40) / 2);
|
||||
(window.crypto || window.msCrypto).getRandomValues(arr);
|
||||
@@ -277,17 +295,53 @@ function generateId(len)
|
||||
* after many runs it will create duplicates
|
||||
* @return {String} not true random string
|
||||
*/
|
||||
function randomIdF()
|
||||
function randomIdF() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
return Math.random().toString(36).substring(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if name is a function
|
||||
* @param {string} name Name of function to check if exists
|
||||
* @return {Boolean} true/false
|
||||
*/
|
||||
function isFunction(name) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
if (typeof window[name] !== 'undefined' &&
|
||||
typeof window[name] === 'function') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* call a function by its string name
|
||||
* https://stackoverflow.com/a/359910
|
||||
* example: executeFunctionByName("My.Namespace.functionName", window, arguments);
|
||||
* @param {string} functionName The function name or namespace + function
|
||||
* @param {mixed} context context (window or first namespace)
|
||||
* hidden next are all the arguments
|
||||
* @return {mixed} Return values from functon
|
||||
*/
|
||||
function executeFunctionByName(functionName, context /*, args */) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var args = Array.prototype.slice.call(arguments, 2);
|
||||
var namespaces = functionName.split('.');
|
||||
var func = namespaces.pop();
|
||||
for (var i = 0; i < namespaces.length; i++) {
|
||||
context = context[namespaces[i]];
|
||||
}
|
||||
return context[func].apply(context, args);
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if a variable is an object
|
||||
* @param {Mixed} val possible object
|
||||
* @return {Boolean} true/false if it is an object or not
|
||||
*/
|
||||
function isObject(val) {
|
||||
function isObject(val)
|
||||
{
|
||||
if (val === null) {
|
||||
return false;
|
||||
}
|
||||
@@ -299,7 +353,8 @@ function isObject(val) {
|
||||
* @param {Object} object object to check
|
||||
* @return {Number} number of entry
|
||||
*/
|
||||
function getObjectCount(object) {
|
||||
function getObjectCount(object)
|
||||
{
|
||||
return Object.keys(object).length;
|
||||
}
|
||||
|
||||
@@ -311,7 +366,7 @@ function getObjectCount(object) {
|
||||
*/
|
||||
function keyInObject(key, object)
|
||||
{
|
||||
return (Object.prototype.hasOwnProperty.call(object, key)) ? true : false;
|
||||
return Object.prototype.hasOwnProperty.call(object, key) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -320,7 +375,7 @@ function keyInObject(key, object)
|
||||
* @param {Mixed} value any value (String, Number, etc)
|
||||
* @return {String} the key found for the first matching value
|
||||
*/
|
||||
function getKeyByValue(object, value)
|
||||
function getKeyByValue(object, value) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
return Object.keys(object).find(key => object[key] === value);
|
||||
// return Object.keys(object).find(function (key) {
|
||||
@@ -334,9 +389,9 @@ function getKeyByValue(object, value)
|
||||
* @param {Mixed} value any value (String, Number, etc)
|
||||
* @return {Boolean} true on value found, false on not found
|
||||
*/
|
||||
function valueInObject(object, value)
|
||||
function valueInObject(object, value) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
return (Object.keys(object).find(key => object[key] === value)) ? true : false;
|
||||
return Object.keys(object).find(key => object[key] === value) ? true : false;
|
||||
// return Object.keys(object).find(function (key) {
|
||||
// return object[key] === value;
|
||||
// }) ? true : false;
|
||||
@@ -352,7 +407,7 @@ function valueInObject(object, value)
|
||||
function deepCopyFunction(inObject)
|
||||
{
|
||||
var outObject, value, key;
|
||||
if (typeof inObject !== "object" || inObject === null) {
|
||||
if (typeof inObject !== 'object' || inObject === null) {
|
||||
return inObject; // Return the value if inObject is not an object
|
||||
}
|
||||
// Create an array or object to hold the values
|
||||
@@ -383,14 +438,58 @@ function exists(id)
|
||||
* @param {Number} bytes bytes in int
|
||||
* @return {String} string in GB/MB/KB
|
||||
*/
|
||||
function formatBytes(bytes)
|
||||
function formatBytes(bytes) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var i = -1;
|
||||
do {
|
||||
bytes = bytes / 1024;
|
||||
i++;
|
||||
} while (bytes > 99);
|
||||
return parseFloat(Math.round(bytes * Math.pow(10, 2)) / Math.pow(10, 2)) + ['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i];
|
||||
return parseFloat(Math.round(bytes * Math.pow(10, 2)) / Math.pow(10, 2)) +
|
||||
['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i];
|
||||
}
|
||||
|
||||
/**
|
||||
* like formatBytes, but returns bytes for <1KB and not 0.n KB
|
||||
* @param {Number} bytes bytes in int
|
||||
* @return {String} string in GB/MB/KB
|
||||
*/
|
||||
function formatBytesLong(bytes) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var i = Math.floor(Math.log(bytes) / Math.log(1024));
|
||||
var sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
||||
return (bytes / Math.pow(1024, i)).toFixed(2) * 1 + ' ' + sizes[i];
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a string with B/K/M/etc into a byte number
|
||||
* @param {String|Number} bytes Any string with B/K/M/etc
|
||||
* @return {String|Number} A byte number, or original string as is
|
||||
*/
|
||||
function stringByteFormat(bytes) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// if anything not string return
|
||||
if (!(typeof bytes === 'string' || bytes instanceof String)) {
|
||||
return bytes;
|
||||
}
|
||||
// for pow exponent list
|
||||
let valid_units = 'bkmgtpezy';
|
||||
// valid string that can be converted
|
||||
let regex = /([\d.,]*)\s?(eb|pb|tb|gb|mb|kb|e|p|t|g|m|k|b)$/i;
|
||||
let matches = bytes.match(regex);
|
||||
// if nothing found, return original input
|
||||
if (matches !== null) {
|
||||
// remove all non valid entries outside numbers and .
|
||||
// convert to float number
|
||||
let m1 = parseFloat(matches[1].replace(/[^0-9.]/,''));
|
||||
// only get the FIRST letter from the size, convert it to lower case
|
||||
let m2 = matches[2].replace(/[^bkmgtpezy]/i, '').charAt(0).toLowerCase();
|
||||
if (m2) {
|
||||
// use the position in the valid unit list to do the math conversion
|
||||
bytes = m1 * Math.pow(1024, valid_units.indexOf(m2));
|
||||
}
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -442,7 +541,7 @@ function errorCatch(err)
|
||||
* default empty. for console.log
|
||||
* @param {Boolean} [overlay=true] override the auto hide/show over the overlay div block
|
||||
*/
|
||||
function actionIndicator(loc, overlay = true)
|
||||
function actionIndicator(loc, overlay = true) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
if ($('#indicator').is(':visible')) {
|
||||
actionIndicatorHide(loc, overlay);
|
||||
@@ -519,7 +618,7 @@ function overlayBoxHide()
|
||||
/**
|
||||
* position the overlay block box and shows it
|
||||
*/
|
||||
function setOverlayBox()
|
||||
function setOverlayBox() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
if (!$('#overlayBox').is(':visible')) {
|
||||
$('#overlayBox').show();
|
||||
@@ -529,7 +628,7 @@ function setOverlayBox()
|
||||
/**
|
||||
* opposite of set, always hides overlay box
|
||||
*/
|
||||
function hideOverlayBox()
|
||||
function hideOverlayBox() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
if ($('#overlayBox').is(':visible')) {
|
||||
$('#overlayBox').hide();
|
||||
@@ -539,7 +638,7 @@ function hideOverlayBox()
|
||||
/**
|
||||
* the abort call, clears the action box and hides it and the overlay box
|
||||
*/
|
||||
function ClearCall()
|
||||
function ClearCall() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
$('#actionBox').html('');
|
||||
$('#actionBox').hide();
|
||||
@@ -560,7 +659,7 @@ function ClearCall()
|
||||
* - indicator is page centered
|
||||
* @param {String} loc ID string, only used for console log
|
||||
*/
|
||||
function showActionIndicator(loc)
|
||||
function showActionIndicator(loc) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// console.log('Indicator: SHOW [%s]', loc);
|
||||
// check if indicator element exists
|
||||
@@ -570,7 +669,9 @@ function showActionIndicator(loc)
|
||||
el.id = 'indicator';
|
||||
$('body').append(el);
|
||||
} else if (!$('#indicator').hasClass('progress')) {
|
||||
$('#indicator').addClass('progress');
|
||||
// if I add a class it will not be hidden anymore
|
||||
// hide it
|
||||
$('#indicator').addClass('progress').hide();
|
||||
}
|
||||
// indicator not visible
|
||||
if (!$('#indicator').is(':visible')) {
|
||||
@@ -591,12 +692,12 @@ function showActionIndicator(loc)
|
||||
|
||||
/**
|
||||
* hide action indicator, if it is visiable
|
||||
* If the global variable GL_OB_S is > 10 then
|
||||
* If the global variable GL_OB_S is > GL_OB_BASE then
|
||||
* the overlayBox is not hidden but the zIndex
|
||||
* is set to this value
|
||||
* @param {String} loc ID string, only used for console log
|
||||
*/
|
||||
function hideActionIndicator(loc)
|
||||
function hideActionIndicator(loc) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// console.log('Indicator: HIDE [%s]', loc);
|
||||
// check if indicator is visible
|
||||
@@ -636,7 +737,7 @@ function checkOverlayExists()
|
||||
* if visible, add +1 to the GL_OB_S variable and
|
||||
* up zIndex by this value
|
||||
*/
|
||||
function showOverlayBoxLayers(el_id)
|
||||
function showOverlayBoxLayers(el_id) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// console.log('SHOW overlaybox: %s', GL_OB_S);
|
||||
// if overlay box is not visible show and set zIndex to 0
|
||||
@@ -693,7 +794,7 @@ function hideOverlayBoxLayers(el_id)
|
||||
/**
|
||||
* only for single action box
|
||||
*/
|
||||
function clearCallActionBox()
|
||||
function clearCallActionBox() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
$('#actionBox').html('');
|
||||
$('#actionBox').hide();
|
||||
@@ -735,7 +836,8 @@ function ael(base, attach, id = '')
|
||||
if (id) {
|
||||
// base id match already
|
||||
if (base.id == id) {
|
||||
base.sub.push(Object.assign({}, attach));
|
||||
// base.sub.push(Object.assign({}, attach));
|
||||
base.sub.push(deepCopyFunction(attach));
|
||||
} else {
|
||||
// sub check
|
||||
if (isObject(base.sub) && base.sub.length > 0) {
|
||||
@@ -746,7 +848,8 @@ function ael(base, attach, id = '')
|
||||
}
|
||||
}
|
||||
} else {
|
||||
base.sub.push(Object.assign({}, attach));
|
||||
// base.sub.push(Object.assign({}, attach));
|
||||
base.sub.push(deepCopyFunction(attach));
|
||||
}
|
||||
return base;
|
||||
}
|
||||
@@ -761,7 +864,8 @@ function ael(base, attach, id = '')
|
||||
function aelx(base, ...attach)
|
||||
{
|
||||
for (var i = 0; i < attach.length; i ++) {
|
||||
base.sub.push(Object.assign({}, attach[i]));
|
||||
// base.sub.push(Object.assign({}, attach[i]));
|
||||
base.sub.push(deepCopyFunction(attach[i]));
|
||||
}
|
||||
return base;
|
||||
}
|
||||
@@ -773,10 +877,11 @@ function aelx(base, ...attach)
|
||||
* @param {Array} attach array of objects to attach
|
||||
* @return {Object} "none", technically there is no return needed, global attach
|
||||
*/
|
||||
function aelxar(base, attach)
|
||||
function aelxar(base, attach) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
for (var i = 0; i < attach.length; i ++) {
|
||||
base.sub.push(Object.assign({}, attach[i]));
|
||||
// base.sub.push(Object.assign({}, attach[i]));
|
||||
base.sub.push(deepCopyFunction(attach[i]));
|
||||
}
|
||||
return base;
|
||||
}
|
||||
@@ -786,7 +891,7 @@ function aelxar(base, attach)
|
||||
* @param {Object} base cel created element
|
||||
* @return {Object} returns reset base element
|
||||
*/
|
||||
function rel(base)
|
||||
function rel(base) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
base.sub = [];
|
||||
return base;
|
||||
@@ -830,7 +935,7 @@ function acssel(_element, css)
|
||||
* @param {String} acss style to add (name)
|
||||
* @return {Object} returns full element
|
||||
*/
|
||||
function scssel(_element, rcss, acss)
|
||||
function scssel(_element, rcss, acss) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
rcssel(_element, rcss);
|
||||
acssel(_element, acss);
|
||||
@@ -900,6 +1005,22 @@ function phfo(tree)
|
||||
// combine to string
|
||||
return content.join('');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create HTML elements from array list
|
||||
* as a flat element without master object file
|
||||
* Is like tree.sub call
|
||||
* @param {Array} list Array of cel created objects
|
||||
* @return {String} HTML String
|
||||
*/
|
||||
function phfa(list) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var content = [];
|
||||
for (var i = 0; i < list.length; i ++) {
|
||||
content.push(phfo(list[i]));
|
||||
}
|
||||
return content.join('');
|
||||
}
|
||||
// *** DOM MANAGEMENT FUNCTIONS
|
||||
|
||||
// BLOCK: html wrappers for quickly creating html data blocks
|
||||
@@ -918,7 +1039,7 @@ function phfo(tree)
|
||||
* 'values' all others are ignored
|
||||
* @return {String} html with build options block
|
||||
*/
|
||||
function html_options(name, data, selected = '', options_only = false, return_string = false, sort = '')
|
||||
function html_options(name, data, selected = '', options_only = false, return_string = false, sort = '') // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// wrapper to new call
|
||||
return html_options_block(name, data, selected, false, options_only, return_string, sort);
|
||||
@@ -940,9 +1061,10 @@ function html_options(name, data, selected = '', options_only = false, return_st
|
||||
* @param {Boolean} [return_string=false] return as string and not as element
|
||||
* @param {String} [sort=''] if empty as is, else allowed 'keys',
|
||||
* 'values' all others are ignored
|
||||
* @param {String} [onchange=''] onchange trigger call, default unset
|
||||
* @return {String} html with build options block
|
||||
*/
|
||||
function html_options_block(name, data, selected = '', multiple = 0, options_only = false, return_string = false, sort = '')
|
||||
function html_options_block(name, data, selected = '', multiple = 0, options_only = false, return_string = false, sort = '', onchange = '')
|
||||
{
|
||||
var content = [];
|
||||
var element_select;
|
||||
@@ -950,13 +1072,17 @@ function html_options_block(name, data, selected = '', multiple = 0, options_onl
|
||||
var element_option;
|
||||
var data_list = []; // for sorted output
|
||||
var value;
|
||||
var option;
|
||||
var options = {};
|
||||
// var option;
|
||||
if (multiple > 0) {
|
||||
select_options.multiple = '';
|
||||
if (multiple > 1) {
|
||||
select_options.size = multiple;
|
||||
}
|
||||
}
|
||||
if (onchange) {
|
||||
select_options.OnChange = onchange;
|
||||
}
|
||||
// set outside select, gets stripped on return if options only is true
|
||||
element_select = cel('select', name, '', [], select_options);
|
||||
// console.log('Call for %s, options: %s', name, options_only);
|
||||
@@ -1019,7 +1145,7 @@ function html_options_block(name, data, selected = '', multiple = 0, options_onl
|
||||
* @param {String} [sort=''] if empty as is, else allowed 'keys', 'values'
|
||||
* all others are ignored
|
||||
*/
|
||||
function html_options_refill(name, data, sort = '')
|
||||
function html_options_refill(name, data, sort = '') // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var element_option;
|
||||
var option_selected;
|
||||
@@ -1047,6 +1173,9 @@ function html_options_refill(name, data, sort = '')
|
||||
element_option.label = value;
|
||||
element_option.value = key;
|
||||
element_option.innerHTML = value;
|
||||
if (key == option_selected) {
|
||||
element_option.selected = true;
|
||||
}
|
||||
document.getElementById(name).appendChild(element_option);
|
||||
}
|
||||
}
|
||||
@@ -1063,21 +1192,26 @@ function html_options_refill(name, data, sort = '')
|
||||
* or empty for none
|
||||
* @return {Object|String} parameter entry list
|
||||
*/
|
||||
function parseQueryString(query = '', return_key = '') {
|
||||
function parseQueryString(query = '', return_key = '') // eslint-disable-line no-unused-vars
|
||||
{
|
||||
if (!query) {
|
||||
query = window.location.search.substring(1);
|
||||
}
|
||||
var vars = query.split("&");
|
||||
var vars = query.split('&');
|
||||
var query_string = {};
|
||||
for (var i = 0; i < vars.length; i++) {
|
||||
var pair = vars[i].split("=");
|
||||
var pair = vars[i].split('=');
|
||||
var key = decodeURIComponent(pair[0]);
|
||||
var value = decodeURIComponent(pair[1]);
|
||||
// skip over run if there is nothing
|
||||
if (!key || value === 'undefined') {
|
||||
continue;
|
||||
}
|
||||
// If first entry with this name
|
||||
if (typeof query_string[key] === "undefined") {
|
||||
if (typeof query_string[key] === 'undefined') {
|
||||
query_string[key] = decodeURIComponent(value);
|
||||
// If second entry with this name
|
||||
} else if (typeof query_string[key] === "string") {
|
||||
} else if (typeof query_string[key] === 'string') {
|
||||
var arr = [query_string[key], decodeURIComponent(value)];
|
||||
query_string[key] = arr;
|
||||
// If third or later entry with this name
|
||||
@@ -1097,26 +1231,59 @@ function parseQueryString(query = '', return_key = '') {
|
||||
}
|
||||
|
||||
/**
|
||||
* searchs the current url for a parameter
|
||||
* @param {String} key uid key to get data for
|
||||
* @return {String} value for the key or '' for not found
|
||||
* searches query parameters for entry and returns data either as string or array
|
||||
* if no search is given the whole parameters are returned as an object
|
||||
* if a parameter is set several times it will be returned as an array
|
||||
* if search parameter set and nothing found and empty string is returned
|
||||
* if no parametes exist and no serach is set and empty object is returned
|
||||
* @param {String} [search=''] if set searches for this entry, if empty
|
||||
* all parameters are returned
|
||||
* @param {String} [query=''] different query string to parse, if not
|
||||
* set (default) the current window href is used
|
||||
* @param {Bool} [single=false] if set to true then only the first found
|
||||
* will be returned
|
||||
* @return {Object|Array|String} if search is empty, object, if search is set
|
||||
* and only one entry, then string, else array
|
||||
* unless single is true
|
||||
*/
|
||||
function getQueryStringParam(key)
|
||||
function getQueryStringParam(search = '', query = '', single = false) // eslint-disable-line no-unused-vars
|
||||
{
|
||||
var url = new URL(window.location.href);
|
||||
var param = url.searchParams.get(key);
|
||||
if (param) {
|
||||
return param;
|
||||
} else {
|
||||
return '';
|
||||
if (!query) {
|
||||
query = window.location.href;
|
||||
}
|
||||
const url = new URL(query);
|
||||
let param = '';
|
||||
if (search) {
|
||||
let _params = url.searchParams.getAll(search);
|
||||
if (_params.length == 1 || single === true) {
|
||||
param = _params[0];
|
||||
} else if (_params.length > 1) {
|
||||
param = _params;
|
||||
}
|
||||
} else {
|
||||
// will be object, so declare it one
|
||||
param = {};
|
||||
// loop over paramenters
|
||||
for (const [key] of url.searchParams.entries()) {
|
||||
// check if not yet set
|
||||
if (typeof param[key] === 'undefined') {
|
||||
// get the parameters multiple
|
||||
let _params = url.searchParams.getAll(key);
|
||||
// if 1 set as string, else attach array as is
|
||||
param[key] = _params.length < 2 || single === true ?
|
||||
_params[0] :
|
||||
_params;
|
||||
}
|
||||
}
|
||||
}
|
||||
return param;
|
||||
}
|
||||
|
||||
// *** MASTER logout call
|
||||
/**
|
||||
* submits basic data for form logout
|
||||
*/
|
||||
function loginLogout()
|
||||
function loginLogout() // eslint-disable-line no-unused-vars
|
||||
{
|
||||
const form = document.createElement('form');
|
||||
form.method = 'post';
|
||||
@@ -1136,7 +1303,7 @@ function loginLogout()
|
||||
* if not set mainHeader is assumed
|
||||
* this is the target div for the "loginRow"
|
||||
*/
|
||||
function createLoginRow(login_string, header_id = 'mainHeader')
|
||||
function createLoginRow(login_string, header_id = 'mainHeader') // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// if header does not exist, we do nothing
|
||||
if (exists(header_id)) {
|
||||
@@ -1170,7 +1337,8 @@ function createLoginRow(login_string, header_id = 'mainHeader')
|
||||
* if not set mainHeader is assumed
|
||||
* this is the target div for the "menuRow"
|
||||
*/
|
||||
function createNavMenu(nav_menu, header_id = 'mainHeader') {
|
||||
function createNavMenu(nav_menu, header_id = 'mainHeader') // eslint-disable-line no-unused-vars
|
||||
{
|
||||
// must be an object
|
||||
if (isObject(nav_menu) && getObjectCount(nav_menu) > 1) {
|
||||
// do we have more than one entry, if not, do not show (single page)
|
||||
|
||||
@@ -1 +1 @@
|
||||
edit.pt.js
|
||||
edit.jq.js
|
||||
0
www/layout/admin/javascript/fineuploader/s3/placeholders/not_available-generic.png
Executable file → Normal file
0
www/layout/admin/javascript/fineuploader/s3/placeholders/not_available-generic.png
Executable file → Normal file
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user