Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9d5400498 | ||
|
|
b1be681afb | ||
|
|
8ef309d479 | ||
|
|
6e59b63791 | ||
|
|
9c7b3cea83 | ||
|
|
26af6a07f4 | ||
|
|
b7c6d4b478 | ||
|
|
9936fc04da | ||
|
|
1e0dfa2106 | ||
|
|
3af6f6a8f0 | ||
|
|
1e793c0d16 | ||
|
|
5be34453ce | ||
|
|
7773b78e17 | ||
|
|
2a3798c8c2 | ||
|
|
bc8303fe5f | ||
|
|
ba89b188d9 | ||
|
|
d15618cde4 | ||
|
|
0fd89727e9 | ||
|
|
a8e75d158b | ||
|
|
4b3fbaa309 |
@@ -1,13 +1,15 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
base_folder='/var/www/html/developers/clemens/core_data/php_libraries/trunk/www/';
|
BASE_FOLDER=$(dirname $(readlink -f $0))"/";
|
||||||
|
# Assume script is in 4dev/bin
|
||||||
|
base_folder="${BASE_FOLDER}../../www/";
|
||||||
|
|
||||||
# locale gettext po to mo translator master
|
# locale gettext po to mo translator master
|
||||||
for file in $(ls -1 ${base_folder}../4dev/locale/*.po); do
|
for file in $(ls -1 ${base_folder}../4dev/locale/*.po); do
|
||||||
file=$(basename $file .po);
|
file=$(basename $file .po);
|
||||||
echo "Translate language ${file}";
|
|
||||||
locale=$(echo "${file}" | cut -d "-" -f 1);
|
locale=$(echo "${file}" | cut -d "-" -f 1);
|
||||||
domain=$(echo "${file}" | cut -d "-" -f 2);
|
domain=$(echo "${file}" | cut -d "-" -f 2);
|
||||||
|
echo "- Translate language file '${file}' for locale '${locale}' and domain '${domain}':";
|
||||||
if [ ! -d "${base_folder}/includes/locale/${locale}/LC_MESSAGES/" ]; then
|
if [ ! -d "${base_folder}/includes/locale/${locale}/LC_MESSAGES/" ]; then
|
||||||
mkdir -p "${base_folder}/includes/locale/${locale}/LC_MESSAGES/";
|
mkdir -p "${base_folder}/includes/locale/${locale}/LC_MESSAGES/";
|
||||||
fi;
|
fi;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ if [ ! -z "${1}" ]; then
|
|||||||
"7.4") php_bin="/usr/bin/php7.4 "; ;;
|
"7.4") php_bin="/usr/bin/php7.4 "; ;;
|
||||||
"8.0") php_bin="/usr/bin/php8.0 "; ;;
|
"8.0") php_bin="/usr/bin/php8.0 "; ;;
|
||||||
"8.1") php_bin="/usr/bin/php8.1 "; ;;
|
"8.1") php_bin="/usr/bin/php8.1 "; ;;
|
||||||
|
"8.2") php_bin="/usr/bin/php8.2 "; ;;
|
||||||
*) echo "Not support PHP: ${1}"; exit; ;;
|
*) echo "Not support PHP: ${1}"; exit; ;;
|
||||||
esac;
|
esac;
|
||||||
fi;
|
fi;
|
||||||
@@ -25,6 +26,7 @@ if [ ! -z "${2}" ] && [ -z "${php_bin}" ]; then
|
|||||||
"7.4") php_bin="/usr/bin/php7.4 "; ;;
|
"7.4") php_bin="/usr/bin/php7.4 "; ;;
|
||||||
"8.0") php_bin="/usr/bin/php8.0 "; ;;
|
"8.0") php_bin="/usr/bin/php8.0 "; ;;
|
||||||
"8.1") php_bin="/usr/bin/php8.1 "; ;;
|
"8.1") php_bin="/usr/bin/php8.1 "; ;;
|
||||||
|
"8.2") php_bin="/usr/bin/php8.2 "; ;;
|
||||||
*) echo "Not support PHP: ${1}"; exit; ;;
|
*) echo "Not support PHP: ${1}"; exit; ;;
|
||||||
esac;
|
esac;
|
||||||
fi;
|
fi;
|
||||||
|
|||||||
@@ -3,26 +3,26 @@
|
|||||||
CREATE OR REPLACE FUNCTION set_edit_access_uid() RETURNS TRIGGER AS
|
CREATE OR REPLACE FUNCTION set_edit_access_uid() RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
DECLARE
|
DECLARE
|
||||||
myrec RECORD;
|
myrec RECORD;
|
||||||
v_uid VARCHAR;
|
v_uid VARCHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- skip if NEW.name is not set
|
-- skip if NEW.name is not set
|
||||||
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
||||||
-- use NEW.name as base, remove all spaces
|
-- use NEW.name as base, remove all spaces
|
||||||
-- name data is already unique, so we do not need to worry about this here
|
-- name data is already unique, so we do not need to worry about this here
|
||||||
v_uid := REPLACE(NEW.name, ' ', '');
|
v_uid := REPLACE(NEW.name, ' ', '');
|
||||||
IF TG_OP = 'INSERT' THEN
|
IF TG_OP = 'INSERT' THEN
|
||||||
-- always set
|
-- always set
|
||||||
NEW.uid := v_uid;
|
NEW.uid := v_uid;
|
||||||
ELSIF TG_OP = 'UPDATE' THEN
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
-- check if not set, then set
|
-- check if not set, then set
|
||||||
SELECT INTO myrec t.* FROM edit_access t WHERE edit_access_id = NEW.edit_access_id;
|
SELECT INTO myrec t.* FROM edit_access t WHERE edit_access_id = NEW.edit_access_id;
|
||||||
IF FOUND THEN
|
IF FOUND THEN
|
||||||
NEW.uid := v_uid;
|
NEW.uid := v_uid;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -3,26 +3,26 @@
|
|||||||
CREATE OR REPLACE FUNCTION set_edit_group_uid() RETURNS TRIGGER AS
|
CREATE OR REPLACE FUNCTION set_edit_group_uid() RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
DECLARE
|
DECLARE
|
||||||
myrec RECORD;
|
myrec RECORD;
|
||||||
v_uid VARCHAR;
|
v_uid VARCHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
-- skip if NEW.name is not set
|
-- skip if NEW.name is not set
|
||||||
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
||||||
-- use NEW.name as base, remove all spaces
|
-- use NEW.name as base, remove all spaces
|
||||||
-- name data is already unique, so we do not need to worry about this here
|
-- name data is already unique, so we do not need to worry about this here
|
||||||
v_uid := REPLACE(NEW.name, ' ', '');
|
v_uid := REPLACE(NEW.name, ' ', '');
|
||||||
IF TG_OP = 'INSERT' THEN
|
IF TG_OP = 'INSERT' THEN
|
||||||
-- always set
|
-- always set
|
||||||
NEW.uid := v_uid;
|
NEW.uid := v_uid;
|
||||||
ELSIF TG_OP = 'UPDATE' THEN
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
-- check if not set, then set
|
-- check if not set, then set
|
||||||
SELECT INTO myrec t.* FROM edit_group t WHERE edit_group_id = NEW.edit_group_id;
|
SELECT INTO myrec t.* FROM edit_group t WHERE edit_group_id = NEW.edit_group_id;
|
||||||
IF FOUND THEN
|
IF FOUND THEN
|
||||||
NEW.uid := v_uid;
|
NEW.uid := v_uid;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -9,142 +9,142 @@ CREATE OR REPLACE FUNCTION edit_log_insert_trigger ()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
DECLARE
|
DECLARE
|
||||||
start_date DATE := '2010-01-01';
|
start_date DATE := '2010-01-01';
|
||||||
end_date DATE;
|
end_date DATE;
|
||||||
timeformat TEXT := 'YYYY';
|
timeformat TEXT := 'YYYY';
|
||||||
selector TEXT := 'year';
|
selector TEXT := 'year';
|
||||||
base_table TEXT := 'edit_log';
|
base_table TEXT := 'edit_log';
|
||||||
_interval INTERVAL := '1 ' || selector;
|
_interval INTERVAL := '1 ' || selector;
|
||||||
_interval_next INTERVAL := '2 ' || selector;
|
_interval_next INTERVAL := '2 ' || selector;
|
||||||
table_name TEXT;
|
table_name TEXT;
|
||||||
-- compare date column
|
-- compare date column
|
||||||
compare_date DATE := NEW.event_date;
|
compare_date DATE := NEW.event_date;
|
||||||
compare_date_name TEXT := 'event_date';
|
compare_date_name TEXT := 'event_date';
|
||||||
-- the create commands
|
-- the create commands
|
||||||
command_create_table TEXT := 'CREATE TABLE IF NOT EXISTS {TABLE_NAME} (CHECK({COMPARE_DATE_NAME} >= {START_DATE} AND {COMPARE_DATE_NAME} < {END_DATE})) INHERITS ({BASE_NAME})';
|
command_create_table TEXT := 'CREATE TABLE IF NOT EXISTS {TABLE_NAME} (CHECK({COMPARE_DATE_NAME} >= {START_DATE} AND {COMPARE_DATE_NAME} < {END_DATE})) INHERITS ({BASE_NAME})';
|
||||||
command_create_primary_key TEXT := 'ALTER TABLE {TABLE_NAME} ADD PRIMARY KEY ({BASE_TABLE}_id)';
|
command_create_primary_key TEXT := 'ALTER TABLE {TABLE_NAME} ADD PRIMARY KEY ({BASE_TABLE}_id)';
|
||||||
command_create_foreign_key_1 TEXT := 'ALTER TABLE {TABLE_NAME} ADD CONSTRAINT {TABLE_NAME}_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL';
|
command_create_foreign_key_1 TEXT := 'ALTER TABLE {TABLE_NAME} ADD CONSTRAINT {TABLE_NAME}_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL';
|
||||||
command_create_trigger_1 TEXT = 'CREATE TRIGGER trg_{TABLE_NAME} BEFORE INSERT OR UPDATE ON {TABLE_NAME} FOR EACH ROW EXECUTE PROCEDURE set_edit_generic()';
|
command_create_trigger_1 TEXT = 'CREATE TRIGGER trg_{TABLE_NAME} BEFORE INSERT OR UPDATE ON {TABLE_NAME} FOR EACH ROW EXECUTE PROCEDURE set_edit_generic()';
|
||||||
BEGIN
|
BEGIN
|
||||||
-- we are in valid start time area
|
-- we are in valid start time area
|
||||||
IF (NEW.event_date >= start_date) THEN
|
IF (NEW.event_date >= start_date) THEN
|
||||||
-- current table name
|
-- current table name
|
||||||
table_name := base_table || '_' || to_char(NEW.event_date, timeformat);
|
table_name := base_table || '_' || to_char(NEW.event_date, timeformat);
|
||||||
BEGIN
|
BEGIN
|
||||||
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
||||||
-- if insert failed because of missing table, create new below
|
-- if insert failed because of missing table, create new below
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN undefined_table THEN
|
WHEN undefined_table THEN
|
||||||
-- another block, so in case the creation fails here too
|
-- another block, so in case the creation fails here too
|
||||||
BEGIN
|
BEGIN
|
||||||
-- create new table here + all indexes
|
-- create new table here + all indexes
|
||||||
start_date := date_trunc(selector, NEW.event_date);
|
start_date := date_trunc(selector, NEW.event_date);
|
||||||
end_date := date_trunc(selector, NEW.event_date + _interval);
|
end_date := date_trunc(selector, NEW.event_date + _interval);
|
||||||
-- creat table
|
-- creat table
|
||||||
EXECUTE format(REPLACE( -- end date
|
EXECUTE format(REPLACE( -- end date
|
||||||
REPLACE( -- start date
|
REPLACE( -- start date
|
||||||
REPLACE( -- compare date name
|
REPLACE( -- compare date name
|
||||||
REPLACE( -- base name (inherit)
|
REPLACE( -- base name (inherit)
|
||||||
REPLACE( -- table name
|
REPLACE( -- table name
|
||||||
command_create_table,
|
command_create_table,
|
||||||
'{TABLE_NAME}',
|
'{TABLE_NAME}',
|
||||||
table_name
|
table_name
|
||||||
),
|
),
|
||||||
'{BASE_NAME}',
|
'{BASE_NAME}',
|
||||||
base_table
|
base_table
|
||||||
),
|
),
|
||||||
'{COMPARE_DATE_NAME}',
|
'{COMPARE_DATE_NAME}',
|
||||||
compare_date_name
|
compare_date_name
|
||||||
),
|
),
|
||||||
'{START_DATE}',
|
'{START_DATE}',
|
||||||
quote_literal(start_date)
|
quote_literal(start_date)
|
||||||
),
|
),
|
||||||
'{END_DATE}',
|
'{END_DATE}',
|
||||||
quote_literal(end_date)
|
quote_literal(end_date)
|
||||||
));
|
));
|
||||||
-- create all indexes and triggers
|
-- create all indexes and triggers
|
||||||
EXECUTE format(REPLACE(
|
EXECUTE format(REPLACE(
|
||||||
REPLACE(
|
REPLACE(
|
||||||
command_create_primary_key,
|
command_create_primary_key,
|
||||||
'{TABLE_NAME}',
|
'{TABLE_NAME}',
|
||||||
table_name
|
table_name
|
||||||
),
|
),
|
||||||
'{BASE_TABLE}',
|
'{BASE_TABLE}',
|
||||||
base_table
|
base_table
|
||||||
));
|
));
|
||||||
-- FK constraints
|
-- FK constraints
|
||||||
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
||||||
-- generic trigger
|
-- generic trigger
|
||||||
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
||||||
|
|
||||||
-- insert try again
|
-- insert try again
|
||||||
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
||||||
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
||||||
END;
|
END;
|
||||||
-- other errors, insert into overlow
|
-- other errors, insert into overlow
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
||||||
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
||||||
END;
|
END;
|
||||||
-- main insert run done, check if we have to create next months table
|
-- main insert run done, check if we have to create next months table
|
||||||
BEGIN
|
BEGIN
|
||||||
-- check if next month table exists
|
-- check if next month table exists
|
||||||
table_name := base_table || '_' || to_char((SELECT NEW.event_date + _interval)::DATE, timeformat);
|
table_name := base_table || '_' || to_char((SELECT NEW.event_date + _interval)::DATE, timeformat);
|
||||||
-- RAISE NOTICE 'SEARCH NEXT: %', table_name;
|
-- RAISE NOTICE 'SEARCH NEXT: %', table_name;
|
||||||
IF (SELECT to_regclass(table_name)) IS NULL THEN
|
IF (SELECT to_regclass(table_name)) IS NULL THEN
|
||||||
-- move inner interval same
|
-- move inner interval same
|
||||||
start_date := date_trunc(selector, NEW.event_date + _interval);
|
start_date := date_trunc(selector, NEW.event_date + _interval);
|
||||||
end_date := date_trunc(selector, NEW.event_date + _interval_next);
|
end_date := date_trunc(selector, NEW.event_date + _interval_next);
|
||||||
-- RAISE NOTICE 'CREATE NEXT: %', table_name;
|
-- RAISE NOTICE 'CREATE NEXT: %', table_name;
|
||||||
-- create table
|
-- create table
|
||||||
EXECUTE format(REPLACE( -- end date
|
EXECUTE format(REPLACE( -- end date
|
||||||
REPLACE( -- start date
|
REPLACE( -- start date
|
||||||
REPLACE( -- compare date name
|
REPLACE( -- compare date name
|
||||||
REPLACE( -- base name (inherit)
|
REPLACE( -- base name (inherit)
|
||||||
REPLACE( -- table name
|
REPLACE( -- table name
|
||||||
command_create_table,
|
command_create_table,
|
||||||
'{TABLE_NAME}',
|
'{TABLE_NAME}',
|
||||||
table_name
|
table_name
|
||||||
),
|
),
|
||||||
'{BASE_NAME}',
|
'{BASE_NAME}',
|
||||||
base_table
|
base_table
|
||||||
),
|
),
|
||||||
'{COMPARE_DATE_NAME}',
|
'{COMPARE_DATE_NAME}',
|
||||||
compare_date_name
|
compare_date_name
|
||||||
),
|
),
|
||||||
'{START_DATE}',
|
'{START_DATE}',
|
||||||
quote_literal(start_date)
|
quote_literal(start_date)
|
||||||
),
|
),
|
||||||
'{END_DATE}',
|
'{END_DATE}',
|
||||||
quote_literal(end_date)
|
quote_literal(end_date)
|
||||||
));
|
));
|
||||||
-- create all indexes and triggers
|
-- create all indexes and triggers
|
||||||
EXECUTE format(REPLACE(
|
EXECUTE format(REPLACE(
|
||||||
REPLACE(
|
REPLACE(
|
||||||
command_create_primary_key,
|
command_create_primary_key,
|
||||||
'{TABLE_NAME}',
|
'{TABLE_NAME}',
|
||||||
table_name
|
table_name
|
||||||
),
|
),
|
||||||
'{BASE_TABLE}',
|
'{BASE_TABLE}',
|
||||||
base_table
|
base_table
|
||||||
));
|
));
|
||||||
-- FK constraints
|
-- FK constraints
|
||||||
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
||||||
-- generic trigger
|
-- generic trigger
|
||||||
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
||||||
END IF;
|
END IF;
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
WHEN OTHERS THEN
|
WHEN OTHERS THEN
|
||||||
RAISE NOTICE 'Failed to create next table: %', table_name;
|
RAISE NOTICE 'Failed to create next table: %', table_name;
|
||||||
END;
|
END;
|
||||||
ELSE
|
ELSE
|
||||||
-- if outside valid date, insert into overflow
|
-- if outside valid date, insert into overflow
|
||||||
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NULL;
|
RETURN NULL;
|
||||||
END
|
END
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -5,22 +5,22 @@ CREATE OR REPLACE FUNCTION set_login_user_id_set_date()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
BEGIN
|
BEGIN
|
||||||
-- if new is not null/empty
|
-- if new is not null/empty
|
||||||
-- and old one is null or old one different new one
|
-- and old one is null or old one different new one
|
||||||
-- set NOW()
|
-- set NOW()
|
||||||
-- if new one is NULL
|
-- if new one is NULL
|
||||||
-- set NULL
|
-- set NULL
|
||||||
IF
|
IF
|
||||||
NEW.login_user_id IS NOT NULL AND NEW.login_user_id <> '' AND
|
NEW.login_user_id IS NOT NULL AND NEW.login_user_id <> '' AND
|
||||||
(OLD.login_user_id IS NULL OR NEW.login_user_id <> OLD.login_user_id)
|
(OLD.login_user_id IS NULL OR NEW.login_user_id <> OLD.login_user_id)
|
||||||
THEN
|
THEN
|
||||||
NEW.login_user_id_set_date = NOW();
|
NEW.login_user_id_set_date = NOW();
|
||||||
NEW.login_user_id_last_revalidate = NOW();
|
NEW.login_user_id_last_revalidate = NOW();
|
||||||
ELSIF NEW.login_user_id IS NULL OR NEW.login_user_id = '' THEN
|
ELSIF NEW.login_user_id IS NULL OR NEW.login_user_id = '' THEN
|
||||||
NEW.login_user_id_set_date = NULL;
|
NEW.login_user_id_set_date = NULL;
|
||||||
NEW.login_user_id_last_revalidate = NULL;
|
NEW.login_user_id_last_revalidate = NULL;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ CREATE FUNCTION random_string(randomLength int)
|
|||||||
RETURNS text AS
|
RETURNS text AS
|
||||||
$$
|
$$
|
||||||
SELECT array_to_string(
|
SELECT array_to_string(
|
||||||
ARRAY(
|
ARRAY(
|
||||||
SELECT substring(
|
SELECT substring(
|
||||||
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
|
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
|
||||||
trunc(random() * 62)::int + 1,
|
trunc(random() * 62)::int + 1,
|
||||||
1
|
1
|
||||||
)
|
)
|
||||||
FROM generate_series(1, randomLength) AS gs(x)
|
FROM generate_series(1, randomLength) AS gs(x)
|
||||||
),
|
),
|
||||||
''
|
''
|
||||||
)
|
)
|
||||||
$$
|
$$
|
||||||
LANGUAGE SQL
|
LANGUAGE SQL
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ CREATE OR REPLACE FUNCTION set_date()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
BEGIN
|
BEGIN
|
||||||
IF TG_OP = 'INSERT' THEN
|
IF TG_OP = 'INSERT' THEN
|
||||||
NEW.date_created := 'now';
|
NEW.date_created := 'now';
|
||||||
ELSIF TG_OP = 'UPDATE' THEN
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
NEW.date_updated := 'now';
|
NEW.date_updated := 'now';
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ CREATE OR REPLACE FUNCTION set_edit_generic()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
DECLARE
|
DECLARE
|
||||||
random_length INT = 12; -- that should be long enough
|
random_length INT = 25; -- that should be long enough
|
||||||
BEGIN
|
BEGIN
|
||||||
IF TG_OP = 'INSERT' THEN
|
IF TG_OP = 'INSERT' THEN
|
||||||
NEW.date_created := 'now';
|
NEW.date_created := 'now';
|
||||||
NEW.cuid := random_string(random_length);
|
NEW.cuid := random_string(random_length);
|
||||||
ELSIF TG_OP = 'UPDATE' THEN
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
NEW.date_updated := 'now';
|
NEW.date_updated := 'now';
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -5,17 +5,17 @@ CREATE OR REPLACE FUNCTION set_generic()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
DECLARE
|
DECLARE
|
||||||
random_length INT = 32; -- long for massive data
|
random_length INT = 32; -- long for massive data
|
||||||
BEGIN
|
BEGIN
|
||||||
IF TG_OP = 'INSERT' THEN
|
IF TG_OP = 'INSERT' THEN
|
||||||
NEW.date_created := 'now';
|
NEW.date_created := 'now';
|
||||||
IF NEW.uid IS NULL THEN
|
IF NEW.uid IS NULL THEN
|
||||||
NEW.uid := random_string(random_length);
|
NEW.uid := random_string(random_length);
|
||||||
END IF;
|
END IF;
|
||||||
ELSIF TG_OP = 'UPDATE' THEN
|
ELSIF TG_OP = 'UPDATE' THEN
|
||||||
NEW.date_updated := 'now';
|
NEW.date_updated := 'now';
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ CREATE OR REPLACE FUNCTION set_uid()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
DECLARE
|
DECLARE
|
||||||
random_length INT = 32; -- that should be long enough
|
random_length INT = 32; -- that should be long enough
|
||||||
BEGIN
|
BEGIN
|
||||||
IF TG_OP = 'INSERT' THEN
|
IF TG_OP = 'INSERT' THEN
|
||||||
NEW.uid := random_string(random_length);
|
NEW.uid := random_string(random_length);
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -6,14 +6,14 @@
|
|||||||
-- RETURNS TRIGGER AS
|
-- RETURNS TRIGGER AS
|
||||||
-- $$
|
-- $$
|
||||||
-- BEGIN
|
-- BEGIN
|
||||||
-- IF TG_OP = 'INSERT' THEN
|
-- IF TG_OP = 'INSERT' THEN
|
||||||
-- NEW.date_created := clock_timestamp();
|
-- NEW.date_created := clock_timestamp();
|
||||||
-- NEW.user_created := current_user;
|
-- NEW.user_created := current_user;
|
||||||
-- ELSIF TG_OP = 'UPDATE' THEN
|
-- ELSIF TG_OP = 'UPDATE' THEN
|
||||||
-- NEW.date_updated := clock_timestamp();
|
-- NEW.date_updated := clock_timestamp();
|
||||||
-- NEW.user_updated := current_user;
|
-- NEW.user_updated := current_user;
|
||||||
-- END IF;
|
-- END IF;
|
||||||
-- RETURN NEW;
|
-- RETURN NEW;
|
||||||
-- END;
|
-- END;
|
||||||
-- $$
|
-- $$
|
||||||
-- LANGUAGE 'plpgsql';
|
-- LANGUAGE 'plpgsql';
|
||||||
|
|||||||
@@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_access;
|
-- DROP TABLE edit_access;
|
||||||
CREATE TABLE edit_access (
|
CREATE TABLE edit_access (
|
||||||
edit_access_id SERIAL PRIMARY KEY,
|
edit_access_id SERIAL PRIMARY KEY,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
protected SMALLINT DEFAULT 0,
|
protected SMALLINT DEFAULT 0,
|
||||||
deleted SMALLINT DEFAULT 0,
|
deleted SMALLINT DEFAULT 0,
|
||||||
uid VARCHAR,
|
uid VARCHAR,
|
||||||
name VARCHAR UNIQUE,
|
name VARCHAR UNIQUE,
|
||||||
description VARCHAR,
|
description VARCHAR,
|
||||||
color VARCHAR,
|
color VARCHAR,
|
||||||
additional_acl JSONB
|
additional_acl JSONB
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,12 +7,12 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_access_data;
|
-- DROP TABLE edit_access_data;
|
||||||
CREATE TABLE edit_access_data (
|
CREATE TABLE edit_access_data (
|
||||||
edit_access_data_id SERIAL PRIMARY KEY,
|
edit_access_data_id SERIAL PRIMARY KEY,
|
||||||
edit_access_id INT NOT NULL,
|
edit_access_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
value VARCHAR
|
value VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
-- create a unique index for each attached data block for each edit access can
|
-- create a unique index for each attached data block for each edit access can
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_access_right;
|
-- DROP TABLE edit_access_right;
|
||||||
CREATE TABLE edit_access_right (
|
CREATE TABLE edit_access_right (
|
||||||
edit_access_right_id SERIAL PRIMARY KEY,
|
edit_access_right_id SERIAL PRIMARY KEY,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
level SMALLINT,
|
level SMALLINT,
|
||||||
type VARCHAR,
|
type VARCHAR,
|
||||||
UNIQUE (level,type)
|
UNIQUE (level,type)
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_access_user;
|
-- DROP TABLE edit_access_user;
|
||||||
CREATE TABLE edit_access_user (
|
CREATE TABLE edit_access_user (
|
||||||
edit_access_user_id SERIAL PRIMARY KEY,
|
edit_access_user_id SERIAL PRIMARY KEY,
|
||||||
edit_access_id INT NOT NULL,
|
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,
|
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,
|
edit_user_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_access_right_id INT NOT NULL,
|
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,
|
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,
|
edit_default SMALLINT DEFAULT 0,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0
|
enabled SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_generic;
|
-- DROP TABLE edit_generic;
|
||||||
CREATE TABLE edit_generic (
|
CREATE TABLE edit_generic (
|
||||||
cuid VARCHAR,
|
cuid VARCHAR,
|
||||||
date_created TIMESTAMP WITHOUT TIME ZONE DEFAULT clock_timestamp(),
|
date_created TIMESTAMP WITHOUT TIME ZONE DEFAULT clock_timestamp(),
|
||||||
date_updated TIMESTAMP WITHOUT TIME ZONE
|
date_updated TIMESTAMP WITHOUT TIME ZONE
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_group;
|
-- DROP TABLE edit_group;
|
||||||
CREATE TABLE edit_group (
|
CREATE TABLE edit_group (
|
||||||
edit_group_id SERIAL PRIMARY KEY,
|
edit_group_id SERIAL PRIMARY KEY,
|
||||||
edit_scheme_id INT,
|
edit_scheme_id INT,
|
||||||
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_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,
|
||||||
edit_access_right_id INT NOT NULL,
|
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,
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
deleted SMALLINT DEFAULT 0,
|
deleted SMALLINT DEFAULT 0,
|
||||||
uid VARCHAR,
|
uid VARCHAR,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
additional_acl JSONB
|
additional_acl JSONB
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_language;
|
-- DROP TABLE edit_language;
|
||||||
CREATE TABLE edit_language (
|
CREATE TABLE edit_language (
|
||||||
edit_language_id SERIAL PRIMARY KEY,
|
edit_language_id SERIAL PRIMARY KEY,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
lang_default SMALLINT NOT NULL DEFAULT 0,
|
lang_default SMALLINT NOT NULL DEFAULT 0,
|
||||||
long_name VARCHAR,
|
long_name VARCHAR,
|
||||||
short_name VARCHAR, -- en_US, en or en_US@latin without encoding
|
short_name VARCHAR, -- en_US, en or en_US@latin without encoding
|
||||||
iso_name VARCHAR, -- should actually be encoding
|
iso_name VARCHAR, -- should actually be encoding
|
||||||
order_number INT
|
order_number INT
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,35 +7,35 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_log;
|
-- DROP TABLE edit_log;
|
||||||
CREATE TABLE edit_log (
|
CREATE TABLE edit_log (
|
||||||
edit_log_id SERIAL PRIMARY KEY,
|
edit_log_id SERIAL PRIMARY KEY,
|
||||||
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
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,
|
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
||||||
username VARCHAR,
|
username VARCHAR,
|
||||||
password VARCHAR,
|
password VARCHAR,
|
||||||
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||||
ip VARCHAR,
|
ip VARCHAR,
|
||||||
error TEXT,
|
error TEXT,
|
||||||
event TEXT,
|
event TEXT,
|
||||||
data_binary BYTEA,
|
data_binary BYTEA,
|
||||||
data TEXT,
|
data TEXT,
|
||||||
page VARCHAR,
|
page VARCHAR,
|
||||||
action VARCHAR,
|
action VARCHAR,
|
||||||
action_id VARCHAR,
|
action_id VARCHAR,
|
||||||
action_yes VARCHAR,
|
action_yes VARCHAR,
|
||||||
action_flag VARCHAR,
|
action_flag VARCHAR,
|
||||||
action_menu VARCHAR,
|
action_menu VARCHAR,
|
||||||
action_loaded VARCHAR,
|
action_loaded VARCHAR,
|
||||||
action_value VARCHAR,
|
action_value VARCHAR,
|
||||||
action_type VARCHAR,
|
action_type VARCHAR,
|
||||||
action_error VARCHAR,
|
action_error VARCHAR,
|
||||||
user_agent VARCHAR,
|
user_agent VARCHAR,
|
||||||
referer VARCHAR,
|
referer VARCHAR,
|
||||||
script_name VARCHAR,
|
script_name VARCHAR,
|
||||||
query_string VARCHAR,
|
query_string VARCHAR,
|
||||||
server_name VARCHAR,
|
server_name VARCHAR,
|
||||||
http_host VARCHAR,
|
http_host VARCHAR,
|
||||||
http_accept VARCHAR,
|
http_accept VARCHAR,
|
||||||
http_accept_charset VARCHAR,
|
http_accept_charset VARCHAR,
|
||||||
http_accept_encoding VARCHAR,
|
http_accept_encoding VARCHAR,
|
||||||
session_id VARCHAR
|
session_id VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_menu_group;
|
-- DROP TABLE edit_menu_group;
|
||||||
CREATE TABLE edit_menu_group (
|
CREATE TABLE edit_menu_group (
|
||||||
edit_menu_group_id SERIAL PRIMARY KEY,
|
edit_menu_group_id SERIAL PRIMARY KEY,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
flag VARCHAR,
|
flag VARCHAR,
|
||||||
order_number INT NOT NULL
|
order_number INT NOT NULL
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,16 +7,16 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_page;
|
-- DROP TABLE edit_page;
|
||||||
CREATE TABLE edit_page (
|
CREATE TABLE edit_page (
|
||||||
edit_page_id SERIAL PRIMARY KEY,
|
edit_page_id SERIAL PRIMARY KEY,
|
||||||
content_alias_edit_page_id INT, -- alias for page content, if the page content is defined on a different page, ege for ajax backend pages
|
content_alias_edit_page_id INT, -- alias for page content, if the page content is defined on a different page, ege for ajax backend pages
|
||||||
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
||||||
filename VARCHAR,
|
filename VARCHAR,
|
||||||
name VARCHAR UNIQUE,
|
name VARCHAR UNIQUE,
|
||||||
order_number INT NOT NULL,
|
order_number INT NOT NULL,
|
||||||
online SMALLINT NOT NULL DEFAULT 0,
|
online SMALLINT NOT NULL DEFAULT 0,
|
||||||
menu SMALLINT NOT NULL DEFAULT 0,
|
menu SMALLINT NOT NULL DEFAULT 0,
|
||||||
popup SMALLINT NOT NULL DEFAULT 0,
|
popup SMALLINT NOT NULL DEFAULT 0,
|
||||||
popup_x SMALLINT,
|
popup_x SMALLINT,
|
||||||
popup_y SMALLINT,
|
popup_y SMALLINT,
|
||||||
hostname VARCHAR
|
hostname VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,14 +7,14 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_page_access;
|
-- DROP TABLE edit_page_access;
|
||||||
CREATE TABLE edit_page_access (
|
CREATE TABLE edit_page_access (
|
||||||
edit_page_access_id SERIAL PRIMARY KEY,
|
edit_page_access_id SERIAL PRIMARY KEY,
|
||||||
edit_group_id INT NOT NULL,
|
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,
|
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,
|
edit_page_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_access_right_id INT NOT NULL,
|
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,
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0
|
enabled SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_page_content;
|
-- DROP TABLE edit_page_content;
|
||||||
CREATE TABLE edit_page_content (
|
CREATE TABLE edit_page_content (
|
||||||
edit_page_content_id SERIAL PRIMARY KEY,
|
edit_page_content_id SERIAL PRIMARY KEY,
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_access_right_id INT NOT NULL,
|
edit_access_right_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
uid VARCHAR UNIQUE,
|
uid VARCHAR UNIQUE,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
order_number INT NOT NULL,
|
order_number INT NOT NULL,
|
||||||
online SMALLINT NOT NULL DEFAULT 0
|
online SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_page_menu_group;
|
-- DROP TABLE edit_page_menu_group;
|
||||||
CREATE TABLE edit_page_menu_group (
|
CREATE TABLE edit_page_menu_group (
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_menu_group_id INT NOT NULL,
|
edit_menu_group_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_menu_group_id) REFERENCES edit_menu_group (edit_menu_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (edit_menu_group_id) REFERENCES edit_menu_group (edit_menu_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_page_visible_group;
|
-- DROP TABLE edit_page_visible_group;
|
||||||
CREATE TABLE edit_page_visible_group (
|
CREATE TABLE edit_page_visible_group (
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_visible_group_id INT NOT NULL,
|
edit_visible_group_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_visible_group_id) REFERENCES edit_visible_group (edit_visible_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
FOREIGN KEY (edit_visible_group_id) REFERENCES edit_visible_group (edit_visible_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -7,11 +7,11 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_query_string;
|
-- DROP TABLE edit_query_string;
|
||||||
CREATE TABLE edit_query_string (
|
CREATE TABLE edit_query_string (
|
||||||
edit_query_string_id SERIAL PRIMARY KEY,
|
edit_query_string_id SERIAL PRIMARY KEY,
|
||||||
edit_page_id INT NOT NULL,
|
edit_page_id INT NOT NULL,
|
||||||
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
value VARCHAR,
|
value VARCHAR,
|
||||||
dynamic SMALLINT NOT NULL DEFAULT 0
|
dynamic SMALLINT NOT NULL DEFAULT 0
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_scheme;
|
-- DROP TABLE edit_scheme;
|
||||||
CREATE TABLE edit_scheme (
|
CREATE TABLE edit_scheme (
|
||||||
edit_scheme_id SERIAL PRIMARY KEY,
|
edit_scheme_id SERIAL PRIMARY KEY,
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
header_color VARCHAR,
|
header_color VARCHAR,
|
||||||
css_file VARCHAR,
|
css_file VARCHAR,
|
||||||
template VARCHAR
|
template VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,6 +7,6 @@
|
|||||||
|
|
||||||
-- DROP TABLE temp_files;
|
-- DROP TABLE temp_files;
|
||||||
CREATE TABLE temp_files (
|
CREATE TABLE temp_files (
|
||||||
filename VARCHAR,
|
filename VARCHAR,
|
||||||
folder VARCHAR
|
folder VARCHAR
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -7,63 +7,63 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_user;
|
-- DROP TABLE edit_user;
|
||||||
CREATE TABLE edit_user (
|
CREATE TABLE edit_user (
|
||||||
edit_user_id SERIAL PRIMARY KEY,
|
edit_user_id SERIAL PRIMARY KEY,
|
||||||
connect_edit_user_id INT, -- possible reference to other user
|
connect_edit_user_id INT, -- possible reference to other user
|
||||||
FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
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,
|
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,
|
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,
|
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,
|
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
edit_scheme_id INT,
|
edit_scheme_id INT,
|
||||||
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_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,
|
||||||
edit_access_right_id INT NOT NULL,
|
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,
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
-- username/password
|
-- username/password
|
||||||
username VARCHAR UNIQUE,
|
username VARCHAR UNIQUE,
|
||||||
password VARCHAR,
|
password VARCHAR,
|
||||||
-- name block
|
-- name block
|
||||||
first_name VARCHAR,
|
first_name VARCHAR,
|
||||||
last_name VARCHAR,
|
last_name VARCHAR,
|
||||||
first_name_furigana VARCHAR,
|
first_name_furigana VARCHAR,
|
||||||
last_name_furigana VARCHAR,
|
last_name_furigana VARCHAR,
|
||||||
-- email
|
-- email
|
||||||
email VARCHAR,
|
email VARCHAR,
|
||||||
-- eanbled/deleted flag
|
-- eanbled/deleted flag
|
||||||
enabled SMALLINT NOT NULL DEFAULT 0,
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
||||||
deleted SMALLINT NOT NULL DEFAULT 0,
|
deleted SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- general flags
|
-- general flags
|
||||||
strict SMALLINT DEFAULT 0,
|
strict SMALLINT DEFAULT 0,
|
||||||
locked SMALLINT DEFAULT 0,
|
locked SMALLINT DEFAULT 0,
|
||||||
protected SMALLINT NOT NULL DEFAULT 0,
|
protected SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- legacy, debug flags
|
-- legacy, debug flags
|
||||||
debug SMALLINT NOT NULL DEFAULT 0,
|
debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
db_debug SMALLINT NOT NULL DEFAULT 0,
|
db_debug SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- is admin user
|
-- is admin user
|
||||||
admin SMALLINT NOT NULL DEFAULT 0,
|
admin SMALLINT NOT NULL DEFAULT 0,
|
||||||
-- last login log
|
-- last login log
|
||||||
last_login TIMESTAMP WITHOUT TIME ZONE,
|
last_login TIMESTAMP WITHOUT TIME ZONE,
|
||||||
-- login error
|
-- login error
|
||||||
login_error_count INT DEFAULT 0,
|
login_error_count INT DEFAULT 0,
|
||||||
login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
|
login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
|
||||||
login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
|
login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
|
||||||
-- time locked
|
-- time locked
|
||||||
lock_until TIMESTAMP WITHOUT TIME ZONE,
|
lock_until TIMESTAMP WITHOUT TIME ZONE,
|
||||||
lock_after TIMESTAMP WITHOUT TIME ZONE,
|
lock_after TIMESTAMP WITHOUT TIME ZONE,
|
||||||
-- password change
|
-- password change
|
||||||
password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed
|
password_change_date TIMESTAMP WITHOUT TIME ZONE, -- only when password is first set or changed
|
||||||
password_change_interval INTERVAL, -- null if no change is needed, or d/m/y time interval
|
password_change_interval INTERVAL, -- null if no change is needed, or d/m/y time interval
|
||||||
password_reset_time TIMESTAMP WITHOUT TIME ZONE, -- when the password reset was requested
|
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
|
password_reset_uid VARCHAR, -- the uid to access the password reset page
|
||||||
-- _GET login id for direct login
|
-- _GET login id for direct login
|
||||||
login_user_id VARCHAR UNIQUE, -- the loginUserId, at least 32 chars
|
login_user_id VARCHAR UNIQUE, -- the loginUserId, at least 32 chars
|
||||||
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
login_user_id_set_date TIMESTAMP WITHOUT TIME ZONE, -- when above uid was set
|
||||||
login_user_id_last_revalidate TIMESTAMP WITHOUT TIME ZONE, -- when the last login was done with user name and password
|
login_user_id_last_revalidate TIMESTAMP WITHOUT TIME ZONE, -- when the last login was done with user name and password
|
||||||
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
login_user_id_valid_from TIMESTAMP WITHOUT TIME ZONE, -- if set, from when the above uid is valid
|
||||||
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
login_user_id_valid_until TIMESTAMP WITHOUT TIME ZONE, -- if set, until when the above uid is valid
|
||||||
login_user_id_revalidate_after INTERVAL, -- user must login to revalidated loginUserId after set days, 0 for forever
|
login_user_id_revalidate_after INTERVAL, -- user must login to revalidated loginUserId after set days, 0 for forever
|
||||||
login_user_id_locked SMALLINT DEFAULT 0, -- lock for loginUserId, but still allow normal login
|
login_user_id_locked SMALLINT DEFAULT 0, -- lock for loginUserId, but still allow normal login
|
||||||
-- additional ACL json block
|
-- additional ACL json block
|
||||||
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|
||||||
-- create unique index
|
-- create unique index
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
-- DROP TABLE edit_visible_group;
|
-- DROP TABLE edit_visible_group;
|
||||||
CREATE TABLE edit_visible_group (
|
CREATE TABLE edit_visible_group (
|
||||||
edit_visible_group_id SERIAL PRIMARY KEY,
|
edit_visible_group_id SERIAL PRIMARY KEY,
|
||||||
name VARCHAR,
|
name VARCHAR,
|
||||||
flag VARCHAR
|
flag VARCHAR
|
||||||
) INHERITS (edit_generic) WITHOUT OIDS;
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
-- DROP TABLE generic;
|
-- DROP TABLE generic;
|
||||||
CREATE TABLE generic (
|
CREATE TABLE generic (
|
||||||
date_created TIMESTAMP WITHOUT TIME ZONE DEFAULT clock_timestamp(),
|
date_created TIMESTAMP WITHOUT TIME ZONE DEFAULT clock_timestamp(),
|
||||||
date_updated TIMESTAMP WITHOUT TIME ZONE,
|
date_updated TIMESTAMP WITHOUT TIME ZONE,
|
||||||
uid VARCHAR
|
uid VARCHAR
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ rm -f $tmpf_web;
|
|||||||
echo ".*.swp" >> $tmpf_web;
|
echo ".*.swp" >> $tmpf_web;
|
||||||
echo "._*" >> $tmpf_web;
|
echo "._*" >> $tmpf_web;
|
||||||
echo ".DS_Store" >> $tmpf_web;
|
echo ".DS_Store" >> $tmpf_web;
|
||||||
|
echo ".user.ini" >> $tmpf_web;
|
||||||
echo ".svn" >> $tmpf_web;
|
echo ".svn" >> $tmpf_web;
|
||||||
echo ".svnignore" >> $tmpf_web;
|
echo ".svnignore" >> $tmpf_web;
|
||||||
echo ".git" >> $tmpf_web;
|
echo ".git" >> $tmpf_web;
|
||||||
|
|||||||
@@ -1477,7 +1477,7 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
);
|
);
|
||||||
// - loginGetLoginHTML
|
// - loginGetLoginHTML
|
||||||
$this->assertStringContainsString(
|
$this->assertStringContainsString(
|
||||||
'<html>',
|
'<html lang="',
|
||||||
$login_mock->loginGetLoginHTML(),
|
$login_mock->loginGetLoginHTML(),
|
||||||
'Assert login html string exits'
|
'Assert login html string exits'
|
||||||
);
|
);
|
||||||
@@ -1529,7 +1529,7 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
// html login basic check only, content is the same as when
|
// html login basic check only, content is the same as when
|
||||||
// read from loginGetLoginHTML()
|
// read from loginGetLoginHTML()
|
||||||
$this->assertStringContainsString(
|
$this->assertStringContainsString(
|
||||||
'<html>',
|
'<html lang="',
|
||||||
$_POST['login_html'],
|
$_POST['login_html'],
|
||||||
'Assert ajax _POST html string exits'
|
'Assert ajax _POST html string exits'
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ final class CoreLibsCheckEncodingTest extends TestCase
|
|||||||
$error_char,
|
$error_char,
|
||||||
$expected
|
$expected
|
||||||
): void {
|
): void {
|
||||||
|
$current_subsitute_character = mb_substitute_character();
|
||||||
if ($error_char !== null) {
|
if ($error_char !== null) {
|
||||||
\CoreLibs\Check\Encoding::setErrorChar($error_char);
|
\CoreLibs\Check\Encoding::setErrorChar($error_char);
|
||||||
if (!in_array($error_char, ['none', 'long', 'entity'])) {
|
if (!in_array($error_char, ['none', 'long', 'entity'])) {
|
||||||
@@ -111,6 +112,8 @@ final class CoreLibsCheckEncodingTest extends TestCase
|
|||||||
$expected,
|
$expected,
|
||||||
$return
|
$return
|
||||||
);
|
);
|
||||||
|
// reset after test
|
||||||
|
mb_substitute_character($current_subsitute_character);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ use PHPUnit\Framework\TestCase;
|
|||||||
*/
|
*/
|
||||||
final class CoreLibsConvertByteTest extends TestCase
|
final class CoreLibsConvertByteTest extends TestCase
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
@@ -24,7 +23,31 @@ final class CoreLibsConvertByteTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function byteProvider(): array
|
public function byteProvider(): array
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* 0: input string
|
||||||
|
* 1: default flags
|
||||||
|
* 2: BYTE_FORMAT_SI
|
||||||
|
* 3: BYTE_FORMAT_NOSPACE
|
||||||
|
* 4: BYTE_FORMAT_ADJUST
|
||||||
|
* 5: BYTE_FORMAT_SI | BYTE_FORMAT_NOSPACE
|
||||||
|
*/
|
||||||
return [
|
return [
|
||||||
|
'string number' => [
|
||||||
|
0 => '1024',
|
||||||
|
1 => '1 KB',
|
||||||
|
2 => '1.02 KiB',
|
||||||
|
3 => '1KB',
|
||||||
|
4 => '1.00 KB',
|
||||||
|
5 => '1.02KiB',
|
||||||
|
],
|
||||||
|
'invalud string number' => [
|
||||||
|
0 => '1024 MB',
|
||||||
|
1 => '1024 MB',
|
||||||
|
2 => '1024 MB',
|
||||||
|
3 => '1024 MB',
|
||||||
|
4 => '1024 MB',
|
||||||
|
5 => '1024 MB',
|
||||||
|
],
|
||||||
'negative number' => [
|
'negative number' => [
|
||||||
0 => -123123123,
|
0 => -123123123,
|
||||||
1 => '-117.42 MB',
|
1 => '-117.42 MB',
|
||||||
|
|||||||
@@ -113,7 +113,10 @@ final class CoreLibsCreateEmailTest extends TestCase
|
|||||||
'日本語カタカナパ',
|
'日本語カタカナパ',
|
||||||
'ISO-2022-JP',
|
'ISO-2022-JP',
|
||||||
true,
|
true,
|
||||||
'"=?ISO-2022-JP?B?GyRCRnxLXDhsGyhCPz8/Pz8=?=" <test@test.com>'
|
// was ok php 8.1
|
||||||
|
// '"=?ISO-2022-JP?B?GyRCRnxLXDhsGyhCPz8/Pz8=?=" <test@test.com>'
|
||||||
|
// below ok php 8.1.12, 2022/12/9
|
||||||
|
'"=?ISO-2022-JP?B?GyRCRnxLXDhsGyhCPz8/Pz8/?=" <test@test.com>'
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -122,8 +125,13 @@ final class CoreLibsCreateEmailTest extends TestCase
|
|||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @dataProvider encodeEmailNameProvider
|
* @dataProvider encodeEmailNameProvider
|
||||||
* @testdox encode email $email, name $name, encoding $encoding will be $expected [$_dataName]
|
* @testdox encode email $email, name $name, encoding $encoding, folding $kv_folding will be $expected [$_dataName]
|
||||||
*
|
*
|
||||||
|
* @param string $email
|
||||||
|
* @param string|null $name
|
||||||
|
* @param string|null $encoding
|
||||||
|
* @param bool|null $kv_folding
|
||||||
|
* @param string $expected
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testEncodeEmailName(
|
public function testEncodeEmailName(
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ final class CoreLibsCreateSessionTest extends TestCase
|
|||||||
string $type,
|
string $type,
|
||||||
array $mock_data,
|
array $mock_data,
|
||||||
string $expected,
|
string $expected,
|
||||||
string $expected_error,
|
string $expected_error
|
||||||
): void {
|
): void {
|
||||||
// override expected
|
// override expected
|
||||||
if ($type == 'd') {
|
if ($type == 'd') {
|
||||||
|
|||||||
@@ -1189,7 +1189,13 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected,
|
$expected,
|
||||||
$db->dbEscapeBytea($input)
|
$db->dbEscapeBytea($input),
|
||||||
|
'Assert error to bytea'
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
$input,
|
||||||
|
$db->dbUnescapeBytea($expected),
|
||||||
|
'Assert error from bytes'
|
||||||
);
|
);
|
||||||
|
|
||||||
$db->dbClose();
|
$db->dbClose();
|
||||||
@@ -1570,6 +1576,13 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
// clear any current query
|
// clear any current query
|
||||||
// $db->dbResetQuery();
|
// $db->dbResetQuery();
|
||||||
|
|
||||||
|
// assert never called query is 0
|
||||||
|
$this->assertEquals(
|
||||||
|
0,
|
||||||
|
$db->dbGetQueryCalled($query),
|
||||||
|
'Assert never called query is null'
|
||||||
|
);
|
||||||
|
|
||||||
// if expected result is not a bool
|
// if expected result is not a bool
|
||||||
// for PHP 8.1 or higher it has to be an object
|
// for PHP 8.1 or higher it has to be an object
|
||||||
// for anything before PHP 8.1 this has to be a resource
|
// for anything before PHP 8.1 this has to be a resource
|
||||||
@@ -2536,7 +2549,7 @@ final class CoreLibsDBIOTest extends TestCase
|
|||||||
private function subAssertCursorExtTestDbReturnFunction(
|
private function subAssertCursorExtTestDbReturnFunction(
|
||||||
\CoreLibs\DB\IO $db,
|
\CoreLibs\DB\IO $db,
|
||||||
string $query,
|
string $query,
|
||||||
array $cursor_ext_checks,
|
array $cursor_ext_checks
|
||||||
): void {
|
): void {
|
||||||
// cursor check
|
// cursor check
|
||||||
if (
|
if (
|
||||||
|
|||||||
@@ -26,22 +26,22 @@ CREATE OR REPLACE FUNCTION set_login_user_id_set_date()
|
|||||||
RETURNS TRIGGER AS
|
RETURNS TRIGGER AS
|
||||||
$$
|
$$
|
||||||
BEGIN
|
BEGIN
|
||||||
-- if new is not null/empty
|
-- if new is not null/empty
|
||||||
-- and old one is null or old one different new one
|
-- and old one is null or old one different new one
|
||||||
-- set NOW()
|
-- set NOW()
|
||||||
-- if new one is NULL
|
-- if new one is NULL
|
||||||
-- set NULL
|
-- set NULL
|
||||||
IF
|
IF
|
||||||
NEW.login_user_id IS NOT NULL AND NEW.login_user_id <> '' AND
|
NEW.login_user_id IS NOT NULL AND NEW.login_user_id <> '' AND
|
||||||
(OLD.login_user_id IS NULL OR NEW.login_user_id <> OLD.login_user_id)
|
(OLD.login_user_id IS NULL OR NEW.login_user_id <> OLD.login_user_id)
|
||||||
THEN
|
THEN
|
||||||
NEW.login_user_id_set_date = NOW();
|
NEW.login_user_id_set_date = NOW();
|
||||||
NEW.login_user_id_last_revalidate = NOW();
|
NEW.login_user_id_last_revalidate = NOW();
|
||||||
ELSIF NEW.login_user_id IS NULL OR NEW.login_user_id = '' THEN
|
ELSIF NEW.login_user_id IS NULL OR NEW.login_user_id = '' THEN
|
||||||
NEW.login_user_id_set_date = NULL;
|
NEW.login_user_id_set_date = NULL;
|
||||||
NEW.login_user_id_last_revalidate = NULL;
|
NEW.login_user_id_last_revalidate = NULL;
|
||||||
END IF;
|
END IF;
|
||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END;
|
END;
|
||||||
$$
|
$$
|
||||||
LANGUAGE 'plpgsql';
|
LANGUAGE 'plpgsql';
|
||||||
22
4dev/update/20220906_edit_acl_update/20220906_readme.md
Normal file
22
4dev/update/20220906_edit_acl_update/20220906_readme.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Files to be changed
|
||||||
|
|
||||||
|
Change: Update Generate\Form to use ACL for form creation (basic)
|
||||||
|
Date: 2022/9/6
|
||||||
|
|
||||||
|
## File List
|
||||||
|
|
||||||
|
```sh
|
||||||
|
includes/table_arrays/array_edit_pages.php
|
||||||
|
includes/table_arrays/array_edit_users.php
|
||||||
|
includes/templates/admin/edit_body.tpl
|
||||||
|
includes/templates/admin/edit_elements.tpl
|
||||||
|
includes/templates/admin/edit_load.tpl
|
||||||
|
includes/templates/admin/edit_new.tpl
|
||||||
|
includes/templates/admin/edit_save_delete.tpl
|
||||||
|
includes/edit_base.php
|
||||||
|
lib/CoreLibs/ACL/Login.php
|
||||||
|
lib/CoreLibs/DB/Extended/ArrayIO.php
|
||||||
|
lib/CoreLibs/Convert/MimeEncode.php
|
||||||
|
lib/CoreLibs/Create/Email.php
|
||||||
|
lib/CoreLibs/Output/Form/Generate.php
|
||||||
|
```
|
||||||
@@ -1,72 +1,47 @@
|
|||||||
parameters:
|
parameters:
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_connection_busy expects PgSql\\\\Connection, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_escape_bytea expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 3
|
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_connection_status expects PgSql\\\\Connection, object\\|resource given\\.$#"
|
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_get_result expects PgSql\\\\Connection, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_escape_identifier expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 2
|
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_meta_data expects PgSql\\\\Connection, object\\|resource given\\.$#"
|
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_send_query expects PgSql\\\\Connection, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_escape_literal expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 2
|
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_socket expects PgSql\\\\Connection, object\\|resource given\\.$#"
|
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$connection of function pg_version expects PgSql\\\\Connection\\|null, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_escape_string expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 2
|
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_affected_rows expects PgSql\\\\Result, object\\|resource given\\.$#"
|
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_fetch_all expects PgSql\\\\Result, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_execute expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_fetch_array expects PgSql\\\\Result, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_parameter_status expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_field_name expects PgSql\\\\Result, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_prepare expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_num_fields expects PgSql\\\\Result, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_query expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_num_rows expects PgSql\\\\Result, object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$connection of function pg_query_params expects PgSql\\\\Connection\\|string, object\\|resource given\\.$#"
|
||||||
count: 1
|
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Parameter \\#1 \\$result of function pg_result_error expects PgSql\\\\Result, object\\|resource given\\.$#"
|
|
||||||
count: 1
|
count: 1
|
||||||
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
|
|
||||||
|
|||||||
@@ -49,11 +49,11 @@ parameters:
|
|||||||
- www/vendor
|
- www/vendor
|
||||||
# ignore errores with
|
# ignore errores with
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
- # this error is ignore because of the PHP 8.0 to 8.1 change for pg_*, only for 8.0 or lower
|
#- # this error is ignore because of the PHP 8.0 to 8.1 change for pg_*, only for 8.0 or lower
|
||||||
message: "#^Parameter \\#1 \\$(result|connection) of function pg_\\w+ expects resource(\\|null)?, object\\|resource(\\|bool)? given\\.$#"
|
# message: "#^Parameter \\#1 \\$(result|connection) of function pg_\\w+ expects resource(\\|null)?, object\\|resource(\\|bool)? given\\.$#"
|
||||||
path: %currentWorkingDirectory%/www/lib/CoreLibs/DB/SQL/PgSQL.php
|
# path: %currentWorkingDirectory%/www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
- # this is for 8.1 or newer
|
- # this is for 8.1 or newer
|
||||||
message: "#^Parameter \\#1 \\$(result|connection) of function pg_\\w+ expects PgSql\\\\(Result|Connection(\\|null)?), object\\|resource given\\.$#"
|
message: "#^Parameter \\#1 \\$(result|connection) of function pg_\\w+ expects PgSql\\\\(Result|Connection(\\|string)?(\\|null)?), object\\|resource given\\.$#"
|
||||||
path: %currentWorkingDirectory%/www/lib/CoreLibs/DB/SQL/PgSQL.php
|
path: %currentWorkingDirectory%/www/lib/CoreLibs/DB/SQL/PgSQL.php
|
||||||
# this is ignored for now
|
# this is ignored for now
|
||||||
# - '#Expression in empty\(\) is always falsy.#'
|
# - '#Expression in empty\(\) is always falsy.#'
|
||||||
|
|||||||
@@ -50,21 +50,22 @@ print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
|||||||
$byte = 254779258;
|
$byte = 254779258;
|
||||||
$string = '242.98 MB';
|
$string = '242.98 MB';
|
||||||
// static
|
// static
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte) . "<br>";
|
print "S::BYTE TO (calls as var): $byte: " . $byte_class::humanReadableByteFormat($byte) . "<br>";
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte) . "<br>";
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI) . "<br>";
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST) . "<br>";
|
||||||
print "S::BYTE FROM: $string: " . $byte_class::stringByteFormat($string) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
||||||
|
print "S::BYTE FROM: $string: " . Byte::stringByteFormat($string) . "<br>";
|
||||||
//
|
//
|
||||||
$byte = 314572800;
|
$byte = 314572800;
|
||||||
$string = '300 MB';
|
$string = '300 MB';
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte) . "<br>";
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_SI) . "<br>";
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST) . "<br>";
|
||||||
print "S::BYTE TO: $byte: "
|
print "S::BYTE TO: $byte: "
|
||||||
. $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST | Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
. Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_ADJUST | Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
||||||
print "S::BYTE TO: $byte: " . $byte_class::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
print "S::BYTE TO: $byte: " . Byte::humanReadableByteFormat($byte, Byte::BYTE_FORMAT_NOSPACE) . "<br>";
|
||||||
print "S::BYTE FROM: $string: " . $byte_class::stringByteFormat($string) . "<br>";
|
print "S::BYTE FROM: $string: " . Byte::stringByteFormat($string) . "<br>";
|
||||||
|
|
||||||
// *** BYTES TEST ***
|
// *** BYTES TEST ***
|
||||||
$bytes = [
|
$bytes = [
|
||||||
|
|||||||
458
www/composer.lock
generated
458
www/composer.lock
generated
@@ -138,16 +138,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
"version": "v4.13.2",
|
"version": "v4.15.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077"
|
"reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
|
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
|
||||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077",
|
"reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -188,9 +188,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
|
"source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1"
|
||||||
},
|
},
|
||||||
"time": "2021-11-30T19:35:32+00:00"
|
"time": "2022-09-04T07:30:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phar-io/manifest",
|
"name": "phar-io/manifest",
|
||||||
@@ -303,252 +303,25 @@
|
|||||||
},
|
},
|
||||||
"time": "2022-02-21T01:04:05+00:00"
|
"time": "2022-02-21T01:04:05+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "phpdocumentor/reflection-common",
|
|
||||||
"version": "2.2.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
|
||||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
|
||||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.2 || ^8.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-2.x": "2.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"phpDocumentor\\Reflection\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Jaap van Otterdijk",
|
|
||||||
"email": "opensource@ijaap.nl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
|
||||||
"homepage": "http://www.phpdoc.org",
|
|
||||||
"keywords": [
|
|
||||||
"FQSEN",
|
|
||||||
"phpDocumentor",
|
|
||||||
"phpdoc",
|
|
||||||
"reflection",
|
|
||||||
"static analysis"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
|
|
||||||
},
|
|
||||||
"time": "2020-06-27T09:03:43+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpdocumentor/reflection-docblock",
|
|
||||||
"version": "5.3.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
|
||||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
|
|
||||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"ext-filter": "*",
|
|
||||||
"php": "^7.2 || ^8.0",
|
|
||||||
"phpdocumentor/reflection-common": "^2.2",
|
|
||||||
"phpdocumentor/type-resolver": "^1.3",
|
|
||||||
"webmozart/assert": "^1.9.1"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"mockery/mockery": "~1.3.2",
|
|
||||||
"psalm/phar": "^4.8"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "5.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"phpDocumentor\\Reflection\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Mike van Riel",
|
|
||||||
"email": "me@mikevanriel.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jaap van Otterdijk",
|
|
||||||
"email": "account@ijaap.nl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
|
|
||||||
},
|
|
||||||
"time": "2021-10-19T17:43:47+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpdocumentor/type-resolver",
|
|
||||||
"version": "1.6.1",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
|
||||||
"reference": "77a32518733312af16a44300404e945338981de3"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
|
||||||
"reference": "77a32518733312af16a44300404e945338981de3",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.2 || ^8.0",
|
|
||||||
"phpdocumentor/reflection-common": "^2.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"ext-tokenizer": "*",
|
|
||||||
"psalm/phar": "^4.8"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-1.x": "1.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"phpDocumentor\\Reflection\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Mike van Riel",
|
|
||||||
"email": "me@mikevanriel.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
|
|
||||||
},
|
|
||||||
"time": "2022-03-15T21:29:03+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpspec/prophecy",
|
|
||||||
"version": "v1.15.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpspec/prophecy.git",
|
|
||||||
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
|
||||||
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"doctrine/instantiator": "^1.2",
|
|
||||||
"php": "^7.2 || ~8.0, <8.2",
|
|
||||||
"phpdocumentor/reflection-docblock": "^5.2",
|
|
||||||
"sebastian/comparator": "^3.0 || ^4.0",
|
|
||||||
"sebastian/recursion-context": "^3.0 || ^4.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpspec/phpspec": "^6.0 || ^7.0",
|
|
||||||
"phpunit/phpunit": "^8.0 || ^9.0"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Prophecy\\": "src/Prophecy"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Konstantin Kudryashov",
|
|
||||||
"email": "ever.zet@gmail.com",
|
|
||||||
"homepage": "http://everzet.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Marcello Duarte",
|
|
||||||
"email": "marcello.duarte@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Highly opinionated mocking framework for PHP 5.3+",
|
|
||||||
"homepage": "https://github.com/phpspec/prophecy",
|
|
||||||
"keywords": [
|
|
||||||
"Double",
|
|
||||||
"Dummy",
|
|
||||||
"fake",
|
|
||||||
"mock",
|
|
||||||
"spy",
|
|
||||||
"stub"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpspec/prophecy/issues",
|
|
||||||
"source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
|
|
||||||
},
|
|
||||||
"time": "2021-12-08T12:19:24+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "9.2.15",
|
"version": "9.2.17",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
|
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8",
|
||||||
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
|
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-libxml": "*",
|
"ext-libxml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"nikic/php-parser": "^4.13.0",
|
"nikic/php-parser": "^4.14",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpunit/php-file-iterator": "^3.0.3",
|
"phpunit/php-file-iterator": "^3.0.3",
|
||||||
"phpunit/php-text-template": "^2.0.2",
|
"phpunit/php-text-template": "^2.0.2",
|
||||||
@@ -597,7 +370,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
|
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -605,7 +378,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-03-07T09:28:20+00:00"
|
"time": "2022-08-30T12:24:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-file-iterator",
|
"name": "phpunit/php-file-iterator",
|
||||||
@@ -850,16 +623,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "9.5.20",
|
"version": "9.5.25",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
|
"reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d",
|
||||||
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
|
"reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -874,7 +647,6 @@
|
|||||||
"phar-io/manifest": "^2.0.3",
|
"phar-io/manifest": "^2.0.3",
|
||||||
"phar-io/version": "^3.0.2",
|
"phar-io/version": "^3.0.2",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpspec/prophecy": "^1.12.1",
|
|
||||||
"phpunit/php-code-coverage": "^9.2.13",
|
"phpunit/php-code-coverage": "^9.2.13",
|
||||||
"phpunit/php-file-iterator": "^3.0.5",
|
"phpunit/php-file-iterator": "^3.0.5",
|
||||||
"phpunit/php-invoker": "^3.1.1",
|
"phpunit/php-invoker": "^3.1.1",
|
||||||
@@ -882,20 +654,16 @@
|
|||||||
"phpunit/php-timer": "^5.0.2",
|
"phpunit/php-timer": "^5.0.2",
|
||||||
"sebastian/cli-parser": "^1.0.1",
|
"sebastian/cli-parser": "^1.0.1",
|
||||||
"sebastian/code-unit": "^1.0.6",
|
"sebastian/code-unit": "^1.0.6",
|
||||||
"sebastian/comparator": "^4.0.5",
|
"sebastian/comparator": "^4.0.8",
|
||||||
"sebastian/diff": "^4.0.3",
|
"sebastian/diff": "^4.0.3",
|
||||||
"sebastian/environment": "^5.1.3",
|
"sebastian/environment": "^5.1.3",
|
||||||
"sebastian/exporter": "^4.0.3",
|
"sebastian/exporter": "^4.0.5",
|
||||||
"sebastian/global-state": "^5.0.1",
|
"sebastian/global-state": "^5.0.1",
|
||||||
"sebastian/object-enumerator": "^4.0.3",
|
"sebastian/object-enumerator": "^4.0.3",
|
||||||
"sebastian/resource-operations": "^3.0.3",
|
"sebastian/resource-operations": "^3.0.3",
|
||||||
"sebastian/type": "^3.0",
|
"sebastian/type": "^3.2",
|
||||||
"sebastian/version": "^3.0.2"
|
"sebastian/version": "^3.0.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
|
||||||
"ext-pdo": "*",
|
|
||||||
"phpspec/prophecy-phpunit": "^2.0.1"
|
|
||||||
},
|
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-soap": "*",
|
"ext-soap": "*",
|
||||||
"ext-xdebug": "*"
|
"ext-xdebug": "*"
|
||||||
@@ -937,7 +705,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -947,9 +715,13 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/sebastianbergmann",
|
"url": "https://github.com/sebastianbergmann",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
|
||||||
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-04-01T12:37:26+00:00"
|
"time": "2022-09-25T03:44:45+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
@@ -1120,16 +892,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/comparator",
|
"name": "sebastian/comparator",
|
||||||
"version": "4.0.6",
|
"version": "4.0.8",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/comparator.git",
|
"url": "https://github.com/sebastianbergmann/comparator.git",
|
||||||
"reference": "55f4261989e546dc112258c7a75935a81a7ce382"
|
"reference": "fa0f136dd2334583309d32b62544682ee972b51a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
|
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
|
||||||
"reference": "55f4261989e546dc112258c7a75935a81a7ce382",
|
"reference": "fa0f136dd2334583309d32b62544682ee972b51a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1182,7 +954,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
|
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1190,7 +962,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2020-10-26T15:49:45+00:00"
|
"time": "2022-09-14T12:41:17+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/complexity",
|
"name": "sebastian/complexity",
|
||||||
@@ -1380,16 +1152,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/exporter",
|
"name": "sebastian/exporter",
|
||||||
"version": "4.0.4",
|
"version": "4.0.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/exporter.git",
|
"url": "https://github.com/sebastianbergmann/exporter.git",
|
||||||
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
|
"reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
|
||||||
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
"reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1445,7 +1217,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
|
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1453,7 +1225,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2021-11-11T14:18:36+00:00"
|
"time": "2022-09-14T06:03:37+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/global-state",
|
"name": "sebastian/global-state",
|
||||||
@@ -1808,16 +1580,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/type",
|
"name": "sebastian/type",
|
||||||
"version": "3.0.0",
|
"version": "3.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/type.git",
|
"url": "https://github.com/sebastianbergmann/type.git",
|
||||||
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
|
"reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
|
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
|
||||||
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
|
"reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1829,7 +1601,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "3.0-dev"
|
"dev-master": "3.2-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1852,7 +1624,7 @@
|
|||||||
"homepage": "https://github.com/sebastianbergmann/type",
|
"homepage": "https://github.com/sebastianbergmann/type",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/type/issues",
|
"issues": "https://github.com/sebastianbergmann/type/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
|
"source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1860,7 +1632,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-03-15T09:54:48+00:00"
|
"time": "2022-09-12T14:47:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/version",
|
"name": "sebastian/version",
|
||||||
@@ -1915,88 +1687,6 @@
|
|||||||
],
|
],
|
||||||
"time": "2020-09-28T06:39:44+00:00"
|
"time": "2020-09-28T06:39:44+00:00"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-ctype",
|
|
||||||
"version": "v1.25.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
|
||||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
|
|
||||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=7.1"
|
|
||||||
},
|
|
||||||
"provide": {
|
|
||||||
"ext-ctype": "*"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"ext-ctype": "For best performance"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-main": "1.23-dev"
|
|
||||||
},
|
|
||||||
"thanks": {
|
|
||||||
"name": "symfony/polyfill",
|
|
||||||
"url": "https://github.com/symfony/polyfill"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
],
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Ctype\\": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Gert de Pagter",
|
|
||||||
"email": "BackEndTea@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony polyfill for ctype functions",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compatibility",
|
|
||||||
"ctype",
|
|
||||||
"polyfill",
|
|
||||||
"portable"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"time": "2021-10-20T20:35:02+00:00"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "theseer/tokenizer",
|
"name": "theseer/tokenizer",
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
@@ -2046,64 +1736,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2021-07-28T10:34:58+00:00"
|
"time": "2021-07-28T10:34:58+00:00"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "webmozart/assert",
|
|
||||||
"version": "1.10.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/webmozarts/assert.git",
|
|
||||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
|
|
||||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.2 || ^8.0",
|
|
||||||
"symfony/polyfill-ctype": "^1.8"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"phpstan/phpstan": "<0.12.20",
|
|
||||||
"vimeo/psalm": "<4.6.1 || 4.6.2"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpunit/phpunit": "^8.5.13"
|
|
||||||
},
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.10-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Webmozart\\Assert\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Bernhard Schussek",
|
|
||||||
"email": "bschussek@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Assertions to validate method input/output with nice error messages.",
|
|
||||||
"keywords": [
|
|
||||||
"assert",
|
|
||||||
"check",
|
|
||||||
"validate"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/webmozarts/assert/issues",
|
|
||||||
"source": "https://github.com/webmozarts/assert/tree/1.10.0"
|
|
||||||
},
|
|
||||||
"time": "2021-03-09T10:59:23+00:00"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ if ($is_secure) {
|
|||||||
define('HOST_PROTOCOL', 'http://');
|
define('HOST_PROTOCOL', 'http://');
|
||||||
}
|
}
|
||||||
// define the db config set name, the db config and the db schema
|
// 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_NAME', $SITE_CONFIG[HOST_NAME]['db_host'] ?? '');
|
||||||
define('DB_CONFIG', $DB_CONFIG[DB_CONFIG_NAME] ?? []);
|
define('DB_CONFIG', $DB_CONFIG[DB_CONFIG_NAME] ?? []);
|
||||||
// because we can't change constant, but we want to for db debug flag
|
// because we can't change constant, but we want to for db debug flag
|
||||||
$GLOBALS['DB_CONFIG_SET'] = DB_CONFIG;
|
$GLOBALS['DB_CONFIG_SET'] = DB_CONFIG;
|
||||||
@@ -268,9 +268,9 @@ define('SITE_ENCODING', $SITE_CONFIG[HOST_NAME]['site_encoding'] ?? DEFAULT_ENCO
|
|||||||
define('LOGIN_ENABLED', $SITE_CONFIG[HOST_NAME]['login_enabled'] ?? false);
|
define('LOGIN_ENABLED', $SITE_CONFIG[HOST_NAME]['login_enabled'] ?? false);
|
||||||
define('AUTH', $SITE_CONFIG[HOST_NAME]['auth'] ?? false);
|
define('AUTH', $SITE_CONFIG[HOST_NAME]['auth'] ?? false);
|
||||||
// paths
|
// paths
|
||||||
// define('CSV_PATH', $PATHS[TARGET]['csv_path']);
|
// define('CSV_PATH', $PATHS[TARGET]['csv_path'] ?? '');
|
||||||
// define('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin']);
|
// define('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin'] ?? '');
|
||||||
// define('REDIRECT_URL', $PATHS[TARGET]['redirect_url']);
|
// define('REDIRECT_URL', $PATHS[TARGET]['redirect_url'] ?? '');
|
||||||
|
|
||||||
// show all errors if debug_all & show_error_handling are enabled
|
// show all errors if debug_all & show_error_handling are enabled
|
||||||
define('SHOW_ALL_ERRORS', true);
|
define('SHOW_ALL_ERRORS', true);
|
||||||
|
|||||||
@@ -112,10 +112,11 @@ if (defined('LAYOUT')) {
|
|||||||
}
|
}
|
||||||
// set table width
|
// set table width
|
||||||
$table_width = '100%';
|
$table_width = '100%';
|
||||||
|
$ADMIN_STYLESHEET = 'edit.css';
|
||||||
// define all needed smarty stuff for the general HTML/page building
|
// define all needed smarty stuff for the general HTML/page building
|
||||||
$HEADER['CSS'] = CSS;
|
$HEADER['CSS'] = CSS;
|
||||||
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
|
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
|
||||||
|
/** @phpstan-ignore-next-line because ADMIN_STYLESHEET can be null */
|
||||||
$HEADER['STYLESHEET'] = $ADMIN_STYLESHEET ?? ADMIN_STYLESHEET;
|
$HEADER['STYLESHEET'] = $ADMIN_STYLESHEET ?? ADMIN_STYLESHEET;
|
||||||
|
|
||||||
if ($form->my_page_name == 'edit_order') {
|
if ($form->my_page_name == 'edit_order') {
|
||||||
@@ -457,6 +458,8 @@ if ($form->my_page_name == 'edit_order') {
|
|||||||
$pathinfo = pathinfo($output_file);
|
$pathinfo = pathinfo($output_file);
|
||||||
if (!empty($pathinfo['dirname'])) {
|
if (!empty($pathinfo['dirname'])) {
|
||||||
$pathinfo['dirname'] .= DIRECTORY_SEPARATOR;
|
$pathinfo['dirname'] .= DIRECTORY_SEPARATOR;
|
||||||
|
} else {
|
||||||
|
$pathinfo['dirname'] = '';
|
||||||
}
|
}
|
||||||
if ($t_q) {
|
if ($t_q) {
|
||||||
$t_q .= ', ';
|
$t_q .= ', ';
|
||||||
@@ -552,6 +555,7 @@ if (is_dir(BASE . CACHE)) {
|
|||||||
}
|
}
|
||||||
$smarty->display($EDIT_TEMPLATE, 'editAdmin_' . $smarty->lang, 'editAdmin_' . $smarty->lang);
|
$smarty->display($EDIT_TEMPLATE, 'editAdmin_' . $smarty->lang, 'editAdmin_' . $smarty->lang);
|
||||||
|
|
||||||
|
$form->log->debug('DEBUGEND', '==================================== [Form END]');
|
||||||
// debug output
|
// debug output
|
||||||
echo $login->log->printErrorMsg();
|
echo $login->log->printErrorMsg();
|
||||||
echo $form->log->printErrorMsg();
|
echo $form->log->printErrorMsg();
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ $edit_pages = [
|
|||||||
'int' => 1,
|
'int' => 1,
|
||||||
'type' => 'binary',
|
'type' => 'binary',
|
||||||
'element_list' => [
|
'element_list' => [
|
||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'popup' => [
|
'popup' => [
|
||||||
@@ -76,8 +76,8 @@ $edit_pages = [
|
|||||||
'int' => 1,
|
'int' => 1,
|
||||||
'type' => 'binary',
|
'type' => 'binary',
|
||||||
'element_list' => [
|
'element_list' => [
|
||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'popup_x' => [
|
'popup_x' => [
|
||||||
@@ -128,12 +128,12 @@ $edit_pages = [
|
|||||||
'name' => 'filename',
|
'name' => 'filename',
|
||||||
'before_value' => 'Filename: '
|
'before_value' => 'Filename: '
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'online',
|
'name' => 'online',
|
||||||
'binary' => ['Yes', 'No'],
|
'binary' => ['Yes', 'No'],
|
||||||
'before_value' => 'Online: '
|
'before_value' => 'Online: '
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'name' => 'menu',
|
'name' => 'menu',
|
||||||
'binary' => ['Yes', 'No'],
|
'binary' => ['Yes', 'No'],
|
||||||
'before_value' => 'Menu: '
|
'before_value' => 'Menu: '
|
||||||
|
|||||||
@@ -15,7 +15,11 @@ $edit_users = [
|
|||||||
'output_name' => 'Username',
|
'output_name' => 'Username',
|
||||||
'mandatory' => 1,
|
'mandatory' => 1,
|
||||||
'error_check' => 'unique|alphanumericextended',
|
'error_check' => 'unique|alphanumericextended',
|
||||||
'type' => 'text'
|
'type' => 'text',
|
||||||
|
// if not min_edit_acl only read
|
||||||
|
// if not min_show_acl not visible
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '-1',
|
||||||
],
|
],
|
||||||
'password' => [
|
'password' => [
|
||||||
'value' => $GLOBALS['password'] ?? '',
|
'value' => $GLOBALS['password'] ?? '',
|
||||||
@@ -30,6 +34,8 @@ $edit_users = [
|
|||||||
'value' => 'NOW()' // value [todo: complex reference
|
'value' => 'NOW()' // value [todo: complex reference
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
// password date when first insert and password is set, needs special field with connection to password
|
// 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 reset force interval, if set, user needs to reset password after X time period
|
||||||
@@ -41,7 +47,9 @@ $edit_users = [
|
|||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'interval' => 1, // interval needs NULL write for empty
|
'interval' => 1, // interval needs NULL write for empty
|
||||||
'size' => 5, // make it 5 chars long
|
'size' => 5, // make it 5 chars long
|
||||||
'length' => 5
|
'length' => 5,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'enabled' => [
|
'enabled' => [
|
||||||
'value' => $GLOBALS['enabled'] ?? '',
|
'value' => $GLOBALS['enabled'] ?? '',
|
||||||
@@ -52,6 +60,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '-1',
|
||||||
],
|
],
|
||||||
'deleted' => [
|
'deleted' => [
|
||||||
'value' => $GLOBALS['deleted'] ?? '',
|
'value' => $GLOBALS['deleted'] ?? '',
|
||||||
@@ -62,6 +72,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'strict' => [
|
'strict' => [
|
||||||
'value' => $GLOBALS['strict'] ?? '',
|
'value' => $GLOBALS['strict'] ?? '',
|
||||||
@@ -72,6 +84,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'locked' => [
|
'locked' => [
|
||||||
'value' => $GLOBALS['locked'] ?? '',
|
'value' => $GLOBALS['locked'] ?? '',
|
||||||
@@ -82,6 +96,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'admin' => [
|
'admin' => [
|
||||||
'value' => $GLOBALS['admin'] ?? '',
|
'value' => $GLOBALS['admin'] ?? '',
|
||||||
@@ -92,6 +108,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'debug' => [
|
'debug' => [
|
||||||
'value' => $GLOBALS['debug'] ?? '',
|
'value' => $GLOBALS['debug'] ?? '',
|
||||||
@@ -102,6 +120,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'db_debug' => [
|
'db_debug' => [
|
||||||
'value' => $GLOBALS['db_debug'] ?? '',
|
'value' => $GLOBALS['db_debug'] ?? '',
|
||||||
@@ -112,22 +132,30 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'email' => [
|
'email' => [
|
||||||
'value' => $GLOBALS['email'] ?? '',
|
'value' => $GLOBALS['email'] ?? '',
|
||||||
'output_name' => 'E-Mail',
|
'output_name' => 'E-Mail',
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'error_check' => 'email'
|
'error_check' => 'email',
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'last_name' => [
|
'last_name' => [
|
||||||
'value' => $GLOBALS['last_name'] ?? '',
|
'value' => $GLOBALS['last_name'] ?? '',
|
||||||
'output_name' => 'Last Name',
|
'output_name' => 'Last Name',
|
||||||
'type' => 'text'
|
'type' => 'text',
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'first_name' => [
|
'first_name' => [
|
||||||
'value' => $GLOBALS['first_name'] ?? '',
|
'value' => $GLOBALS['first_name'] ?? '',
|
||||||
'output_name' => 'First Name',
|
'output_name' => 'First Name',
|
||||||
'type' => 'text'
|
'type' => 'text',
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'lock_until' => [
|
'lock_until' => [
|
||||||
'value' => $GLOBALS['lock_until'] ?? '',
|
'value' => $GLOBALS['lock_until'] ?? '',
|
||||||
@@ -136,6 +164,8 @@ $edit_users = [
|
|||||||
'error_check' => 'datetime',
|
'error_check' => 'datetime',
|
||||||
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
'datetime' => 1,
|
'datetime' => 1,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'lock_after' => [
|
'lock_after' => [
|
||||||
'value' => $GLOBALS['lock_after'] ?? '',
|
'value' => $GLOBALS['lock_after'] ?? '',
|
||||||
@@ -143,7 +173,8 @@ $edit_users = [
|
|||||||
'type' => 'datetime',
|
'type' => 'datetime',
|
||||||
'error_check' => 'datetime',
|
'error_check' => 'datetime',
|
||||||
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
'datetime' => 1,
|
'datetime' => 1,'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id' => [
|
'login_user_id' => [
|
||||||
'value' => $GLOBALS['login_user_id'] ?? '',
|
'value' => $GLOBALS['login_user_id'] ?? '',
|
||||||
@@ -151,19 +182,22 @@ $edit_users = [
|
|||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'error_check' => 'unique|custom',
|
'error_check' => 'unique|custom',
|
||||||
'error_regex' => "/^[A-Za-z0-9]+$/",
|
'error_regex' => "/^[A-Za-z0-9]+$/",
|
||||||
'emptynull' => 1,
|
'emptynull' => 1,'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id_set_date' => [
|
'login_user_id_set_date' => [
|
||||||
'output_name' => 'loginUserId set date',
|
'output_name' => 'loginUserId set date',
|
||||||
'value' => $GLOBALS['login_user_id_set_date'] ?? '',
|
'value' => $GLOBALS['login_user_id_set_date'] ?? '',
|
||||||
'type' => 'view',
|
'type' => 'view',
|
||||||
'empty' => '-'
|
'empty' => '-',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id_last_revalidate' => [
|
'login_user_id_last_revalidate' => [
|
||||||
'output_name' => 'loginUserId last revalidate date',
|
'output_name' => 'loginUserId last revalidate date',
|
||||||
'value' => $GLOBALS['login_user_id_last_revalidate'] ?? '',
|
'value' => $GLOBALS['login_user_id_last_revalidate'] ?? '',
|
||||||
'type' => 'view',
|
'type' => 'view',
|
||||||
'empty' => '-'
|
'empty' => '-',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id_locked' => [
|
'login_user_id_locked' => [
|
||||||
'value' => $GLOBALS['login_user_id_locked'] ?? '',
|
'value' => $GLOBALS['login_user_id_locked'] ?? '',
|
||||||
@@ -174,6 +208,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id_revalidate_after' => [
|
'login_user_id_revalidate_after' => [
|
||||||
'value' => $GLOBALS['login_user_id_revalidate_after'] ?? '',
|
'value' => $GLOBALS['login_user_id_revalidate_after'] ?? '',
|
||||||
@@ -182,7 +218,9 @@ $edit_users = [
|
|||||||
'error_check' => 'intervalshort',
|
'error_check' => 'intervalshort',
|
||||||
'interval' => 1, // interval needs NULL write for empty
|
'interval' => 1, // interval needs NULL write for empty
|
||||||
'size' => 5, // make it 5 chars long
|
'size' => 5, // make it 5 chars long
|
||||||
'length' => 5
|
'length' => 5,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id_valid_from' => [
|
'login_user_id_valid_from' => [
|
||||||
'value' => $GLOBALS['login_user_id_valid_from'] ?? '',
|
'value' => $GLOBALS['login_user_id_valid_from'] ?? '',
|
||||||
@@ -191,6 +229,8 @@ $edit_users = [
|
|||||||
'error_check' => 'datetime',
|
'error_check' => 'datetime',
|
||||||
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
'datetime' => 1,
|
'datetime' => 1,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_user_id_valid_until' => [
|
'login_user_id_valid_until' => [
|
||||||
'value' => $GLOBALS['login_user_id_valid_until'] ?? '',
|
'value' => $GLOBALS['login_user_id_valid_until'] ?? '',
|
||||||
@@ -199,6 +239,8 @@ $edit_users = [
|
|||||||
'error_check' => 'datetime',
|
'error_check' => 'datetime',
|
||||||
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
'sql_read' => 'YYYY-MM-DD HH24:MI',
|
||||||
'datetime' => 1,
|
'datetime' => 1,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'edit_language_id' => [
|
'edit_language_id' => [
|
||||||
'value' => $GLOBALS['edit_language_id'] ?? '',
|
'value' => $GLOBALS['edit_language_id'] ?? '',
|
||||||
@@ -206,14 +248,18 @@ $edit_users = [
|
|||||||
'mandatory' => 1,
|
'mandatory' => 1,
|
||||||
'int' => 1,
|
'int' => 1,
|
||||||
'type' => 'drop_down_db',
|
'type' => 'drop_down_db',
|
||||||
'query' => "SELECT edit_language_id, long_name FROM edit_language WHERE enabled = 1 ORDER BY order_number"
|
'query' => "SELECT edit_language_id, long_name FROM edit_language WHERE enabled = 1 ORDER BY order_number",
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'edit_scheme_id' => [
|
'edit_scheme_id' => [
|
||||||
'value' => $GLOBALS['edit_scheme_id'] ?? '',
|
'value' => $GLOBALS['edit_scheme_id'] ?? '',
|
||||||
'output_name' => 'Scheme',
|
'output_name' => 'Scheme',
|
||||||
'int_null' => 1,
|
'int_null' => 1,
|
||||||
'type' => 'drop_down_db',
|
'type' => 'drop_down_db',
|
||||||
'query' => "SELECT edit_scheme_id, name FROM edit_scheme WHERE enabled = 1 ORDER BY name"
|
'query' => "SELECT edit_scheme_id, name FROM edit_scheme WHERE enabled = 1 ORDER BY name",
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'edit_group_id' => [
|
'edit_group_id' => [
|
||||||
'value' => $GLOBALS['edit_group_id'] ?? '',
|
'value' => $GLOBALS['edit_group_id'] ?? '',
|
||||||
@@ -221,7 +267,9 @@ $edit_users = [
|
|||||||
'int' => 1,
|
'int' => 1,
|
||||||
'type' => 'drop_down_db',
|
'type' => 'drop_down_db',
|
||||||
'query' => "SELECT edit_group_id, name FROM edit_group WHERE enabled = 1 ORDER BY name",
|
'query' => "SELECT edit_group_id, name FROM edit_group WHERE enabled = 1 ORDER BY name",
|
||||||
'mandatory' => 1
|
'mandatory' => 1,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'edit_access_right_id' => [
|
'edit_access_right_id' => [
|
||||||
'value' => $GLOBALS['edit_access_right_id'] ?? '',
|
'value' => $GLOBALS['edit_access_right_id'] ?? '',
|
||||||
@@ -229,25 +277,30 @@ $edit_users = [
|
|||||||
'mandatory' => 1,
|
'mandatory' => 1,
|
||||||
'int' => 1,
|
'int' => 1,
|
||||||
'type' => 'drop_down_db',
|
'type' => 'drop_down_db',
|
||||||
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level"
|
'query' => "SELECT edit_access_right_id, name FROM edit_access_right ORDER BY level",
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_error_count' => [
|
'login_error_count' => [
|
||||||
'output_name' => 'Login error count',
|
'output_name' => 'Login error count',
|
||||||
'value' => $GLOBALS['login_error_count'] ?? '',
|
'value' => $GLOBALS['login_error_count'] ?? '',
|
||||||
'type' => 'view',
|
'type' => 'view',
|
||||||
'empty' => '0'
|
'empty' => '0',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_error_date_last' => [
|
'login_error_date_last' => [
|
||||||
'output_name' => 'Last login error',
|
'output_name' => 'Last login error',
|
||||||
'value' => $GLOBALS['login_error_date_liast'] ?? '',
|
'value' => $GLOBALS['login_error_date_liast'] ?? '',
|
||||||
'type' => 'view',
|
'type' => 'view',
|
||||||
'empty' => '-'
|
'empty' => '-',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'login_error_date_first' => [
|
'login_error_date_first' => [
|
||||||
'output_name' => 'First login error',
|
'output_name' => 'First login error',
|
||||||
'value' => $GLOBALS['login_error_date_first'] ?? '',
|
'value' => $GLOBALS['login_error_date_first'] ?? '',
|
||||||
'type' => 'view',
|
'type' => 'view',
|
||||||
'empty' => '-'
|
'empty' => '-',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'protected' => [
|
'protected' => [
|
||||||
'value' => $GLOBALS['protected'] ?? '',
|
'value' => $GLOBALS['protected'] ?? '',
|
||||||
@@ -258,6 +311,8 @@ $edit_users = [
|
|||||||
'1' => 'Yes',
|
'1' => 'Yes',
|
||||||
'0' => 'No'
|
'0' => 'No'
|
||||||
],
|
],
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
'additional_acl' => [
|
'additional_acl' => [
|
||||||
'value' => $GLOBALS['additional_acl'] ?? '',
|
'value' => $GLOBALS['additional_acl'] ?? '',
|
||||||
@@ -265,12 +320,27 @@ $edit_users = [
|
|||||||
'type' => 'textarea',
|
'type' => 'textarea',
|
||||||
'error_check' => 'json',
|
'error_check' => 'json',
|
||||||
'rows' => 10,
|
'rows' => 10,
|
||||||
'cols' => 60
|
'cols' => 60,
|
||||||
|
'min_edit_acl' => '100',
|
||||||
|
'min_show_acl' => '100',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'load_query' => "SELECT edit_user_id, username, enabled, deleted, "
|
'load_query' => "SELECT edit_user_id, username, enabled, deleted, "
|
||||||
. "strict, locked, login_error_count "
|
. "strict, locked, login_error_count "
|
||||||
. "FROM edit_user ORDER BY username",
|
. "FROM edit_user "
|
||||||
|
// if base acl is not 90 only list enabled
|
||||||
|
// if not admin flag, do not list admin flagged
|
||||||
|
. (
|
||||||
|
!$GLOBALS['acl_admin'] ?
|
||||||
|
"WHERE admin = 0 "
|
||||||
|
. (
|
||||||
|
$GLOBALS['base_acl_level'] < 90 ?
|
||||||
|
"AND enabled = 1 " :
|
||||||
|
""
|
||||||
|
)
|
||||||
|
: ''
|
||||||
|
)
|
||||||
|
. "ORDER BY username",
|
||||||
'table_name' => 'edit_user',
|
'table_name' => 'edit_user',
|
||||||
'show_fields' => [
|
'show_fields' => [
|
||||||
[
|
[
|
||||||
@@ -305,7 +375,12 @@ $edit_users = [
|
|||||||
'edit_access_user' => [
|
'edit_access_user' => [
|
||||||
'output_name' => 'Accounts',
|
'output_name' => 'Accounts',
|
||||||
'mandatory' => 1,
|
'mandatory' => 1,
|
||||||
'delete' => 0, // set then reference entries are deleted, else the 'enable' flag is only set
|
// set then reference entries are deleted, else the 'enable' flag is only set
|
||||||
|
'delete' => 0,
|
||||||
|
// acl
|
||||||
|
'min_edit_acl' => '40',
|
||||||
|
'min_show_acl' => '20',
|
||||||
|
// table read prefix
|
||||||
'prefix' => 'ecu',
|
'prefix' => 'ecu',
|
||||||
'read_data' => [
|
'read_data' => [
|
||||||
'table_name' => 'edit_access',
|
'table_name' => 'edit_access',
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{$HTML_TITLE}</title>
|
<title>{$HTML_TITLE}</title>
|
||||||
@@ -83,13 +84,8 @@ function pop(theURL, winName, features) {
|
|||||||
<td width="{$table_width}" class="edit_bgcolor">
|
<td width="{$table_width}" class="edit_bgcolor">
|
||||||
<form method="post" name="edit_form" style="margin-block-end: 0em;">
|
<form method="post" name="edit_form" style="margin-block-end: 0em;">
|
||||||
<table width="100%" border="0" cellpadding="2" cellspacing="1">
|
<table width="100%" border="0" cellpadding="2" cellspacing="1">
|
||||||
<!-- LOAD START //-->
|
|
||||||
{include file="edit_load.tpl"}
|
{include file="edit_load.tpl"}
|
||||||
<!-- LOAD END //-->
|
|
||||||
<!-- NEW START //-->
|
|
||||||
{include file="edit_new.tpl"}
|
{include file="edit_new.tpl"}
|
||||||
{* $form_create_new*}
|
|
||||||
<!-- NEW END //-->
|
|
||||||
{if $form_yes}
|
{if $form_yes}
|
||||||
{include file="edit_save_delete.tpl"}
|
{include file="edit_save_delete.tpl"}
|
||||||
{if $form_my_page_name == "edit_pages" && $filename_exist}
|
{if $form_my_page_name == "edit_pages" && $filename_exist}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
{foreach from=$elements item=element key=key name=loop}
|
{foreach from=$elements item=element key=key name=loop}
|
||||||
|
{if $element.allow_edit}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="edit_fgcolor" class="normal" valign="top">
|
<td class="edit_fgcolor" class="normal" valign="top">
|
||||||
{$element.output_name}
|
{$element.output_name}
|
||||||
@@ -129,4 +130,21 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{elseif $element.allow_show}
|
||||||
|
<tr>
|
||||||
|
<td class="edit_fgcolor" class="normal" valign="top">
|
||||||
|
{$element.output_name}
|
||||||
|
</td>
|
||||||
|
<td class="{$element.color}" class="normal">
|
||||||
|
{if $element.type != 'view'}
|
||||||
|
{$element.show_value}
|
||||||
|
<input type="hidden" name="{$element.data.name}" value="{$element.show_value}">
|
||||||
|
{else}
|
||||||
|
{$element.data.value}
|
||||||
|
{/if}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{* {else}
|
||||||
|
<!-- No {$key} --> *}
|
||||||
|
{/if}
|
||||||
{/foreach}
|
{/foreach}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
* HISTORY:
|
* HISTORY:
|
||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
|
<!-- LOAD START //-->
|
||||||
<tr>
|
<tr>
|
||||||
<td class="edit_fgcolor_alt" class="normal">
|
<td class="edit_fgcolor_alt" class="normal">
|
||||||
Load:
|
Load:
|
||||||
@@ -20,3 +20,4 @@
|
|||||||
<input type="submit" name="archive" value="{t}Load{/t}">
|
<input type="submit" name="archive" value="{t}Load{/t}">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<!-- LOAD END //-->
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
* HISTORY:
|
* HISTORY:
|
||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
|
{if $new.seclevel_okay}
|
||||||
|
<!-- NEW START //-->
|
||||||
<tr>
|
<tr>
|
||||||
<td class="edit_fgcolor_alt" class="normal">
|
<td class="edit_fgcolor_alt" class="normal">
|
||||||
{t}Create new media:{/t}
|
{t}Create new media:{/t}
|
||||||
@@ -21,3 +22,5 @@
|
|||||||
<input type="submit" name="new" value="{$new.new_name}">
|
<input type="submit" name="new" value="{$new.new_name}">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<!-- NEW END //-->
|
||||||
|
{/if}
|
||||||
|
|||||||
@@ -7,16 +7,18 @@
|
|||||||
* HISTORY:
|
* HISTORY:
|
||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
<tr>
|
|
||||||
{if $save_delete.seclevel_okay}
|
{if $save_delete.seclevel_okay}
|
||||||
|
<tr>
|
||||||
|
<!-- SAVE START //-->
|
||||||
<td class="edit_fgcolor_alt" class="normal">
|
<td class="edit_fgcolor_alt" class="normal">
|
||||||
<input type="submit" name="save" value="{$save_delete.save}">
|
<input type="submit" name="save" value="{$save_delete.save}">
|
||||||
{if $save_delete.old_school_hidden}
|
{if $save_delete.old_school_hidden}
|
||||||
<input type="hidden" name="{$save_delete.pk_name}" value="{$save_delete.pk_value}">
|
<input type="hidden" name="{$save_delete.pk_name}" value="{$save_delete.pk_value}">
|
||||||
{/if}
|
{/if}
|
||||||
</td>
|
</td>
|
||||||
{/if}
|
<!-- SAVE END //-->
|
||||||
{if $save_delete.show_delete}
|
{if $save_delete.show_delete}
|
||||||
|
<!-- DELETE START //-->
|
||||||
<td class="edit_fgcolor_delete">
|
<td class="edit_fgcolor_delete">
|
||||||
{if !$save_delete.hide_delete_checkbox}
|
{if !$save_delete.hide_delete_checkbox}
|
||||||
<input type="checkbox" name="really_delete" value="yes"> {t}really{/t}
|
<input type="checkbox" name="really_delete" value="yes"> {t}really{/t}
|
||||||
@@ -24,9 +26,11 @@
|
|||||||
<input type="hidden" name="really_delete" value="yes">
|
<input type="hidden" name="really_delete" value="yes">
|
||||||
{/if}
|
{/if}
|
||||||
<input type="submit" name="delete" value="{t}Delete{/t}">
|
<input type="submit" name="delete" value="{t}Delete{/t}">
|
||||||
|
<!-- DELETE END //-->
|
||||||
{else}
|
{else}
|
||||||
<td class="edit_fgcolor_alt" class="normal">
|
<td class="edit_fgcolor_alt" class="normal">
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{/if}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{$HTML_TITLE}</title>
|
<title>{$HTML_TITLE}</title>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
********************************************************************
|
********************************************************************
|
||||||
*}
|
*}
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>{$HTML_TITLE}</title>
|
<title>{$HTML_TITLE}</title>
|
||||||
|
|||||||
@@ -159,9 +159,9 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.warning {
|
.warning, .warn {
|
||||||
border: 1px solid #df7700;
|
border: 1px solid #ffa947;
|
||||||
color: #d57200;
|
color: #ffa947;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -181,8 +181,8 @@ input[type="text"]:focus, textarea:focus, select:focus {
|
|||||||
margin-top: 1px;
|
margin-top: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.div_warning {
|
.div_warning, .div_warn {
|
||||||
border: 1px solid #df7700;
|
border: 1px solid #ffa947;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* borders */
|
/* borders */
|
||||||
|
|||||||
@@ -974,7 +974,7 @@ function phfo(tree)
|
|||||||
if (tree.id) {
|
if (tree.id) {
|
||||||
line += ' id="' + tree.id + '"';
|
line += ' id="' + tree.id + '"';
|
||||||
// if anything input (input, textarea, select then add name too)
|
// if anything input (input, textarea, select then add name too)
|
||||||
if (['input', 'textarea', 'select'].includes(tree.tag)) {
|
if (['input', 'textarea', 'select', 'button'].includes(tree.tag)) {
|
||||||
line += ' name="' + (tree.name ? tree.name : tree.id) + '"';
|
line += ' name="' + (tree.name ? tree.name : tree.id) + '"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1014,8 +1014,12 @@ function phfo(tree)
|
|||||||
} else if (tree.content) {
|
} else if (tree.content) {
|
||||||
content.push(tree.content);
|
content.push(tree.content);
|
||||||
}
|
}
|
||||||
// if not input close
|
// if not input, image or br, then close
|
||||||
if (tree.tag != 'input') {
|
if (
|
||||||
|
tree.tag != 'input' ||
|
||||||
|
tree.tag != 'img' ||
|
||||||
|
tree.tag != 'br'
|
||||||
|
) {
|
||||||
content.push('</' + tree.tag + '>');
|
content.push('</' + tree.tag + '>');
|
||||||
}
|
}
|
||||||
// combine to string
|
// combine to string
|
||||||
@@ -1329,11 +1333,12 @@ function createLoginRow(login_string, header_id = 'mainHeader') // eslint-disabl
|
|||||||
}
|
}
|
||||||
// clear out just in case for first entry
|
// clear out just in case for first entry
|
||||||
// fill with div name & login/logout button
|
// fill with div name & login/logout button
|
||||||
$('#loginRow').html(phfo(cel('div', '', login_string)));
|
$('#loginRow').html(phfo(cel('div', 'loginRow-name', login_string)));
|
||||||
|
$('#loginRow').append(phfo(cel('div', 'loginRow-info', '')));
|
||||||
$('#loginRow').append(phfo(
|
$('#loginRow').append(phfo(
|
||||||
aelx(
|
aelx(
|
||||||
// outer div
|
// outer div
|
||||||
cel('div'),
|
cel('div', 'loginRow-logout'),
|
||||||
// inner element
|
// inner element
|
||||||
cel('input', 'logout', '', [], {
|
cel('input', 'logout', '', [], {
|
||||||
value: __('Logout'),
|
value: __('Logout'),
|
||||||
@@ -1386,6 +1391,8 @@ function createNavMenu(nav_menu, header_id = 'mainHeader') // eslint-disable-lin
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#menuRow').html(content.join(''));
|
$('#menuRow').html(content.join(''));
|
||||||
|
} else {
|
||||||
|
$('#menuRow').hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1131,6 +1131,9 @@ class Login
|
|||||||
|
|
||||||
$html_string = (string)$this->login_template['template'];
|
$html_string = (string)$this->login_template['template'];
|
||||||
|
|
||||||
|
$locales = $this->l->parseLocale($this->l->getLocale());
|
||||||
|
$this->login_template['strings']['LANGUAGE'] = $locales['lang'] ?? 'en';
|
||||||
|
|
||||||
// if password change is okay
|
// if password change is okay
|
||||||
if ($this->password_change) {
|
if ($this->password_change) {
|
||||||
$html_string_password_change = $this->login_template['password_change'];
|
$html_string_password_change = $this->login_template['password_change'];
|
||||||
@@ -1334,7 +1337,7 @@ EOM;
|
|||||||
if (!$this->login_template['template']) {
|
if (!$this->login_template['template']) {
|
||||||
$this->login_template['template'] = <<<EOM
|
$this->login_template['template'] = <<<EOM
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="{LANGUAGE}">
|
||||||
<head>
|
<head>
|
||||||
<title>{HTML_TITLE}</title>
|
<title>{HTML_TITLE}</title>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
@@ -1617,7 +1620,7 @@ EOM;
|
|||||||
// set the locale
|
// set the locale
|
||||||
if (
|
if (
|
||||||
$this->session->checkActiveSession() === true &&
|
$this->session->checkActiveSession() === true &&
|
||||||
!empty($_SESSION['DEFAULT_LANG'])
|
!empty($_SESSION['DEFAULT_LOCALE'])
|
||||||
) {
|
) {
|
||||||
$locale = $_SESSION['DEFAULT_LOCALE'] ?? '';
|
$locale = $_SESSION['DEFAULT_LOCALE'] ?? '';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ class Basic
|
|||||||
// logging interface, Debug\Logging class
|
// logging interface, Debug\Logging class
|
||||||
/** @var \CoreLibs\Debug\Logging */
|
/** @var \CoreLibs\Debug\Logging */
|
||||||
public $log;
|
public $log;
|
||||||
/** @var\CoreLibs\Create\Session */
|
/** @var \CoreLibs\Create\Session */
|
||||||
public $session;
|
public $session;
|
||||||
|
|
||||||
// email valid checks
|
// email valid checks
|
||||||
|
|||||||
@@ -312,16 +312,17 @@ class DateTime
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* plits & checks date, wrap around for check_date function
|
* compares two dates, tries to convert them via strtotime to timestamps
|
||||||
* returns int in:
|
* returns int/bool in:
|
||||||
* -1 if the first date is smaller the last
|
* -1 if the first date is smaller the last
|
||||||
* 0 if both are equal
|
* 0 if both are equal
|
||||||
* 1 if the first date is bigger than the last
|
* 1 if the first date is bigger than the last
|
||||||
* false (bool): error
|
* false if date validation/conversion failed
|
||||||
*
|
*
|
||||||
* @param string $start_date start date string in YYYY-MM-DD
|
* @param string $start_date start date string in YYYY-MM-DD
|
||||||
* @param string $end_date end date string in YYYY-MM-DD
|
* @param string $end_date end date string in YYYY-MM-DD
|
||||||
* @return int|bool false on error, or int -1/0/1 as difference
|
* @return int|bool false on error
|
||||||
|
* or int -1 (s<e)/0 (s=e)/1 (s>e) as difference
|
||||||
*/
|
*/
|
||||||
public static function compareDate($start_date, $end_date)
|
public static function compareDate($start_date, $end_date)
|
||||||
{
|
{
|
||||||
@@ -354,16 +355,17 @@ class DateTime
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* compares the two dates + times. if seconds missing in one set,
|
* compares the two dates + times. if seconds missing in one set,
|
||||||
* add :00, converts / to -
|
* adds :00, converts date + times via strtotime to timestamps
|
||||||
* returns int/bool in:
|
* returns int/bool in:
|
||||||
* -1 if the first date is smaller the last
|
* -1 if the first date is smaller the last
|
||||||
* 0 if both are equal
|
* 0 if both are equal
|
||||||
* 1 if the first date is bigger than the last
|
* 1 if the first date is bigger than the last
|
||||||
* false if no valid date/times chould be found
|
* false if date/times validation/conversion failed
|
||||||
*
|
*
|
||||||
* @param string $start_datetime start date/time in YYYY-MM-DD HH:mm:ss
|
* @param string $start_datetime start date/time in YYYY-MM-DD HH:mm:ss
|
||||||
* @param string $end_datetime end date/time in YYYY-MM-DD HH:mm:ss
|
* @param string $end_datetime end date/time in YYYY-MM-DD HH:mm:ss
|
||||||
* @return int|bool false for error or -1/0/1 as difference
|
* @return int|bool false for error
|
||||||
|
* or -1 (s<e)/0 (s=e)/1 (s>e) as difference
|
||||||
*/
|
*/
|
||||||
public static function compareDateTime($start_datetime, $end_datetime)
|
public static function compareDateTime($start_datetime, $end_datetime)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,13 +26,16 @@ class Byte
|
|||||||
* Source Idea: SOURCE: https://programming.guide/worlds-most-copied-so-snippet.html
|
* Source Idea: SOURCE: https://programming.guide/worlds-most-copied-so-snippet.html
|
||||||
*
|
*
|
||||||
* The class itself hast the following defined
|
* The class itself hast the following defined
|
||||||
* BYTE_FORMAT_NOSPACE [1] turn off spaces between number and extension
|
* BYTE_FORMAT_NOSPACE [1] turn off spaces between number and suffix
|
||||||
* BYTE_FORMAT_ADJUST [2] use sprintf to always print two decimals
|
* BYTE_FORMAT_ADJUST [2] use sprintf to always print two decimals
|
||||||
* BYTE_FORMAT_SI [3] use si standard 1000 instead of bytes 1024
|
* BYTE_FORMAT_SI [3] use si standard 1000 instead of bytes 1024
|
||||||
* To use the constant from outside use class::CONSTANT
|
* To use the constant from outside use class::CONSTANT
|
||||||
*
|
*
|
||||||
* @param string|int|float $bytes bytes as string int or pure int
|
* @param string|int|float $bytes bytes as string int or pure int
|
||||||
* @param int $flags bitwise flag with use space turned on
|
* @param int $flags bitwise flag with use space turned on
|
||||||
|
* BYTE_FORMAT_NOSPACE: no space between number and suffix
|
||||||
|
* BYTE_FORMAT_ADJUST: sprintf adjusted two 2 decimals
|
||||||
|
* BYTE_FORMAT_SI: use 1000 instead of 1024
|
||||||
* @return string converted byte number (float) with suffix
|
* @return string converted byte number (float) with suffix
|
||||||
*/
|
*/
|
||||||
public static function humanReadableByteFormat($bytes, int $flags = 0): string
|
public static function humanReadableByteFormat($bytes, int $flags = 0): string
|
||||||
@@ -62,7 +65,7 @@ class Byte
|
|||||||
// si or normal
|
// si or normal
|
||||||
$unit = $si ? 1000 : 1024;
|
$unit = $si ? 1000 : 1024;
|
||||||
// always positive
|
// always positive
|
||||||
$abs_bytes = $bytes == PHP_INT_MIN ? PHP_INT_MAX : abs($bytes);
|
$abs_bytes = $bytes == PHP_INT_MIN ? PHP_INT_MAX : abs((float)$bytes);
|
||||||
// smaller than unit is always B
|
// smaller than unit is always B
|
||||||
if ($abs_bytes < $unit) {
|
if ($abs_bytes < $unit) {
|
||||||
return $bytes . 'B';
|
return $bytes . 'B';
|
||||||
@@ -110,6 +113,7 @@ class Byte
|
|||||||
*
|
*
|
||||||
* @param string|int|float $number any string or number to convert
|
* @param string|int|float $number any string or number to convert
|
||||||
* @param int $flags bitwise flag with use space turned on
|
* @param int $flags bitwise flag with use space turned on
|
||||||
|
* BYTE_FORMAT_SI: use 1000 instead of 1024
|
||||||
* @return string|int|float converted value or original value
|
* @return string|int|float converted value or original value
|
||||||
*/
|
*/
|
||||||
public static function stringByteFormat($number, int $flags = 0)
|
public static function stringByteFormat($number, int $flags = 0)
|
||||||
@@ -134,7 +138,7 @@ class Byte
|
|||||||
// remove all non valid characters from the number
|
// remove all non valid characters from the number
|
||||||
$number = preg_replace('/[^0-9\.]/', '', $matches[2]);
|
$number = preg_replace('/[^0-9\.]/', '', $matches[2]);
|
||||||
// final clean up and convert to float
|
// final clean up and convert to float
|
||||||
$number = (float)trim($number);
|
$number = (float)trim((string)$number);
|
||||||
// convert any mb/gb/etc to single m/b
|
// convert any mb/gb/etc to single m/b
|
||||||
$unit = preg_replace('/[^bkmgtpezy]/i', '', $matches[3]);
|
$unit = preg_replace('/[^bkmgtpezy]/i', '', $matches[3]);
|
||||||
if ($unit) {
|
if ($unit) {
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class MimeEncode
|
|||||||
string $encoding,
|
string $encoding,
|
||||||
string $line_break = "\r\n"
|
string $line_break = "\r\n"
|
||||||
): string {
|
): string {
|
||||||
|
$current_internal_encoding = mb_internal_encoding();
|
||||||
// set internal encoding, so the mimeheader encode works correctly
|
// set internal encoding, so the mimeheader encode works correctly
|
||||||
mb_internal_encoding($encoding);
|
mb_internal_encoding($encoding);
|
||||||
// if a subject, make a work around for the broken mb_mimencode
|
// if a subject, make a work around for the broken mb_mimencode
|
||||||
@@ -60,6 +61,9 @@ class MimeEncode
|
|||||||
}
|
}
|
||||||
// strip out any spaces BEFORE a line break
|
// strip out any spaces BEFORE a line break
|
||||||
$string = str_replace(" " . $line_break, $line_break, $_string);
|
$string = str_replace(" " . $line_break, $line_break, $_string);
|
||||||
|
// before we end, reset internal encoding
|
||||||
|
mb_internal_encoding($current_internal_encoding);
|
||||||
|
// return mime encoded string
|
||||||
return $string;
|
return $string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,27 +45,26 @@ class Email
|
|||||||
string $encoding = 'UTF-8',
|
string $encoding = 'UTF-8',
|
||||||
bool $kv_folding = false
|
bool $kv_folding = false
|
||||||
): string {
|
): string {
|
||||||
if (!empty($email_name)) {
|
if (empty($email_name)) {
|
||||||
// if encoding is not UTF-8 then we convert
|
|
||||||
if ($encoding != 'UTF-8') {
|
|
||||||
$email_name = mb_convert_encoding($email_name, $encoding, 'UTF-8');
|
|
||||||
}
|
|
||||||
$email_name =
|
|
||||||
mb_encode_mimeheader(
|
|
||||||
in_array($encoding, self::$encoding_kv_allowed) && $kv_folding ?
|
|
||||||
mb_convert_kana(
|
|
||||||
$email_name,
|
|
||||||
self::$mb_convert_kana_mode,
|
|
||||||
$encoding
|
|
||||||
) :
|
|
||||||
$email_name,
|
|
||||||
$encoding
|
|
||||||
);
|
|
||||||
return '"' . $email_name . '" '
|
|
||||||
. '<' . (string)$email . '>';
|
|
||||||
} else {
|
|
||||||
return $email;
|
return $email;
|
||||||
}
|
}
|
||||||
|
// if encoding is not UTF-8 then we convert
|
||||||
|
if ($encoding != 'UTF-8') {
|
||||||
|
$email_name = mb_convert_encoding($email_name, $encoding, 'UTF-8');
|
||||||
|
}
|
||||||
|
$email_name =
|
||||||
|
mb_encode_mimeheader(
|
||||||
|
in_array($encoding, self::$encoding_kv_allowed) && $kv_folding ?
|
||||||
|
mb_convert_kana(
|
||||||
|
$email_name,
|
||||||
|
self::$mb_convert_kana_mode,
|
||||||
|
$encoding
|
||||||
|
) :
|
||||||
|
$email_name,
|
||||||
|
$encoding
|
||||||
|
);
|
||||||
|
return '"' . $email_name . '" '
|
||||||
|
. '<' . (string)$email . '>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -46,21 +46,28 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
public $pk_name = ''; // the primary key from this table
|
public $pk_name = ''; // the primary key from this table
|
||||||
/** @var int|string|null */
|
/** @var int|string|null */
|
||||||
public $pk_id; // the PK id
|
public $pk_id; // the PK id
|
||||||
|
// security values
|
||||||
|
/** @var int base acl for current page */
|
||||||
|
private $base_acl_level = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor for the array io class, set the
|
* constructor for the array io class, set the
|
||||||
* primary key name automatically (from array)
|
* primary key name automatically (from array)
|
||||||
*
|
*
|
||||||
* @param array<mixed> $db_config db connection config
|
* @param array<mixed> $db_config db connection config
|
||||||
* @param array<mixed> $table_array table array config
|
* @param array<mixed> $table_array table array config
|
||||||
* @param string $table_name table name string
|
* @param string $table_name table name string
|
||||||
* @param \CoreLibs\Debug\Logging|null $log Logging class, default set if not set
|
* @param \CoreLibs\Debug\Logging|null $log Logging class, default set if not set
|
||||||
|
* @param int $base_acl_level Set base acl level, if needed
|
||||||
|
* @param int $acl_admin Flag if this is an admin ACL access level
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
array $db_config,
|
array $db_config,
|
||||||
array $table_array,
|
array $table_array,
|
||||||
string $table_name,
|
string $table_name,
|
||||||
\CoreLibs\Debug\Logging $log = null
|
\CoreLibs\Debug\Logging $log = null,
|
||||||
|
int $base_acl_level = 0,
|
||||||
|
int $acl_admin = 0
|
||||||
) {
|
) {
|
||||||
// instance db_io class
|
// instance db_io class
|
||||||
parent::__construct($db_config, $log ?? new \CoreLibs\Debug\Logging());
|
parent::__construct($db_config, $log ?? new \CoreLibs\Debug\Logging());
|
||||||
@@ -79,6 +86,7 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // set pk_name IF table_array was given
|
} // set pk_name IF table_array was given
|
||||||
|
$this->dbArrayIOSetAcl($base_acl_level, $acl_admin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -89,6 +97,33 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
parent::__destruct();
|
parent::__destruct();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set the base acl level and admin acl flag
|
||||||
|
* This is needed for table array ACL checks
|
||||||
|
* if not set I assume 0 (non write/non read/non admin)
|
||||||
|
*
|
||||||
|
* @param int $base_acl_level ACL Level from 0 to 100, -1 is not allowed
|
||||||
|
* Will sett 0 if invalid
|
||||||
|
* @param int $acl_admin 0 for non admin, 1 for admin (base acl is 100)
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function dbArrayIOSetAcl(int $base_acl_level, int $acl_admin): void
|
||||||
|
{
|
||||||
|
// default not allowed, must be 0 at least
|
||||||
|
if ($base_acl_level < 0) {
|
||||||
|
$base_acl_level = 0;
|
||||||
|
}
|
||||||
|
// only 0 or 1 allowed
|
||||||
|
if (!in_array($acl_admin, [0, 1])) {
|
||||||
|
$acl_admin = 0;
|
||||||
|
}
|
||||||
|
// if the user is admin flagged, auto set to 100, if not already set to 100
|
||||||
|
if ($acl_admin == 1) {
|
||||||
|
$base_acl_level = 100;
|
||||||
|
}
|
||||||
|
$this->base_acl_level = $base_acl_level;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* changes all previously alterd HTML code into visible one,
|
* changes all previously alterd HTML code into visible one,
|
||||||
* works for <b>,<i>, and <a> (thought <a> can be / or should
|
* works for <b>,<i>, and <a> (thought <a> can be / or should
|
||||||
@@ -191,9 +226,10 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
*
|
*
|
||||||
* @param array<mixed> $table_array optional override for table array set
|
* @param array<mixed> $table_array optional override for table array set
|
||||||
* set this as new table array too
|
* set this as new table array too
|
||||||
|
* @param boolean $acl_limit [false], if set to true, well do ACL limit check
|
||||||
* @return array<mixed> returns the table array that was deleted
|
* @return array<mixed> returns the table array that was deleted
|
||||||
*/
|
*/
|
||||||
public function dbDelete($table_array = [])
|
public function dbDelete($table_array = [], $acl_limit = false)
|
||||||
{
|
{
|
||||||
// is array and has values, override set and set new
|
// is array and has values, override set and set new
|
||||||
if (is_array($table_array) && count($table_array)) {
|
if (is_array($table_array) && count($table_array)) {
|
||||||
@@ -202,6 +238,11 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
if (!$this->dbCheckPkSet()) {
|
if (!$this->dbCheckPkSet()) {
|
||||||
return $this->table_array;
|
return $this->table_array;
|
||||||
}
|
}
|
||||||
|
if ($acl_limit === true && $this->base_acl_level < 100) {
|
||||||
|
$this->log->debug('DB DELETE ERROR', 'ACL Limit on, Delete, '
|
||||||
|
. 'but base ACL level of 100 not met: ' . $this->base_acl_level);
|
||||||
|
return $this->table_array;
|
||||||
|
}
|
||||||
// delete query
|
// delete query
|
||||||
$q = 'DELETE FROM ' . $this->table_name . ' WHERE ';
|
$q = 'DELETE FROM ' . $this->table_name . ' WHERE ';
|
||||||
$q .= $this->pk_name . ' = ' . $this->table_array[$this->pk_name]['value'] . ' ';
|
$q .= $this->pk_name . ' = ' . $this->table_array[$this->pk_name]['value'] . ' ';
|
||||||
@@ -338,10 +379,14 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
*
|
*
|
||||||
* @param boolean $addslashes old convert entities and set set escape
|
* @param boolean $addslashes old convert entities and set set escape
|
||||||
* @param array<mixed> $table_array optional table array, overwrites internal one
|
* @param array<mixed> $table_array optional table array, overwrites internal one
|
||||||
|
* @param boolean $acl_limit [false], if set to true, well do ACL limit check
|
||||||
* @return array<mixed> table array or null
|
* @return array<mixed> table array or null
|
||||||
*/
|
*/
|
||||||
public function dbWrite($addslashes = false, $table_array = [])
|
public function dbWrite(
|
||||||
{
|
bool $addslashes = false,
|
||||||
|
array $table_array = [],
|
||||||
|
bool $acl_limit = false
|
||||||
|
): array {
|
||||||
if (is_array($table_array) && count($table_array)) {
|
if (is_array($table_array) && count($table_array)) {
|
||||||
$this->table_array = $table_array;
|
$this->table_array = $table_array;
|
||||||
}
|
}
|
||||||
@@ -355,6 +400,12 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
} else {
|
} else {
|
||||||
$insert = 0;
|
$insert = 0;
|
||||||
}
|
}
|
||||||
|
// early abort for new write with not enough ACL level
|
||||||
|
if ($insert && $acl_limit === true && $this->base_acl_level < 100) {
|
||||||
|
$this->log->debug('DB WRITE ERROR', 'ACL Limit on, Insert, '
|
||||||
|
. 'but base ACL level of 100 not met: ' . $this->base_acl_level);
|
||||||
|
return $this->table_array;
|
||||||
|
}
|
||||||
|
|
||||||
reset($this->table_array);
|
reset($this->table_array);
|
||||||
$q_data = '';
|
$q_data = '';
|
||||||
@@ -408,11 +459,25 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
/********************************* END FILE **************************************/
|
/********************************* END FILE **************************************/
|
||||||
|
|
||||||
// do not write 'pk' (primary key) or 'view' values
|
// do not write 'pk' (primary key) or 'view' values
|
||||||
|
// also do not write UPDATE for elements that are
|
||||||
|
// acl flagged, not if we have an ACL limiter, don't insert
|
||||||
|
// $this->log->debug('DB WRITE', 'C: ' . $column . ', '
|
||||||
|
// . 'ACL Level ' . $this->log->prBl($acl_limit) . ', '
|
||||||
|
// . 'TA ACL: ' . ($this->table_array[$column]['min_edit_acl'] ?? 100) . ', '
|
||||||
|
// . 'Base ACL: ' . $this->base_acl_level);
|
||||||
if (
|
if (
|
||||||
!isset($this->table_array[$column]['pk']) &&
|
!isset($this->table_array[$column]['pk']) &&
|
||||||
isset($this->table_array[$column]['type']) &&
|
isset($this->table_array[$column]['type']) &&
|
||||||
$this->table_array[$column]['type'] != 'view' &&
|
$this->table_array[$column]['type'] != 'view' &&
|
||||||
strlen($column) > 0
|
strlen($column) > 0 &&
|
||||||
|
// no acl limiter
|
||||||
|
($acl_limit === false ||
|
||||||
|
(
|
||||||
|
// acl limit is true, min edit must be at larger than set
|
||||||
|
$acl_limit === true &&
|
||||||
|
$this->base_acl_level >=
|
||||||
|
($this->table_array[$column]['min_edit_acl'] ?? 100)
|
||||||
|
))
|
||||||
) {
|
) {
|
||||||
// for password use hidden value if main is not set
|
// for password use hidden value if main is not set
|
||||||
if (
|
if (
|
||||||
@@ -510,6 +575,11 @@ class ArrayIO extends \CoreLibs\DB\IO
|
|||||||
}
|
}
|
||||||
} // while ...
|
} // while ...
|
||||||
|
|
||||||
|
if (empty($q_data)) {
|
||||||
|
$this->log->debug('DB WRITE ERROR', 'No data to write, possible through ACL');
|
||||||
|
return $this->table_array;
|
||||||
|
}
|
||||||
|
|
||||||
// NOW get PK, and FK settings (FK only for update query)
|
// NOW get PK, and FK settings (FK only for update query)
|
||||||
// get it at the end, cause now we can be more sure of no double IDs, etc
|
// get it at the end, cause now we can be more sure of no double IDs, etc
|
||||||
reset($this->table_array);
|
reset($this->table_array);
|
||||||
|
|||||||
@@ -1481,19 +1481,29 @@ class IO
|
|||||||
* @param string $string string to escape
|
* @param string $string string to escape
|
||||||
* @return string escaped string
|
* @return string escaped string
|
||||||
*/
|
*/
|
||||||
public function dbEscapeIdentifier($string): string
|
public function dbEscapeIdentifier(string $string): string
|
||||||
{
|
{
|
||||||
return $this->db_functions->__dbEscapeIdentifier($string);
|
return $this->db_functions->__dbEscapeIdentifier($string);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* escape data for writing to bytea type column field
|
* escape data for writing to bytea type column field
|
||||||
* @param string $bytea bytea to escape
|
* @param string $data data to escape to bytea
|
||||||
* @return string escaped bytea
|
* @return string escaped bytea string
|
||||||
*/
|
*/
|
||||||
public function dbEscapeBytea($bytea)
|
public function dbEscapeBytea(string $data): string
|
||||||
{
|
{
|
||||||
return $this->db_functions->__dbEscapeBytea($bytea);
|
return $this->db_functions->__dbEscapeBytea($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unescape bytea data back to normal binrary data
|
||||||
|
* @param string $bytea bytea data stream
|
||||||
|
* @return string binary data string
|
||||||
|
*/
|
||||||
|
public function dbUnescapeBytea(string $bytea): string
|
||||||
|
{
|
||||||
|
return $this->db_functions->__dbUnescapeBytea($bytea);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1811,6 +1821,7 @@ class IO
|
|||||||
|
|
||||||
// if cursor exists ...
|
// if cursor exists ...
|
||||||
if ($this->cursor_ext[$query_hash]['cursor']) {
|
if ($this->cursor_ext[$query_hash]['cursor']) {
|
||||||
|
/** @phpstan-ignore-next-line claims this is always false, but can be true */
|
||||||
if ($first_call === true) {
|
if ($first_call === true) {
|
||||||
$this->cursor_ext[$query_hash]['log'][] = 'First call';
|
$this->cursor_ext[$query_hash]['log'][] = 'First call';
|
||||||
// count the rows returned (if select)
|
// count the rows returned (if select)
|
||||||
@@ -2195,7 +2206,7 @@ class IO
|
|||||||
public function dbGetQueryCalled(string $query): int
|
public function dbGetQueryCalled(string $query): int
|
||||||
{
|
{
|
||||||
$query_hash = $this->dbGetQueryHash($query);
|
$query_hash = $this->dbGetQueryHash($query);
|
||||||
if ($this->query_called[$query_hash]) {
|
if (!empty($this->query_called[$query_hash])) {
|
||||||
return $this->query_called[$query_hash];
|
return $this->query_called[$query_hash];
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -2580,9 +2591,9 @@ class IO
|
|||||||
// loop through the write array and each field to build the query
|
// loop through the write array and each field to build the query
|
||||||
foreach ($write_array as $field) {
|
foreach ($write_array as $field) {
|
||||||
if (
|
if (
|
||||||
(empty($primary_key['value']) ||
|
(
|
||||||
(!empty($primary_key['value']) &&
|
empty($primary_key['value']) ||
|
||||||
!in_array($field, $not_write_update_array))
|
!in_array($field, $not_write_update_array)
|
||||||
) &&
|
) &&
|
||||||
!in_array($field, $not_write_array)
|
!in_array($field, $not_write_array)
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -559,15 +559,26 @@ class PgSQL implements \CoreLibs\DB\SQL\SqlInterface\SqlFunctions
|
|||||||
/**
|
/**
|
||||||
* wrapper for pg_escape_byte
|
* wrapper for pg_escape_byte
|
||||||
*
|
*
|
||||||
* @param string $bytea bytea data stream
|
* @param string $data data stream
|
||||||
* @return string escaped bytea string
|
* @return string escaped bytea string
|
||||||
*/
|
*/
|
||||||
public function __dbEscapeBytea(string $bytea): string
|
public function __dbEscapeBytea(string $data): string
|
||||||
{
|
{
|
||||||
if ($this->dbh === false || is_bool($this->dbh)) {
|
if ($this->dbh === false || is_bool($this->dbh)) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
return pg_escape_bytea($this->dbh, $bytea);
|
return pg_escape_bytea($this->dbh, $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unescape bytea data from postgesql
|
||||||
|
*
|
||||||
|
* @param string $bytea Bytea data stream
|
||||||
|
* @return string Unescaped bytea data
|
||||||
|
*/
|
||||||
|
public function __dbUnescapeBytea(string $bytea): string
|
||||||
|
{
|
||||||
|
return pg_unescape_bytea($bytea);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -779,7 +790,6 @@ class PgSQL implements \CoreLibs\DB\SQL\SqlInterface\SqlFunctions
|
|||||||
}
|
}
|
||||||
// get result
|
// get result
|
||||||
$db_schema = $this->__dbFetchArray($cursor, PGSQL_ASSOC);
|
$db_schema = $this->__dbFetchArray($cursor, PGSQL_ASSOC);
|
||||||
/** @phpstan-ignore-next-line Cannot access offset string on array|bool */
|
|
||||||
return $db_schema[$show_string] ?? '';
|
return $db_schema[$show_string] ?? '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -806,7 +816,6 @@ class PgSQL implements \CoreLibs\DB\SQL\SqlInterface\SqlFunctions
|
|||||||
}
|
}
|
||||||
// check if schema does not exists
|
// check if schema does not exists
|
||||||
$row = $this->__dbFetchArray($cursor, PGSQL_ASSOC);
|
$row = $this->__dbFetchArray($cursor, PGSQL_ASSOC);
|
||||||
/** @phpstan-ignore-next-line */
|
|
||||||
if (empty($row['exists']) || $row['exists'] == 'f') {
|
if (empty($row['exists']) || $row['exists'] == 'f') {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,10 +214,18 @@ interface SqlFunctions
|
|||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @param string $bytea
|
* @param string $data
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function __dbEscapeBytea(string $bytea): string;
|
public function __dbEscapeBytea(string $data): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @param string $bytea
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function __dbUnescapeBytea(string $bytea): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ class Logging
|
|||||||
|
|
||||||
// can be overridden with basicSetLogFileId later
|
// can be overridden with basicSetLogFileId later
|
||||||
if (!empty($this->options['file_id'])) {
|
if (!empty($this->options['file_id'])) {
|
||||||
$this->setLogId($this->options['file_id'] ?? '');
|
$this->setLogId($this->options['file_id']);
|
||||||
} elseif (!empty($GLOBALS['LOG_FILE_ID'])) {
|
} elseif (!empty($GLOBALS['LOG_FILE_ID'])) {
|
||||||
// legacy flow, should be removed and only set via options
|
// legacy flow, should be removed and only set via options
|
||||||
$this->setLogId($GLOBALS['LOG_FILE_ID']);
|
$this->setLogId($GLOBALS['LOG_FILE_ID']);
|
||||||
|
|||||||
@@ -270,9 +270,11 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
public $save;
|
public $save;
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public $remove_button;
|
public $remove_button;
|
||||||
// security publics
|
// security values
|
||||||
/** @var int */
|
/** @var int base acl for current page */
|
||||||
public $base_acl_level;
|
private $base_acl_level = 0;
|
||||||
|
/** @var int admin master flag (1/0) */
|
||||||
|
private $acl_admin = 0;
|
||||||
/** @var array<mixed> */
|
/** @var array<mixed> */
|
||||||
public $security_level;
|
public $security_level;
|
||||||
// layout publics
|
// layout publics
|
||||||
@@ -336,6 +338,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
// load config array
|
// load config array
|
||||||
// get table array definitions for current page name
|
// get table array definitions for current page name
|
||||||
|
|
||||||
|
// security settings
|
||||||
|
$this->base_acl_level = (int)$_SESSION['BASE_ACL_LEVEL'];
|
||||||
|
$this->acl_admin = (int)$_SESSION['ADMIN'];
|
||||||
|
$GLOBALS['base_acl_level'] = $this->base_acl_level;
|
||||||
|
$GLOBALS['acl_admin'] = $this->acl_admin;
|
||||||
|
|
||||||
// first check if we have a in page override as $table_arrays[page name]
|
// first check if we have a in page override as $table_arrays[page name]
|
||||||
if (
|
if (
|
||||||
/* isset($GLOBALS['table_arrays']) &&
|
/* isset($GLOBALS['table_arrays']) &&
|
||||||
@@ -348,7 +356,8 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
// $config_array = $GLOBALS['table_arrays'][System::getPageName(1)];
|
// $config_array = $GLOBALS['table_arrays'][System::getPageName(1)];
|
||||||
$config_array = $table_arrays[System::getPageName(1)];
|
$config_array = $table_arrays[System::getPageName(1)];
|
||||||
} else {
|
} else {
|
||||||
// WARNING: auto spl load does not work with this as it is an array and not a function/object
|
// WARNING: auto spl load does not work with this as it is an array
|
||||||
|
// and not a function/object
|
||||||
// check if this is the old path or the new path
|
// check if this is the old path or the new path
|
||||||
// check local folder in current path
|
// check local folder in current path
|
||||||
// then check general global folder
|
// then check general global folder
|
||||||
@@ -383,8 +392,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$db_config,
|
$db_config,
|
||||||
$config_array['table_array'],
|
$config_array['table_array'],
|
||||||
$config_array['table_name'],
|
$config_array['table_name'],
|
||||||
$log ?? new \CoreLibs\Debug\Logging()
|
$log ?? new \CoreLibs\Debug\Logging(),
|
||||||
|
// set the ACL
|
||||||
|
$this->base_acl_level,
|
||||||
|
$this->acl_admin
|
||||||
);
|
);
|
||||||
|
// $this->log->debug('SESSION FORM', 'sessin: ' . $this->log->prAr($_SESSION));
|
||||||
// here should be a check if the config_array is correct ...
|
// here should be a check if the config_array is correct ...
|
||||||
if (isset($config_array['show_fields']) && is_array($config_array['show_fields'])) {
|
if (isset($config_array['show_fields']) && is_array($config_array['show_fields'])) {
|
||||||
$this->field_array = $config_array['show_fields'];
|
$this->field_array = $config_array['show_fields'];
|
||||||
@@ -392,6 +405,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
if (isset($config_array['load_query']) && $config_array['load_query']) {
|
if (isset($config_array['load_query']) && $config_array['load_query']) {
|
||||||
$this->load_query = $config_array['load_query'];
|
$this->load_query = $config_array['load_query'];
|
||||||
}
|
}
|
||||||
|
if (empty($this->load_query)) {
|
||||||
|
$this->log->debug('INIT ERROR', 'Missing Load Query for: ' . $this->my_page_name);
|
||||||
|
}
|
||||||
$this->archive_pk_name = 'a_' . $this->pk_name;
|
$this->archive_pk_name = 'a_' . $this->pk_name;
|
||||||
$this->col_name = str_replace('_id', '', $this->pk_name);
|
$this->col_name = str_replace('_id', '', $this->pk_name);
|
||||||
$this->int_pk_name = $this->pk_name;
|
$this->int_pk_name = $this->pk_name;
|
||||||
@@ -416,8 +432,6 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$this->save = $_POST['save'] ?? '';
|
$this->save = $_POST['save'] ?? '';
|
||||||
$this->remove_button = $_POST['remove_button'] ?? '';
|
$this->remove_button = $_POST['remove_button'] ?? '';
|
||||||
|
|
||||||
// security settings
|
|
||||||
$this->base_acl_level = $_SESSION['BASE_ACL_LEVEL'] ?? 0;
|
|
||||||
// security levels for buttons/actions
|
// security levels for buttons/actions
|
||||||
// if array does not exists create basic
|
// if array does not exists create basic
|
||||||
if (
|
if (
|
||||||
@@ -428,9 +442,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
$this->security_level = [
|
$this->security_level = [
|
||||||
'load' => 100,
|
'load' => 20,
|
||||||
'new' => 100,
|
'new' => 100,
|
||||||
'save' => 100,
|
'save' => 40,
|
||||||
'delete' => 100
|
'delete' => 100
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
@@ -438,9 +452,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$this->security_level = isset($config_array['security_level']) ?
|
$this->security_level = isset($config_array['security_level']) ?
|
||||||
$config_array['security_level'] :
|
$config_array['security_level'] :
|
||||||
[
|
[
|
||||||
'load' => 100,
|
'load' => 20,
|
||||||
'new' => 100,
|
'new' => 100,
|
||||||
'save' => 100,
|
'save' => 40,
|
||||||
'delete' => 100
|
'delete' => 100
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -489,8 +503,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
* @param string|null $key_value value to match to (optional)
|
* @param string|null $key_value value to match to (optional)
|
||||||
* @return string|null returns key found or empty string
|
* @return string|null returns key found or empty string
|
||||||
*/
|
*/
|
||||||
public function formGetColNameFromKey(string $want_key, ?string $key_value = null): ?string
|
public function formGetColNameFromKey(
|
||||||
{
|
string $want_key,
|
||||||
|
?string $key_value = null
|
||||||
|
): ?string {
|
||||||
if (!is_array($this->table_array)) {
|
if (!is_array($this->table_array)) {
|
||||||
$this->table_array = [];
|
$this->table_array = [];
|
||||||
}
|
}
|
||||||
@@ -513,8 +529,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
* @param string|null $key_value if set searches for special right value
|
* @param string|null $key_value if set searches for special right value
|
||||||
* @return array<mixed> found key fields
|
* @return array<mixed> found key fields
|
||||||
*/
|
*/
|
||||||
public function formGetColNameArrayFromKey(string $want_key, ?string $key_value = null): array
|
public function formGetColNameArrayFromKey(
|
||||||
{
|
string $want_key,
|
||||||
|
?string $key_value = null
|
||||||
|
): array {
|
||||||
$key_array = [];
|
$key_array = [];
|
||||||
if (!is_array($this->table_array)) {
|
if (!is_array($this->table_array)) {
|
||||||
$this->table_array = [];
|
$this->table_array = [];
|
||||||
@@ -648,8 +666,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
* @param array<mixed> $remove_name key names that should be removed
|
* @param array<mixed> $remove_name key names that should be removed
|
||||||
* @return void has no return
|
* @return void has no return
|
||||||
*/
|
*/
|
||||||
public function formProcedureDeleteFromElementList(array $element_list, array $remove_name): void
|
public function formProcedureDeleteFromElementList(
|
||||||
{
|
array $element_list,
|
||||||
|
array $remove_name
|
||||||
|
): void {
|
||||||
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
|
/** @phan-suppress-next-line PhanTypeArraySuspiciousNullable */
|
||||||
$this->log->debug('REMOVE ELEMENT', 'Remove REF ELEMENT: ' . $this->base_acl_level . ' >= '
|
$this->log->debug('REMOVE ELEMENT', 'Remove REF ELEMENT: ' . $this->base_acl_level . ' >= '
|
||||||
. $this->security_level['delete']);
|
. $this->security_level['delete']);
|
||||||
@@ -752,55 +772,72 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$t_pk_name = '';
|
$t_pk_name = '';
|
||||||
$pk_names = [];
|
$pk_names = [];
|
||||||
$pk_ids = [];
|
$pk_ids = [];
|
||||||
|
$seclevel_okay = false;
|
||||||
|
// for error abort only
|
||||||
|
$return_array = [
|
||||||
|
't_pk_name' => $t_pk_name,
|
||||||
|
'pk_ids' => $pk_ids,
|
||||||
|
'pk_names' => $pk_names,
|
||||||
|
'pk_selected' => $pk_selected,
|
||||||
|
'seclevel_okay' => $seclevel_okay,
|
||||||
|
];
|
||||||
// when security level is okay ...
|
// when security level is okay ...
|
||||||
if (
|
if (
|
||||||
isset($this->security_level['load']) &&
|
empty($this->security_level['load']) ||
|
||||||
$this->base_acl_level >= $this->security_level['load']
|
$this->base_acl_level < $this->security_level['load']
|
||||||
) {
|
) {
|
||||||
$t_pk_name = $this->archive_pk_name;
|
return $return_array;
|
||||||
|
}
|
||||||
|
if (empty($this->load_query)) {
|
||||||
|
$this->log->debug('LOAD LIST ERROR', 'Missing load list query');
|
||||||
|
return $return_array;
|
||||||
|
}
|
||||||
|
|
||||||
// load list data
|
$t_pk_name = $this->archive_pk_name;
|
||||||
$this->dbExec($this->load_query);
|
|
||||||
while (is_array($res = $this->dbFetchArray())) {
|
// load list data
|
||||||
$pk_ids[] = $res[$this->int_pk_name];
|
$this->dbExec($this->load_query);
|
||||||
if (
|
while (is_array($res = $this->dbFetchArray())) {
|
||||||
isset($this->table_array[$this->int_pk_name]['value']) &&
|
$pk_ids[] = $res[$this->int_pk_name];
|
||||||
$res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]['value']
|
if (
|
||||||
) {
|
isset($this->table_array[$this->int_pk_name]['value']) &&
|
||||||
$pk_selected = $res[$this->int_pk_name];
|
$res[$this->int_pk_name] == $this->table_array[$this->int_pk_name]['value']
|
||||||
}
|
) {
|
||||||
$t_string = '';
|
$pk_selected = $res[$this->int_pk_name];
|
||||||
foreach ($this->field_array as $i => $field_array) {
|
|
||||||
if ($t_string) {
|
|
||||||
$t_string .= ', ';
|
|
||||||
}
|
|
||||||
if (isset($field_array['before_value'])) {
|
|
||||||
$t_string .= $field_array['before_value'];
|
|
||||||
}
|
|
||||||
// must have res element set
|
|
||||||
if (
|
|
||||||
isset($field_array['name']) &&
|
|
||||||
isset($res[$field_array['name']])
|
|
||||||
) {
|
|
||||||
if (isset($field_array['binary'])) {
|
|
||||||
if (isset($field_array['binary'][0])) {
|
|
||||||
$t_string .= $field_array['binary'][0];
|
|
||||||
} elseif (isset($field_array['binary'][1])) {
|
|
||||||
$t_string .= $field_array['binary'][1];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$t_string .= $res[$field_array['name']];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$pk_names[] = $t_string;
|
|
||||||
}
|
}
|
||||||
} // show it at all
|
$t_string = '';
|
||||||
|
foreach ($this->field_array as $i => $field_array) {
|
||||||
|
if ($t_string) {
|
||||||
|
$t_string .= ', ';
|
||||||
|
}
|
||||||
|
if (isset($field_array['before_value'])) {
|
||||||
|
$t_string .= $field_array['before_value'];
|
||||||
|
}
|
||||||
|
// must have res element set
|
||||||
|
if (
|
||||||
|
isset($field_array['name']) &&
|
||||||
|
isset($res[$field_array['name']])
|
||||||
|
) {
|
||||||
|
if (isset($field_array['binary'])) {
|
||||||
|
if (isset($field_array['binary'][0])) {
|
||||||
|
$t_string .= $field_array['binary'][0];
|
||||||
|
} elseif (isset($field_array['binary'][1])) {
|
||||||
|
$t_string .= $field_array['binary'][1];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$t_string .= $res[$field_array['name']];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$pk_names[] = $t_string;
|
||||||
|
}
|
||||||
|
$seclevel_okay = true;
|
||||||
return [
|
return [
|
||||||
't_pk_name' => $t_pk_name,
|
't_pk_name' => $t_pk_name,
|
||||||
'pk_ids' => $pk_ids,
|
'pk_ids' => $pk_ids,
|
||||||
'pk_names' => $pk_names,
|
'pk_names' => $pk_names,
|
||||||
'pk_selected' => $pk_selected
|
'pk_selected' => $pk_selected,
|
||||||
|
'seclevel_okay' => $seclevel_okay,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -808,30 +845,38 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
* Create new entry element for HTML output
|
* Create new entry element for HTML output
|
||||||
*
|
*
|
||||||
* @param bool $hide_new_checkbox show or hide the new checkbox, default is false
|
* @param bool $hide_new_checkbox show or hide the new checkbox, default is false
|
||||||
* @return array<string,string|int> return the new create array with name & checkbox show flag
|
* @return array<string,string|bool> return the new create array with name & checkbox show flag
|
||||||
*/
|
*/
|
||||||
public function formCreateNew($hide_new_checkbox = false): array
|
public function formCreateNew(bool $hide_new_checkbox = false): array
|
||||||
{
|
{
|
||||||
$show_checkbox = 0;
|
$show_checkbox = false;
|
||||||
$new_name = '';
|
$new_name = '';
|
||||||
|
$seclevel_okay = false;
|
||||||
// when security level is okay
|
// when security level is okay
|
||||||
if (
|
if (
|
||||||
isset($this->security_level['new']) &&
|
empty($this->security_level['new']) ||
|
||||||
$this->base_acl_level >= $this->security_level['new']
|
$this->base_acl_level < $this->security_level['new']
|
||||||
) {
|
) {
|
||||||
if ($this->yes && !$hide_new_checkbox) {
|
return [
|
||||||
$show_checkbox = 1;
|
'new_name' => $new_name,
|
||||||
}
|
'show_checkbox' => $show_checkbox,
|
||||||
// set type of new name
|
'seclevel_okay' => $seclevel_okay,
|
||||||
if ($this->yes) {
|
];
|
||||||
$new_name = $this->l->__('Clear all and create new');
|
}
|
||||||
} else {
|
if ($this->yes && !$hide_new_checkbox) {
|
||||||
$new_name = $this->l->__('New');
|
$show_checkbox = false;
|
||||||
}
|
}
|
||||||
} // security level okay
|
// set type of new name
|
||||||
|
if ($this->yes) {
|
||||||
|
$new_name = $this->l->__('Clear all and create new');
|
||||||
|
} else {
|
||||||
|
$new_name = $this->l->__('New');
|
||||||
|
}
|
||||||
|
$seclevel_okay = true;
|
||||||
return [
|
return [
|
||||||
'new_name' => $new_name,
|
'new_name' => $new_name,
|
||||||
'show_checkbox' => $show_checkbox
|
'show_checkbox' => $show_checkbox,
|
||||||
|
'seclevel_okay' => $seclevel_okay,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -842,42 +887,57 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
* @return array<string,mixed> return the hide/show delete framework
|
* @return array<string,mixed> return the hide/show delete framework
|
||||||
* for html creation
|
* for html creation
|
||||||
*/
|
*/
|
||||||
public function formCreateSaveDelete($hide_delete = false, $hide_delete_checkbox = false): array
|
public function formCreateSaveDelete(
|
||||||
{
|
bool $hide_delete = false,
|
||||||
$seclevel_okay = 0;
|
bool $hide_delete_checkbox = false,
|
||||||
|
bool $old_school_hidden = false
|
||||||
|
): array {
|
||||||
|
$seclevel_okay = false;
|
||||||
$save = '';
|
$save = '';
|
||||||
$pk_name = '';
|
$pk_name = '';
|
||||||
$pk_value = '';
|
$pk_value = '';
|
||||||
$show_delete = 0;
|
$show_delete = false;
|
||||||
$old_school_hidden = 0;
|
|
||||||
if (
|
if (
|
||||||
(isset($this->security_level['save']) &&
|
(empty($this->security_level['save']) ||
|
||||||
$this->base_acl_level >= $this->security_level['save']) ||
|
$this->base_acl_level < $this->security_level['save']) &&
|
||||||
(isset($this->security_level['delete']) &&
|
(empty($this->security_level['delete']) ||
|
||||||
$this->base_acl_level >= $this->security_level['delete'])
|
$this->base_acl_level < $this->security_level['delete'])
|
||||||
) {
|
) {
|
||||||
if ($this->base_acl_level >= $this->security_level['save']) {
|
return [
|
||||||
$seclevel_okay = 1;
|
'seclevel_okay' => $seclevel_okay,
|
||||||
if (empty($this->table_array[$this->int_pk_name]['value'])) {
|
'save' => $save,
|
||||||
$save = $this->l->__('Save');
|
'pk_name' => $pk_name,
|
||||||
} else {
|
'pk_value' => $pk_value,
|
||||||
$save = $this->l->__('Update');
|
'show_delete' => $show_delete,
|
||||||
}
|
'old_school_hidden' => $old_school_hidden,
|
||||||
// print the old_school hidden if requestet
|
'hide_delete_checkbox' => $hide_delete_checkbox
|
||||||
if ($old_school_hidden == 1) { /** @phpstan-ignore-line Unclear logic */
|
];
|
||||||
$pk_name = $this->int_pk_name;
|
}
|
||||||
$pk_value = $this->table_array[$this->int_pk_name]['value'];
|
if (
|
||||||
}
|
!empty($this->security_level['save']) &&
|
||||||
} // show save part
|
$this->base_acl_level >= $this->security_level['save']
|
||||||
// show delete part only if pk is set && we want to see the delete
|
) {
|
||||||
if (
|
$seclevel_okay = true;
|
||||||
!empty($this->table_array[$this->int_pk_name]['value']) &&
|
if (empty($this->table_array[$this->int_pk_name]['value'])) {
|
||||||
!$hide_delete &&
|
$save = $this->l->__('Save');
|
||||||
$this->base_acl_level >= $this->security_level['delete']
|
} else {
|
||||||
) {
|
$save = $this->l->__('Update');
|
||||||
$show_delete = 1;
|
|
||||||
}
|
}
|
||||||
} // print save/delete row at all$
|
// print the old_school hidden if requestet
|
||||||
|
if ($old_school_hidden === true) {
|
||||||
|
$pk_name = $this->int_pk_name;
|
||||||
|
$pk_value = $this->table_array[$this->int_pk_name]['value'];
|
||||||
|
}
|
||||||
|
} // show save part
|
||||||
|
// show delete part only if pk is set && we want to see the delete
|
||||||
|
if (
|
||||||
|
!empty($this->table_array[$this->int_pk_name]['value']) &&
|
||||||
|
!$hide_delete &&
|
||||||
|
!empty($this->security_level['delete']) &&
|
||||||
|
$this->base_acl_level >= $this->security_level['delete']
|
||||||
|
) {
|
||||||
|
$show_delete = true;
|
||||||
|
}
|
||||||
return [
|
return [
|
||||||
'seclevel_okay' => $seclevel_okay,
|
'seclevel_okay' => $seclevel_okay,
|
||||||
'save' => $save,
|
'save' => $save,
|
||||||
@@ -921,11 +981,16 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
}
|
}
|
||||||
// create right side depending on 'definiton' in table_array
|
// create right side depending on 'definiton' in table_array
|
||||||
$type = $this->table_array[$element_name]['type'];
|
$type = $this->table_array[$element_name]['type'];
|
||||||
|
// set default min edit/read to 100 (admin)
|
||||||
|
$min_edit_acl = $this->table_array[$element_name]['min_edit_acl'] ?? 100;
|
||||||
|
$min_show_acl = $this->table_array[$element_name]['min_show_acl'] ?? 100;
|
||||||
|
$show_value = '-';
|
||||||
// view only output
|
// view only output
|
||||||
if ($this->table_array[$element_name]['type'] == 'view') {
|
if ($this->table_array[$element_name]['type'] == 'view') {
|
||||||
$data['value'] = empty($this->table_array[$element_name]['value']) ?
|
$data['value'] = empty($this->table_array[$element_name]['value']) ?
|
||||||
$this->table_array[$element_name]['empty'] :
|
$this->table_array[$element_name]['empty'] :
|
||||||
$this->table_array[$element_name]['value'];
|
$this->table_array[$element_name]['value'];
|
||||||
|
$show_value = $data['value'];
|
||||||
}
|
}
|
||||||
// binary true/false element
|
// binary true/false element
|
||||||
if ($this->table_array[$element_name]['type'] == 'binary') {
|
if ($this->table_array[$element_name]['type'] == 'binary') {
|
||||||
@@ -940,6 +1005,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
(!$i && !$this->table_array[$element_name]['value']))
|
(!$i && !$this->table_array[$element_name]['value']))
|
||||||
) {
|
) {
|
||||||
$data['checked'] = $this->table_array[$element_name]['value'];
|
$data['checked'] = $this->table_array[$element_name]['value'];
|
||||||
|
$show_value = $this->table_array[$element_name]['element_list'][$i] ?? $data['checked'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($i) {
|
if ($i) {
|
||||||
@@ -952,6 +1018,9 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$data['name'] = $element_name;
|
$data['name'] = $element_name;
|
||||||
$data['value'][] = $this->table_array[$element_name]['element_list'];
|
$data['value'][] = $this->table_array[$element_name]['element_list'];
|
||||||
$data['checked'] = $this->table_array[$element_name]['value'];
|
$data['checked'] = $this->table_array[$element_name]['value'];
|
||||||
|
// array map element list + value
|
||||||
|
// foreach ($data['checked'] as $checked)
|
||||||
|
$show_value = join(', ', $data['checked']);
|
||||||
}
|
}
|
||||||
// normal text element
|
// normal text element
|
||||||
if ($this->table_array[$element_name]['type'] == 'text') {
|
if ($this->table_array[$element_name]['type'] == 'text') {
|
||||||
@@ -959,6 +1028,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
||||||
$data['size'] = $this->table_array[$element_name]['size'] ?? '';
|
$data['size'] = $this->table_array[$element_name]['size'] ?? '';
|
||||||
$data['length'] = $this->table_array[$element_name]['length'] ?? '';
|
$data['length'] = $this->table_array[$element_name]['length'] ?? '';
|
||||||
|
$show_value = $data['value'];
|
||||||
}
|
}
|
||||||
// password element, does not write back the value
|
// password element, does not write back the value
|
||||||
if ($this->table_array[$element_name]['type'] == 'password') {
|
if ($this->table_array[$element_name]['type'] == 'password') {
|
||||||
@@ -971,11 +1041,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
if ($this->table_array[$element_name]['type'] == 'date') {
|
if ($this->table_array[$element_name]['type'] == 'date') {
|
||||||
$data['name'] = $element_name;
|
$data['name'] = $element_name;
|
||||||
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
||||||
|
$show_value = $data['value'];
|
||||||
}
|
}
|
||||||
// date time (no sec) (YYYY-MM-DD HH:mm)
|
// date time (no sec) (YYYY-MM-DD HH:mm)
|
||||||
if ($this->table_array[$element_name]['type'] == 'datetime') {
|
if ($this->table_array[$element_name]['type'] == 'datetime') {
|
||||||
$data['name'] = $element_name;
|
$data['name'] = $element_name;
|
||||||
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
||||||
|
$show_value = $data['value'];
|
||||||
}
|
}
|
||||||
// textarea
|
// textarea
|
||||||
if ($this->table_array[$element_name]['type'] == 'textarea') {
|
if ($this->table_array[$element_name]['type'] == 'textarea') {
|
||||||
@@ -983,6 +1055,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
$data['value'] = $this->table_array[$element_name]['value'] ?? '';
|
||||||
$data['rows'] = $this->table_array[$element_name]['rows'] ?? '';
|
$data['rows'] = $this->table_array[$element_name]['rows'] ?? '';
|
||||||
$data['cols'] = $this->table_array[$element_name]['cols'] ?? '';
|
$data['cols'] = $this->table_array[$element_name]['cols'] ?? '';
|
||||||
|
$show_value = $data['value'];
|
||||||
}
|
}
|
||||||
// for drop_down_*
|
// for drop_down_*
|
||||||
if (preg_match("/^drop_down_/", $this->table_array[$element_name]['type'])) {
|
if (preg_match("/^drop_down_/", $this->table_array[$element_name]['type'])) {
|
||||||
@@ -1047,6 +1120,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$this->table_array[$element_name]['value'] == $res[0]
|
$this->table_array[$element_name]['value'] == $res[0]
|
||||||
) {
|
) {
|
||||||
$data['selected'] = $this->table_array[$element_name]['value'];
|
$data['selected'] = $this->table_array[$element_name]['value'];
|
||||||
|
$show_value = $res[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// for _input put additional field next to drop down
|
// for _input put additional field next to drop down
|
||||||
@@ -1079,6 +1153,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$data['output'][] = $value;
|
$data['output'][] = $value;
|
||||||
if ($this->table_array[$element_name]['value'] == $key) {
|
if ($this->table_array[$element_name]['value'] == $key) {
|
||||||
$data['selected'] = $this->table_array[$element_name]['value'];
|
$data['selected'] = $this->table_array[$element_name]['value'];
|
||||||
|
$show_value = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1093,6 +1168,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$data['output'][] = $value;
|
$data['output'][] = $value;
|
||||||
if ($this->table_array[$element_name]['value'] == $key) {
|
if ($this->table_array[$element_name]['value'] == $key) {
|
||||||
$data['checked'] = $this->table_array[$element_name]['value'];
|
$data['checked'] = $this->table_array[$element_name]['value'];
|
||||||
|
$show_value = $value;
|
||||||
}
|
}
|
||||||
$data['separator'] = '';
|
$data['separator'] = '';
|
||||||
}
|
}
|
||||||
@@ -1126,7 +1202,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
'output_name' => $output_name,
|
'output_name' => $output_name,
|
||||||
'color' => $EDIT_FGCOLOR_T,
|
'color' => $EDIT_FGCOLOR_T,
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'data' => $data
|
'data' => $data,
|
||||||
|
'show_value' => $show_value,
|
||||||
|
'allow_edit' => $this->base_acl_level >= $min_edit_acl ? 1 : 0,
|
||||||
|
'allow_show' => $this->base_acl_level >= $min_show_acl ? 1 : 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1146,6 +1225,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
}
|
}
|
||||||
reset($this->table_array);
|
reset($this->table_array);
|
||||||
foreach ($this->table_array as $key => $value) {
|
foreach ($this->table_array as $key => $value) {
|
||||||
|
// skip if we are not allowe to write this anyway
|
||||||
|
// $this->log->debug('ERROR CHECK', 'ACL K: ' . $key . ', '
|
||||||
|
// . ($value['min_edit_acl'] ?? 100) . ' < ' . $this->base_acl_level);
|
||||||
|
if ($this->base_acl_level < ($value['min_edit_acl'] ?? 100)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
//if ($value['mandatory'] && $value['error_check'])
|
//if ($value['mandatory'] && $value['error_check'])
|
||||||
// if error value set && somethign input, check if input okay
|
// if error value set && somethign input, check if input okay
|
||||||
if (
|
if (
|
||||||
@@ -1373,6 +1458,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
// do check for reference tables
|
// do check for reference tables
|
||||||
reset($this->reference_array);
|
reset($this->reference_array);
|
||||||
foreach ($this->reference_array as $key => $value) {
|
foreach ($this->reference_array as $key => $value) {
|
||||||
|
// skip if not allowed to write
|
||||||
|
if (
|
||||||
|
$this->base_acl_level < ($this->reference_array[$key]['min_edit_acl'] ?? 100)
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
isset($this->reference_array[$key]['mandatory']) &&
|
isset($this->reference_array[$key]['mandatory']) &&
|
||||||
$this->reference_array[$key]['mandatory'] &&
|
$this->reference_array[$key]['mandatory'] &&
|
||||||
@@ -1392,6 +1483,12 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
if (!is_array($reference_array)) {
|
if (!is_array($reference_array)) {
|
||||||
$reference_array = [];
|
$reference_array = [];
|
||||||
}
|
}
|
||||||
|
// skip if not allowed to write
|
||||||
|
if (
|
||||||
|
$this->base_acl_level < ($this->reference_array['min_edit_acl'] ?? 100)
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// set pk/fk id for this
|
// set pk/fk id for this
|
||||||
$_pk_name = '';
|
$_pk_name = '';
|
||||||
$_fk_name = '';
|
$_fk_name = '';
|
||||||
@@ -1567,32 +1664,33 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
{
|
{
|
||||||
// get order name
|
// get order name
|
||||||
$order_name = $this->formGetColNameFromKey('order');
|
$order_name = $this->formGetColNameFromKey('order');
|
||||||
if ($order_name) {
|
if (empty($order_name)) {
|
||||||
// first check out of order ...
|
return $this->table_array;
|
||||||
if (empty($this->table_array[$order_name]['value'])) {
|
}
|
||||||
// set order (read max)
|
// first check out of order ...
|
||||||
$q = 'SELECT MAX(' . $order_name . ') + 1 AS max_page_order '
|
if (empty($this->table_array[$order_name]['value'])) {
|
||||||
. 'FROM ' . $this->table_name;
|
// set order (read max)
|
||||||
if (
|
$q = 'SELECT MAX(' . $order_name . ') + 1 AS max_page_order '
|
||||||
is_array($res = $this->dbReturnRow($q)) &&
|
. 'FROM ' . $this->table_name;
|
||||||
!empty($res['max_page_order'])
|
if (
|
||||||
) {
|
is_array($res = $this->dbReturnRow($q)) &&
|
||||||
$this->table_array[$order_name]['value'] = $res['max_page_order'];
|
!empty($res['max_page_order'])
|
||||||
}
|
) {
|
||||||
// frist element is 0 because NULL gets returned, set to 1
|
$this->table_array[$order_name]['value'] = $res['max_page_order'];
|
||||||
if (!$this->table_array[$order_name]['value']) {
|
}
|
||||||
$this->table_array[$order_name]['value'] = 1;
|
// frist element is 0 because NULL gets returned, set to 1
|
||||||
}
|
if (!$this->table_array[$order_name]['value']) {
|
||||||
} elseif (!empty($this->table_array[$this->int_pk_name]['value'])) {
|
$this->table_array[$order_name]['value'] = 1;
|
||||||
$q = 'SELECT ' . $order_name . ' AS order_name '
|
}
|
||||||
. 'FROM ' . $this->table_name . ' '
|
} elseif (!empty($this->table_array[$this->int_pk_name]['value'])) {
|
||||||
. 'WHERE ' . $this->int_pk_name . ' = ' . $this->table_array[$this->int_pk_name]['value'];
|
$q = 'SELECT ' . $order_name . ' AS order_name '
|
||||||
if (
|
. 'FROM ' . $this->table_name . ' '
|
||||||
is_array($res = $this->dbReturnRow($q)) &&
|
. 'WHERE ' . $this->int_pk_name . ' = ' . $this->table_array[$this->int_pk_name]['value'];
|
||||||
!empty($res['order_name'])
|
if (
|
||||||
) {
|
is_array($res = $this->dbReturnRow($q)) &&
|
||||||
$this->table_array[$order_name]['value'] = $res['order_name'];
|
!empty($res['order_name'])
|
||||||
}
|
) {
|
||||||
|
$this->table_array[$order_name]['value'] = $res['order_name'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $this->table_array;
|
return $this->table_array;
|
||||||
@@ -1681,7 +1779,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
* @param bool $addslashes override internal addslasahes flag (default false)
|
* @param bool $addslashes override internal addslasahes flag (default false)
|
||||||
* @return void has no return
|
* @return void has no return
|
||||||
*/
|
*/
|
||||||
public function formSaveTableArray($addslashes = false)
|
public function formSaveTableArray(bool $addslashes = false)
|
||||||
{
|
{
|
||||||
// for drop_down_db_input check if text field is filled and if, if not yet in db ...
|
// for drop_down_db_input check if text field is filled and if, if not yet in db ...
|
||||||
// and upload files
|
// and upload files
|
||||||
@@ -1827,7 +1925,7 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
// . $this->table_array[$this->pk_name]['value'] . "/"
|
// . $this->table_array[$this->pk_name]['value'] . "/"
|
||||||
// . $this->table_array[$this->int_pk_name]['value']);
|
// . $this->table_array[$this->int_pk_name]['value']);
|
||||||
// write the object
|
// write the object
|
||||||
$this->dbWrite($addslashes);
|
$this->dbWrite($addslashes, [], true);
|
||||||
// write reference array (s) if necessary
|
// write reference array (s) if necessary
|
||||||
if (is_array($this->reference_array)) {
|
if (is_array($this->reference_array)) {
|
||||||
if (!is_array($this->reference_array)) {
|
if (!is_array($this->reference_array)) {
|
||||||
@@ -1852,6 +1950,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
$type = [];
|
$type = [];
|
||||||
reset($this->element_list);
|
reset($this->element_list);
|
||||||
foreach ($this->element_list as $table_name => $reference_array) {
|
foreach ($this->element_list as $table_name => $reference_array) {
|
||||||
|
// early skip if not enought ACL
|
||||||
|
if ($this->base_acl_level < ($reference_array['min_edit_acl'] ?? 100)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// init arrays
|
// init arrays
|
||||||
$q_begin = [];
|
$q_begin = [];
|
||||||
$q_middle = [];
|
$q_middle = [];
|
||||||
@@ -2157,7 +2259,14 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
public function formCreateElementReferenceTable(string $table_name): array
|
public function formCreateElementReferenceTable(string $table_name): array
|
||||||
{
|
{
|
||||||
$data = [];
|
$data = [];
|
||||||
|
//
|
||||||
|
$show_value = '';
|
||||||
|
// set default min edit/read to 100 (admin)
|
||||||
|
$min_edit_acl = $this->reference_array[$table_name]['min_edit_acl'] ?? 100;
|
||||||
|
$min_show_acl = $this->reference_array[$table_name]['min_show_acl'] ?? 100;
|
||||||
|
// output name
|
||||||
$output_name = $this->reference_array[$table_name]['output_name'];
|
$output_name = $this->reference_array[$table_name]['output_name'];
|
||||||
|
// mandatory flag
|
||||||
if (
|
if (
|
||||||
isset($this->reference_array[$table_name]['mandatory']) &&
|
isset($this->reference_array[$table_name]['mandatory']) &&
|
||||||
$this->reference_array[$table_name]['mandatory']
|
$this->reference_array[$table_name]['mandatory']
|
||||||
@@ -2169,17 +2278,27 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
while (is_array($res = $this->dbReturn($this->reference_array[$table_name]['query']))) {
|
while (is_array($res = $this->dbReturn($this->reference_array[$table_name]['query']))) {
|
||||||
$data['value'][] = $res[0];
|
$data['value'][] = $res[0];
|
||||||
$data['output'][] = $res[1];
|
$data['output'][] = $res[1];
|
||||||
$data['selected'][] = (\CoreLibs\Convert\Html::checked(
|
$selected = (\CoreLibs\Convert\Html::checked(
|
||||||
$this->reference_array[$table_name]['selected'] ?? '',
|
$this->reference_array[$table_name]['selected'] ?? '',
|
||||||
$res[0]
|
$res[0]
|
||||||
)) ? $res[0] : '';
|
)) ? $res[0] : '';
|
||||||
|
$data['selected'][] = $selected;
|
||||||
|
if (!empty($selected)) {
|
||||||
|
if (!empty($show_value)) {
|
||||||
|
$show_value .= ", ";
|
||||||
|
}
|
||||||
|
$show_value .= $res[1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$type = 'reference_table';
|
$type = 'reference_table';
|
||||||
return [
|
return [
|
||||||
'output_name' => $output_name,
|
'output_name' => $output_name,
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'color' => 'edit_fgcolor',
|
'color' => 'edit_fgcolor',
|
||||||
'data' => $data
|
'data' => $data,
|
||||||
|
'show_value' => empty($show_value) ? '-' : $show_value,
|
||||||
|
'allow_edit' => $this->base_acl_level >= $min_edit_acl ? 1 : 0,
|
||||||
|
'allow_show' => $this->base_acl_level >= $min_show_acl ? 1 : 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2211,8 +2330,13 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
'pos' => [],
|
'pos' => [],
|
||||||
'table_name' => $table_name // sub table name
|
'table_name' => $table_name // sub table name
|
||||||
];
|
];
|
||||||
|
$show_value = '-';
|
||||||
|
// set default min edit/read to 100 (admin)
|
||||||
|
$min_edit_acl = $this->element_list[$table_name]['min_edit_acl'] ?? 100;
|
||||||
|
$min_show_acl = $this->element_list[$table_name]['min_show_acl'] ?? 100;
|
||||||
// output name for the viewable left table td box, prefixed with * if mandatory
|
// output name for the viewable left table td box, prefixed with * if mandatory
|
||||||
$output_name = $this->element_list[$table_name]['output_name'];
|
$output_name = $this->element_list[$table_name]['output_name'];
|
||||||
|
// mandatory flag
|
||||||
if (
|
if (
|
||||||
isset($this->element_list[$table_name]['mandatory']) &&
|
isset($this->element_list[$table_name]['mandatory']) &&
|
||||||
$this->element_list[$table_name]['mandatory']
|
$this->element_list[$table_name]['mandatory']
|
||||||
@@ -2523,7 +2647,10 @@ class Generate extends \CoreLibs\DB\Extended\ArrayIO
|
|||||||
'output_name' => $output_name,
|
'output_name' => $output_name,
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'color' => 'edit_fgcolor',
|
'color' => 'edit_fgcolor',
|
||||||
'data' => $data
|
'data' => $data,
|
||||||
|
'show_value' => $show_value,
|
||||||
|
'allow_edit' => $this->base_acl_level >= $min_edit_acl ? 1 : 0,
|
||||||
|
'allow_show' => $this->base_acl_level >= $min_show_acl ? 1 : 0,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
// end of class
|
// end of class
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ class SmartyExtend extends \Smarty
|
|||||||
public $CSS_TEMPLATE_NAME;
|
public $CSS_TEMPLATE_NAME;
|
||||||
/** @var string|null */
|
/** @var string|null */
|
||||||
public $TEMPLATE_TRANSLATE;
|
public $TEMPLATE_TRANSLATE;
|
||||||
|
/** @var string|null */
|
||||||
|
public $JS_TRANSLATE;
|
||||||
// core group
|
// core group
|
||||||
/** @var string */
|
/** @var string */
|
||||||
public $JS_CORE_TEMPLATE_NAME;
|
public $JS_CORE_TEMPLATE_NAME;
|
||||||
@@ -317,14 +319,14 @@ class SmartyExtend extends \Smarty
|
|||||||
}
|
}
|
||||||
// javascript translate data as template for auto translate
|
// javascript translate data as template for auto translate
|
||||||
if (empty($this->TEMPLATE_TRANSLATE)) {
|
if (empty($this->TEMPLATE_TRANSLATE)) {
|
||||||
$this->TEMPLATE_TRANSLATE = 'jsTranslate_'
|
$this->TEMPLATE_TRANSLATE = 'jsTranslate-'
|
||||||
. $this->locale_set . '.' . $this->encoding
|
. $this->locale_set . '.' . $this->encoding
|
||||||
. '.tpl';
|
. '.tpl';
|
||||||
} else {
|
} else {
|
||||||
// we assume we have some fixed set
|
// we assume we have some fixed set
|
||||||
// we must add _<$this->lang>
|
// we must add _<locale>.<encoding>
|
||||||
// if .tpl, put before .tpl
|
// if .tpl, put before .tpl
|
||||||
// if not .tpl, add _<$this->lang>.tpl
|
// if not .tpl, add _<locale>.<encoding>.tpl
|
||||||
if (strpos($this->TEMPLATE_TRANSLATE, '.tpl')) {
|
if (strpos($this->TEMPLATE_TRANSLATE, '.tpl')) {
|
||||||
$this->TEMPLATE_TRANSLATE = str_replace(
|
$this->TEMPLATE_TRANSLATE = str_replace(
|
||||||
'.tpl',
|
'.tpl',
|
||||||
@@ -332,7 +334,7 @@ class SmartyExtend extends \Smarty
|
|||||||
$this->TEMPLATE_TRANSLATE
|
$this->TEMPLATE_TRANSLATE
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$this->TEMPLATE_TRANSLATE .= '_'
|
$this->TEMPLATE_TRANSLATE .= '-'
|
||||||
. $this->locale_set . '.' . $this->encoding
|
. $this->locale_set . '.' . $this->encoding
|
||||||
. '.tpl';
|
. '.tpl';
|
||||||
}
|
}
|
||||||
@@ -341,6 +343,31 @@ class SmartyExtend extends \Smarty
|
|||||||
if (!file_exists($this->getTemplateDir()[0] . DIRECTORY_SEPARATOR . $this->TEMPLATE_TRANSLATE)) {
|
if (!file_exists($this->getTemplateDir()[0] . DIRECTORY_SEPARATOR . $this->TEMPLATE_TRANSLATE)) {
|
||||||
$this->TEMPLATE_TRANSLATE = null;
|
$this->TEMPLATE_TRANSLATE = null;
|
||||||
}
|
}
|
||||||
|
if (empty($this->JS_TRANSLATE)) {
|
||||||
|
$this->JS_TRANSLATE = 'translate-'
|
||||||
|
. $this->locale_set . '.' . $this->encoding . '.js';
|
||||||
|
} else {
|
||||||
|
// we assume we have some fixed set
|
||||||
|
// we must add _<locale>.<encoding>
|
||||||
|
// if .js, put before .js
|
||||||
|
// if not .js, add _<locale>.<encoding>.js
|
||||||
|
if (strpos($this->JS_TRANSLATE, '.js')) {
|
||||||
|
$this->JS_TRANSLATE = str_replace(
|
||||||
|
'.js',
|
||||||
|
'-' . $this->locale_set . '.' . $this->encoding . '.js',
|
||||||
|
$this->JS_TRANSLATE
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$this->JS_TRANSLATE .= '-'
|
||||||
|
. $this->locale_set . '.' . $this->encoding
|
||||||
|
. '.js';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!file_exists($this->JAVASCRIPT . $this->JS_TRANSLATE)) {
|
||||||
|
$this->JS_TRANSLATE = null;
|
||||||
|
} else {
|
||||||
|
$this->JS_TRANSLATE = $this->JAVASCRIPT . $this->JS_TRANSLATE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -423,7 +450,7 @@ class SmartyExtend extends \Smarty
|
|||||||
$this->DATA['ADMIN'] = $cms->acl['admin'] ?? 0;
|
$this->DATA['ADMIN'] = $cms->acl['admin'] ?? 0;
|
||||||
// top menu
|
// top menu
|
||||||
$this->DATA['nav_menu'] = $cms->adbTopMenu();
|
$this->DATA['nav_menu'] = $cms->adbTopMenu();
|
||||||
$this->DATA['nav_menu_count'] = is_array($this->DATA['nav_menu']) ? count($this->DATA['nav_menu']) : 0;
|
$this->DATA['nav_menu_count'] = count($this->DATA['nav_menu']);
|
||||||
// messages = ['msg' =>, 'class' => 'error/warning/...']
|
// messages = ['msg' =>, 'class' => 'error/warning/...']
|
||||||
$this->DATA['messages'] = $cms->messages;
|
$this->DATA['messages'] = $cms->messages;
|
||||||
} else { /** @phpstan-ignore-line Because I assume object for phpstan */
|
} else { /** @phpstan-ignore-line Because I assume object for phpstan */
|
||||||
@@ -438,7 +465,7 @@ class SmartyExtend extends \Smarty
|
|||||||
$this->HEADER['JAVASCRIPT'] = $this->ADMIN_JAVASCRIPT ? $this->ADMIN_JAVASCRIPT : ADMIN_JAVASCRIPT;
|
$this->HEADER['JAVASCRIPT'] = $this->ADMIN_JAVASCRIPT ? $this->ADMIN_JAVASCRIPT : ADMIN_JAVASCRIPT;
|
||||||
// the page name
|
// the page name
|
||||||
$this->DATA['page_name'] = $this->page_name;
|
$this->DATA['page_name'] = $this->page_name;
|
||||||
$this->DATA['table_width'] = empty($this->PAGE_WIDTH) ?: PAGE_WIDTH;
|
$this->DATA['table_width'] = !empty($this->PAGE_WIDTH) ?: PAGE_WIDTH;
|
||||||
$this->DATA['form_name'] = $this->DATA['FORM_NAME'];
|
$this->DATA['form_name'] = $this->DATA['FORM_NAME'];
|
||||||
// for tinymce special
|
// for tinymce special
|
||||||
$this->DATA['TINYMCE_LANG'] = $this->lang_short;
|
$this->DATA['TINYMCE_LANG'] = $this->lang_short;
|
||||||
@@ -469,6 +496,7 @@ class SmartyExtend extends \Smarty
|
|||||||
$this->DATA['TEMPLATE_NAME'] = $this->TEMPLATE_NAME;
|
$this->DATA['TEMPLATE_NAME'] = $this->TEMPLATE_NAME;
|
||||||
$this->DATA['CONTENT_INCLUDE'] = $this->CONTENT_INCLUDE;
|
$this->DATA['CONTENT_INCLUDE'] = $this->CONTENT_INCLUDE;
|
||||||
$this->DATA['TEMPLATE_TRANSLATE'] = $this->TEMPLATE_TRANSLATE ?? null;
|
$this->DATA['TEMPLATE_TRANSLATE'] = $this->TEMPLATE_TRANSLATE ?? null;
|
||||||
|
$this->DATA['JS_TRANSLATE'] = $this->JS_TRANSLATE ?? null;
|
||||||
$this->DATA['PAGE_FILE_NAME'] = str_replace('.php', '', $this->page_name) . '.tpl';
|
$this->DATA['PAGE_FILE_NAME'] = str_replace('.php', '', $this->page_name) . '.tpl';
|
||||||
// render page
|
// render page
|
||||||
$this->renderSmarty();
|
$this->renderSmarty();
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
<directory name="lib/FileUpload" />
|
<directory name="lib/FileUpload" />
|
||||||
<directory name="lib/Smarty" />
|
<directory name="lib/Smarty" />
|
||||||
<directory name="lib/smarty-4.1.0" />
|
<directory name="lib/smarty-4.1.0" />
|
||||||
<file name="lib/smarty-4.1.0/SmartyBC.class.php" />
|
|
||||||
<file name="lib/Smarty/Smarty.class.php" />
|
<file name="lib/Smarty/Smarty.class.php" />
|
||||||
<file name="lib/CoreLibs/Template/SmartyExtend.php" />
|
<file name="lib/CoreLibs/Template/SmartyExtend.php" />
|
||||||
</ignoreFiles>
|
</ignoreFiles>
|
||||||
|
|||||||
4
www/vendor/composer/autoload_classmap.php
vendored
4
www/vendor/composer/autoload_classmap.php
vendored
@@ -367,6 +367,7 @@ return array(
|
|||||||
'PHPUnit\\Util\\Annotation\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
|
'PHPUnit\\Util\\Annotation\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
|
||||||
'PHPUnit\\Util\\Annotation\\Registry' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
|
'PHPUnit\\Util\\Annotation\\Registry' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
|
||||||
'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||||
|
'PHPUnit\\Util\\Cloner' => $vendorDir . '/phpunit/phpunit/src/Util/Cloner.php',
|
||||||
'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
|
'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
|
||||||
'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||||
'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception.php',
|
'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception.php',
|
||||||
@@ -383,6 +384,7 @@ return array(
|
|||||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
||||||
'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
|
||||||
|
'PHPUnit\\Util\\Reflection' => $vendorDir . '/phpunit/phpunit/src/Util/Reflection.php',
|
||||||
'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
||||||
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
|
||||||
'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
|
'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
|
||||||
@@ -667,10 +669,12 @@ return array(
|
|||||||
'SebastianBergmann\\Type\\NeverType' => $vendorDir . '/sebastian/type/src/type/NeverType.php',
|
'SebastianBergmann\\Type\\NeverType' => $vendorDir . '/sebastian/type/src/type/NeverType.php',
|
||||||
'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/type/NullType.php',
|
'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/type/NullType.php',
|
||||||
'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/type/ObjectType.php',
|
'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/type/ObjectType.php',
|
||||||
|
'SebastianBergmann\\Type\\Parameter' => $vendorDir . '/sebastian/type/src/Parameter.php',
|
||||||
'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php',
|
'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php',
|
||||||
'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php',
|
'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php',
|
||||||
'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/type/SimpleType.php',
|
'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/type/SimpleType.php',
|
||||||
'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/type/StaticType.php',
|
'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/type/StaticType.php',
|
||||||
|
'SebastianBergmann\\Type\\TrueType' => $vendorDir . '/sebastian/type/src/type/TrueType.php',
|
||||||
'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/type/Type.php',
|
'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/type/Type.php',
|
||||||
'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php',
|
'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php',
|
||||||
'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/type/UnionType.php',
|
'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/type/UnionType.php',
|
||||||
|
|||||||
1
www/vendor/composer/autoload_files.php
vendored
1
www/vendor/composer/autoload_files.php
vendored
@@ -7,6 +7,5 @@ $baseDir = dirname($vendorDir);
|
|||||||
|
|
||||||
return array(
|
return array(
|
||||||
'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||||
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
|
|
||||||
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||||
);
|
);
|
||||||
|
|||||||
4
www/vendor/composer/autoload_psr4.php
vendored
4
www/vendor/composer/autoload_psr4.php
vendored
@@ -6,10 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
|
|||||||
$baseDir = dirname($vendorDir);
|
$baseDir = dirname($vendorDir);
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
|
|
||||||
'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
|
|
||||||
'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
|
|
||||||
'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
|
|
||||||
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
|
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
|
||||||
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
||||||
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
|
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
|
||||||
|
|||||||
36
www/vendor/composer/autoload_static.php
vendored
36
www/vendor/composer/autoload_static.php
vendored
@@ -8,26 +8,12 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
{
|
{
|
||||||
public static $files = array (
|
public static $files = array (
|
||||||
'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
|
||||||
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
|
||||||
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
|
||||||
);
|
);
|
||||||
|
|
||||||
public static $prefixLengthsPsr4 = array (
|
public static $prefixLengthsPsr4 = array (
|
||||||
'p' =>
|
|
||||||
array (
|
|
||||||
'phpDocumentor\\Reflection\\' => 25,
|
|
||||||
),
|
|
||||||
'W' =>
|
|
||||||
array (
|
|
||||||
'Webmozart\\Assert\\' => 17,
|
|
||||||
),
|
|
||||||
'S' =>
|
|
||||||
array (
|
|
||||||
'Symfony\\Polyfill\\Ctype\\' => 23,
|
|
||||||
),
|
|
||||||
'P' =>
|
'P' =>
|
||||||
array (
|
array (
|
||||||
'Prophecy\\' => 9,
|
|
||||||
'PhpParser\\' => 10,
|
'PhpParser\\' => 10,
|
||||||
),
|
),
|
||||||
'D' =>
|
'D' =>
|
||||||
@@ -38,24 +24,6 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
);
|
);
|
||||||
|
|
||||||
public static $prefixDirsPsr4 = array (
|
public static $prefixDirsPsr4 = array (
|
||||||
'phpDocumentor\\Reflection\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
|
|
||||||
1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
|
|
||||||
2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
|
|
||||||
),
|
|
||||||
'Webmozart\\Assert\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/webmozart/assert/src',
|
|
||||||
),
|
|
||||||
'Symfony\\Polyfill\\Ctype\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
|
|
||||||
),
|
|
||||||
'Prophecy\\' =>
|
|
||||||
array (
|
|
||||||
0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
|
|
||||||
),
|
|
||||||
'PhpParser\\' =>
|
'PhpParser\\' =>
|
||||||
array (
|
array (
|
||||||
0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
|
0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
|
||||||
@@ -432,6 +400,7 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
'PHPUnit\\Util\\Annotation\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
|
'PHPUnit\\Util\\Annotation\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
|
||||||
'PHPUnit\\Util\\Annotation\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
|
'PHPUnit\\Util\\Annotation\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
|
||||||
'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
|
||||||
|
'PHPUnit\\Util\\Cloner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Cloner.php',
|
||||||
'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
|
'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
|
||||||
'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
|
||||||
'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception.php',
|
'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception.php',
|
||||||
@@ -448,6 +417,7 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
|
||||||
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
|
||||||
'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
|
||||||
|
'PHPUnit\\Util\\Reflection' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Reflection.php',
|
||||||
'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
|
||||||
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
|
||||||
'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
|
'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
|
||||||
@@ -732,10 +702,12 @@ class ComposerStaticInit10fe8fe2ec4017b8644d2b64bcf398b9
|
|||||||
'SebastianBergmann\\Type\\NeverType' => __DIR__ . '/..' . '/sebastian/type/src/type/NeverType.php',
|
'SebastianBergmann\\Type\\NeverType' => __DIR__ . '/..' . '/sebastian/type/src/type/NeverType.php',
|
||||||
'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/type/NullType.php',
|
'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/type/NullType.php',
|
||||||
'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/ObjectType.php',
|
'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/type/ObjectType.php',
|
||||||
|
'SebastianBergmann\\Type\\Parameter' => __DIR__ . '/..' . '/sebastian/type/src/Parameter.php',
|
||||||
'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php',
|
'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php',
|
||||||
'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php',
|
'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php',
|
||||||
'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/type/SimpleType.php',
|
'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/type/SimpleType.php',
|
||||||
'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/type/StaticType.php',
|
'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/type/StaticType.php',
|
||||||
|
'SebastianBergmann\\Type\\TrueType' => __DIR__ . '/..' . '/sebastian/type/src/type/TrueType.php',
|
||||||
'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/type/Type.php',
|
'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/type/Type.php',
|
||||||
'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php',
|
'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php',
|
||||||
'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnionType.php',
|
'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnionType.php',
|
||||||
|
|||||||
496
www/vendor/composer/installed.json
vendored
496
www/vendor/composer/installed.json
vendored
@@ -137,17 +137,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nikic/php-parser",
|
"name": "nikic/php-parser",
|
||||||
"version": "v4.13.2",
|
"version": "v4.15.1",
|
||||||
"version_normalized": "4.13.2.0",
|
"version_normalized": "4.15.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/nikic/PHP-Parser.git",
|
"url": "https://github.com/nikic/PHP-Parser.git",
|
||||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077"
|
"reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
|
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
|
||||||
"reference": "210577fe3cf7badcc5814d99455df46564f3c077",
|
"reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
"ircmaxell/php-yacc": "^0.0.7",
|
"ircmaxell/php-yacc": "^0.0.7",
|
||||||
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
||||||
},
|
},
|
||||||
"time": "2021-11-30T19:35:32+00:00",
|
"time": "2022-09-04T07:30:47+00:00",
|
||||||
"bin": [
|
"bin": [
|
||||||
"bin/php-parse"
|
"bin/php-parse"
|
||||||
],
|
],
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
||||||
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
|
"source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1"
|
||||||
},
|
},
|
||||||
"install-path": "../nikic/php-parser"
|
"install-path": "../nikic/php-parser"
|
||||||
},
|
},
|
||||||
@@ -311,265 +311,26 @@
|
|||||||
},
|
},
|
||||||
"install-path": "../phar-io/version"
|
"install-path": "../phar-io/version"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "phpdocumentor/reflection-common",
|
|
||||||
"version": "2.2.0",
|
|
||||||
"version_normalized": "2.2.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
|
||||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
|
||||||
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.2 || ^8.0"
|
|
||||||
},
|
|
||||||
"time": "2020-06-27T09:03:43+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-2.x": "2.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"phpDocumentor\\Reflection\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Jaap van Otterdijk",
|
|
||||||
"email": "opensource@ijaap.nl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
|
||||||
"homepage": "http://www.phpdoc.org",
|
|
||||||
"keywords": [
|
|
||||||
"FQSEN",
|
|
||||||
"phpDocumentor",
|
|
||||||
"phpdoc",
|
|
||||||
"reflection",
|
|
||||||
"static analysis"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
|
|
||||||
},
|
|
||||||
"install-path": "../phpdocumentor/reflection-common"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpdocumentor/reflection-docblock",
|
|
||||||
"version": "5.3.0",
|
|
||||||
"version_normalized": "5.3.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
|
||||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
|
|
||||||
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"ext-filter": "*",
|
|
||||||
"php": "^7.2 || ^8.0",
|
|
||||||
"phpdocumentor/reflection-common": "^2.2",
|
|
||||||
"phpdocumentor/type-resolver": "^1.3",
|
|
||||||
"webmozart/assert": "^1.9.1"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"mockery/mockery": "~1.3.2",
|
|
||||||
"psalm/phar": "^4.8"
|
|
||||||
},
|
|
||||||
"time": "2021-10-19T17:43:47+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "5.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"phpDocumentor\\Reflection\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Mike van Riel",
|
|
||||||
"email": "me@mikevanriel.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Jaap van Otterdijk",
|
|
||||||
"email": "account@ijaap.nl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
|
|
||||||
},
|
|
||||||
"install-path": "../phpdocumentor/reflection-docblock"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpdocumentor/type-resolver",
|
|
||||||
"version": "1.6.1",
|
|
||||||
"version_normalized": "1.6.1.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
|
||||||
"reference": "77a32518733312af16a44300404e945338981de3"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
|
||||||
"reference": "77a32518733312af16a44300404e945338981de3",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.2 || ^8.0",
|
|
||||||
"phpdocumentor/reflection-common": "^2.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"ext-tokenizer": "*",
|
|
||||||
"psalm/phar": "^4.8"
|
|
||||||
},
|
|
||||||
"time": "2022-03-15T21:29:03+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-1.x": "1.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"phpDocumentor\\Reflection\\": "src"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Mike van Riel",
|
|
||||||
"email": "me@mikevanriel.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
|
||||||
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
|
|
||||||
},
|
|
||||||
"install-path": "../phpdocumentor/type-resolver"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "phpspec/prophecy",
|
|
||||||
"version": "v1.15.0",
|
|
||||||
"version_normalized": "1.15.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/phpspec/prophecy.git",
|
|
||||||
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
|
||||||
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"doctrine/instantiator": "^1.2",
|
|
||||||
"php": "^7.2 || ~8.0, <8.2",
|
|
||||||
"phpdocumentor/reflection-docblock": "^5.2",
|
|
||||||
"sebastian/comparator": "^3.0 || ^4.0",
|
|
||||||
"sebastian/recursion-context": "^3.0 || ^4.0"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpspec/phpspec": "^6.0 || ^7.0",
|
|
||||||
"phpunit/phpunit": "^8.0 || ^9.0"
|
|
||||||
},
|
|
||||||
"time": "2021-12-08T12:19:24+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.x-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Prophecy\\": "src/Prophecy"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Konstantin Kudryashov",
|
|
||||||
"email": "ever.zet@gmail.com",
|
|
||||||
"homepage": "http://everzet.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Marcello Duarte",
|
|
||||||
"email": "marcello.duarte@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Highly opinionated mocking framework for PHP 5.3+",
|
|
||||||
"homepage": "https://github.com/phpspec/prophecy",
|
|
||||||
"keywords": [
|
|
||||||
"Double",
|
|
||||||
"Dummy",
|
|
||||||
"fake",
|
|
||||||
"mock",
|
|
||||||
"spy",
|
|
||||||
"stub"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/phpspec/prophecy/issues",
|
|
||||||
"source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
|
|
||||||
},
|
|
||||||
"install-path": "../phpspec/prophecy"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
"version": "9.2.15",
|
"version": "9.2.17",
|
||||||
"version_normalized": "9.2.15.0",
|
"version_normalized": "9.2.17.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
||||||
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
|
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
|
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8",
|
||||||
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
|
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-dom": "*",
|
"ext-dom": "*",
|
||||||
"ext-libxml": "*",
|
"ext-libxml": "*",
|
||||||
"ext-xmlwriter": "*",
|
"ext-xmlwriter": "*",
|
||||||
"nikic/php-parser": "^4.13.0",
|
"nikic/php-parser": "^4.14",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpunit/php-file-iterator": "^3.0.3",
|
"phpunit/php-file-iterator": "^3.0.3",
|
||||||
"phpunit/php-text-template": "^2.0.2",
|
"phpunit/php-text-template": "^2.0.2",
|
||||||
@@ -587,7 +348,7 @@
|
|||||||
"ext-pcov": "*",
|
"ext-pcov": "*",
|
||||||
"ext-xdebug": "*"
|
"ext-xdebug": "*"
|
||||||
},
|
},
|
||||||
"time": "2022-03-07T09:28:20+00:00",
|
"time": "2022-08-30T12:24:04+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
@@ -620,7 +381,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
|
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -885,17 +646,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "9.5.20",
|
"version": "9.5.25",
|
||||||
"version_normalized": "9.5.20.0",
|
"version_normalized": "9.5.25.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
|
"reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d",
|
||||||
"reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
|
"reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -910,7 +671,6 @@
|
|||||||
"phar-io/manifest": "^2.0.3",
|
"phar-io/manifest": "^2.0.3",
|
||||||
"phar-io/version": "^3.0.2",
|
"phar-io/version": "^3.0.2",
|
||||||
"php": ">=7.3",
|
"php": ">=7.3",
|
||||||
"phpspec/prophecy": "^1.12.1",
|
|
||||||
"phpunit/php-code-coverage": "^9.2.13",
|
"phpunit/php-code-coverage": "^9.2.13",
|
||||||
"phpunit/php-file-iterator": "^3.0.5",
|
"phpunit/php-file-iterator": "^3.0.5",
|
||||||
"phpunit/php-invoker": "^3.1.1",
|
"phpunit/php-invoker": "^3.1.1",
|
||||||
@@ -918,25 +678,21 @@
|
|||||||
"phpunit/php-timer": "^5.0.2",
|
"phpunit/php-timer": "^5.0.2",
|
||||||
"sebastian/cli-parser": "^1.0.1",
|
"sebastian/cli-parser": "^1.0.1",
|
||||||
"sebastian/code-unit": "^1.0.6",
|
"sebastian/code-unit": "^1.0.6",
|
||||||
"sebastian/comparator": "^4.0.5",
|
"sebastian/comparator": "^4.0.8",
|
||||||
"sebastian/diff": "^4.0.3",
|
"sebastian/diff": "^4.0.3",
|
||||||
"sebastian/environment": "^5.1.3",
|
"sebastian/environment": "^5.1.3",
|
||||||
"sebastian/exporter": "^4.0.3",
|
"sebastian/exporter": "^4.0.5",
|
||||||
"sebastian/global-state": "^5.0.1",
|
"sebastian/global-state": "^5.0.1",
|
||||||
"sebastian/object-enumerator": "^4.0.3",
|
"sebastian/object-enumerator": "^4.0.3",
|
||||||
"sebastian/resource-operations": "^3.0.3",
|
"sebastian/resource-operations": "^3.0.3",
|
||||||
"sebastian/type": "^3.0",
|
"sebastian/type": "^3.2",
|
||||||
"sebastian/version": "^3.0.2"
|
"sebastian/version": "^3.0.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
|
||||||
"ext-pdo": "*",
|
|
||||||
"phpspec/prophecy-phpunit": "^2.0.1"
|
|
||||||
},
|
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-soap": "*",
|
"ext-soap": "*",
|
||||||
"ext-xdebug": "*"
|
"ext-xdebug": "*"
|
||||||
},
|
},
|
||||||
"time": "2022-04-01T12:37:26+00:00",
|
"time": "2022-09-25T03:44:45+00:00",
|
||||||
"bin": [
|
"bin": [
|
||||||
"phpunit"
|
"phpunit"
|
||||||
],
|
],
|
||||||
@@ -975,7 +731,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -985,6 +741,10 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/sebastianbergmann",
|
"url": "https://github.com/sebastianbergmann",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
|
||||||
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"install-path": "../phpunit/phpunit"
|
"install-path": "../phpunit/phpunit"
|
||||||
@@ -1167,17 +927,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/comparator",
|
"name": "sebastian/comparator",
|
||||||
"version": "4.0.6",
|
"version": "4.0.8",
|
||||||
"version_normalized": "4.0.6.0",
|
"version_normalized": "4.0.8.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/comparator.git",
|
"url": "https://github.com/sebastianbergmann/comparator.git",
|
||||||
"reference": "55f4261989e546dc112258c7a75935a81a7ce382"
|
"reference": "fa0f136dd2334583309d32b62544682ee972b51a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
|
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
|
||||||
"reference": "55f4261989e546dc112258c7a75935a81a7ce382",
|
"reference": "fa0f136dd2334583309d32b62544682ee972b51a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1188,7 +948,7 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.3"
|
"phpunit/phpunit": "^9.3"
|
||||||
},
|
},
|
||||||
"time": "2020-10-26T15:49:45+00:00",
|
"time": "2022-09-14T12:41:17+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
@@ -1232,7 +992,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
|
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1439,17 +1199,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/exporter",
|
"name": "sebastian/exporter",
|
||||||
"version": "4.0.4",
|
"version": "4.0.5",
|
||||||
"version_normalized": "4.0.4.0",
|
"version_normalized": "4.0.5.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/exporter.git",
|
"url": "https://github.com/sebastianbergmann/exporter.git",
|
||||||
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
|
"reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
|
||||||
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
"reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1460,7 +1220,7 @@
|
|||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"phpunit/phpunit": "^9.3"
|
"phpunit/phpunit": "^9.3"
|
||||||
},
|
},
|
||||||
"time": "2021-11-11T14:18:36+00:00",
|
"time": "2022-09-14T06:03:37+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
@@ -1507,7 +1267,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
|
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1888,17 +1648,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/type",
|
"name": "sebastian/type",
|
||||||
"version": "3.0.0",
|
"version": "3.2.0",
|
||||||
"version_normalized": "3.0.0.0",
|
"version_normalized": "3.2.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/type.git",
|
"url": "https://github.com/sebastianbergmann/type.git",
|
||||||
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
|
"reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
|
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
|
||||||
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
|
"reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1907,11 +1667,11 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^9.5"
|
"phpunit/phpunit": "^9.5"
|
||||||
},
|
},
|
||||||
"time": "2022-03-15T09:54:48+00:00",
|
"time": "2022-09-12T14:47:03+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-master": "3.0-dev"
|
"dev-master": "3.2-dev"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
@@ -1935,7 +1695,7 @@
|
|||||||
"homepage": "https://github.com/sebastianbergmann/type",
|
"homepage": "https://github.com/sebastianbergmann/type",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/type/issues",
|
"issues": "https://github.com/sebastianbergmann/type/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
|
"source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2001,91 +1761,6 @@
|
|||||||
],
|
],
|
||||||
"install-path": "../sebastian/version"
|
"install-path": "../sebastian/version"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "symfony/polyfill-ctype",
|
|
||||||
"version": "v1.25.0",
|
|
||||||
"version_normalized": "1.25.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
|
||||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
|
|
||||||
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": ">=7.1"
|
|
||||||
},
|
|
||||||
"provide": {
|
|
||||||
"ext-ctype": "*"
|
|
||||||
},
|
|
||||||
"suggest": {
|
|
||||||
"ext-ctype": "For best performance"
|
|
||||||
},
|
|
||||||
"time": "2021-10-20T20:35:02+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-main": "1.23-dev"
|
|
||||||
},
|
|
||||||
"thanks": {
|
|
||||||
"name": "symfony/polyfill",
|
|
||||||
"url": "https://github.com/symfony/polyfill"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"files": [
|
|
||||||
"bootstrap.php"
|
|
||||||
],
|
|
||||||
"psr-4": {
|
|
||||||
"Symfony\\Polyfill\\Ctype\\": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Gert de Pagter",
|
|
||||||
"email": "BackEndTea@gmail.com"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Symfony Community",
|
|
||||||
"homepage": "https://symfony.com/contributors"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Symfony polyfill for ctype functions",
|
|
||||||
"homepage": "https://symfony.com",
|
|
||||||
"keywords": [
|
|
||||||
"compatibility",
|
|
||||||
"ctype",
|
|
||||||
"polyfill",
|
|
||||||
"portable"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
|
|
||||||
},
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://symfony.com/sponsor",
|
|
||||||
"type": "custom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://github.com/fabpot",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
|
||||||
"type": "tidelift"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"install-path": "../symfony/polyfill-ctype"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "theseer/tokenizer",
|
"name": "theseer/tokenizer",
|
||||||
"version": "1.2.1",
|
"version": "1.2.1",
|
||||||
@@ -2138,67 +1813,6 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"install-path": "../theseer/tokenizer"
|
"install-path": "../theseer/tokenizer"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "webmozart/assert",
|
|
||||||
"version": "1.10.0",
|
|
||||||
"version_normalized": "1.10.0.0",
|
|
||||||
"source": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/webmozarts/assert.git",
|
|
||||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
|
|
||||||
},
|
|
||||||
"dist": {
|
|
||||||
"type": "zip",
|
|
||||||
"url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
|
|
||||||
"reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
|
|
||||||
"shasum": ""
|
|
||||||
},
|
|
||||||
"require": {
|
|
||||||
"php": "^7.2 || ^8.0",
|
|
||||||
"symfony/polyfill-ctype": "^1.8"
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"phpstan/phpstan": "<0.12.20",
|
|
||||||
"vimeo/psalm": "<4.6.1 || 4.6.2"
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"phpunit/phpunit": "^8.5.13"
|
|
||||||
},
|
|
||||||
"time": "2021-03-09T10:59:23+00:00",
|
|
||||||
"type": "library",
|
|
||||||
"extra": {
|
|
||||||
"branch-alias": {
|
|
||||||
"dev-master": "1.10-dev"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"installation-source": "dist",
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"Webmozart\\Assert\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification-url": "https://packagist.org/downloads/",
|
|
||||||
"license": [
|
|
||||||
"MIT"
|
|
||||||
],
|
|
||||||
"authors": [
|
|
||||||
{
|
|
||||||
"name": "Bernhard Schussek",
|
|
||||||
"email": "bschussek@gmail.com"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"description": "Assertions to validate method input/output with nice error messages.",
|
|
||||||
"keywords": [
|
|
||||||
"assert",
|
|
||||||
"check",
|
|
||||||
"validate"
|
|
||||||
],
|
|
||||||
"support": {
|
|
||||||
"issues": "https://github.com/webmozarts/assert/issues",
|
|
||||||
"source": "https://github.com/webmozarts/assert/tree/1.10.0"
|
|
||||||
},
|
|
||||||
"install-path": "../webmozart/assert"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
@@ -2208,10 +1822,6 @@
|
|||||||
"nikic/php-parser",
|
"nikic/php-parser",
|
||||||
"phar-io/manifest",
|
"phar-io/manifest",
|
||||||
"phar-io/version",
|
"phar-io/version",
|
||||||
"phpdocumentor/reflection-common",
|
|
||||||
"phpdocumentor/reflection-docblock",
|
|
||||||
"phpdocumentor/type-resolver",
|
|
||||||
"phpspec/prophecy",
|
|
||||||
"phpunit/php-code-coverage",
|
"phpunit/php-code-coverage",
|
||||||
"phpunit/php-file-iterator",
|
"phpunit/php-file-iterator",
|
||||||
"phpunit/php-invoker",
|
"phpunit/php-invoker",
|
||||||
@@ -2234,8 +1844,6 @@
|
|||||||
"sebastian/resource-operations",
|
"sebastian/resource-operations",
|
||||||
"sebastian/type",
|
"sebastian/type",
|
||||||
"sebastian/version",
|
"sebastian/version",
|
||||||
"symfony/polyfill-ctype",
|
"theseer/tokenizer"
|
||||||
"theseer/tokenizer",
|
|
||||||
"webmozart/assert"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
90
www/vendor/composer/installed.php
vendored
90
www/vendor/composer/installed.php
vendored
@@ -38,12 +38,12 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'nikic/php-parser' => array(
|
'nikic/php-parser' => array(
|
||||||
'pretty_version' => 'v4.13.2',
|
'pretty_version' => 'v4.15.1',
|
||||||
'version' => '4.13.2.0',
|
'version' => '4.15.1.0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../nikic/php-parser',
|
'install_path' => __DIR__ . '/../nikic/php-parser',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '210577fe3cf7badcc5814d99455df46564f3c077',
|
'reference' => '0ef6c55a3f47f89d7a374e6f835197a0b5fcf900',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phar-io/manifest' => array(
|
'phar-io/manifest' => array(
|
||||||
@@ -64,49 +64,13 @@
|
|||||||
'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
|
'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpdocumentor/reflection-common' => array(
|
|
||||||
'pretty_version' => '2.2.0',
|
|
||||||
'version' => '2.2.0.0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
|
|
||||||
'aliases' => array(),
|
|
||||||
'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
|
|
||||||
'dev_requirement' => true,
|
|
||||||
),
|
|
||||||
'phpdocumentor/reflection-docblock' => array(
|
|
||||||
'pretty_version' => '5.3.0',
|
|
||||||
'version' => '5.3.0.0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
|
|
||||||
'aliases' => array(),
|
|
||||||
'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
|
|
||||||
'dev_requirement' => true,
|
|
||||||
),
|
|
||||||
'phpdocumentor/type-resolver' => array(
|
|
||||||
'pretty_version' => '1.6.1',
|
|
||||||
'version' => '1.6.1.0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
|
|
||||||
'aliases' => array(),
|
|
||||||
'reference' => '77a32518733312af16a44300404e945338981de3',
|
|
||||||
'dev_requirement' => true,
|
|
||||||
),
|
|
||||||
'phpspec/prophecy' => array(
|
|
||||||
'pretty_version' => 'v1.15.0',
|
|
||||||
'version' => '1.15.0.0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../phpspec/prophecy',
|
|
||||||
'aliases' => array(),
|
|
||||||
'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
|
|
||||||
'dev_requirement' => true,
|
|
||||||
),
|
|
||||||
'phpunit/php-code-coverage' => array(
|
'phpunit/php-code-coverage' => array(
|
||||||
'pretty_version' => '9.2.15',
|
'pretty_version' => '9.2.17',
|
||||||
'version' => '9.2.15.0',
|
'version' => '9.2.17.0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
|
'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
|
'reference' => 'aa94dc41e8661fe90c7316849907cba3007b10d8',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpunit/php-file-iterator' => array(
|
'phpunit/php-file-iterator' => array(
|
||||||
@@ -146,12 +110,12 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phpunit/phpunit' => array(
|
'phpunit/phpunit' => array(
|
||||||
'pretty_version' => '9.5.20',
|
'pretty_version' => '9.5.25',
|
||||||
'version' => '9.5.20.0',
|
'version' => '9.5.25.0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../phpunit/phpunit',
|
'install_path' => __DIR__ . '/../phpunit/phpunit',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '12bc8879fb65aef2138b26fc633cb1e3620cffba',
|
'reference' => '3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/cli-parser' => array(
|
'sebastian/cli-parser' => array(
|
||||||
@@ -182,12 +146,12 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/comparator' => array(
|
'sebastian/comparator' => array(
|
||||||
'pretty_version' => '4.0.6',
|
'pretty_version' => '4.0.8',
|
||||||
'version' => '4.0.6.0',
|
'version' => '4.0.8.0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/comparator',
|
'install_path' => __DIR__ . '/../sebastian/comparator',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
|
'reference' => 'fa0f136dd2334583309d32b62544682ee972b51a',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/complexity' => array(
|
'sebastian/complexity' => array(
|
||||||
@@ -218,12 +182,12 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/exporter' => array(
|
'sebastian/exporter' => array(
|
||||||
'pretty_version' => '4.0.4',
|
'pretty_version' => '4.0.5',
|
||||||
'version' => '4.0.4.0',
|
'version' => '4.0.5.0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/exporter',
|
'install_path' => __DIR__ . '/../sebastian/exporter',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
|
'reference' => 'ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/global-state' => array(
|
'sebastian/global-state' => array(
|
||||||
@@ -281,12 +245,12 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/type' => array(
|
'sebastian/type' => array(
|
||||||
'pretty_version' => '3.0.0',
|
'pretty_version' => '3.2.0',
|
||||||
'version' => '3.0.0.0',
|
'version' => '3.2.0.0',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../sebastian/type',
|
'install_path' => __DIR__ . '/../sebastian/type',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => 'b233b84bc4465aff7b57cf1c4bc75c86d00d6dad',
|
'reference' => 'fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'sebastian/version' => array(
|
'sebastian/version' => array(
|
||||||
@@ -298,15 +262,6 @@
|
|||||||
'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
|
'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'symfony/polyfill-ctype' => array(
|
|
||||||
'pretty_version' => 'v1.25.0',
|
|
||||||
'version' => '1.25.0.0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
|
|
||||||
'aliases' => array(),
|
|
||||||
'reference' => '30885182c981ab175d4d034db0f6f469898070ab',
|
|
||||||
'dev_requirement' => true,
|
|
||||||
),
|
|
||||||
'theseer/tokenizer' => array(
|
'theseer/tokenizer' => array(
|
||||||
'pretty_version' => '1.2.1',
|
'pretty_version' => '1.2.1',
|
||||||
'version' => '1.2.1.0',
|
'version' => '1.2.1.0',
|
||||||
@@ -316,14 +271,5 @@
|
|||||||
'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
|
'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'webmozart/assert' => array(
|
|
||||||
'pretty_version' => '1.10.0',
|
|
||||||
'version' => '1.10.0.0',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../webmozart/assert',
|
|
||||||
'aliases' => array(),
|
|
||||||
'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
|
|
||||||
'dev_requirement' => true,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
6
www/vendor/nikic/php-parser/README.md
vendored
6
www/vendor/nikic/php-parser/README.md
vendored
@@ -3,10 +3,10 @@ PHP Parser
|
|||||||
|
|
||||||
[](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
|
[](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
|
||||||
|
|
||||||
This is a PHP 5.2 to PHP 8.0 parser written in PHP. Its purpose is to simplify static code analysis and
|
This is a PHP 5.2 to PHP 8.2 parser written in PHP. Its purpose is to simplify static code analysis and
|
||||||
manipulation.
|
manipulation.
|
||||||
|
|
||||||
[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.0).
|
[**Documentation for version 4.x**][doc_4_x] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.2).
|
||||||
|
|
||||||
[Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
|
[Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
|
||||||
|
|
||||||
@@ -222,4 +222,4 @@ Component documentation:
|
|||||||
* Parent and sibling references
|
* Parent and sibling references
|
||||||
|
|
||||||
[doc_3_x]: https://github.com/nikic/PHP-Parser/tree/3.x/doc
|
[doc_3_x]: https://github.com/nikic/PHP-Parser/tree/3.x/doc
|
||||||
[doc_master]: https://github.com/nikic/PHP-Parser/tree/master/doc
|
[doc_4_x]: https://github.com/nikic/PHP-Parser/tree/4.x/doc
|
||||||
|
|||||||
10
www/vendor/nikic/php-parser/grammar/php5.y
vendored
10
www/vendor/nikic/php-parser/grammar/php5.y
vendored
@@ -689,9 +689,7 @@ array_expr:
|
|||||||
|
|
||||||
scalar_dereference:
|
scalar_dereference:
|
||||||
array_expr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
array_expr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
||||||
| T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']'
|
| T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[Scalar\String_::fromString($1, attributes()), $3]; }
|
||||||
{ $attrs = attributes(); $attrs['kind'] = strKind($1);
|
|
||||||
$$ = Expr\ArrayDimFetch[new Scalar\String_(Scalar\String_::parse($1), $attrs), $3]; }
|
|
||||||
| constant '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
| constant '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
||||||
| scalar_dereference '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
| scalar_dereference '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
|
||||||
/* alternative array syntax missing intentionally */
|
/* alternative array syntax missing intentionally */
|
||||||
@@ -793,10 +791,8 @@ ctor_arguments:
|
|||||||
|
|
||||||
common_scalar:
|
common_scalar:
|
||||||
T_LNUMBER { $$ = $this->parseLNumber($1, attributes(), true); }
|
T_LNUMBER { $$ = $this->parseLNumber($1, attributes(), true); }
|
||||||
| T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
|
| T_DNUMBER { $$ = Scalar\DNumber::fromString($1, attributes()); }
|
||||||
| T_CONSTANT_ENCAPSED_STRING
|
| T_CONSTANT_ENCAPSED_STRING { $$ = Scalar\String_::fromString($1, attributes(), false); }
|
||||||
{ $attrs = attributes(); $attrs['kind'] = strKind($1);
|
|
||||||
$$ = new Scalar\String_(Scalar\String_::parse($1, false), $attrs); }
|
|
||||||
| T_LINE { $$ = Scalar\MagicConst\Line[]; }
|
| T_LINE { $$ = Scalar\MagicConst\Line[]; }
|
||||||
| T_FILE { $$ = Scalar\MagicConst\File[]; }
|
| T_FILE { $$ = Scalar\MagicConst\File[]; }
|
||||||
| T_DIR { $$ = Scalar\MagicConst\Dir[]; }
|
| T_DIR { $$ = Scalar\MagicConst\Dir[]; }
|
||||||
|
|||||||
62
www/vendor/nikic/php-parser/grammar/php7.y
vendored
62
www/vendor/nikic/php-parser/grammar/php7.y
vendored
@@ -382,8 +382,18 @@ enum_case_expr:
|
|||||||
|
|
||||||
class_entry_type:
|
class_entry_type:
|
||||||
T_CLASS { $$ = 0; }
|
T_CLASS { $$ = 0; }
|
||||||
| T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
|
| class_modifiers T_CLASS { $$ = $1; }
|
||||||
| T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
|
;
|
||||||
|
|
||||||
|
class_modifiers:
|
||||||
|
class_modifier { $$ = $1; }
|
||||||
|
| class_modifiers class_modifier { $this->checkClassModifier($1, $2, #2); $$ = $1 | $2; }
|
||||||
|
;
|
||||||
|
|
||||||
|
class_modifier:
|
||||||
|
T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
|
||||||
|
| T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
|
||||||
|
| T_READONLY { $$ = Stmt\Class_::MODIFIER_READONLY; }
|
||||||
;
|
;
|
||||||
|
|
||||||
extends_from:
|
extends_from:
|
||||||
@@ -561,7 +571,7 @@ type_expr:
|
|||||||
type { $$ = $1; }
|
type { $$ = $1; }
|
||||||
| '?' type { $$ = Node\NullableType[$2]; }
|
| '?' type { $$ = Node\NullableType[$2]; }
|
||||||
| union_type { $$ = Node\UnionType[$1]; }
|
| union_type { $$ = Node\UnionType[$1]; }
|
||||||
| intersection_type { $$ = Node\IntersectionType[$1]; }
|
| intersection_type { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
type:
|
type:
|
||||||
@@ -575,34 +585,52 @@ type_without_static:
|
|||||||
| T_CALLABLE { $$ = Node\Identifier['callable']; }
|
| T_CALLABLE { $$ = Node\Identifier['callable']; }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
union_type_element:
|
||||||
|
type { $$ = $1; }
|
||||||
|
| '(' intersection_type ')' { $$ = $2; }
|
||||||
|
;
|
||||||
|
|
||||||
union_type:
|
union_type:
|
||||||
type '|' type { init($1, $3); }
|
union_type_element '|' union_type_element { init($1, $3); }
|
||||||
| union_type '|' type { push($1, $3); }
|
| union_type '|' union_type_element { push($1, $3); }
|
||||||
|
;
|
||||||
|
|
||||||
|
union_type_without_static_element:
|
||||||
|
type_without_static { $$ = $1; }
|
||||||
|
| '(' intersection_type_without_static ')' { $$ = $2; }
|
||||||
;
|
;
|
||||||
|
|
||||||
union_type_without_static:
|
union_type_without_static:
|
||||||
type_without_static '|' type_without_static { init($1, $3); }
|
union_type_without_static_element '|' union_type_without_static_element { init($1, $3); }
|
||||||
| union_type_without_static '|' type_without_static { push($1, $3); }
|
| union_type_without_static '|' union_type_without_static_element { push($1, $3); }
|
||||||
|
;
|
||||||
|
|
||||||
|
intersection_type_list:
|
||||||
|
type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type { init($1, $3); }
|
||||||
|
| intersection_type_list T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type
|
||||||
|
{ push($1, $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
intersection_type:
|
intersection_type:
|
||||||
type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type { init($1, $3); }
|
intersection_type_list { $$ = Node\IntersectionType[$1]; }
|
||||||
| intersection_type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type
|
;
|
||||||
|
|
||||||
|
intersection_type_without_static_list:
|
||||||
|
type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
|
||||||
|
{ init($1, $3); }
|
||||||
|
| intersection_type_without_static_list T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
|
||||||
{ push($1, $3); }
|
{ push($1, $3); }
|
||||||
;
|
;
|
||||||
|
|
||||||
intersection_type_without_static:
|
intersection_type_without_static:
|
||||||
type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
|
intersection_type_without_static_list { $$ = Node\IntersectionType[$1]; }
|
||||||
{ init($1, $3); }
|
|
||||||
| intersection_type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
|
|
||||||
{ push($1, $3); }
|
|
||||||
;
|
;
|
||||||
|
|
||||||
type_expr_without_static:
|
type_expr_without_static:
|
||||||
type_without_static { $$ = $1; }
|
type_without_static { $$ = $1; }
|
||||||
| '?' type_without_static { $$ = Node\NullableType[$2]; }
|
| '?' type_without_static { $$ = Node\NullableType[$2]; }
|
||||||
| union_type_without_static { $$ = Node\UnionType[$1]; }
|
| union_type_without_static { $$ = Node\UnionType[$1]; }
|
||||||
| intersection_type_without_static { $$ = Node\IntersectionType[$1]; }
|
| intersection_type_without_static { $$ = $1; }
|
||||||
;
|
;
|
||||||
|
|
||||||
optional_type_without_static:
|
optional_type_without_static:
|
||||||
@@ -1014,9 +1042,7 @@ dereferencable_scalar:
|
|||||||
{ $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
|
{ $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
|
||||||
$$ = new Expr\Array_($3, $attrs); }
|
$$ = new Expr\Array_($3, $attrs); }
|
||||||
| array_short_syntax { $$ = $1; }
|
| array_short_syntax { $$ = $1; }
|
||||||
| T_CONSTANT_ENCAPSED_STRING
|
| T_CONSTANT_ENCAPSED_STRING { $$ = Scalar\String_::fromString($1, attributes()); }
|
||||||
{ $attrs = attributes(); $attrs['kind'] = strKind($1);
|
|
||||||
$$ = new Scalar\String_(Scalar\String_::parse($1), $attrs); }
|
|
||||||
| '"' encaps_list '"'
|
| '"' encaps_list '"'
|
||||||
{ $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
|
{ $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
|
||||||
parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
|
parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
|
||||||
@@ -1024,7 +1050,7 @@ dereferencable_scalar:
|
|||||||
|
|
||||||
scalar:
|
scalar:
|
||||||
T_LNUMBER { $$ = $this->parseLNumber($1, attributes()); }
|
T_LNUMBER { $$ = $this->parseLNumber($1, attributes()); }
|
||||||
| T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
|
| T_DNUMBER { $$ = Scalar\DNumber::fromString($1, attributes()); }
|
||||||
| dereferencable_scalar { $$ = $1; }
|
| dereferencable_scalar { $$ = $1; }
|
||||||
| constant { $$ = $1; }
|
| constant { $$ = $1; }
|
||||||
| class_constant { $$ = $1; }
|
| class_constant { $$ = $1; }
|
||||||
|
|||||||
@@ -128,14 +128,6 @@ function resolveMacros($code) {
|
|||||||
. ' else { ' . $args[0] . ' = null; }';
|
. ' else { ' . $args[0] . ' = null; }';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('strKind' === $name) {
|
|
||||||
assertArgs(1, $args, $name);
|
|
||||||
|
|
||||||
return '(' . $args[0] . '[0] === "\'" || (' . $args[0] . '[1] === "\'" && '
|
|
||||||
. '(' . $args[0] . '[0] === \'b\' || ' . $args[0] . '[0] === \'B\')) '
|
|
||||||
. '? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED)';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('prependLeadingComments' === $name) {
|
if ('prependLeadingComments' === $name) {
|
||||||
assertArgs(1, $args, $name);
|
assertArgs(1, $args, $name);
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ class Class_ extends Declaration
|
|||||||
* @return $this The builder instance (for fluid interface)
|
* @return $this The builder instance (for fluid interface)
|
||||||
*/
|
*/
|
||||||
public function makeAbstract() {
|
public function makeAbstract() {
|
||||||
$this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
|
$this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -78,7 +78,13 @@ class Class_ extends Declaration
|
|||||||
* @return $this The builder instance (for fluid interface)
|
* @return $this The builder instance (for fluid interface)
|
||||||
*/
|
*/
|
||||||
public function makeFinal() {
|
public function makeFinal() {
|
||||||
$this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
|
$this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function makeReadonly() {
|
||||||
|
$this->flags = BuilderHelpers::addClassModifier($this->flags, Stmt\Class_::MODIFIER_READONLY);
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,7 +178,20 @@ final class BuilderHelpers
|
|||||||
}
|
}
|
||||||
|
|
||||||
$builtinTypes = [
|
$builtinTypes = [
|
||||||
'array', 'callable', 'string', 'int', 'float', 'bool', 'iterable', 'void', 'object', 'mixed', 'never',
|
'array',
|
||||||
|
'callable',
|
||||||
|
'bool',
|
||||||
|
'int',
|
||||||
|
'float',
|
||||||
|
'string',
|
||||||
|
'iterable',
|
||||||
|
'void',
|
||||||
|
'object',
|
||||||
|
'null',
|
||||||
|
'false',
|
||||||
|
'mixed',
|
||||||
|
'never',
|
||||||
|
'true',
|
||||||
];
|
];
|
||||||
|
|
||||||
$lowerType = strtolower($type);
|
$lowerType = strtolower($type);
|
||||||
@@ -310,4 +323,13 @@ final class BuilderHelpers
|
|||||||
Stmt\Class_::verifyModifier($modifiers, $modifier);
|
Stmt\Class_::verifyModifier($modifiers, $modifier);
|
||||||
return $modifiers | $modifier;
|
return $modifiers | $modifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a modifier and returns new modifier bitmask.
|
||||||
|
* @return int New modifiers
|
||||||
|
*/
|
||||||
|
public static function addClassModifier(int $existingModifiers, int $modifierToSet) : int {
|
||||||
|
Stmt\Class_::verifyClassModifier($existingModifiers, $modifierToSet);
|
||||||
|
return $existingModifiers | $modifierToSet;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ abstract class KeywordEmulator extends TokenEmulator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param mixed[] $tokens
|
* @param mixed[] $tokens
|
||||||
* @return mixed[]|null
|
* @return array|string|null
|
||||||
*/
|
*/
|
||||||
private function getPreviousNonSpaceToken(array $tokens, int $start)
|
private function getPreviousNonSpaceToken(array $tokens, int $start)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,4 +20,17 @@ final class ReadonlyTokenEmulator extends KeywordEmulator
|
|||||||
{
|
{
|
||||||
return \T_READONLY;
|
return \T_READONLY;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
protected function isKeywordContext(array $tokens, int $pos): bool
|
||||||
|
{
|
||||||
|
if (!parent::isKeywordContext($tokens, $pos)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Support "function readonly("
|
||||||
|
return !(isset($tokens[$pos + 1]) &&
|
||||||
|
($tokens[$pos + 1][0] === '(' ||
|
||||||
|
($tokens[$pos + 1][0] === \T_WHITESPACE &&
|
||||||
|
isset($tokens[$pos + 2]) &&
|
||||||
|
$tokens[$pos + 2][0] === '(')));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ class Const_ extends NodeAbstract
|
|||||||
/** @var Expr Value */
|
/** @var Expr Value */
|
||||||
public $value;
|
public $value;
|
||||||
|
|
||||||
/** @var Name Namespaced name (if using NameResolver) */
|
/** @var Name|null Namespaced name (if using NameResolver) */
|
||||||
public $namespacedName;
|
public $namespacedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +30,7 @@ class Const_ extends NodeAbstract
|
|||||||
public function getSubNodeNames() : array {
|
public function getSubNodeNames() : array {
|
||||||
return ['name', 'value'];
|
return ['name', 'value'];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getType() : string {
|
public function getType() : string {
|
||||||
return 'Const';
|
return 'Const';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ class Name extends NodeAbstract
|
|||||||
$realLength = $numParts - $realOffset;
|
$realLength = $numParts - $realOffset;
|
||||||
} else {
|
} else {
|
||||||
$realLength = $length < 0 ? $length + $numParts - $realOffset : $length;
|
$realLength = $length < 0 ? $length + $numParts - $realOffset : $length;
|
||||||
if ($realLength < 0 || $realLength > $numParts) {
|
if ($realLength < 0 || $realLength > $numParts - $realOffset) {
|
||||||
throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length));
|
throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,17 @@ class DNumber extends Scalar
|
|||||||
return ['value'];
|
return ['value'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param mixed[] $attributes
|
||||||
|
*/
|
||||||
|
public static function fromString(string $str, array $attributes = []): DNumber
|
||||||
|
{
|
||||||
|
$attributes['rawValue'] = $str;
|
||||||
|
$float = self::parse($str);
|
||||||
|
|
||||||
|
return new DNumber($float, $attributes);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
@@ -63,7 +74,7 @@ class DNumber extends Scalar
|
|||||||
// dec
|
// dec
|
||||||
return (float) $str;
|
return (float) $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getType() : string {
|
public function getType() : string {
|
||||||
return 'Scalar_DNumber';
|
return 'Scalar_DNumber';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ class LNumber extends Scalar
|
|||||||
* @return LNumber The constructed LNumber, including kind attribute
|
* @return LNumber The constructed LNumber, including kind attribute
|
||||||
*/
|
*/
|
||||||
public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
|
public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
|
||||||
|
$attributes['rawValue'] = $str;
|
||||||
|
|
||||||
$str = str_replace('_', '', $str);
|
$str = str_replace('_', '', $str);
|
||||||
|
|
||||||
if ('0' !== $str[0] || '0' === $str) {
|
if ('0' !== $str[0] || '0' === $str) {
|
||||||
@@ -71,7 +73,7 @@ class LNumber extends Scalar
|
|||||||
$attributes['kind'] = LNumber::KIND_OCT;
|
$attributes['kind'] = LNumber::KIND_OCT;
|
||||||
return new LNumber(intval($str, 8), $attributes);
|
return new LNumber(intval($str, 8), $attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getType() : string {
|
public function getType() : string {
|
||||||
return 'Scalar_LNumber';
|
return 'Scalar_LNumber';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,22 @@ class String_ extends Scalar
|
|||||||
return ['value'];
|
return ['value'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
|
||||||
|
*/
|
||||||
|
public static function fromString(string $str, array $attributes = [], bool $parseUnicodeEscape = true): self
|
||||||
|
{
|
||||||
|
$attributes['kind'] = ($str[0] === "'" || ($str[1] === "'" && ($str[0] === 'b' || $str[0] === 'B')))
|
||||||
|
? Scalar\String_::KIND_SINGLE_QUOTED
|
||||||
|
: Scalar\String_::KIND_DOUBLE_QUOTED;
|
||||||
|
|
||||||
|
$attributes['rawValue'] = $str;
|
||||||
|
|
||||||
|
$string = self::parse($str, $parseUnicodeEscape);
|
||||||
|
|
||||||
|
return new self($string, $attributes);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ abstract class ClassLike extends Node\Stmt
|
|||||||
/** @var Node\AttributeGroup[] PHP attribute groups */
|
/** @var Node\AttributeGroup[] PHP attribute groups */
|
||||||
public $attrGroups;
|
public $attrGroups;
|
||||||
|
|
||||||
/** @var Node\Name Namespaced name (if using NameResolver) */
|
/** @var Node\Name|null Namespaced name (if using NameResolver) */
|
||||||
public $namespacedName;
|
public $namespacedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -23,21 +23,23 @@ class ClassMethod extends Node\Stmt implements FunctionLike
|
|||||||
public $attrGroups;
|
public $attrGroups;
|
||||||
|
|
||||||
private static $magicNames = [
|
private static $magicNames = [
|
||||||
'__construct' => true,
|
'__construct' => true,
|
||||||
'__destruct' => true,
|
'__destruct' => true,
|
||||||
'__call' => true,
|
'__call' => true,
|
||||||
'__callstatic' => true,
|
'__callstatic' => true,
|
||||||
'__get' => true,
|
'__get' => true,
|
||||||
'__set' => true,
|
'__set' => true,
|
||||||
'__isset' => true,
|
'__isset' => true,
|
||||||
'__unset' => true,
|
'__unset' => true,
|
||||||
'__sleep' => true,
|
'__sleep' => true,
|
||||||
'__wakeup' => true,
|
'__wakeup' => true,
|
||||||
'__tostring' => true,
|
'__tostring' => true,
|
||||||
'__set_state' => true,
|
'__set_state' => true,
|
||||||
'__clone' => true,
|
'__clone' => true,
|
||||||
'__invoke' => true,
|
'__invoke' => true,
|
||||||
'__debuginfo' => true,
|
'__debuginfo' => true,
|
||||||
|
'__serialize' => true,
|
||||||
|
'__unserialize' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ class Class_ extends ClassLike
|
|||||||
return (bool) ($this->flags & self::MODIFIER_FINAL);
|
return (bool) ($this->flags & self::MODIFIER_FINAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isReadonly() : bool {
|
||||||
|
return (bool) ($this->flags & self::MODIFIER_READONLY);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the class is anonymous.
|
* Whether the class is anonymous.
|
||||||
*
|
*
|
||||||
@@ -77,6 +81,27 @@ class Class_ extends ClassLike
|
|||||||
return null === $this->name;
|
return null === $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public static function verifyClassModifier($a, $b) {
|
||||||
|
if ($a & self::MODIFIER_ABSTRACT && $b & self::MODIFIER_ABSTRACT) {
|
||||||
|
throw new Error('Multiple abstract modifiers are not allowed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($a & self::MODIFIER_FINAL && $b & self::MODIFIER_FINAL) {
|
||||||
|
throw new Error('Multiple final modifiers are not allowed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($a & self::MODIFIER_READONLY && $b & self::MODIFIER_READONLY) {
|
||||||
|
throw new Error('Multiple readonly modifiers are not allowed');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($a & 48 && $b & 48) {
|
||||||
|
throw new Error('Cannot use the final modifier on an abstract class');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class Function_ extends Node\Stmt implements FunctionLike
|
|||||||
/** @var Node\AttributeGroup[] PHP attribute groups */
|
/** @var Node\AttributeGroup[] PHP attribute groups */
|
||||||
public $attrGroups;
|
public $attrGroups;
|
||||||
|
|
||||||
/** @var Node\Name Namespaced name (if using NameResolver) */
|
/** @var Node\Name|null Namespaced name (if using NameResolver) */
|
||||||
public $namespacedName;
|
public $namespacedName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class UnionType extends ComplexType
|
|||||||
/**
|
/**
|
||||||
* Constructs a union type.
|
* Constructs a union type.
|
||||||
*
|
*
|
||||||
* @param (Identifier|Name)[] $types Types
|
* @param (Identifier|Name|IntersectionType)[] $types Types
|
||||||
* @param array $attributes Additional attributes
|
* @param array $attributes Additional attributes
|
||||||
*/
|
*/
|
||||||
public function __construct(array $types, array $attributes = []) {
|
public function __construct(array $types, array $attributes = []) {
|
||||||
|
|||||||
@@ -2147,8 +2147,7 @@ class Php5 extends \PhpParser\ParserAbstract
|
|||||||
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||||
},
|
},
|
||||||
392 => function ($stackPos) {
|
392 => function ($stackPos) {
|
||||||
$attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
|
$this->semValue = new Expr\ArrayDimFetch(Scalar\String_::fromString($this->semStack[$stackPos-(4-1)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||||
$this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
|
||||||
},
|
},
|
||||||
393 => function ($stackPos) {
|
393 => function ($stackPos) {
|
||||||
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
$this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
|
||||||
@@ -2275,11 +2274,10 @@ class Php5 extends \PhpParser\ParserAbstract
|
|||||||
$this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
|
$this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
|
||||||
},
|
},
|
||||||
434 => function ($stackPos) {
|
434 => function ($stackPos) {
|
||||||
$this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
$this->semValue = Scalar\DNumber::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
||||||
},
|
},
|
||||||
435 => function ($stackPos) {
|
435 => function ($stackPos) {
|
||||||
$attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
|
$this->semValue = Scalar\String_::fromString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, false);
|
||||||
$this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
|
|
||||||
},
|
},
|
||||||
436 => function ($stackPos) {
|
436 => function ($stackPos) {
|
||||||
$this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
$this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user