installation SQL file в Cotonti
файл используется для начальной настройки базы данных при установке или обновлении системы, обеспечивая создание необходимых таблиц и начальных данных
Этот файл `install.sql` является SQL-скриптом для создания и заполнения таблиц в базе данных для системы управления контентом Cotonti CMF. Он содержит несколько инструкций для создания таблиц, которые используются для различных функций системы:
- Логирование действий и событий (
cot_logger). - Хранение данных о плагинах (
cot_plugins). - Управление серверными событиями и наблюдателями за ними (
cot_server_eventsиcot_server_events_observers). - Структура сайта и его разделы (
cot_structure). - Хранение информации об обновлениях системы (
cot_updates). - Информация о пользователях (
cot_users).
Этот файл используется для начальной настройки базы данных при установке или обновлении системы, обеспечивая создание необходимых таблиц и начальных данных для функционирования платформы.
-
Создание таблицы
cot_auth:- Таблица хранит информацию о правах доступа пользователей (групп) в системе. Включает идентификатор, группу, код, опции, права и информацию о том, кто установил эти права.
- Например, для группы
adminустановлены разные права для разных разделов сайта, такие какmessage,structureи так далее.
-
Создание таблицы
cot_cache:- Эта таблица используется для хранения данных кэша. Она включает имя кэша, реальность (где кэш используется), время истечения срока действия кэша и сам кэшированный контент.
-
Создание таблицы
cot_cache_bindings:- Таблица связывает события с кэшированными данными. Каждый кэшированный элемент связан с конкретным событием и его ID.
-
Создание таблицы
cot_config:- Таблица конфигурации системы, где хранятся различные параметры настроек для системы. Например, настройки языка, временных зон, парсеров и другие.
- Вставка данных в таблицу конфигурации определяет настройки для системы, такие как почта администратора, настройки безопасности и производительности.
-
Создание таблицы
cot_core:- Таблица содержит информацию о ядре системы и подключенных плагинах, включая код, название и состояние плагина.
-
Создание таблицы
cot_extra_fields:- Таблица для хранения дополнительных полей для различных частей системы (например, для групп пользователей). Эти поля могут включать тип, описание и другие параметры.
-
Создание таблицы
cot_groups:- Таблица, определяющая группы пользователей (например, гости, участники, администраторы). Каждая группа имеет уровень доступа и другие атрибуты, такие как название и описание.
-
Заполнение таблицы
cot_groups:- Вставка данных в таблицу групп пользователей. Например, для группы
guestsустанавливается уровень доступа 0, а дляadministrators— 99, что указывает на высокие привилегии.
- Вставка данных в таблицу групп пользователей. Например, для группы
-
Таблица
cot_logger:- Таблица используется для хранения логов событий.
- Поля:
log_id: уникальный идентификатор записи.log_date: дата и время события.log_ip: IP-адрес, с которого произошло событие.log_uid: идентификатор пользователя.log_name: имя события или пользователя.log_uri: URI, связанный с событием.log_group: группа, к которой относится событие (например, администрация).log_type: тип события.log_status: статус события.log_text: описание события.
-
Таблица
cot_plugins:- Таблица для хранения информации о плагинах.
- Поля:
pl_id: уникальный идентификатор плагина.pl_hook: хук плагина.pl_code: код плагина.pl_part: часть плагина (например, фронтенд или бэкенд).pl_title: название плагина.pl_file: путь к файлу плагина.pl_order: порядок загрузки плагинов.pl_active: активность плагина.pl_module: модуль плагина (если применимо).
-
Таблица
cot_server_events:- Таблица для хранения серверных событий.
- Поля:
id: уникальный идентификатор события.user_id: идентификатор пользователя, вызвавшего событие.event: название события.data: дополнительные данные о событии.created_at: дата и время создания события.
-
Таблица
cot_server_events_observers:- Таблица для хранения наблюдателей за событиями (подписчики на события).
- Поля:
id: уникальный идентификатор наблюдателя.user_id: идентификатор пользователя.token: токен наблюдателя.created_at: дата и время создания наблюдателя.updated_at: дата и время последнего обновления.last_event_id: идентификатор последнего события, на которое был подписан наблюдатель.
-
Таблица
cot_structure:- Таблица для хранения структуры сайта (например, разделов и категорий).
- Поля:
structure_id: уникальный идентификатор структуры.structure_area: область структуры (например, админка или фронтенд).structure_code: код структуры.structure_path: путь к структуре.structure_tpl: шаблон, используемый для отображения структуры.structure_title: название структуры.structure_desc: описание структуры.structure_icon: иконка для структуры.structure_locked: статус блокировки структуры.structure_count: количество элементов в структуре.
-
Таблица
cot_updates:- Таблица для хранения информации об обновлениях системы.
- Поля:
upd_param: параметр обновления (например, версия).upd_value: значение параметра (например, номер версии).
-
Таблица
cot_users:- Таблица для хранения информации о пользователях.
- Поля:
user_id: уникальный идентификатор пользователя.user_banexpire: дата истечения бана пользователя.user_name: имя пользователя.user_password: зашифрованный пароль пользователя.user_passfunc: метод шифрования пароля.user_passsalt: соль для пароля.user_maingrp: основная группа пользователя.user_country: страна пользователя.user_timezone: часовой пояс пользователя.user_text: дополнительная информация о пользователе.user_birthdate: дата рождения пользователя.user_gender: пол пользователя.user_email: email пользователя.user_hideemail: скрытие email.user_theme: тема оформления.user_scheme: схема оформления.user_lang: язык пользователя.user_regdate: дата регистрации.user_lastlog: дата последнего входа.user_lastvisit: дата последнего посещения.user_lastip: последний IP-адрес.user_logcount: количество входов.user_sid: сессия пользователя.user_sidtime: время сессии.user_lostpass: потерянный пароль.user_auth: информация об аутентификации.user_token: токен пользователя.
-- Удаляет таблицу `cot_auth`, если она существует DROP TABLE IF EXISTS `cot_auth`; -- Создает таблицу `cot_auth` CREATE TABLE `cot_auth` ( -- Столбец auth_id, целочисленный тип, автоинкремент, ключ первичного индекса `auth_id` int UNSIGNED NOT NULL auto_increment, -- Столбец auth_groupid, целочисленный тип, не может быть NULL `auth_groupid` mediumint UNSIGNED NOT NULL, -- Столбец auth_code, строковый тип, не может быть NULL `auth_code` varchar(255) NOT NULL, -- Столбец auth_option, строковый тип, не может быть NULL, по умолчанию пустая строка `auth_option` varchar(255) NOT NULL default '', -- Столбец auth_rights, тип TINYINT, не может быть NULL, по умолчанию 0 `auth_rights` TINYINT UNSIGNED DEFAULT '0', -- Столбец auth_rights_lock, тип TINYINT, не может быть NULL, по умолчанию 0 `auth_rights_lock` TINYINT UNSIGNED DEFAULT '0', -- Столбец auth_setbyuserid, целочисленный тип, не может быть NULL, по умолчанию 0 `auth_setbyuserid` INT UNSIGNED NOT NULL DEFAULT '0', -- Определение первичного ключа для таблицы по столбцу auth_id PRIMARY KEY (`auth_id`), -- Индекс для столбца auth_groupid KEY `auth_groupid` (`auth_groupid`), -- Индекс для столбца auth_code KEY `auth_code` (`auth_code`) ); -- Вставка значений в таблицу cot_auth INSERT INTO `cot_auth` (`auth_groupid`, `auth_code`, `auth_option`, `auth_rights`, `auth_rights_lock`, `auth_setbyuserid`) VALUES (1, 'admin', 'a', 0, 255, 1), -- Вставка строки для группы "admin" (2, 'admin', 'a', 0, 255, 1), -- Вставка строки для группы "admin" (3, 'admin', 'a', 0, 255, 1), -- Вставка строки для группы "admin" (4, 'admin', 'a', 0, 255, 1), -- Вставка строки для группы "admin" (5, 'admin', 'a', 255, 255, 1), -- Вставка строки для группы "admin" с правами 255 (6, 'admin', 'a', 1, 0, 1), -- Вставка строки для группы "admin" с правами 1 (1, 'message', 'a', 1, 255, 1), -- Вставка строки для группы "message" (2, 'message', 'a', 1, 255, 1), -- Вставка строки для группы "message" (3, 'message', 'a', 1, 255, 1), -- Вставка строки для группы "message" (4, 'message', 'a', 1, 255, 1), -- Вставка строки для группы "message" (5, 'message', 'a', 255, 255, 1), -- Вставка строки для группы "message" с правами 255 (6, 'message', 'a', 131, 0, 1), -- Вставка строки для группы "message" с правами 131 (1, 'structure', 'a', 0, 255, 1), -- Вставка строки для группы "structure" (2, 'structure', 'a', 0, 255, 1), -- Вставка строки для группы "structure" (3, 'structure', 'a', 0, 255, 1), -- Вставка строки для группы "structure" (4, 'structure', 'a', 0, 255, 1), -- Вставка строки для группы "structure" (5, 'structure', 'a', 255, 255, 1), -- Вставка строки для группы "structure" с правами 255 (6, 'structure', 'a', 1, 0, 1); -- Вставка строки для группы "structure" с правами 1 -- Удаляет таблицу `cot_cache`, если она существует DROP TABLE IF EXISTS `cot_cache`; -- Создает таблицу `cot_cache` CREATE TABLE `cot_cache` ( -- Столбец c_name, строковый тип, не может быть NULL `c_name` varchar(120) NOT NULL, -- Столбец c_realm, строковый тип, не может быть NULL, по умолчанию 'cot' `c_realm` varchar(64) NOT NULL default 'cot', -- Столбец c_expire, целочисленный тип, не может быть NULL, по умолчанию 0 `c_expire` INT UNSIGNED NOT NULL default '0', -- Столбец c_auto, тип TINYINT, не может быть NULL, по умолчанию 0 `c_auto` TINYINT UNSIGNED NOT NULL default '0', -- Столбец c_value, тип MEDIUMTEXT, может быть NULL `c_value` MEDIUMTEXT default NULL, -- Определение первичного ключа для таблицы по столбцам c_name и c_realm PRIMARY KEY (`c_name`, `c_realm`), -- Индекс для столбца c_realm KEY (`c_realm`), -- Индекс для столбца c_name KEY (`c_name`), -- Индекс для столбца c_expire KEY (`c_expire`) ); -- Удаляет таблицу `cot_cache_bindings`, если она существует DROP TABLE IF EXISTS `cot_cache_bindings`; -- Создает таблицу `cot_cache_bindings` CREATE TABLE `cot_cache_bindings` ( -- Столбец c_event, строковый тип, не может быть NULL `c_event` VARCHAR(64) NOT NULL, -- Столбец c_id, строковый тип, не может быть NULL `c_id` VARCHAR(120) NOT NULL, -- Столбец c_realm, строковый тип, не может быть NULL, по умолчанию 'cot' `c_realm` VARCHAR(64) NOT NULL DEFAULT 'cot', -- Столбец c_type, тип TINYINT, не может быть NULL, по умолчанию 0 `c_type` TINYINT NOT NULL DEFAULT '0', -- Определение первичного ключа для таблицы по столбцам c_event, c_id и c_realm PRIMARY KEY (`c_event`, `c_id`, `c_realm`) );
-- Удаляет таблицу `cot_config`, если она существует DROP TABLE IF EXISTS `cot_config`; -- Создает таблицу `cot_config` CREATE TABLE `cot_config` ( -- Столбец config_owner, строковый тип, по умолчанию 'core', не может быть NULL `config_owner` varchar(24) NOT NULL default 'core', -- Столбец config_cat, строковый тип, не может быть NULL `config_cat` varchar(64) NOT NULL, -- Столбец config_subcat, строковый тип, по умолчанию пустая строка `config_subcat` varchar(255) NOT NULL default '', -- Столбец config_order, строковый тип, по умолчанию '00', не может быть NULL `config_order` char(3) NOT NULL default '00', -- Столбец config_name, строковый тип, не может быть NULL `config_name` varchar(64) NOT NULL, -- Столбец config_type, тип TINYINT, не может быть NULL, по умолчанию 0 `config_type` tinyint NOT NULL default '0', -- Столбец config_value, тип TEXT, не может быть NULL `config_value` text NOT NULL, -- Столбец config_default, строковый тип, по умолчанию пустая строка `config_default` varchar(255) NOT NULL default '', -- Столбец config_variants, строковый тип, по умолчанию пустая строка `config_variants` varchar(255) NOT NULL default '', -- Столбец config_text, строковый тип, по умолчанию пустая строка `config_text` varchar(255) NOT NULL default '', -- Столбец config_donor, строковый тип, по умолчанию пустая строка `config_donor` varchar(64) NOT NULL default '', -- Создает уникальный индекс для комбинации столбцов config_owner, config_cat, config_name, config_subcat UNIQUE INDEX `config_owner_cat_name_subcat_key` (`config_owner`, `config_cat`, `config_name`, `config_subcat`), -- Создает индекс по столбцам config_owner и config_cat KEY (`config_owner`, `config_cat`), -- Создает индекс по столбцам config_owner, config_cat и config_name KEY (`config_owner`, `config_cat`, `config_name`) );
-- Вставка значений в таблицу `cot_config`
INSERT INTO `cot_config` (`config_owner`, `config_cat`, `config_order`, `config_name`, `config_type`, `config_value`, `config_default`, `config_variants`, `config_text`) VALUES
-- Запись конфигурации для владельца 'core', категории 'locale', с определенным порядковым номером и значением параметра
('core','locale','01','forcedefaultlang',3,'0','0','',''),
-- Запись для конфигурации временной зоны
('core','locale','11','defaulttimezone',4,'UTC','UTC','cot_config_timezones()',''),
-- Запись для конфигурации почтового администратора
('core','main','01','adminemail',1,'[email protected]','[email protected]','',''),
-- Запись для конфигурации кластера
('core','main','02','clustermode',3,'0','0','',''),
-- Запись для конфигурации IP-адреса хоста
('core','main','03','hostip',1,'999.999.999.999','999.999.999.999','',''),
-- Запись для конфигурации парсера
('core','main','04','parser',4,'none','none','cot_get_parsers()',''),
-- Запись для конфигурации максимального числа строк на странице
('core','main','05','maxrowsperpage',8,'15','','cot_config_type_int(1)',''),
-- Запись для настройки навигации на страницах
('core','main','06','easypagenav',3,'1','1','',''),
-- Запись для настройки подтверждения ссылок
('core','main','07','confirmlinks',3,'1','1','',''),
-- Запись для уровня логирования
('core','main','08','loggerlevel',2,'sec+adm+ext','sec+adm+ext','none,sec,adm,ext,sec+adm,sec+ext,adm+ext,sec+adm+ext,all',''),
-- Запись для отображения установленных компонентов
('core','main','91','default_show_installed',3,'0','0','',''),
-- Записи для различных элементов меню
('core','menus','01','topline',0,'','','',''),
('core','menus','02','banner',0,'','','',''),
('core','menus','03','bottomline',0,'','','',''),
('core','menus','11','menu1',0,'<li><a href=\"index.php\">Home</a></li>\n<li><a href=\"index.php?e=forums\">Forums</a></li>\n<li><a href=\"index.php?e=page&c=articles\">Articles</a></li>\n<li><a href=\"index.php?e=search\">Search</a></li>','<li><a href=\"index.php\">Home</a></li>\n<li><a href=\"index.php?e=forums\">Forums</a></li>\n<li><a href=\"index.php?e=page&c=articles\">Articles</a></li>\n<li><a href=\"index.php?e=search\">Search</a></li>','',''),
-- Записи для свободных текстовых полей меню
('core','menus','12','menu2',0,'','','',''),
('core','menus','13','menu3',0,'','','',''),
('core','menus','14','menu4',0,'','','',''),
('core','menus','15','menu5',0,'','','',''),
-- Записи для текста меню
('core','menus','16','menu6',0,'','','',''),
('core','menus','17','menu7',0,'','','',''),
('core','menus','18','menu8',0,'','','',''),
('core','menus','19','menu9',0,'','','',''),
('core','menus','21','freetext1',0,'','','',''),
-- Продолжение записи элементов меню
('core','menus','22','freetext2',0,'','','',''),
('core','menus','23','freetext3',0,'','','',''),
('core','menus','24','freetext4',0,'','','',''),
('core','menus','25','freetext5',0,'','','',''),
('core','menus','26','freetext6',0,'','','',''),
('core','menus','27','freetext7',0,'','','',''),
('core','menus','28','freetext8',0,'','','',''),
('core','menus','29','freetext9',0,'','','',''),
-- Записи для производительности
('core','performance','01','gzip',3,'0','0','',''),
('core','performance','02','headrc_consolidate',3,'0','0','',''),
('core','performance','03','headrc_minify',3,'1','1','',''),
('core','performance','04','jquery_cdn',1,'','','',''),
-- Записи для других настроек производительности
('core','performance','05','jquery',3,'1','1','',''),
('core','performance','06','turnajax',3,'1','1','',''),
-- Записи для безопасности
('core','security','21','shieldenabled',3,'0','0','',''),
('core','security','22','shieldtadjust',2,'100','100','10,25,50,75,100,125,150,200,300,400,600,800',''),
('core','security','23','shieldzhammer',2,'25','25','5,10,15,20,25,30,40,50,100',''),
-- Запись для конфигурации CAPTCHA
('core','security','31','captchamain',4,'mcaptcha','mcaptcha','cot_captcha_list()',''),
-- Прочие записи для безопасности
('core','security','32','captcharandom',3,'0','0','',''),
('core','security','40','logWrongInput',3,'0','0','',''),
('core','security','41','referercheck',3,'1','1','',''),
('core','security','42','hashfunc',4,'sha256','sha256','cot_hash_funcs()',''),
('core','security','97','devmode',3,'0','0','',''),
('core','security','98','maintenance',3,'0','0','',''),
('core','security','99','maintenancereason',1,'','','',''),
-- Записи для сессий
('core','sessions','01','cookiedomain',1,'','','',''),
('core','sessions','02','cookiepath',1,'','','',''),
('core','sessions','03','cookielifetime',2,'5184000','5184000','1800,3600,7200,14400,28800,43200,86400,172800,259200,604800,1296000,2592000,5184000',''),
('core','sessions','04','forcerememberme',3,'0','0','',''),
('core','sessions','05','timedout',2,'1200','1200','30,60,120,300,600,900,1200,1800,2400,3600',''),
('core','sessions','06','redirbkonlogin',3,'1','1','',''),
('core','sessions','07','redirbkonlogout',3,'0','0','',''),
-- Записи для темы
('core','theme','01','forcedefaulttheme',3,'0','0','',''),
('core','theme','02','homebreadcrumb',3,'0','0','',''),
('core','theme','04','separator',1,'/','/','',''),
-- Другие записи для темы
('core','theme','05','disablesysinfos',3,'0','0','',''),
('core','theme','06','keepcrbottom',3,'1','1','',''),
('core','theme','07','showsqlstats',3,'0','0','',''),
-- Запись для разделения сообщений в теме
('core','theme','08','msg_separate',3,'0','0','','Show messages separately for each source'),
-- Записи для титула
('core','title','01','maintitle',1,'Title of your site','Title of your site','',''),
('core','title','02','subtitle',1,'Subtitle','Subtitle','',''),
('core','title','03','metakeywords',1,'','','',''),
('core','title','14','title_users_details',1,'{USER}: {NAME}','{USER} - {NAME}','',''),
('core','title','18','title_header',1,'{SUBTITLE} - {MAINTITLE}','{SUBTITLE} - {MAINTITLE}','',''),
('core','title','19','title_header_index',1,'{MAINTITLE} - {DESCRIPTION} {SUBTITLE}','{MAINTITLE} - {DESCRIPTION} {SUBTITLE}','',''),
('core','title','98','subject_mail',1,'{SITE_TITLE} - {MAIL_SUBJECT}','{SITE_TITLE} - {MAIL_SUBJECT}','',''),
-- Запись для тела письма
('core','title','99','body_mail',0,'{MAIL_BODY}\n\n{SITE_TITLE} - {SITE_URL}\n{SITE_DESCRIPTION}','{MAIL_BODY}\n\n{SITE_TITLE} - {SITE_URL}\n{SITE_DESCRIPTION}','','');
-- Удаляем таблицу `cot_core`, если она существует DROP TABLE IF EXISTS `cot_core`; -- Создаем таблицу `cot_core` CREATE TABLE `cot_core` ( -- Определяем колонку `ct_id`, которая будет автоматически увеличиваться `ct_id` mediumint UNSIGNED NOT NULL auto_increment, -- Определяем колонку `ct_code`, которая не может быть пустой `ct_code` varchar(64) NOT NULL, -- Определяем колонку `ct_title`, которая не может быть пустой `ct_title` varchar(64) NOT NULL, -- Определяем колонку `ct_version`, задаем значение по умолчанию, если оно не указано `ct_version` varchar(32) NOT NULL DEFAULT '', -- Определяем колонку `ct_state`, она не может быть пустой, и по умолчанию имеет значение 1 `ct_state` tinyint UNSIGNED NOT NULL DEFAULT 1, -- Определяем колонку `ct_lock`, она не может быть пустой, и по умолчанию имеет значение 0 `ct_lock` tinyint UNSIGNED NOT NULL DEFAULT 0, -- Определяем колонку `ct_plug`, она не может быть пустой, и по умолчанию имеет значение 0 `ct_plug` tinyint UNSIGNED NOT NULL DEFAULT 0, -- Определяем основной ключ для таблицы, который будет уникальным идентификатором записи PRIMARY KEY (`ct_id`), -- Добавляем индекс для колонки `ct_code` KEY `ct_code` (`ct_code`) );
-- Удаляем таблицу `cot_extra_fields`, если она существует DROP TABLE IF EXISTS `cot_extra_fields`; -- Создаем таблицу `cot_extra_fields` CREATE TABLE `cot_extra_fields` ( -- Определяем колонку `field_location`, указывающую, где используется поле (например, users, pages) `field_location` varchar(255) NOT NULL, -- Определяем колонку `field_name`, задающую имя дополнительного поля `field_name` varchar(255) NOT NULL, -- Определяем колонку `field_type`, содержащую тип данных поля (например, integer, string, select) `field_type` varchar(255) NOT NULL, -- Определяем колонку `field_html`, содержащую HTML-код для вывода поля, может быть пустым `field_html` text DEFAULT NULL, -- Определяем колонку `field_variants`, содержащую возможные варианты значений для поля (например, для выпадающего списка) `field_variants` text DEFAULT NULL, -- Определяем колонку `field_params`, содержащую дополнительные параметры поля `field_params` text DEFAULT NULL, -- Определяем колонку `field_default`, содержащую значение по умолчанию `field_default` text DEFAULT NULL, -- Определяем колонку `field_required`, указывающую, является ли поле обязательным (0 - нет, 1 - да) `field_required` tinyint UNSIGNED NOT NULL DEFAULT '0', -- Определяем колонку `field_enabled`, указывающую, активно ли поле (1 - активно, 0 - отключено) `field_enabled` tinyint UNSIGNED NOT NULL DEFAULT '1', -- Определяем колонку `field_parse`, содержащую способ обработки данных (например, HTML, Text, None) `field_parse` varchar(32) NOT NULL DEFAULT 'HTML', -- Определяем колонку `field_description`, содержащую описание дополнительного поля `field_description` text default NULL, -- Добавляем индекс для `field_location`, чтобы ускорить поиск по этой колонке KEY `field_location` (`field_location`), -- Добавляем индекс для `field_name`, чтобы ускорить поиск по названию поля KEY `field_name` (`field_name`) );
-- Удаляем таблицу `cot_groups`, если она уже существует, чтобы избежать ошибок при создании DROP TABLE IF EXISTS `cot_groups`; -- Создаем таблицу `cot_groups` CREATE TABLE `cot_groups` ( -- Уникальный идентификатор группы пользователей, автоинкрементируемый `grp_id` mediumint UNSIGNED NOT NULL auto_increment, -- Уникальный псевдоним группы (например, 'guests', 'members') `grp_alias` varchar(32) NOT NULL, -- Уровень группы: используется для управления правами доступа (чем выше, тем больше привилегий) `grp_level` tinyint NOT NULL DEFAULT '1', -- Флаг отключения группы (0 - активна, 1 - отключена) `grp_disabled` tinyint NOT NULL DEFAULT '0', -- Отображаемое название группы `grp_name` varchar(64) NOT NULL, -- Заголовок группы, возможно, используется в UI `grp_title` varchar(64) NOT NULL DEFAULT '', -- Описание группы `grp_desc` varchar(255) NOT NULL DEFAULT '', -- Иконка группы, путь к изображению `grp_icon` varchar(128) NOT NULL DEFAULT '', -- ID владельца группы (обычно 1 - супер администратор) `grp_ownerid` int UNSIGNED NOT NULL DEFAULT '0', -- Флаг технического режима для группы (например, для администраторов) `grp_maintenance` tinyint NOT NULL DEFAULT '0', -- Флаг, указывающий, пропускать ли проверку прав (используется для администраторов) `grp_skiprights` tinyint NOT NULL DEFAULT '0', -- Определение первичного ключа для идентификатора группы PRIMARY KEY (`grp_id`) ) AUTO_INCREMENT=7; -- Вставляем предустановленные группы пользователей INSERT INTO `cot_groups` (`grp_id`, `grp_alias`, `grp_level`, `grp_disabled`, `grp_name`, `grp_title`, `grp_desc`, `grp_icon`, `grp_ownerid`, `grp_maintenance`) VALUES -- Группа гостей (неавторизованные пользователи) (1, 'guests', 0, 0, 'Guests', 'Guest', '', '', 1, 0), -- Группа неактивных пользователей (2, 'inactive', 1, 0, 'Inactive', 'Inactive', '', '', 1, 0), -- Группа заблокированных пользователей (3, 'banned', 1, 0, 'Banned', 'Banned', '', '', 1, 0), -- Основная группа зарегистрированных пользователей (4, 'members', 1, 0, 'Members', 'Member', '', '', 1, 0), -- Группа администраторов с максимальным уровнем доступа (5, 'administrators', 99, 0, 'Administrators', 'Administrator', '', '', 1, 1), -- Группа модераторов с высоким уровнем доступа (6, 'moderators', 50, 0, 'Moderators', 'Moderator', '', '', 1, 1);
-- Удаляем таблицу `cot_groups_users`, если она уже существует, чтобы избежать ошибок при создании DROP TABLE IF EXISTS `cot_groups_users`; -- Создаем таблицу `cot_groups_users`, которая связывает пользователей с группами CREATE TABLE `cot_groups_users` ( -- ID пользователя, которому принадлежит группа `gru_userid` int UNSIGNED NOT NULL, -- ID группы, к которой принадлежит пользователь `gru_groupid` mediumint UNSIGNED NOT NULL, -- Состояние связи пользователя с группой (не используется в системе) `gru_state` tinyint NOT NULL DEFAULT '0', -- NOT USING ANYWHERE (не используется нигде) -- Уникальный ключ, предотвращающий дублирование записей (один пользователь в одной группе один раз) UNIQUE KEY `gru_groupid` (`gru_groupid`,`gru_userid`), -- Индекс для быстрого поиска по ID пользователя KEY `gru_userid` (`gru_userid`) );
-- Удаляем таблицу `cot_logger`, если она уже существует, чтобы избежать ошибок при создании DROP TABLE IF EXISTS `cot_logger`; -- Создаем таблицу `cot_logger` для хранения логов действий в системе CREATE TABLE `cot_logger` ( -- Уникальный идентификатор записи лога `log_id` mediumint UNSIGNED NOT NULL auto_increment, -- Дата и время события в формате UNIX timestamp `log_date` int UNSIGNED NOT NULL, -- IP-адрес пользователя, который вызвал событие `log_ip` varchar(64) DEFAULT '', -- ID пользователя, совершившего действие (0, если гость) `log_uid` int UNSIGNED NOT NULL DEFAULT '0', -- Имя пользователя, совершившего действие `log_name` varchar(100) DEFAULT '', -- URI страницы, на которой произошло событие `log_uri` varchar(255) DEFAULT '', -- Группа событий (по умолчанию 'adm' — административные события) `log_group` varchar(64) DEFAULT 'adm', -- Тип события (например, login, update, delete) `log_type` varchar(32) DEFAULT '', -- Статус события (например, success, error, warning) `log_status` varchar(24) DEFAULT '', -- Текстовое описание события (обязательно для заполнения) `log_text` varchar(255) NOT NULL, -- Первичный ключ для уникальной идентификации записи PRIMARY KEY (`log_id`) );
-- Удаляем таблицу `cot_plugins`, если она уже существует, чтобы избежать ошибок при создании DROP TABLE IF EXISTS `cot_plugins`; -- Создаем таблицу `cot_plugins` для хранения информации о плагинах Cotonti CREATE TABLE `cot_plugins` ( -- Уникальный идентификатор плагина `pl_id` mediumint UNSIGNED NOT NULL auto_increment, -- Название хука, к которому привязан плагин (например, `header.main`, `admin.menu`) `pl_hook` varchar(255) NOT NULL, -- Уникальный код плагина (соответствует названию папки плагина) `pl_code` varchar(255) NOT NULL, -- Часть плагина (например, `main`, `setup`, `admin`) `pl_part` varchar(255) NOT NULL DEFAULT '', -- Человеко-читаемое название плагина `pl_title` varchar(255) NOT NULL DEFAULT '', -- Имя файла, содержащего код плагина `pl_file` varchar(255) NOT NULL, -- Порядок загрузки плагина (чем меньше значение, тем раньше загружается) `pl_order` tinyint UNSIGNED NOT NULL DEFAULT 10, -- Флаг активности плагина (1 — активен, 0 — отключен) `pl_active` tinyint UNSIGNED NOT NULL DEFAULT 1, -- Флаг, указывающий, является ли этот плагин модулем (1 — модуль, 0 — плагин) `pl_module` tinyint UNSIGNED NOT NULL DEFAULT 0, -- Устанавливаем первичный ключ для идентификации записей PRIMARY KEY (`pl_id`), -- Индекс для быстрого поиска активных плагинов INDEX `plugins_active_idx` (`pl_active`), -- Индекс для быстрого поиска плагинов по их коду INDEX `plugins_code_idx` (`pl_code`) );
-- Удаляем таблицу `cot_server_events`, если она уже существует
DROP TABLE IF EXISTS `cot_server_events`;
-- Создаем таблицу `cot_server_events` для хранения событий сервера
CREATE TABLE `cot_server_events` (
-- Уникальный идентификатор события
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
-- ID пользователя, связанного с событием
`user_id` INT UNSIGNED NOT NULL,
-- Название события (например, 'user_login', 'order_created')
`event` VARCHAR(100) NOT NULL,
-- Дополнительные данные о событии в формате JSON или текстовом виде
`data` TEXT NOT NULL,
-- Временная метка создания события, устанавливается автоматически
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- Устанавливаем первичный ключ для идентификации записей
PRIMARY KEY (`id`),
-- Индекс для быстрого поиска событий по user_id
INDEX `server_events_user_id_idx` (`user_id`)
);
-- Удаляем таблицу `cot_server_events_observers`, если она уже существует
DROP TABLE IF EXISTS `cot_server_events_observers`;
-- Создаем таблицу `cot_server_events_observers` для хранения наблюдателей событий
CREATE TABLE `cot_server_events_observers` (
-- Уникальный идентификатор наблюдателя
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
-- ID пользователя, подписанного на события
`user_id` INT UNSIGNED NOT NULL,
-- Уникальный токен подписки для получения событий
`token` VARCHAR(255) NOT NULL,
-- Дата и время создания подписки
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- Дата и время последнего обновления подписки
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
-- ID последнего полученного события (чтобы отслеживать новые)
`last_event_id` BIGINT UNSIGNED NOT NULL DEFAULT 0,
-- Устанавливаем первичный ключ для идентификации записей
PRIMARY KEY (`id`),
-- Индекс для быстрого поиска подписок по user_id
INDEX `server_events_observers_user_id_idx` (`user_id`),
-- Индекс для быстрого поиска подписок по дате создания
INDEX `server_events_observers_created_at_idx` (`created_at`)
);
-- Удаляем таблицу `cot_structure`, если она уже существует
DROP TABLE IF EXISTS `cot_structure`;
-- Создаем таблицу `cot_structure` для хранения структуры категорий или разделов
CREATE TABLE `cot_structure` (
-- Уникальный идентификатор структуры
`structure_id` mediumint UNSIGNED NOT NULL auto_increment,
-- Область структуры (например, 'page' для страниц, 'forums' для форумов)
`structure_area` varchar(64) NOT NULL,
-- Уникальный код структуры (например, 'news', 'articles')
`structure_code` varchar(255) NOT NULL,
-- Путь структуры в древовидной иерархии (например, '001.002' для вложенности)
`structure_path` varchar(255) NOT NULL,
-- Название файла шаблона, если используется кастомный шаблон
`structure_tpl` varchar(128) DEFAULT '',
-- Заголовок структуры (отображаемое имя категории/раздела)
`structure_title` varchar(128) NOT NULL,
-- Описание структуры (может использоваться для SEO)
`structure_desc` varchar(255) DEFAULT '',
-- Иконка структуры (путь к изображению)
`structure_icon` varchar(128) DEFAULT '',
-- Флаг блокировки структуры (0 - не заблокировано, 1 - заблокировано)
`structure_locked` tinyint UNSIGNED NOT NULL DEFAULT '0',
-- Количество элементов внутри данной структуры (например, число страниц)
`structure_count` mediumint UNSIGNED NOT NULL DEFAULT '0',
-- Устанавливаем первичный ключ для идентификации записей
PRIMARY KEY (`structure_id`),
-- Индекс для быстрого поиска структуры по коду
KEY `structure_code` (`structure_code`),
-- Индекс для быстрого поиска структуры по пути (используется для иерархии)
KEY `structure_path` (`structure_path`)
);
-- Удаляем таблицу `cot_updates`, если она уже существует
DROP TABLE IF EXISTS `cot_updates`;
-- Создаем таблицу `cot_updates` для хранения параметров обновления системы
CREATE TABLE `cot_updates` (
-- Название параметра обновления (например, 'revision' или 'branch')
`upd_param` VARCHAR(255) NOT NULL,
-- Значение параметра обновления (например, версия или ветка)
`upd_value` VARCHAR(255) NOT NULL,
-- Устанавливаем первичный ключ, так как `upd_param` должен быть уникальным
PRIMARY KEY (`upd_param`)
);
-- Вставляем данные об актуальной версии и ветке системы
INSERT INTO `cot_updates` (`upd_param`, `upd_value`) VALUES
('revision', '0.9.23'), -- Текущая ревизия Cotonti
('branch', 'siena'); -- Ветка разработки (Siena)
-- Удаляем таблицу `cot_users`, если она уже существует
DROP TABLE IF EXISTS `cot_users`;
-- Создаем таблицу `cot_users` для хранения данных пользователей
CREATE TABLE `cot_users` (
-- Уникальный идентификатор пользователя
`user_id` int UNSIGNED NOT NULL auto_increment,
-- Дата окончания бана пользователя в виде UNIX timestamp (0 - нет бана)
`user_banexpire` int UNSIGNED NOT NULL DEFAULT 0,
-- Уникальное имя пользователя (логин)
`user_name` varchar(100) NOT NULL,
-- Хэш пароля пользователя
`user_password` varchar(224) NOT NULL DEFAULT '',
-- Алгоритм хеширования пароля (по умолчанию SHA-256)
`user_passfunc` VARCHAR(32) NOT NULL DEFAULT 'sha256',
-- Соль для пароля, используемая при хешировании
`user_passsalt` VARCHAR(16) NOT NULL DEFAULT '',
-- Основная группа пользователя (по умолчанию 4 - "Members")
`user_maingrp` mediumint UNSIGNED NOT NULL DEFAULT 4,
-- Код страны пользователя (двухбуквенный ISO 3166-1, например, 'RU', 'US')
`user_country` char(2) default '',
-- Часовой пояс пользователя (по умолчанию UTC)
`user_timezone` VARCHAR(32) NOT NULL default 'UTC',
-- Описание или личная информация пользователя
`user_text` text DEFAULT NULL,
-- Дата рождения пользователя (если указана)
`user_birthdate` DATE DEFAULT NULL,
-- Пол пользователя ('M' - мужской, 'F' - женский, 'U' - не указан)
`user_gender` char(1) default 'U',
-- Email пользователя (используется для уведомлений и восстановления пароля)
`user_email` varchar(64) NOT NULL default '',
-- Флаг скрытия email (1 - скрыт, 0 - открыт)
`user_hideemail` tinyint UNSIGNED NOT NULL DEFAULT 1,
-- Выбранная пользователем тема оформления
`user_theme` varchar(32) default '',
-- Схема оформления сайта, если используется
`user_scheme` varchar(32) default '',
-- Выбранный пользователем язык интерфейса
`user_lang` varchar(16) default '',
-- Дата регистрации пользователя в виде UNIX timestamp
`user_regdate` int UNSIGNED NOT NULL DEFAULT 0,
-- Дата последней авторизации пользователя в UNIX timestamp
`user_lastlog` int UNSIGNED NOT NULL DEFAULT 0,
-- Дата последнего визита пользователя в UNIX timestamp
`user_lastvisit` int UNSIGNED NOT NULL DEFAULT 0,
-- Последний использованный IP-адрес пользователя
`user_lastip` varchar(64) default '',
-- Количество входов пользователя в систему
`user_logcount` int UNSIGNED NOT NULL DEFAULT 0,
-- Идентификатор сессии пользователя
`user_sid` char(64) default '',
-- Время истечения сессии пользователя в UNIX timestamp
`user_sidtime` int UNSIGNED NOT NULL DEFAULT 0,
-- Токен восстановления пароля (используется при сбросе пароля)
`user_lostpass` char(32) DEFAULT '',
-- Данные аутентификации пользователя (JSON или сериализованный массив прав)
`user_auth` MEDIUMTEXT DEFAULT NULL,
-- Уникальный токен пользователя для различных операций
`user_token` char(16) DEFAULT '',
-- Устанавливаем первичный ключ (уникальный идентификатор пользователя)
PRIMARY KEY (`user_id`),
-- Индекс для быстрого поиска пользователя по паролю (для аутентификации)
KEY `user_password` (`user_password`),
-- Индекс для быстрого поиска пользователей по дате регистрации
KEY `user_regdate` (`user_regdate`),
-- Индекс для быстрого поиска пользователя по имени
KEY `user_name` (`user_name`),
-- Индекс для быстрого поиска пользователей по основной группе
KEY `user_maingrp` (`user_maingrp`),
-- Индекс для быстрого поиска пользователя по email
KEY `user_email` (`user_email`),
-- Индекс для быстрого поиска активных сессий по идентификатору сессии
KEY `user_sid` (`user_sid`),
-- Индекс для быстрого поиска пользователей по токену восстановления пароля
KEY `user_lostpass` (`user_lostpass`)
);
из `README.md`
Структура папок для настройки
Обновления Cotonti Siena 0.9.4 организованы следующим образом:
Эта папка настроек содержит подкаталоги для каждой ветки (основной версии).
В каждой ветке патчи имеют минорную версию и номер патча.
SQL патчи называются
patch_{ver}-{patch_num}.sql.PHP патчи называются
patch_{ver}-{patch_num}.inc.Где
{ver}— это минорная версия, например, 0.9.5, а{patch_num}— это номер патча внутри этой версии, с добавлением нулей. Обычно это предыдущий номер патча, увеличенный на единицу. Пример правильной последовательности патчей:
- patch_0.9.4-001.sql
- patch_0.9.4-002.inc — это дополнительный патч для 0.9.4-002.sql
- patch_0.9.4-002.sql
- patch_0.9.4-003.sql
SQL патч для перехода с предыдущей ветки на текущую имеет название
patch-{previous_branch_name}.sql.PHP патч для перехода с предыдущей ветки на текущую имеет название
patch-{previous_branch_name}.inc.Пустой установочный SQL файл называется
install.sql.Примечание: Если вы вносите изменения в SQL, то вы применяете их во все 3 файла (если необходимо):
patch_{ver}-{patch-num}.sql,patch-{branch}.sqlиinstall.sql.PHP файлы — это включаемые файлы для скрипта обновления, и они должны содержать проверку
defined('COT_UPDATE') or die();вверху.Пожалуйста, используйте обновляющий скрипт
install.phpдля применения последних обновлений SQL/конфигурации/PHP. Если вы применяете патчи вручную, то вам также нужно вручную обновить поле "revision" в таблицеcot_updatesс помощью SQL запроса. Эта опция отражает последнюю примененную версию SQL/PHP патча.Обновления до Siena не охватываются автоматическим обновлением и должны быть применены с использованием файлов и инструкций из Genoa.
Comments (0)
Content author
Offline
Sodium Carbonate
Last logged: 2026-07-19 01:57
- Page published: 2025-01-30 06:40
- Last update: 2025-01-30 18:45