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-09-03 18:32

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • 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 в