Tikets загрузка избражений в TV

Столкнулся с проблемкой, а именно загрузкой изображения в свои TV типов image или file, из коробки Tikets загружает файлы и привязывает их к ресурсам, мне показалось это не удобным (на вкус и цвет...)

Поле в форме добавления/редактирования тикета: tv_name — ваше тв поле
<input  type="file" class="form-control" placeholder="Логотип проекта" name="tv_name" value="" id="ticket-tv_name">
Плагин: ticketUploadImage
Вешаем на событие: OnDocFormSave
Для оптимизации использую сниппет phpthumbon (строка 43, можно указать свой или через вcтроеный phpThumb)
Код плагина:
<?php

/* @var modX $modx */                // Ссылка на объект modX
/* @var modResource $resource */     // Ссылка на объект modResource
/* @var modMediaSource $source */    // Ссылка на объект modMediaSource

if ($modx->event->name == 'OnDocFormSave' && $modx->context->key != 'mgr') {
    $id = $resource->get('id');      // Получаем ID текущего ресурса
    $source_id = $modx->config['tickets.source_default']; // Получаем ID медиа-источника

    if (!$_FILES) return;            // Если файлы не загружены, выходим из функции

    // Получаем свойства медиа-источника
    $source = $modx->getObject('modMediaSource', $source_id);
    if ($source) {
        $properties = $source->getProperties();
        $exts = $properties["allowedFileTypes"]["value"];      // Разрешенные типы файлов
        $basePath = $properties["basePath"]["value"];          // Базовый путь медиа-источника
        $baseUrl = $properties["baseUrl"]["value"];            // Базовый URL медиа-источника
        $maxUploadWidth = $properties["maxUploadWidth"]["value"];     // Максимальная ширина загружаемого изображения
        $maxUploadHeight = $properties["maxUploadHeight"]["value"];   // Максимальная высота загружаемого изображения

        // Обрабатываем каждый загруженный файл
        foreach ($_FILES as $tv => $item_f) {
            $format = substr(strrchr($item_f['name'], '.'), 1);   // Получаем расширение файла

            // Проверяем, разрешен ли формат файла
            if (!in_array($format, explode(",", $exts))) continue;

            // Проверяем, правильно ли загружен файл
            if (!is_uploaded_file($item_f["tmp_name"])) continue;

            // Создаем директорию для загруженных файлов
            @mkdir(MODX_BASE_PATH . $basePath . $id . DIRECTORY_SEPARATOR . $tv, 0755, true);

            // Генерируем уникальное имя файла на основе его имени и формата
            $imageNew = MODX_BASE_PATH . $basePath . $id . DIRECTORY_SEPARATOR . $tv . DIRECTORY_SEPARATOR . $id . "_" . md5($item_f['name']) . "." . $format;

            // Копируем загруженный файл в целевую директорию
            rename($item_f["tmp_name"], $imageNew);

            // Генерируем эскиз с помощью сниппета phpthumbon
            $tmpImg = $modx->runSnippet('phpthumbon', array('input' => $imageNew, 'options' => "&w=$maxUploadWidth&h=$maxUploadHeight&zc=0&f=$format"));

            // Перемещаем сгенерированный эскиз в конечное местоположение
            if($tmpImg) rename(MODX_BASE_PATH . $tmpImg, $imageNew);

            // Устанавливаем значение Переменной Шаблона (TV) в относительный путь загруженного файла
            $resource->setTVValue($tv, str_replace(MODX_BASE_PATH . $basePath, '', $imageNew));
        }
    }
}
Всем добра!)
vectorserver
28 ноября 2023, 13:23
modx.pro
2
436
+3
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0