installation SQL file в Cotonti

файл используется для начальной настройки базы данных при установке или обновлении системы, обеспечивая создание необходимых таблиц и начальных данных

Этот файл `install.sql` является SQL-скриптом для создания и заполнения таблиц в базе данных для системы управления контентом Cotonti CMF. Он содержит несколько инструкций для создания таблиц, которые используются для различных функций системы:

  1. Логирование действий и событий (cot_logger).
  2. Хранение данных о плагинах (cot_plugins).
  3. Управление серверными событиями и наблюдателями за ними (cot_server_events и cot_server_events_observers).
  4. Структура сайта и его разделы (cot_structure).
  5. Хранение информации об обновлениях системы (cot_updates).
  6. Информация о пользователях (cot_users).

Этот файл используется для начальной настройки базы данных при установке или обновлении системы, обеспечивая создание необходимых таблиц и начальных данных для функционирования платформы.

  1. Создание таблицы cot_auth:

    • Таблица хранит информацию о правах доступа пользователей (групп) в системе. Включает идентификатор, группу, код, опции, права и информацию о том, кто установил эти права.
    • Например, для группы admin установлены разные права для разных разделов сайта, такие как message, structure и так далее.
  2. Создание таблицы cot_cache:

    • Эта таблица используется для хранения данных кэша. Она включает имя кэша, реальность (где кэш используется), время истечения срока действия кэша и сам кэшированный контент.
  3. Создание таблицы cot_cache_bindings:

    • Таблица связывает события с кэшированными данными. Каждый кэшированный элемент связан с конкретным событием и его ID.
  4. Создание таблицы cot_config:

    • Таблица конфигурации системы, где хранятся различные параметры настроек для системы. Например, настройки языка, временных зон, парсеров и другие.
    • Вставка данных в таблицу конфигурации определяет настройки для системы, такие как почта администратора, настройки безопасности и производительности.
  5. Создание таблицы cot_core:

    • Таблица содержит информацию о ядре системы и подключенных плагинах, включая код, название и состояние плагина.
  6. Создание таблицы cot_extra_fields:

    • Таблица для хранения дополнительных полей для различных частей системы (например, для групп пользователей). Эти поля могут включать тип, описание и другие параметры.
  7. Создание таблицы cot_groups:

    • Таблица, определяющая группы пользователей (например, гости, участники, администраторы). Каждая группа имеет уровень доступа и другие атрибуты, такие как название и описание.
  8. Заполнение таблицы cot_groups:

    • Вставка данных в таблицу групп пользователей. Например, для группы guests устанавливается уровень доступа 0, а для administrators — 99, что указывает на высокие привилегии.
  9. Таблица cot_logger:

    • Таблица используется для хранения логов событий.
    • Поля:
      • log_id: уникальный идентификатор записи.
      • log_date: дата и время события.
      • log_ip: IP-адрес, с которого произошло событие.
      • log_uid: идентификатор пользователя.
      • log_name: имя события или пользователя.
      • log_uri: URI, связанный с событием.
      • log_group: группа, к которой относится событие (например, администрация).
      • log_type: тип события.
      • log_status: статус события.
      • log_text: описание события.
  10. Таблица cot_plugins:

    • Таблица для хранения информации о плагинах.
    • Поля:
      • pl_id: уникальный идентификатор плагина.
      • pl_hook: хук плагина.
      • pl_code: код плагина.
      • pl_part: часть плагина (например, фронтенд или бэкенд).
      • pl_title: название плагина.
      • pl_file: путь к файлу плагина.
      • pl_order: порядок загрузки плагинов.
      • pl_active: активность плагина.
      • pl_module: модуль плагина (если применимо).
  11. Таблица cot_server_events:

    • Таблица для хранения серверных событий.
    • Поля:
      • id: уникальный идентификатор события.
      • user_id: идентификатор пользователя, вызвавшего событие.
      • event: название события.
      • data: дополнительные данные о событии.
      • created_at: дата и время создания события.
  12. Таблица cot_server_events_observers:

    • Таблица для хранения наблюдателей за событиями (подписчики на события).
    • Поля:
      • id: уникальный идентификатор наблюдателя.
      • user_id: идентификатор пользователя.
      • token: токен наблюдателя.
      • created_at: дата и время создания наблюдателя.
      • updated_at: дата и время последнего обновления.
      • last_event_id: идентификатор последнего события, на которое был подписан наблюдатель.
  13. Таблица cot_structure:

    • Таблица для хранения структуры сайта (например, разделов и категорий).
    • Поля:
      • structure_id: уникальный идентификатор структуры.
      • structure_area: область структуры (например, админка или фронтенд).
      • structure_code: код структуры.
      • structure_path: путь к структуре.
      • structure_tpl: шаблон, используемый для отображения структуры.
      • structure_title: название структуры.
      • structure_desc: описание структуры.
      • structure_icon: иконка для структуры.
      • structure_locked: статус блокировки структуры.
      • structure_count: количество элементов в структуре.
  14. Таблица cot_updates:

    • Таблица для хранения информации об обновлениях системы.
    • Поля:
      • upd_param: параметр обновления (например, версия).
      • upd_value: значение параметра (например, номер версии).
  15. Таблица 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.

 

 

 

 

 

 

 

 

 

21 minutes read Sodium Carbonate

Comments (0)

No comments yet
Only registered users can post new comments

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-07-19 01:57

  • Page published: 2025-01-30 06:40
  • Last update: 2025-01-30 18:45

Similar pages

SQL patch_0.9.26.inc Cotonti
1 Патч для обновления БД системы до версии 0.9.26 в рамках движка Cotonti. Этот файл является патчем для обновления
Premature end of file ошибка в xml-фиде Яндекс Бизнес
2 Недавно возникла необходимость обновить данные клиентской организации в Яндекс Бизнес. Поскольку вся информация
Можно ли использовать {PHP|func} внутри {FILE} для условного включения,
3 Задача: Если есть путь и файл {FILE "{PHP.cfg.themes_dir}/admin/{PHP.cfg.admintheme}/warnings.tpl"}то его и
Cotonti Siena CMF • 2026-03-01 12:01 webitproff
Файл page.install.sql в Cotonti
4 описание файла page.install.sql в Cotonti CMF Файл page.install.sql является частью процесса установки модуля Page в