diff --git a/mbrs/docker-compose-build.yml b/mbrs/docker-compose-build.yml new file mode 100644 index 0000000..365e9e4 --- /dev/null +++ b/mbrs/docker-compose-build.yml @@ -0,0 +1,31 @@ +version: "3.1" +services: + web: + build: + context: . + container_name: mrbs-web + ports: + - "8080:80" + + links: + - db + networks: + - default + db: + image: mysql:8.0.33 + container_name: mrbs-db + ports: + - "3306:3306" + command: --default-authentication-plugin=mysql_native_password + environment: + MYSQL_DATABASE: mrbs + MYSQL_USER: mrbs + MYSQL_PASSWORD: dhFtyr6%3jfifjRL.F987? + MYSQL_ROOT_PASSWORD: 3TTEKrPXspMAvHp + + volumes: + - ./tables.my.sql:/docker-entrypoint-initdb.d/010-tables.sql + - ./db:/var/lib/mysql + networks: + - default + diff --git a/mbrs/tables.my.sql b/mbrs/tables.my.sql new file mode 100644 index 0000000..926ec87 --- /dev/null +++ b/mbrs/tables.my.sql @@ -0,0 +1,251 @@ +# +# MySQL MRBS table creation script +# +# Notes: +# (1) If you have decided to change the prefix of your tables from 'mrbs_' +# to something else using $db_tbl_prefix then you must edit each +# 'CREATE TABLE', 'INSERT INTO' and 'REFERENCES' line below to replace +# 'mrbs_' with your new table prefix. A global replace of 'mrbs_' is +# sufficient. +# +# (2) If you add new fields then you should also change the global variable +# $standard_fields. Note that if you are just adding custom fields for +# a single site then this is not necessary. + +CREATE TABLE mrbs_area +( + id int NOT NULL auto_increment, + disabled tinyint DEFAULT 0 NOT NULL, + area_name varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + sort_key varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + timezone varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + area_admin_email text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + resolution int, + default_duration int, + default_duration_all_day tinyint DEFAULT 0 NOT NULL, + morningstarts int, + morningstarts_minutes int, + eveningends int, + eveningends_minutes int, + private_enabled tinyint, + private_default tinyint, + private_mandatory tinyint, + private_override varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + min_create_ahead_enabled tinyint, + min_create_ahead_secs int, + max_create_ahead_enabled tinyint, + max_create_ahead_secs int, + min_delete_ahead_enabled tinyint, + min_delete_ahead_secs int, + max_delete_ahead_enabled tinyint, + max_delete_ahead_secs int, + max_per_day_enabled tinyint DEFAULT 0 NOT NULL, + max_per_day int DEFAULT 0 NOT NULL, + max_per_week_enabled tinyint DEFAULT 0 NOT NULL, + max_per_week int DEFAULT 0 NOT NULL, + max_per_month_enabled tinyint DEFAULT 0 NOT NULL, + max_per_month int DEFAULT 0 NOT NULL, + max_per_year_enabled tinyint DEFAULT 0 NOT NULL, + max_per_year int DEFAULT 0 NOT NULL, + max_per_future_enabled tinyint DEFAULT 0 NOT NULL, + max_per_future int DEFAULT 0 NOT NULL, + max_secs_per_day_enabled tinyint DEFAULT 0 NOT NULL, + max_secs_per_day int DEFAULT 0 NOT NULL, + max_secs_per_week_enabled tinyint DEFAULT 0 NOT NULL, + max_secs_per_week int DEFAULT 0 NOT NULL, + max_secs_per_month_enabled tinyint DEFAULT 0 NOT NULL, + max_secs_per_month int DEFAULT 0 NOT NULL, + max_secs_per_year_enabled tinyint DEFAULT 0 NOT NULL, + max_secs_per_year int DEFAULT 0 NOT NULL, + max_secs_per_future_enabled tinyint DEFAULT 0 NOT NULL, + max_secs_per_future int DEFAULT 0 NOT NULL, + max_duration_enabled tinyint DEFAULT 0 NOT NULL, + max_duration_secs int DEFAULT 0 NOT NULL, + max_duration_periods int DEFAULT 0 NOT NULL, + custom_html text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + approval_enabled tinyint, + reminders_enabled tinyint, + enable_periods tinyint, + periods text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + confirmation_enabled tinyint, + confirmed_default tinyint, + times_along_top tinyint NOT NULL DEFAULT 0, + default_type char DEFAULT 'E' NOT NULL, + + PRIMARY KEY (id), + UNIQUE KEY uq_area_name (area_name) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_room +( + id int NOT NULL auto_increment, + disabled tinyint DEFAULT 0 NOT NULL, + area_id int DEFAULT 0 NOT NULL, + room_name varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + sort_key varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + description varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + capacity int DEFAULT 0 NOT NULL, + room_admin_email text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + invalid_types varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'JSON encoded', + custom_html text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + + PRIMARY KEY (id), + FOREIGN KEY (area_id) + REFERENCES mrbs_area(id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + UNIQUE KEY uq_room_name (area_id, room_name), + KEY idxSortKey (sort_key) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_repeat +( + id int NOT NULL auto_increment, + start_time int DEFAULT 0 NOT NULL COMMENT 'Unix timestamp', + end_time int DEFAULT 0 NOT NULL COMMENT 'Unix timestamp', + rep_type int DEFAULT 0 NOT NULL, + end_date int DEFAULT 0 NOT NULL COMMENT 'Unix timestamp', + rep_opt varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + room_id int DEFAULT 1 NOT NULL, + timestamp timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + create_by varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + modified_by varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + name varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + type char DEFAULT 'E' NOT NULL, + description text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + rep_interval smallint DEFAULT 1 NOT NULL, + month_absolute smallint DEFAULT NULL, + month_relative varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + status tinyint unsigned NOT NULL DEFAULT 0, + reminded int, + info_time int, + info_user varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + info_text text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + ical_uid varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + ical_sequence smallint DEFAULT 0 NOT NULL, + + PRIMARY KEY (id), + FOREIGN KEY (room_id) + REFERENCES mrbs_room(id) + ON UPDATE CASCADE + ON DELETE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_entry +( + id int NOT NULL auto_increment, + start_time int DEFAULT 0 NOT NULL COMMENT 'Unix timestamp', + end_time int DEFAULT 0 NOT NULL COMMENT 'Unix timestamp', + entry_type int DEFAULT 0 NOT NULL, + repeat_id int DEFAULT NULL, + room_id int DEFAULT 1 NOT NULL, + timestamp timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + create_by varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + modified_by varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + name varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + type char DEFAULT 'E' NOT NULL, + description text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + status tinyint unsigned NOT NULL DEFAULT 0, + reminded int, + info_time int, + info_user varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + info_text text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + ical_uid varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + ical_sequence smallint DEFAULT 0 NOT NULL, + ical_recur_id varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + allow_registration tinyint DEFAULT 0 NOT NULL, + registrant_limit int DEFAULT 0 NOT NULL, + registrant_limit_enabled tinyint DEFAULT 1 NOT NULL, + registration_opens int DEFAULT 1209600 NOT NULL COMMENT 'Seconds before the start time', -- 2 weeks + registration_opens_enabled tinyint DEFAULT 0 NOT NULL, + registration_closes int DEFAULT 0 NOT NULL COMMENT 'Seconds before the start_time', + registration_closes_enabled tinyint DEFAULT 0 NOT NULL, + + PRIMARY KEY (id), + FOREIGN KEY (room_id) + REFERENCES mrbs_room(id) + ON UPDATE CASCADE + ON DELETE RESTRICT, + FOREIGN KEY (repeat_id) + REFERENCES mrbs_repeat(id) + ON UPDATE CASCADE + ON DELETE CASCADE, + KEY idxStartTime (start_time), + KEY idxEndTime (end_time), + KEY idxRoomStartEnd (room_id, start_time, end_time) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_participants +( + id int NOT NULL auto_increment, + entry_id int NOT NULL, + username varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + create_by varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + registered int, + + PRIMARY KEY (id), + UNIQUE KEY uq_entryid_username (entry_id, username), + FOREIGN KEY (entry_id) + REFERENCES mrbs_entry(id) + ON UPDATE CASCADE + ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_variables +( + id int NOT NULL auto_increment, + variable_name varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + variable_content text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + + PRIMARY KEY (id), + UNIQUE KEY uq_variable_name (variable_name) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_zoneinfo +( + id int NOT NULL auto_increment, + timezone varchar(127) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' NOT NULL, + outlook_compatible tinyint unsigned NOT NULL DEFAULT 0, + vtimezone text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + last_updated int NOT NULL DEFAULT 0, + + /* Note that there is a limit on the length of keys which imposes a constraint + on the size of VARCHAR that can be keyed */ + PRIMARY KEY (id), + UNIQUE KEY uq_timezone (timezone, outlook_compatible) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_sessions +( + id varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + access int unsigned DEFAULT NULL COMMENT 'Unix timestamp', + data text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + + /* Note that there is a limit on the length of keys which imposes a constraint + on the size of VARCHAR that can be keyed */ + PRIMARY KEY (id), + KEY idxAccess (access) + +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE mrbs_users +( + id int NOT NULL auto_increment, + level smallint DEFAULT 0 NOT NULL, /* play safe and give no rights */ + name varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + display_name varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + password_hash varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + email varchar(75) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + timestamp timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + last_login int DEFAULT '0' NOT NULL, + reset_key_hash varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + reset_key_expiry int DEFAULT 0 NOT NULL, + + PRIMARY KEY (id), + UNIQUE KEY uq_name (name) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT INTO mrbs_variables (variable_name, variable_content) + VALUES ( 'db_version', '82'); +INSERT INTO mrbs_variables (variable_name, variable_content) + VALUES ( 'local_db_version', '1');