Файл forums.install.php в движке Cotonti CMF находится в директории /modules/forums/setup/. Этот файл отвечает за процесс установки и настройки модуля форумов в системе Cotonti. В частности, он обеспечивает добавление необходимых столбцов в базу данных при установке модуля, если эти столбцы ещё не существуют.
Основное назначение файла:
-
Проверка наличия столбца в таблице пользователей: Файл выполняет запрос к базе данных, чтобы проверить, существует ли столбец user_postcount в таблице пользователей (таблица $db_users). Этот столбец необходим для хранения информации о количестве сообщений каждого пользователя.
-
Добавление столбца, если его нет: Если столбец не найден, то в таблицу добавляется новый столбец с названием user_postcount, который будет хранить количество сообщений пользователя. Столбец будет иметь тип данных INT UNSIGNED, что означает, что он будет хранить только положительные значения, и значение по умолчанию установлено в 0.
Логика работы сценария:
-
Проверка на существование столбца: Когда модули устанавливаются в Cotonti, этот файл запускается и проверяет, существует ли уже нужный столбец в таблице пользователей. Это важно, чтобы избежать дублирования столбцов и обеспечить корректную работу с базой данных.
-
Добавление столбца, если его нет: Если столбца user_postcount в таблице пользователей нет, сценарий добавляет этот столбец, что позволяет модулю форумов работать с количеством сообщений пользователей.
-
Закрытие соединения с базой данных: После выполнения запроса к базе данных, соединение закрывается с помощью метода closeCursor(), чтобы освободить ресурсы.
Место в системе Cotonti:
Этот файл является частью процесса установки модуля форумов, и он будет выполнен во время установки модуля или при его активации. Это важная часть функционала, так как она гарантирует, что база данных будет настроена должным образом для работы с функционалом форумов.
Взаимодействие с системой:
-
Глобальная переменная $db_users: Файл использует глобальную переменную $db_users, которая указывает на таблицу пользователей в базе данных. Эта таблица используется для хранения информации о зарегистрированных пользователях.
-
Методы Cotonti для работы с БД: Для выполнения запросов к базе данных используется объект Cot::$db, что является частью системы взаимодействия с базой данных в Cotonti. Метод query() используется для выполнения SQL-запросов, а метод closeCursor() — для освобождения ресурсов после выполнения запроса.
Сценарий выполнения:
- При установке или активации модуля
forums, файл forums.install.php проверяет наличие столбца user_postcount в таблице пользователей.
- Если столбец отсутствует, он добавляется в таблицу с типом данных
INT UNSIGNED и значением по умолчанию 0.
- После выполнения этих операций соединение с базой данных закрывается.
Таким образом, этот файл помогает подготовить базу данных для работы с модулем форумов, обеспечивая корректное хранение информации о количестве сообщений пользователей, что является важной частью функционала форума в системе Cotonti.
<?php
/**
* Installation handler
*
* @package Forums
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
// Проверка, что файл был вызван из движка Cotonti, иначе скрипт завершится
defined('COT_CODE') or die('Wrong URL');
// Объявление глобальной переменной для работы с таблицей пользователей
global $db_users;
// Запрос в БД для проверки наличия столбца 'user_postcount' в таблице пользователей
$dbres = Cot::$db->query("SHOW COLUMNS FROM `$db_users` WHERE `Field` = 'user_postcount'");
// Если такого столбца нет в таблице, то выполняется следующий блок
if ($dbres->rowCount() == 0) {
// Добавление нового столбца 'user_postcount' в таблицу пользователей с дефолтным значением 0
Cot::$db->query("ALTER TABLE `$db_users` ADD COLUMN `user_postcount` INT UNSIGNED NOT NULL DEFAULT 0");
}
// Закрытие курсора после выполнения запроса
$dbres->closeCursor();
3 minutes read Sodium Carbonate