- DB function had wrong column name - Queries in ACL\Login had wrong column name - Renamed from login_user_id_last_login to login_user_id_last_revalidate to make it more clear what this column is - add edit_user admin page output for this column - add phpUnit test case for revalidate is needed and login with next loginUserId is ok again
1032 lines
43 KiB
PL/PgSQL
1032 lines
43 KiB
PL/PgSQL
-- START: function/random_string.sql
|
|
-- create random string with length X
|
|
|
|
CREATE FUNCTION random_string(randomLength int)
|
|
RETURNS text AS
|
|
$$
|
|
SELECT array_to_string(
|
|
ARRAY(
|
|
SELECT substring(
|
|
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
|
|
trunc(random() * 62)::int + 1,
|
|
1
|
|
)
|
|
FROM generate_series(1, randomLength) AS gs(x)
|
|
),
|
|
''
|
|
)
|
|
$$
|
|
LANGUAGE SQL
|
|
RETURNS NULL ON NULL INPUT
|
|
VOLATILE; -- LEAKPROOF;
|
|
-- END: function/random_string.sql
|
|
-- START: function/set_edit_generic.sql
|
|
-- adds the created or updated date tags
|
|
|
|
CREATE OR REPLACE FUNCTION set_edit_generic()
|
|
RETURNS TRIGGER AS
|
|
$$
|
|
DECLARE
|
|
random_length INT = 12; -- that should be long enough
|
|
BEGIN
|
|
IF TG_OP = 'INSERT' THEN
|
|
NEW.date_created := 'now';
|
|
NEW.cuid := random_string(random_length);
|
|
ELSIF TG_OP = 'UPDATE' THEN
|
|
NEW.date_updated := 'now';
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$
|
|
LANGUAGE 'plpgsql';
|
|
-- END: function/set_edit_generic.sql
|
|
-- START: function/edit_access_set_uid.sql
|
|
-- add uid add for edit_access table
|
|
|
|
CREATE OR REPLACE FUNCTION set_edit_access_uid() RETURNS TRIGGER AS
|
|
$$
|
|
DECLARE
|
|
myrec RECORD;
|
|
v_uid VARCHAR;
|
|
BEGIN
|
|
-- skip if NEW.name is not set
|
|
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
|
-- use NEW.name as base, remove all spaces
|
|
-- name data is already unique, so we do not need to worry about this here
|
|
v_uid := REPLACE(NEW.name, ' ', '');
|
|
IF TG_OP = 'INSERT' THEN
|
|
-- always set
|
|
NEW.uid := v_uid;
|
|
ELSIF TG_OP = 'UPDATE' THEN
|
|
-- check if not set, then set
|
|
SELECT INTO myrec t.* FROM edit_access t WHERE edit_access_id = NEW.edit_access_id;
|
|
IF FOUND THEN
|
|
NEW.uid := v_uid;
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$
|
|
LANGUAGE 'plpgsql';
|
|
-- END: function/edit_access_set_uid.sql
|
|
-- START: function/edit_group_set_uid.sql
|
|
-- add uid add for edit_group table
|
|
|
|
CREATE OR REPLACE FUNCTION set_edit_group_uid() RETURNS TRIGGER AS
|
|
$$
|
|
DECLARE
|
|
myrec RECORD;
|
|
v_uid VARCHAR;
|
|
BEGIN
|
|
-- skip if NEW.name is not set
|
|
IF NEW.name IS NOT NULL AND NEW.name <> '' THEN
|
|
-- use NEW.name as base, remove all spaces
|
|
-- name data is already unique, so we do not need to worry about this here
|
|
v_uid := REPLACE(NEW.name, ' ', '');
|
|
IF TG_OP = 'INSERT' THEN
|
|
-- always set
|
|
NEW.uid := v_uid;
|
|
ELSIF TG_OP = 'UPDATE' THEN
|
|
-- check if not set, then set
|
|
SELECT INTO myrec t.* FROM edit_group t WHERE edit_group_id = NEW.edit_group_id;
|
|
IF FOUND THEN
|
|
NEW.uid := v_uid;
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$
|
|
LANGUAGE 'plpgsql';
|
|
-- END: function/edit_group_set_uid.sql
|
|
-- START: function/edit_log_partition_insert.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2018-07-17
|
|
-- DESCRIPTION:
|
|
-- partition the edit_log table by year
|
|
-- auto creates table if missing, if failure writes to overflow table
|
|
-- HISTORY:
|
|
|
|
CREATE OR REPLACE FUNCTION edit_log_insert_trigger ()
|
|
RETURNS TRIGGER AS
|
|
$$
|
|
DECLARE
|
|
start_date DATE := '2010-01-01';
|
|
end_date DATE;
|
|
timeformat TEXT := 'YYYY';
|
|
selector TEXT := 'year';
|
|
base_table TEXT := 'edit_log';
|
|
_interval INTERVAL := '1 ' || selector;
|
|
_interval_next INTERVAL := '2 ' || selector;
|
|
table_name TEXT;
|
|
-- compare date column
|
|
compare_date DATE := NEW.event_date;
|
|
compare_date_name TEXT := 'event_date';
|
|
-- the create commands
|
|
command_create_table TEXT := 'CREATE TABLE IF NOT EXISTS {TABLE_NAME} (CHECK({COMPARE_DATE_NAME} >= {START_DATE} AND {COMPARE_DATE_NAME} < {END_DATE})) INHERITS ({BASE_NAME})';
|
|
command_create_primary_key TEXT := 'ALTER TABLE {TABLE_NAME} ADD PRIMARY KEY ({BASE_TABLE}_id)';
|
|
command_create_foreign_key_1 TEXT := 'ALTER TABLE {TABLE_NAME} ADD CONSTRAINT {TABLE_NAME}_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL';
|
|
command_create_trigger_1 TEXT = 'CREATE TRIGGER trg_{TABLE_NAME} BEFORE INSERT OR UPDATE ON {TABLE_NAME} FOR EACH ROW EXECUTE PROCEDURE set_edit_generic()';
|
|
BEGIN
|
|
-- we are in valid start time area
|
|
IF (NEW.event_date >= start_date) THEN
|
|
-- current table name
|
|
table_name := base_table || '_' || to_char(NEW.event_date, timeformat);
|
|
BEGIN
|
|
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
|
-- if insert failed because of missing table, create new below
|
|
EXCEPTION
|
|
WHEN undefined_table THEN
|
|
-- another block, so in case the creation fails here too
|
|
BEGIN
|
|
-- create new table here + all indexes
|
|
start_date := date_trunc(selector, NEW.event_date);
|
|
end_date := date_trunc(selector, NEW.event_date + _interval);
|
|
-- creat table
|
|
EXECUTE format(REPLACE( -- end date
|
|
REPLACE( -- start date
|
|
REPLACE( -- compare date name
|
|
REPLACE( -- base name (inherit)
|
|
REPLACE( -- table name
|
|
command_create_table,
|
|
'{TABLE_NAME}',
|
|
table_name
|
|
),
|
|
'{BASE_NAME}',
|
|
base_table
|
|
),
|
|
'{COMPARE_DATE_NAME}',
|
|
compare_date_name
|
|
),
|
|
'{START_DATE}',
|
|
quote_literal(start_date)
|
|
),
|
|
'{END_DATE}',
|
|
quote_literal(end_date)
|
|
));
|
|
-- create all indexes and triggers
|
|
EXECUTE format(REPLACE(
|
|
REPLACE(
|
|
command_create_primary_key,
|
|
'{TABLE_NAME}',
|
|
table_name
|
|
),
|
|
'{BASE_TABLE}',
|
|
base_table
|
|
));
|
|
-- FK constraints
|
|
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
|
-- generic trigger
|
|
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
|
|
|
-- insert try again
|
|
EXECUTE 'INSERT INTO ' || quote_ident(table_name) || ' SELECT ($1).*' USING NEW;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
|
END;
|
|
-- other errors, insert into overlow
|
|
WHEN OTHERS THEN
|
|
-- if this faled, throw it into the overflow table (so we don't loose anything)
|
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
|
END;
|
|
-- main insert run done, check if we have to create next months table
|
|
BEGIN
|
|
-- check if next month table exists
|
|
table_name := base_table || '_' || to_char((SELECT NEW.event_date + _interval)::DATE, timeformat);
|
|
-- RAISE NOTICE 'SEARCH NEXT: %', table_name;
|
|
IF (SELECT to_regclass(table_name)) IS NULL THEN
|
|
-- move inner interval same
|
|
start_date := date_trunc(selector, NEW.event_date + _interval);
|
|
end_date := date_trunc(selector, NEW.event_date + _interval_next);
|
|
-- RAISE NOTICE 'CREATE NEXT: %', table_name;
|
|
-- create table
|
|
EXECUTE format(REPLACE( -- end date
|
|
REPLACE( -- start date
|
|
REPLACE( -- compare date name
|
|
REPLACE( -- base name (inherit)
|
|
REPLACE( -- table name
|
|
command_create_table,
|
|
'{TABLE_NAME}',
|
|
table_name
|
|
),
|
|
'{BASE_NAME}',
|
|
base_table
|
|
),
|
|
'{COMPARE_DATE_NAME}',
|
|
compare_date_name
|
|
),
|
|
'{START_DATE}',
|
|
quote_literal(start_date)
|
|
),
|
|
'{END_DATE}',
|
|
quote_literal(end_date)
|
|
));
|
|
-- create all indexes and triggers
|
|
EXECUTE format(REPLACE(
|
|
REPLACE(
|
|
command_create_primary_key,
|
|
'{TABLE_NAME}',
|
|
table_name
|
|
),
|
|
'{BASE_TABLE}',
|
|
base_table
|
|
));
|
|
-- FK constraints
|
|
EXECUTE format(REPLACE(command_create_foreign_key_1, '{TABLE_NAME}', table_name));
|
|
-- generic trigger
|
|
EXECUTE format(REPLACE(command_create_trigger_1, '{TABLE_NAME}', table_name));
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
RAISE NOTICE 'Failed to create next table: %', table_name;
|
|
END;
|
|
ELSE
|
|
-- if outside valid date, insert into overflow
|
|
INSERT INTO edit_log_overflow VALUES (NEW.*);
|
|
END IF;
|
|
RETURN NULL;
|
|
END
|
|
$$
|
|
LANGUAGE 'plpgsql';
|
|
-- END: function/edit_log_partition_insert.sql
|
|
-- START: function/edit_user_set_login_user_id_set_date.sql
|
|
-- set edit user login_user_id_set_date if login_user_id is set
|
|
-- NOW() if not empty
|
|
|
|
CREATE OR REPLACE FUNCTION set_login_user_id_set_date()
|
|
RETURNS TRIGGER AS
|
|
$$
|
|
BEGIN
|
|
-- if new is not null/empty
|
|
-- and old one is null or old one different new one
|
|
-- set NOW()
|
|
-- if new one is NULL
|
|
-- set NULL
|
|
IF
|
|
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)
|
|
THEN
|
|
NEW.login_user_id_set_date = NOW();
|
|
NEW.login_user_id_last_revalidate = NOW();
|
|
ELSIF NEW.login_user_id IS NULL OR NEW.login_user_id = '' THEN
|
|
NEW.login_user_id_set_date = NULL;
|
|
NEW.login_user_id_last_revalidate = NULL;
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$
|
|
LANGUAGE 'plpgsql';
|
|
-- END: function/edit_user_set_login_user_id_set_date.sql
|
|
-- START: table/edit_temp_files.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/08
|
|
-- DESCRIPTION:
|
|
-- edit interface temporary files, list of all files in edit (admin) directory
|
|
-- TABLE: temp_files
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE temp_files;
|
|
CREATE TABLE temp_files (
|
|
filename VARCHAR,
|
|
folder VARCHAR
|
|
);
|
|
-- END: table/edit_temp_files.sql
|
|
-- START: table/edit_generic.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- edit tables, this is the generic table, inheriteded by most edit tables
|
|
-- TABLE: edit_generic
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_generic;
|
|
CREATE TABLE edit_generic (
|
|
cuid VARCHAR,
|
|
date_created TIMESTAMP WITHOUT TIME ZONE DEFAULT clock_timestamp(),
|
|
date_updated TIMESTAMP WITHOUT TIME ZONE
|
|
);
|
|
-- END: table/edit_generic.sql
|
|
-- START: table/edit_visible_group.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- edit tables, postgres SQL statements for the mysql definitions
|
|
-- TABLE: edit_visible_group
|
|
-- HISTORY
|
|
|
|
-- DROP TABLE edit_visible_group;
|
|
CREATE TABLE edit_visible_group (
|
|
edit_visible_group_id SERIAL PRIMARY KEY,
|
|
name VARCHAR,
|
|
flag VARCHAR
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_visible_group.sql
|
|
-- START: table/edit_menu_group.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- edit tables, groupings for menu
|
|
-- TABLE: edit_menu_group
|
|
-- HISTORY
|
|
|
|
-- DROP TABLE edit_menu_group;
|
|
CREATE TABLE edit_menu_group (
|
|
edit_menu_group_id SERIAL PRIMARY KEY,
|
|
name VARCHAR,
|
|
flag VARCHAR,
|
|
order_number INT NOT NULL
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
|
|
|
|
-- END: table/edit_menu_group.sql
|
|
-- START: table/edit_page.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- edit tables, this table contains all pages in the edit interface and allocates rights + values to it
|
|
-- TABLE: edit_page
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_page;
|
|
CREATE TABLE edit_page (
|
|
edit_page_id SERIAL PRIMARY KEY,
|
|
content_alias_edit_page_id INT, -- alias for page content, if the page content is defined on a different page, ege for ajax backend pages
|
|
FOREIGN KEY (content_alias_edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
filename VARCHAR,
|
|
name VARCHAR UNIQUE,
|
|
order_number INT NOT NULL,
|
|
online SMALLINT NOT NULL DEFAULT 0,
|
|
menu SMALLINT NOT NULL DEFAULT 0,
|
|
popup SMALLINT NOT NULL DEFAULT 0,
|
|
popup_x SMALLINT,
|
|
popup_y SMALLINT,
|
|
hostname VARCHAR
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_page.sql
|
|
-- START: table/edit_query_string.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- edit tables
|
|
-- TABLE: edit_query_string
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_query_string;
|
|
CREATE TABLE edit_query_string (
|
|
edit_query_string_id SERIAL PRIMARY KEY,
|
|
edit_page_id INT NOT NULL,
|
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
name VARCHAR,
|
|
value VARCHAR,
|
|
dynamic SMALLINT NOT NULL DEFAULT 0
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_query_string.sql
|
|
-- START: table/edit_page_visible_group.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- reference table between visible groups and pages
|
|
-- TABLE: edit_page_visible_group
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_page_visible_group;
|
|
CREATE TABLE edit_page_visible_group (
|
|
edit_page_id INT NOT NULL,
|
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_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
|
|
);
|
|
-- END: table/edit_page_visible_group.sql
|
|
-- START: table/edit_page_menu_group.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- reference table between menu groups and pages
|
|
-- TABLE: edit_page_menu_group
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_page_menu_group;
|
|
CREATE TABLE edit_page_menu_group (
|
|
edit_page_id INT NOT NULL,
|
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_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
|
|
);
|
|
-- END: table/edit_page_menu_group.sql
|
|
-- START: table/edit_access_right.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- holds all access right levels for the edit interface and other access areas
|
|
-- this table is fixed, prefilled and not changable
|
|
-- TABLE: edit_access_right
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_access_right;
|
|
CREATE TABLE edit_access_right (
|
|
edit_access_right_id SERIAL PRIMARY KEY,
|
|
name VARCHAR,
|
|
level SMALLINT,
|
|
type VARCHAR,
|
|
UNIQUE (level,type)
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_access_right.sql
|
|
-- START: table/edit_scheme.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- holds backend template schemes
|
|
-- TABLE: edit_scheme
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_scheme;
|
|
CREATE TABLE edit_scheme (
|
|
edit_scheme_id SERIAL PRIMARY KEY,
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
name VARCHAR,
|
|
header_color VARCHAR,
|
|
css_file VARCHAR,
|
|
template VARCHAR
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_scheme.sql
|
|
-- START: table/edit_language.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- languages for the backend, this not used for the encoding, but only for having different language strings
|
|
-- the backend encoding is all UTF-8 (not changeable)
|
|
-- TABLE: edit_language
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_language;
|
|
CREATE TABLE edit_language (
|
|
edit_language_id SERIAL PRIMARY KEY,
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
lang_default SMALLINT NOT NULL DEFAULT 0,
|
|
long_name VARCHAR,
|
|
short_name VARCHAR, -- en_US, en or en_US@latin without encoding
|
|
iso_name VARCHAR, -- should actually be encoding
|
|
order_number INT
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_language.sql
|
|
-- START: table/edit_group.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- list of pages the user can access, with a generic access level, one group per user
|
|
-- TABLE: edit_group
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_group;
|
|
CREATE TABLE edit_group (
|
|
edit_group_id SERIAL PRIMARY KEY,
|
|
edit_scheme_id INT,
|
|
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_access_right_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
deleted SMALLINT DEFAULT 0,
|
|
uid VARCHAR,
|
|
name VARCHAR,
|
|
additional_acl JSONB
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_group.sql
|
|
-- START: table/edit_page_access.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- groups pages together to one page group to which the user is then subscribed
|
|
-- TABLE: edit_page_access
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_page_access;
|
|
CREATE TABLE edit_page_access (
|
|
edit_page_access_id SERIAL PRIMARY KEY,
|
|
edit_group_id INT NOT NULL,
|
|
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_page_id INT NOT NULL,
|
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_access_right_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
enabled SMALLINT NOT NULL DEFAULT 0
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
|
|
|
|
-- END: table/edit_page_access.sql
|
|
-- START: table/edit_page_content.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2019/9/9
|
|
-- DESCRIPTION:
|
|
-- sub content to one page with additional edit access right set
|
|
-- can be eg JS content groups on one page
|
|
-- TABLE: edit_page_content
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_page_content;
|
|
CREATE TABLE edit_page_content (
|
|
edit_page_content_id SERIAL PRIMARY KEY,
|
|
edit_page_id INT NOT NULL,
|
|
FOREIGN KEY (edit_page_id) REFERENCES edit_page (edit_page_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_access_right_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
uid VARCHAR UNIQUE,
|
|
name VARCHAR,
|
|
order_number INT NOT NULL,
|
|
online SMALLINT NOT NULL DEFAULT 0
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_page_content.sql
|
|
-- START: table/edit_user.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/06
|
|
-- DESCRIPTION:
|
|
-- holds the user that can login + group, scheme, lang and a default access right
|
|
-- TABLE: edit_user
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_user;
|
|
CREATE TABLE edit_user (
|
|
edit_user_id SERIAL PRIMARY KEY,
|
|
connect_edit_user_id INT, -- possible reference to other user
|
|
FOREIGN KEY (connect_edit_user_id) REFERENCES edit_user (edit_user_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_language_id INT NOT NULL,
|
|
FOREIGN KEY (edit_language_id) REFERENCES edit_language (edit_language_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_group_id INT NOT NULL,
|
|
FOREIGN KEY (edit_group_id) REFERENCES edit_group (edit_group_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_scheme_id INT,
|
|
FOREIGN KEY (edit_scheme_id) REFERENCES edit_scheme (edit_scheme_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_access_right_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
-- username/password
|
|
username VARCHAR UNIQUE,
|
|
password VARCHAR,
|
|
-- name block
|
|
first_name VARCHAR,
|
|
last_name VARCHAR,
|
|
first_name_furigana VARCHAR,
|
|
last_name_furigana VARCHAR,
|
|
-- email
|
|
email VARCHAR,
|
|
-- eanbled/deleted flag
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
deleted SMALLINT NOT NULL DEFAULT 0,
|
|
-- general flags
|
|
strict SMALLINT DEFAULT 0,
|
|
locked SMALLINT DEFAULT 0,
|
|
protected SMALLINT NOT NULL DEFAULT 0,
|
|
-- legacy, debug flags
|
|
debug SMALLINT NOT NULL DEFAULT 0,
|
|
db_debug SMALLINT NOT NULL DEFAULT 0,
|
|
-- is admin user
|
|
admin SMALLINT NOT NULL DEFAULT 0,
|
|
-- last login log
|
|
last_login TIMESTAMP WITHOUT TIME ZONE,
|
|
-- login error
|
|
login_error_count INT DEFAULT 0,
|
|
login_error_date_last TIMESTAMP WITHOUT TIME ZONE,
|
|
login_error_date_first TIMESTAMP WITHOUT TIME ZONE,
|
|
-- time locked
|
|
lock_until TIMESTAMP WITHOUT TIME ZONE,
|
|
lock_after TIMESTAMP WITHOUT TIME ZONE,
|
|
-- password change
|
|
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_reset_time TIMESTAMP WITHOUT TIME ZONE, -- when the password reset was requested
|
|
password_reset_uid VARCHAR, -- the uid to access the password reset page
|
|
-- _GET login id for direct login
|
|
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_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_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_locked SMALLINT DEFAULT 0, -- lock for loginUserId, but still allow normal login
|
|
-- additional ACL json block
|
|
additional_acl JSONB -- additional ACL as JSON string (can be set by other pages)
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
|
|
-- create unique index
|
|
-- CREATE UNIQUE INDEX edit_user_login_user_id_key ON edit_user (login_user_id) WHERE login_user_id IS NOT NULL;
|
|
|
|
COMMENT ON COLUMN edit_user.username IS 'Login username, must set';
|
|
COMMENT ON COLUMN edit_user.password IS 'Login password, must set';
|
|
COMMENT ON COLUMN edit_user.enabled IS 'Login is enabled (master switch)';
|
|
COMMENT ON COLUMN edit_user.deleted IS 'Login is deleted (master switch), overrides all other';
|
|
COMMENT ON COLUMN edit_user.strict IS 'If too many failed logins user will be locked, default off';
|
|
COMMENT ON COLUMN edit_user.locked IS 'Locked from too many wrong password logins';
|
|
COMMENT ON COLUMN edit_user.protected IS 'User can only be chnaged by admin user';
|
|
COMMENT ON COLUMN edit_user.debug IS 'Turn debug flag on (legacy)';
|
|
COMMENT ON COLUMN edit_user.db_debug IS 'Turn DB debug flag on (legacy)';
|
|
COMMENT ON COLUMN edit_user.admin IS 'If set, this user is SUPER admin';
|
|
COMMENT ON COLUMN edit_user.last_login IS 'Last succesfull login tiemstamp';
|
|
COMMENT ON COLUMN edit_user.login_error_count IS 'Number of failed logins, reset on successful login';
|
|
COMMENT ON COLUMN edit_user.login_error_date_last IS 'Last login error date';
|
|
COMMENT ON COLUMN edit_user.login_error_date_first IS 'First login error date, reset on successfull login';
|
|
COMMENT ON COLUMN edit_user.lock_until IS 'Account is locked until this date, <';
|
|
COMMENT ON COLUMN edit_user.lock_after IS 'Account is locked after this date, >';
|
|
COMMENT ON COLUMN edit_user.password_change_date IS 'Password was changed on';
|
|
COMMENT ON COLUMN edit_user.password_change_interval IS 'After how many days the password has to be changed';
|
|
COMMENT ON COLUMN edit_user.password_reset_time IS 'When the password reset was requested. For reset page uid valid check';
|
|
COMMENT ON COLUMN edit_user.password_reset_uid IS 'Password reset page uid, one time, invalid after reset successful or time out';
|
|
COMMENT ON COLUMN edit_user.login_user_id IS 'Min 32 character UID to be used to login without password. Via GET/POST parameter';
|
|
COMMENT ON COLUMN edit_user.login_user_id_set_date IS 'loginUserId was set at what date';
|
|
COMMENT ON COLUMN edit_user.login_user_id_last_revalidate IS 'set when username/password login is done and loginUserId is set';
|
|
COMMENT ON COLUMN edit_user.login_user_id_valid_from IS 'loginUserId is valid from this date, >=';
|
|
COMMENT ON COLUMN edit_user.login_user_id_valid_until IS 'loginUserId is valid until this date, <=';
|
|
COMMENT ON COLUMN edit_user.login_user_id_revalidate_after IS 'If set to a number greater 0 then user must login after given amount of days to revalidate the loginUserId, set to 0 for valid forver';
|
|
COMMENT ON COLUMN edit_user.login_user_id_locked IS 'A separte lock flag for loginUserId, user can still login normal';
|
|
COMMENT ON COLUMN edit_user.additional_acl IS 'Additional Access Control List stored in JSON format';
|
|
-- END: table/edit_user.sql
|
|
-- START: table/edit_log.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- log data for backend interface, logs all user activities
|
|
-- TABLE: edit_log
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_log;
|
|
CREATE TABLE edit_log (
|
|
edit_log_id SERIAL PRIMARY KEY,
|
|
euid INT, -- this is a foreign key, but I don't nedd to reference to it
|
|
FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL,
|
|
username VARCHAR,
|
|
password VARCHAR,
|
|
event_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
|
ip VARCHAR,
|
|
error TEXT,
|
|
event TEXT,
|
|
data_binary BYTEA,
|
|
data TEXT,
|
|
page VARCHAR,
|
|
action VARCHAR,
|
|
action_id VARCHAR,
|
|
action_yes VARCHAR,
|
|
action_flag VARCHAR,
|
|
action_menu VARCHAR,
|
|
action_loaded VARCHAR,
|
|
action_value VARCHAR,
|
|
action_type VARCHAR,
|
|
action_error VARCHAR,
|
|
user_agent VARCHAR,
|
|
referer VARCHAR,
|
|
script_name VARCHAR,
|
|
query_string VARCHAR,
|
|
server_name VARCHAR,
|
|
http_host VARCHAR,
|
|
http_accept VARCHAR,
|
|
http_accept_charset VARCHAR,
|
|
http_accept_encoding VARCHAR,
|
|
session_id VARCHAR
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_log.sql
|
|
-- START: table/edit_log_overflow.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2020/1/28
|
|
-- DESCRIPTION:
|
|
-- edit log overflow table
|
|
-- this is the overflow table for partition
|
|
-- TABLE: edit_log_overflow
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_log_overflow;
|
|
CREATE TABLE IF NOT EXISTS edit_log_overflow () INHERITS (edit_log);
|
|
ALTER TABLE edit_log_overflow ADD PRIMARY KEY (edit_log_id);
|
|
ALTER TABLE edit_log_overflow ADD CONSTRAINT edit_log_overflow_euid_fkey FOREIGN KEY (euid) REFERENCES edit_user (edit_user_id) MATCH FULL ON UPDATE CASCADE ON DELETE SET NULL;
|
|
-- END: table/edit_log_overflow.sql
|
|
-- START: table/edit_access.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- is a "group" for the outside, a user can have serveral groups with different rights so he can access several parts from the outside
|
|
-- TABLE: edit_access
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_access;
|
|
CREATE TABLE edit_access (
|
|
edit_access_id SERIAL PRIMARY KEY,
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
protected SMALLINT DEFAULT 0,
|
|
deleted SMALLINT DEFAULT 0,
|
|
uid VARCHAR,
|
|
name VARCHAR UNIQUE,
|
|
description VARCHAR,
|
|
color VARCHAR,
|
|
additional_acl JSONB
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_access.sql
|
|
-- START: table/edit_access_user.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2005/07/05
|
|
-- DESCRIPTION:
|
|
-- groupings which user has rights to which access groups (incl ACL)
|
|
-- TABLE: edit_access_user
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_access_user;
|
|
CREATE TABLE edit_access_user (
|
|
edit_access_user_id SERIAL PRIMARY KEY,
|
|
edit_access_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
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,
|
|
edit_access_right_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_right_id) REFERENCES edit_access_right (edit_access_right_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
edit_default SMALLINT DEFAULT 0,
|
|
enabled SMALLINT NOT NULL DEFAULT 0
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
-- END: table/edit_access_user.sql
|
|
-- START: table/edit_access_data.sql
|
|
-- AUTHOR: Clemens Schwaighofer
|
|
-- DATE: 2016/7/15
|
|
-- DESCRIPTION:
|
|
-- sub table to edit access, holds additional data for access group
|
|
-- TABLE: edit_access_data
|
|
-- HISTORY:
|
|
|
|
-- DROP TABLE edit_access_data;
|
|
CREATE TABLE edit_access_data (
|
|
edit_access_data_id SERIAL PRIMARY KEY,
|
|
edit_access_id INT NOT NULL,
|
|
FOREIGN KEY (edit_access_id) REFERENCES edit_access (edit_access_id) MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
|
|
enabled SMALLINT NOT NULL DEFAULT 0,
|
|
name VARCHAR,
|
|
value VARCHAR
|
|
) INHERITS (edit_generic) WITHOUT OIDS;
|
|
|
|
-- create a unique index for each attached data block for each edit access can
|
|
-- only have ONE value;
|
|
CREATE UNIQUE INDEX edit_access_data_edit_access_id_name_ukey ON edit_access_data (edit_access_id, name);
|
|
-- END: table/edit_access_data.sql
|
|
-- START: trigger/trg_edit_access_right.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_access_right ON edit_access_right;
|
|
CREATE TRIGGER trg_edit_access_right
|
|
BEFORE INSERT OR UPDATE ON edit_access_right
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_access_right.sql
|
|
-- START: trigger/trg_edit_access.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_access ON edit_access;
|
|
CREATE TRIGGER trg_edit_access
|
|
BEFORE INSERT OR UPDATE ON edit_access
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
|
|
-- DROP TRIGGER IF EXISTS trg_set_edit_access_uid ON edit_access;
|
|
CREATE TRIGGER trg_set_edit_access_uid
|
|
BEFORE INSERT OR UPDATE ON edit_access
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_access_uid();
|
|
-- END: trigger/trg_edit_access.sql
|
|
-- START: trigger/trg_edit_access_data.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_access_data ON edit_access_data;
|
|
CREATE TRIGGER trg_edit_access_data
|
|
BEFORE INSERT OR UPDATE ON edit_access_data
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_access_data.sql
|
|
-- START: trigger/trg_edit_access_user.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_access_user ON edit_access_user;
|
|
CREATE TRIGGER trg_edit_access_user
|
|
BEFORE INSERT OR UPDATE ON edit_access_user
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_access_user.sql
|
|
-- START: trigger/trg_edit_group.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_group ON edit_group;
|
|
CREATE TRIGGER trg_edit_group
|
|
BEFORE INSERT OR UPDATE ON edit_group
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
|
|
-- DROP TRIGGER IF EXISTS trg_set_edit_group_uid ON edit_group;
|
|
CREATE TRIGGER trg_set_edit_group_uid
|
|
BEFORE INSERT OR UPDATE ON edit_group
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_group_uid();
|
|
-- END: trigger/trg_edit_group.sql
|
|
-- START: trigger/trg_edit_language.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_language ON edit_language;
|
|
CREATE TRIGGER trg_edit_language
|
|
BEFORE INSERT OR UPDATE ON edit_language
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_language.sql
|
|
-- START: trigger/trg_edit_log_overflow.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_log_overflow ON edit_log_overflow;
|
|
CREATE TRIGGER trg_edit_log_overflow
|
|
BEFORE INSERT OR UPDATE ON edit_log_overflow
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_log_overflow.sql
|
|
-- START: trigger/trg_edit_log.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_log ON edit_log;
|
|
CREATE TRIGGER trg_edit_log
|
|
BEFORE INSERT OR UPDATE ON edit_log
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
|
|
-- DROP TRIGGER IF EXISTS trg_edit_log_insert_partition ON edit_log;
|
|
CREATE TRIGGER trg_edit_log_insert_partition
|
|
BEFORE INSERT OR UPDATE ON edit_log
|
|
FOR EACH ROW EXECUTE PROCEDURE edit_log_insert_trigger();
|
|
-- END: trigger/trg_edit_log.sql
|
|
-- START: trigger/trg_edit_page_access.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_page_access ON edit_page_access;
|
|
CREATE TRIGGER trg_edit_page_access
|
|
BEFORE INSERT OR UPDATE ON edit_page_access
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_page_access.sql
|
|
-- START: trigger/trg_edit_page_content.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_page_content ON edit_page_content;
|
|
CREATE TRIGGER trg_edit_page_content
|
|
BEFORE INSERT OR UPDATE ON edit_page_content
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_page_content.sql
|
|
-- START: trigger/trg_edit_page.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_page ON edit_page;
|
|
CREATE TRIGGER trg_edit_page
|
|
BEFORE INSERT OR UPDATE ON edit_page
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_page.sql
|
|
-- START: trigger/trg_edit_query_string.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_query_string ON edit_query_string;
|
|
CREATE TRIGGER trg_edit_query_string
|
|
BEFORE INSERT OR UPDATE ON edit_query_string
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_query_string.sql
|
|
-- START: trigger/trg_edit_scheme.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_scheme ON edit_scheme;
|
|
CREATE TRIGGER trg_edit_scheme
|
|
BEFORE INSERT OR UPDATE ON edit_scheme
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_scheme.sql
|
|
-- START: trigger/trg_edit_user.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_user ON edit_user;
|
|
CREATE TRIGGER trg_edit_user
|
|
BEFORE INSERT OR UPDATE ON edit_user
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
|
|
-- DROP TRIGGER IF EXISTS trg_edit_user_set_login_user_id_set_date ON edit_user;
|
|
CREATE TRIGGER trg_edit_user_set_login_user_id_set_date
|
|
BEFORE INSERT OR UPDATE ON edit_user
|
|
FOR EACH ROW EXECUTE PROCEDURE set_login_user_id_set_date();
|
|
-- END: trigger/trg_edit_user.sql
|
|
-- START: trigger/trg_edit_visible_group.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_visible_group ON edit_visible_group;
|
|
CREATE TRIGGER trg_edit_visible_group
|
|
BEFORE INSERT OR UPDATE ON edit_visible_group
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_visible_group.sql
|
|
-- START: trigger/trg_edit_menu_group.sql
|
|
-- DROP TRIGGER IF EXISTS trg_edit_menu_group ON edit_menu_group;
|
|
CREATE TRIGGER trg_edit_menu_group
|
|
BEFORE INSERT OR UPDATE ON edit_menu_group
|
|
FOR EACH ROW EXECUTE PROCEDURE set_edit_generic();
|
|
-- END: trigger/trg_edit_menu_group.sql
|
|
-- START: data/edit_tables.sql
|
|
-- edit tables insert data in order
|
|
|
|
-- edit visible group
|
|
DELETE FROM edit_visible_group;
|
|
INSERT INTO edit_visible_group (name, flag) VALUES ('Main Menu', 'main');
|
|
INSERT INTO edit_visible_group (name, flag) VALUES ('Data popup Menu', 'datapopup');
|
|
|
|
-- edit menu group
|
|
DELETE FROM edit_menu_group;
|
|
INSERT INTO edit_menu_group (name, flag, order_number) VALUES ('Admin Menu', 'admin', 1);
|
|
INSERT INTO edit_menu_group (name, flag, order_number) VALUES ('Admin Data Popup Menu', 'AdminDataPopup', 2);
|
|
|
|
-- edit page
|
|
DELETE FROM edit_page;
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_pages.php', 'Edit Pages', 1, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_users.php', 'Edit Users', 2, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_languages.php', 'Edit Languages', 3, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_schemes.php', 'Edit Schemes', 4, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_groups.php', 'Edit Groups', 5, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_visible_group.php', 'Edit Visible Groups', 6, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_menu_group.php', 'Edit Menu Groups', 7, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_access.php', 'Edit Access', 8, 1, 1);
|
|
INSERT INTO edit_page (filename, name, order_number, online, menu) VALUES ('edit_order.php', 'Edit Order', 9, 1, 0);
|
|
|
|
-- edit visible group
|
|
DELETE FROM edit_page_visible_group;
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Pages'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Users'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Languages'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Schemes'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Groups'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Visible Groups'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Menu Groups'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Access'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
-- INSERT INTO edit_page_visible_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Order'), (SELECT edit_visible_group_id FROM edit_visible_group WHERE flag = 'main'));
|
|
|
|
-- edit page menu group
|
|
DELETE FROM edit_page_menu_group;
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Pages'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Users'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Languages'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Schemes'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Groups'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Visible Groups'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Menu Groups'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Access'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
-- INSERT INTO edit_page_menu_group VALUES ((SELECT edit_page_id FROM edit_page WHERE name = 'Edit Order'), (SELECT edit_menu_group_id FROM edit_menu_group WHERE flag = 'admin'));
|
|
|
|
|
|
-- edit access right
|
|
DELETE FROM edit_access_right;
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Default', -1, 'default');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('No Access', 0, 'none');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('List', 10, 'list');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Read', 20, 'read');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Translator', 30, 'mod_trans');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Modify', 40, 'mod');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Create/Write', 60, 'write');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Delete', 80, 'del');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Site Admin', 90, 'siteadmin');
|
|
INSERT INTO edit_access_right (name, level, type) VALUES ('Admin', 100, 'admin');
|
|
|
|
-- edit scheme
|
|
DELETE FROM edit_scheme;
|
|
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Default Scheme', 'E0E2FF', 1);
|
|
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Admin', 'CC7E7E', 1);
|
|
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('Visitor', 'B0C4B3', 1);
|
|
INSERT INTO edit_scheme (name, header_color, enabled) VALUES ('User', '1E789E', 1);
|
|
|
|
-- edit language
|
|
-- short_name = locale without encoding
|
|
-- iso_name = encoding
|
|
DELETE FROM edit_language;
|
|
INSERT INTO edit_language (long_name, short_name, iso_name, order_number, enabled, lang_default) VALUES ('English', 'en_US', 'UTF-8', 1, 1, 1);
|
|
INSERT INTO edit_language (long_name, short_name, iso_name, order_number, enabled, lang_default) VALUES ('Japanese', 'ja_JP', 'UTF-8', 2, 1, 0);
|
|
|
|
-- edit group
|
|
DELETE FROM edit_group;
|
|
INSERT INTO edit_group (name, enabled, edit_scheme_id, edit_access_right_id) VALUES ('Admin', 1, (SELECT edit_scheme_id FROM edit_scheme WHERE name = 'Admin'), (SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin'));
|
|
INSERT INTO edit_group (name, enabled, edit_scheme_id, edit_access_right_id) VALUES ('User', 1, (SELECT edit_scheme_id FROM edit_scheme WHERE name = 'User'), (SELECT edit_access_right_id FROM edit_access_right WHERE type = 'write'));
|
|
|
|
-- edit page access
|
|
DELETE FROM edit_page_access;
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Pages'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Users'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Languages'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Schemes'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Groups'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Visible Groups'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Menu Groups'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Access'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
INSERT INTO edit_page_access (enabled, edit_group_id, edit_page_id, edit_access_right_id) VALUES (1,
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_page_id FROM edit_page WHERE name = 'Edit Order'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
|
|
-- edit user
|
|
-- inserts admin user so basic users can be created
|
|
DELETE FROM edit_user;
|
|
INSERT INTO edit_user (username, password, enabled, debug, db_debug, email, protected, admin, edit_language_id, edit_group_id, edit_scheme_id, edit_access_right_id) VALUES ('admin', 'admin', 1, 1, 1, '', 1, 1,
|
|
(SELECT edit_language_id FROM edit_language WHERE short_name = 'en_US'),
|
|
(SELECT edit_group_id FROM edit_group WHERE name = 'Admin'),
|
|
(SELECT edit_scheme_id FROM edit_scheme WHERE name = 'Admin'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
|
|
-- edit access
|
|
DELETE FROM edit_access;
|
|
INSERT INTO edit_access (name, enabled, protected) VALUES ('Admin Access', 1, 1);
|
|
|
|
-- edit access user
|
|
DELETE FROM edit_access_user;
|
|
INSERT INTO edit_access_user (edit_default, enabled, edit_access_id, edit_user_id, edit_access_right_id) VALUES (1, 1,
|
|
(SELECT edit_access_id FROM edit_access WHERE uid = 'AdminAccess'),
|
|
(SELECT edit_user_id FROM edit_user WHERE username = 'admin'),
|
|
(SELECT edit_access_right_id FROM edit_access_right WHERE type = 'admin')
|
|
);
|
|
-- END: data/edit_tables.sql
|