Файл ExtensionsHelper.php в Cotonti
Основное назначение файла и его место в системе
Файл ExtensionsHelper.php в системе Cotonti CMF предназначен для помощи в работе с расширениями (модулями и плагинами) в рамках движка. Он предоставляет функциональность для получения информации о расширениях, таких как их название и описание. Этот класс работает с языковыми файлами, файлами настроек расширений и другими данными, связанными с расширениями.
Вместе с другими компонентами системы, ExtensionsHelper.php помогает управлять расширениями, обеспечивая централизованный доступ к их метаданным (например, названию и описанию). Этот файл помогает упростить работу с расширениями, делая код системы более модульным и легко расширяемым.
Суть содержания кода
-
Получение информации о расширении:
- Метод
getTitle: Возвращает название расширения, начиная с поиска в языковом файле, затем проверяя наличие в других источниках (например, файле настроек расширения). - Метод
getDescription: Похож наgetTitle, но возвращает описание расширения. Также ищет описание в языковом файле и в файле настроек.
- Метод
-
Работа с языковыми файлами:
- Для каждого расширения, если оно имеет отдельный языковой файл, код пытается загрузить его и использовать данные из этого файла (например, для перевода).
-
Механизм поиска и приоритетов:
- Методы сначала пытаются найти данные в языковом файле, затем — в настройках расширения, и, если данные не найдены, возвращают дефолтные значения.
Список классов в файле
В файле ExtensionsHelper.php есть один класс:
ExtensionsHelper
Список методов и функций в файле
В классе ExtensionsHelper определены следующие методы:
-
getTitle(string $extensionCode, ?string $extensionType = null, ?string $lang = null): string- Метод для получения названия расширения. Он ищет название в языковых файлах, затем в настройках расширения и, если не находит, возвращает код расширения.
-
getDescription(string $extensionCode, ?string $extensionType = null, ?string $lang = null): string- Метод для получения описания расширения. Логика поиска аналогична методу
getTitle: сначала проверяется языковой файл, потом файл настроек расширения.
- Метод для получения описания расширения. Логика поиска аналогична методу
Вывод
Файл ExtensionsHelper.php выполняет вспомогательные функции для работы с расширениями в системе Cotonti. Он предоставляет методы для извлечения метаданных расширений (названия и описания), что важно для динамического управления модулями и плагинами.
находится по адресу: /system/extensions/ExtensionsHelper.php
<?php
/**
* @package Extensions
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
declare(strict_types=1); // Объявление строгой типизации
namespace cot\extensions; // Пространство имен для расширений
defined('COT_CODE') or die('Wrong URL.'); // Проверка, что код вызван правильно через Cotonti
use Cot; // Подключение объекта Cot для работы с базой данных и конфигурацией
use cot\traits\GetInstanceTrait; // Использование трейта для получения экземпляра класса
class ExtensionsHelper
{
use GetInstanceTrait; // Использование трейта для получения экземпляра класса
public function getTitle(string $extensionCode, ?string $extensionType = null, ?string $lang = null): string
{
global $cot_modules, $cot_plugins_enabled; // Доступ к глобальным переменным для модулей и плагинов
if ($extensionType === null) { // Если тип расширения не указан
$extensionType = ExtensionsService::getInstance()->getType($extensionCode); // Получаем тип расширения
}
// Некоторые файлы расширений зависят от основного языкового файла. Например: PFS
$L = Cot::$L; // Получаем языковые строки для текущего языка
unset($L[$extensionCode . '_title'], $L['plu_title'], $L['info_name']); // Убираем устаревшие ключи, если они существуют
$langFile = cot_langfile($extensionCode, $extensionType, 'en', $lang); // Получаем путь к языковому файлу для расширения
if (!empty($langFile) && file_exists($langFile)) { // Если файл существует
include $langFile; // Включаем языковой файл
}
if (!empty($L[$extensionCode . '_title'])) { // Если в языковых строках есть название расширения
return $L[$extensionCode . '_title']; // Возвращаем название расширения
}
if (!empty($L['plu_title'])) { // Если есть название плагина
return $L['plu_title']; // Возвращаем название плагина
}
if (!empty($L['info_name'])) { // Если есть информация о названии
return $L['info_name']; // Возвращаем это название
}
if (
$extensionType === ExtensionsDictionary::TYPE_MODULE // Если тип расширения — модуль
&& isset($cot_modules[$extensionCode]) // И модуль существует в массиве модулей
) {
return $cot_modules[$extensionCode]['title']; // Возвращаем название модуля
}
if (
$extensionType === ExtensionsDictionary::TYPE_PLUGIN // Если тип расширения — плагин
&& isset($cot_plugins_enabled[$extensionCode]) // И плагин существует в массиве включенных плагинов
) {
return $cot_plugins_enabled[$extensionCode]['title']; // Возвращаем название плагина
}
$extensionDirectory = $extensionType === ExtensionsDictionary::TYPE_MODULE // Если тип расширения — модуль
? Cot::$cfg['modules_dir'] // Папка с модулями
: Cot::$cfg['plugins_dir']; // Папка с плагинами
$setupFile = $extensionDirectory . '/' . $extensionCode . '/' . $extensionCode . '.setup.php'; // Путь к файлу настроек расширения
$exists = file_exists($setupFile); // Проверяем, существует ли файл настроек
if ($exists) { // Если файл существует
$info = cot_infoget($setupFile, 'COT_EXT'); // Получаем информацию из файла настроек
if (!empty($info['Name'])) { // Если имя расширения найдено в файле настроек
return $info['Name']; // Возвращаем имя расширения
}
}
return $extensionCode; // В случае отсутствия информации, возвращаем код расширения
}
Объяснение кода:
getTitle— это метод, который используется для получения названия расширения (модуль или плагин). Он поддерживает несколько механизмов поиска имени:- Сначала ищется в языковом файле.
- Если название не найдено в языке, ищется в глобальных массивах
$cot_modulesи$cot_plugins_enabled. - Если название не найдено, оно извлекается из файла настроек
.setup.php, если он существует. - Если все вышеперечисленные методы не дали результатов, возвращается код расширения как название.
Примечания:
- Код эффективно использует систему языков для многоязычности.
- Включает динамическое получение типов расширений и работу с файлами настроек.
- Это базовая функциональность для получения метаданных об установленных расширениях в Cotonti CMF.
public function getDescription(string $extensionCode, ?string $extensionType = null, ? string $lang = null): string
{
if ($extensionType === null) { // Если тип расширения не указан
$extensionType = ExtensionsService::getInstance()->getType($extensionCode); // Получаем тип расширения
}
// Некоторые файлы расширений зависят от основного языкового файла. Например: PFS
$L = Cot::$L; // Получаем языковые строки для текущего языка
unset($L[$extensionCode . '_description'], $L['info_desc']); // Убираем устаревшие ключи, если они существуют
$langFile = cot_langfile($extensionCode, $extensionType, 'en', $lang); // Получаем путь к языковому файлу для расширения
if (!empty($langFile) && file_exists($langFile)) { // Если файл существует
include $langFile; // Включаем языковой файл
}
if (!empty($L[$extensionCode . '_description'])) { // Если в языковых строках есть описание расширения
return $L[$extensionCode . '_description']; // Возвращаем описание расширения
}
if (!empty($L['info_desc'])) { // Если есть информация о описании
return $L['info_desc']; // Возвращаем это описание
}
$extensionDirectory = $extensionType === ExtensionsDictionary::TYPE_MODULE // Если тип расширения — модуль
? Cot::$cfg['modules_dir'] // Папка с модулями
: Cot::$cfg['plugins_dir']; // Папка с плагинами
$setupFile = $extensionDirectory . '/' . $extensionCode . '/' . $extensionCode . '.setup.php'; // Путь к файлу настроек расширения
$exists = file_exists($setupFile); // Проверяем, существует ли файл настроек
if ($exists) { // Если файл существует
$info = cot_infoget($setupFile, 'COT_EXT'); // Получаем информацию из файла настроек
if (!empty($info['Description'])) { // Если описание найдено в файле настроек
return $info['Description']; // Возвращаем описание
}
}
return ''; // Если описание не найдено, возвращаем пустую строку
}
Объяснение кода:
getDescription— это метод, который используется для получения описания расширения (модуль или плагин). Он использует несколько механизмов поиска описания:- Сначала ищется в языковом файле.
- Если описание не найдено в языке, ищется в файле настроек
.setup.php. - Если описание не найдено, возвращается пустая строка.
Примечания:
- Код проверяет наличие языкового файла и описания в нем.
- Включает возможность извлечения описания из файла настроек расширения.
- Возвращается описание, если оно найдено, или пустая строка, если описание отсутствует.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 28.01.2025 01:02
- Последнее обновление: 28.01.2025 01:02