Skip to content

Commit 05124b8

Browse files
authored
Merge pull request #14 from DevCraftClub/rel/173.3.1
rel/173.3.1
2 parents 9ce8719 + e3fd53e commit 05124b8

18 files changed

Lines changed: 403 additions & 228 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
# MHAdmin
22

3-
![Текущая версия](https://img.shields.io/badge/version-173.3.0-green?style=for-the-badge)![Статус](https://img.shields.io/badge/status-dev-orange?style=for-the-badge)![DLE Version](https://img.shields.io/badge/DLE-17.x-blue?style=for-the-badge)![PHP Version](https://img.shields.io/badge/PHP-8.3-red?style=for-the-badge)
4-
5-
![Название](https://img.shields.io/badge/Название-MaHarder%20Assets-yellowgreen?style=for-the-badge)
6-
7-
![Описание](https://img.shields.io/badge/Описание-Административная%20панель%20для%20DLE-lightgrey?style=for-the-badge)
8-
9-
![Twig](https://img.shields.io/badge/Twig-3.x-green?style=for-the-badge)![Fomantic UI](https://img.shields.io/badge/Fomantic-2.8-blue?style=for-the-badge)
10-
3+
![Текущая версия](https://img.shields.io/badge/version-173.3.1-green?style=for-the-badge)![Статус](https://img.shields.io/badge/status-Stable-orange?style=for-the-badge)![DLE Version](https://img.shields.io/badge/DLE-17.x-blue?style=for-the-badge)![PHP Version](https://img.shields.io/badge/PHP-8.3-red?style=for-the-badge)
114

125

136
[![GitHub issues](https://img.shields.io/github/issues/Gokujo/mhadmin.svg?style=flat-square)](https://github.com/Gokujo/mhadmin/issues)[![GitHub forks](https://img.shields.io/github/forks/Gokujo/mhadmin.svg?style=flat-square)](https://github.com/Gokujo/mhadmin/network)[![GitHub license](https://img.shields.io/github/license/Gokujo/mhadmin.svg?style=flat-square)](https://github.com/Gokujo/mhadmin/blob/master/LICENSE)

‎manifest.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"version": "173.3.0",
3-
"status": "dev",
2+
"version": "173.3.1",
3+
"status": "Stable",
44
"dle": [
55
"17.x"
66
],

‎upload/engine/inc/maharder.php‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
// заполняем важную и нужную информацию о модуле
2121
$modInfo = [
2222
'module_name' => 'MaHarder Assets',
23-
'module_version' => '173.3.0',
23+
'module_version' => '173.3.1',
2424
'module_description' => __('Административная панель для моих разработок'),
2525
'module_code' => 'maharder',
2626
'module_id' => 4,

‎upload/engine/inc/maharder/_includes/classes/ComposerAction.php‎

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,9 @@
33
use Composer\Console\Application;
44
use Symfony\Component\Console\Input\ArrayInput;
55

6-
const COMPOSER_DIRECTORY = ENGINE_DIR . '/inc/maharder/_includes/composer';
6+
const COMPOSER_DIRECTORY = COMPOSER_DIR;
7+
require_once COMPOSER_DIRECTORY . '/vendor/autoload.php';
78

8-
if (!file_exists(COMPOSER_DIRECTORY . '/vendor/autoload.php')) {
9-
DataManager::createDir(service: 'ComposerAction', permission: 0777, _path: COMPOSER_DIRECTORY);
10-
$composer_zip = COMPOSER_DIRECTORY . '/composer.zip';
11-
copy('https://assets.devcraft.club/composer.zip', $composer_zip);
12-
$zip = new ZipArchive();
13-
if ($zip->open($composer_zip) === true) {
14-
$zip->extractTo(COMPOSER_DIRECTORY);
15-
$zip->close();
16-
}
17-
unlink($composer_zip);
18-
}
19-
20-
require COMPOSER_DIRECTORY . '/vendor/autoload.php';
21-
22-
putenv('COMPOSER_HOME=' . COMPOSER_DIRECTORY . '/vendor/bin/composer');
239

2410
/**
2511
* @link https://stackoverflow.com/a/17244866
@@ -147,4 +133,4 @@ public static function destroy(): void {
147133
}
148134
}
149135

150-
}
136+
}

‎upload/engine/inc/maharder/_includes/classes/MhTranslation.php‎

Lines changed: 261 additions & 148 deletions
Large diffs are not rendered by default.

‎upload/engine/inc/maharder/_includes/extras/functions.php‎

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
* так и базовый перевод с использованием модулей `MhTranslation`.
2525
* При возникновении ошибки логирует её и возвращает исходную фразу.
2626
*
27-
* @since 173.3.0
27+
* @since 2.0.9
2828
*
29+
* @param string $module Модуль, связанный с переводом.
2930
* @param string $phrase Фраза для перевода.
3031
* @param array $params Параметры для подстановки в строку перевода (опционально).
3132
* @param int $count Количество для выбора формы множественного числа (опционально).
@@ -34,7 +35,7 @@
3435
*
3536
* @throws Exception|Throwable Если возникает ошибка при работе с переводом.
3637
*
37-
* @version 173.3.0
38+
* @version 2.0.9
3839
*
3940
* @see DataManager::getConfig() Используется для получения конфигурации.
4041
* @see MhTranslation::setTranslator() Устанавливает текущий модуль для перевода.
@@ -44,9 +45,9 @@
4445
* @see MhTranslation::getTranslationPluralWithParameters() Получает множественный перевод с параметрами.
4546
* @see LogGenerator::generateLog() Логирует ошибки при работе функции.
4647
*/
47-
function translate(string $phrase, array $params = [], int $count = 0): string {
48+
function translate(string $module, string $phrase, array $params = [], int $count = 0): string {
4849
$mh = DataManager::getConfig('maharder');
49-
MhTranslation::setTranslator();
50+
MhTranslation::setTranslator($module);
5051
if (!isset($mh['language']) && !isset($mh['locales_path'])) {
5152
return $phrase;
5253
}
@@ -85,20 +86,22 @@ function translate(string $phrase, array $params = [], int $count = 0): string {
8586
*
8687
* Служит для вызова функции перевода текстовых строк с возможностью передачи параметров и обработки множественного числа.
8788
*
88-
* @version 173.3.0
89+
* @version 2.0.9
90+
*
91+
* @param string $module Модуль, связанный с переводом.
8992
* @param string $phrase Переводимая строка.
9093
* @param array $params Ассоциативный массив параметров для подстановки в строку.
9194
* @param int $count Количество для обработки множественного числа (опционально).
9295
*
9396
* @return string Переведённая строка.
9497
*
9598
* @throws Throwable
96-
* @since 173.3.0
99+
* @since 2.0.9
97100
* @see translate()
98101
* @see DataManager::getConfig()
99102
*/
100-
function __(string $phrase, array $params = [], int $count = 0): string {
101-
return translate($phrase, $params, $count);
103+
function __(string $module, string $phrase, array $params = [], int $count = 0): string {
104+
return translate($module, $phrase, $params, $count);
102105
}
103106
}
104107

@@ -123,7 +126,7 @@ function dirToArray(string $dir, array $ignoredExtensions = []): array {
123126
$ignoredItems = array_merge($defaultIgnored, $ignoredExtensions);
124127

125128
// Приведение путей к стандартному формату
126-
$resolvedDir = str_replace(ENGINE_DIR, ROOT . DIRECTORY_SEPARATOR . 'engine', $dir);
129+
$resolvedDir = str_replace(ENGINE_DIR, ROOT_DIR . DIRECTORY_SEPARATOR . 'engine', $dir);
127130
if (!is_dir($resolvedDir)) {
128131
return []; // Если директория не существует, возвращаем пустой массив
129132
}
@@ -183,4 +186,4 @@ function br2nl(string $string, string $separator = PHP_EOL): string {
183186
// Replace `<br>` tags with the provided line separator
184187
return preg_replace('#<br\s*/?>#i', $separator, $string);
185188
}
186-
}
189+
}

‎upload/engine/inc/maharder/_includes/extras/paths.php‎

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@
148148
*/
149149
define("MH_TEMPLATES", MH_ROOT . '/_templates');
150150
}
151+
if (!defined('COMPOSER_DIR')) {
152+
/**
153+
* Определяет константу COMPOSER_DIR, которая содержит путь до библиотеки копмозера
154+
*/
155+
define("COMPOSER_DIR", MH_INCLUDES . '/composer');
156+
}
151157

152158
$mh_models_paths = [
153159
MH_MODULES . '/admin/models',
@@ -159,7 +165,6 @@
159165
MH_INCLUDES . '/database',
160166
MH_INCLUDES . '/responses',
161167
MH_INCLUDES . '/traits',
162-
MH_INCLUDES . '/types',
163168
MH_INCLUDES . '/twigExtensions',
164169
MH_MODULES . '/admin/repositories',
165170
// Custom paths //
@@ -168,10 +173,29 @@
168173

169174
include_once DLEPlugins::Check(MH_INCLUDES . '/extras/functions.php');
170175
include_once DLEPlugins::Check(MH_INCLUDES . '/extras/mhLoader.php');
176+
177+
if (!file_exists(MH_INCLUDES . '/vendor/autoload.php')) {
178+
putenv('COMPOSER_HOME=' . COMPOSER_DIR . '/vendor/bin/composer');
179+
DataManager::createDir(service: 'ComposerAction', permission: 0777, _path: COMPOSER_DIR);
180+
$composer = COMPOSER_DIR . '/composer.phar';
181+
if (!file_exists($composer)) {
182+
copy('https://getcomposer.org/download/latest-stable/composer.phar', $composer);
183+
}
184+
try {
185+
$phar = new Phar($composer);
186+
$phar->extractTo(COMPOSER_DIR);
187+
} catch (Exception $e) {}
188+
unlink($composer);
189+
190+
191+
ComposerAction::install();
192+
}
193+
171194
include_once MH_INCLUDES . '/vendor/autoload.php';
172195

173196
$MHDB = new MhDB();
174197

175198

176199

200+
177201
ComposerAction::destroy();

‎upload/engine/inc/maharder/_includes/traits/AssetsChecker.php‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,13 @@ public function parseAssets(bool $parse = false) : void {
5151

5252
/**
5353
* Проверяет целостность файлов между локальным хранилищем и сервером разработчика.
54+
*
5455
* Если файлы отсутствуют или имеют различия в хеш-суммах, информация об этих расхождениях
5556
* возвращается в виде массива. При необходимости может быть выполнена перезапись
5657
* локального файла с данными о ресурсах.
5758
*
58-
* @global string $asset_file Путь к локальному JSON-файлу с данными о ресурсах.
59-
*
60-
* @param bool $rewrite Если true, выполняется перезапись локального файла списка ресурсов
61-
* с актуальными данными из указанной директории.
59+
* @param bool $rewrite Если true, выполняется перезапись локального файла списка ресурсов
60+
* с актуальными данными из указанной директории.
6261
*
6362
* @return array Ассоциативный массив с информацией о проверке файлов:
6463
* - `on_server` (int): Количество файлов, находящихся на сервере разработчика.
@@ -67,18 +66,19 @@ public function parseAssets(bool $parse = false) : void {
6766
* - `update_count` (int): Количество файлов, требующих обновления.
6867
* - `missing` (array): Массив с данными о недостающих файлах.
6968
* - `update` (array): Массив с данными о файлах, требующих обновления.
70-
* @throws \JsonException
69+
*
7170
* @see DataManager::dirToArray() Метод для получения структуры указанной директории.
7271
* @see self::prepare_assets() Метод для подготовки массива данных о локальных файлах.
72+
*
73+
* @global string $asset_file Путь к локальному JSON-файлу с данными о ресурсах.
7374
*/
7475
public function checkAssets(bool $rewrite = false) : array {
7576
if (!is_file($this->asset_file) || $rewrite) {
7677
$this->prepare_assets(DataManager::dirToArray($this->assets_dir), $this->assets_dir);
7778
file_put_contents($this->asset_file, json_encode($this->assets_arr, JSON_UNESCAPED_UNICODE));
7879
}
79-
$assets =
80-
json_decode(file_get_contents('https://assets.devcraft.club/assets.json'), true, 512, JSON_THROW_ON_ERROR);
81-
$files = json_decode(file_get_contents($this->asset_file), true, 512, JSON_THROW_ON_ERROR);
80+
$assets = json_decode(file_get_contents('https://assets.devcraft.club/assets.json'), true);
81+
$files = json_decode(file_get_contents($this->asset_file), true);
8282

8383
$info = [
8484
'on_server' => count($assets),
@@ -117,7 +117,7 @@ public function checkAssets(bool $rewrite = false) : array {
117117
* 5. Запись актуализированных данных в локальный JSON-файл.
118118
*
119119
* @return void
120-
* @throws JsonException|\Throwable Исключение выбрасывается в случае ошибки при работе с JSON.
120+
* @throws JsonException Исключение выбрасывается в случае ошибки при работе с JSON.
121121
*
122122
* @see self::save_asset() Для сохранения конкретного ресурса.
123123
* @see self::prepare_assets() Для создания массива данных локальных файлов.
@@ -129,8 +129,7 @@ public function checkAssets(bool $rewrite = false) : array {
129129
private function parse_assets() : void {
130130
$this->prepare_assets(DataManager::dirToArray($this->assets_dir), $this->assets_dir);
131131
$files = $this->assets_arr;
132-
$assets =
133-
json_decode(file_get_contents('https://assets.devcraft.club/assets.json'), true, 512, JSON_THROW_ON_ERROR);
132+
$assets = json_decode(file_get_contents('https://assets.devcraft.club/assets.json'), true);
134133

135134
foreach ($assets as $asset => $data) {
136135
if (isset($files[$asset])) {
@@ -190,9 +189,9 @@ function format_bytes(int $size): string {
190189
$file_content = $this->fetchFileContent($data); // Новый метод для уменьшения вложенности
191190

192191
if ($file_content) {
193-
$file_path = ENGINE_DIR . '/inc/maharder/admin' . $file;
192+
$file_path = DataManager::normalizePath(ENGINE_DIR . '/inc/maharder/admin' . $file);
194193

195-
if (!DataManager::createDir(service: 'AssetsChecker', module: 'save_asset', _path: $file_path)) {
194+
if (!DataManager::createDir(service: 'AssetsChecker', module: 'save_asset', _path: DataManager::normalizePath(MH_ADMIN . $data['path']))) {
196195
return false; // Прерываем выполнение, если директория не создана
197196
}
198197

@@ -249,11 +248,12 @@ private function fetchFileContent(array $data): ?string {
249248
* @see LogGenerator::generateLog() Для логирования ошибок в случае невозможности сохранения файла.
250249
*/
251250
private function saveFile(string $file_path, string $content, string $file): bool {
252-
if (!file_put_contents($file_path, $content, FILE_USE_INCLUDE_PATH | LOCK_EX) || !is_writable($file_path)) {
251+
if (is_dir($file_path)) DataManager::deleteDir($file_path);
252+
if (!file_put_contents($file_path, $content, LOCK_EX) || !is_writable($file_path)) {
253253
LogGenerator::generateLog(
254254
'maharder/admin',
255255
'save_asset',
256-
__("Файл '{file}' не был сохранён!", ['{file}' => $file])
256+
__('mhadmin', "Файл '{$file}' не был сохранён!")
257257
);
258258
return false;
259259
}
@@ -345,4 +345,4 @@ private function prepare_assets(array $arr, string $dir = __DIR__) : void {
345345

346346
}
347347

348-
}
348+
}

‎upload/engine/inc/maharder/_includes/twigExtensions/MobileDetectExtension.php‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
use Twig\Extension\AbstractExtension;
77
use Twig\TwigFunction;
88

9-
/**
10-
* @link https://github.com/serbanghita/Mobile-Detect/
11-
*/
12-
require_once DLEPlugins::Check(ENGINE_DIR . '/classes/mobiledetect.class.php');
13-
149
/**
1510
* Inspired by bes89
1611
*
@@ -114,4 +109,4 @@ protected static function fromCamelCase(string $string, string $separator = '_')
114109
public function getName() : string {
115110
return 'mobile_detect.twig.extension';
116111
}
117-
}
112+
}

‎upload/engine/inc/maharder/_modules/admin/module/changelog.php‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
global $mh;
1616

1717
$logs = [
18+
'173.3.1' => [
19+
__('[FIX] Исправлена загрузка скриптов при помощи composer'),
20+
__('[FIX] Исправлены мелкие ошибки в коде'),
21+
__('[FIX] Добавлены placeholder для стилей и скриптов'),
22+
],
1823
'173.3.0' => [
1924
__('[NEW] Добавлена мультиязычная поддержка, перевод можно осуществить при помощи сервиса Crowdin. Ссылка в подвале каждого модуля.'),
2025
__('[NEW] Добавлена возможность выводов логов на отдельной странице.'),

0 commit comments

Comments
 (0)