Всего 123 791 комментарий

Сергей С
28 августа 2023, 13:03
0
Возможно я что-то не так делаю, но $source выводит огромный массив данных.Всю информацию о загрузке и созании файлов. Как оттуда выцепить информацию о файле для его переименовании. Или никак?
Сергей С
28 августа 2023, 11:38
0
С этим событием работает отлично! Цель-переименование файлов на этапе загрузки. И вот теперь тут возникает вопрос:OnFileManagerFileCreate что еще можно получить кроме $path?
_________________
source Нашел уже. Спасибо
Dan
Dan
28 августа 2023, 11:26
0
Как и написал в комменте, используйте событие OnFileManagerFileCreate. Просто опять же непонятно, какую цель вы преследуете.
Сергей С
28 августа 2023, 11:18
0
Да тут просто кода нет Плагин сейчас так выглядит <?php
switch ($modx->event->name) {
case 'OnFileManagerUpload':
$modx->log(1, 'запущен плагин перемименование');
}
Dan
Dan
28 августа 2023, 11:13
+1
Ответил. У нас комментариям ставят плюсы, если они помогли (стрелка вверх)
Dan
Dan
28 августа 2023, 11:11
+1
Это событие бесполезно будет, оно не сработает. Используй событие OnFileManagerFileCreate
<?php
switch($modx->event->name) { 
    case 'OnFileManagerFileCreate':
        $modx->log(1, print_r($path, 1)); //в лог выведет пути к полному размеру и миниатюрам
    	break;
}
Вообще стоит взять в привычку либо код прикладывать имеющийся, либо описывать задачу. Тогда и ответы будут точными — вдруг вашу задачу можно решить по другому, или может у вас ошибка в коде.
Сергей С
28 августа 2023, 10:58
0
С питоном если честно не работал еще.В планах на будущее)))
Сергей С
28 августа 2023, 10:55
0
Спасибо. Теперь и правда заработало. И почему я сам вчера не проверил это. Весь вчерашний код уложился бы в 4 строки. Может по другому моему вопросу тоже есть какие мысли Не срабатывает OnFileManagerUpload при загрузке файлов в галерею ресурсов. Когда загружаю просто в файловый менеджер работает. При загрузке в галерею нет
Dan
Dan
28 августа 2023, 10:35
+1
Ну, что и следовало ожидать. Нужен абсолютный путь. А путь типа '/assets/images/resources/91080/.jpeg' — это относительный, тем более это относительно корня сайта. Он должен быть что-то наподобие '/var/32011/home/site.ru/assets/images/resources/91080/.jpeg' — вот это и есть абсолютный. Поэтому у тебя ни file_exist, ни rename не работали, потому что они пытались найти папку assets в корневой директории хостинга, а там такой нет. Используй готовые переменные, в твоем случае MODX_ASSETS_PATH и дальше дописывай путь от assets, т.е.
$path = MODX_ASSETS_PATH.'images/resources/91080/'; //будет от корня
$file = $path.'.jpeg';
Сергей С
28 августа 2023, 10:22
0
путь от корня прописывал. Фал размещал и в корне и assets не работало. Уже решил просто копированием файлов с нормальным именем. Проверял так-же на file_exists() он тоже ошибку давал для .jpg при этом для 1.jpg нормально. Но почему rename() не работал не знаю. Код там элементарный был rename('/assets/images/resources/91080/.jpeg', '/assets/images/resources/91080/no-name.jpeg'). А при том, тестил на определенном файле, то даже в переменные не записывал и не получал resource->url, все просто текстом прописывал в rename().Подозреваю что каких-то парв не хватает консоли
Сергей С
28 августа 2023, 08:32
0
Проблема изначально в том что перестал работать translite совместно с ms2gallery. просто .jpg фзаписывает файл если он с кириллицей. А теперь еще и события не срабатывают. При этом сама загрузка проходит штатно
Сергей С
28 августа 2023, 08:27
0
Встроеные события по какой то причине не реагируют на загрузку ms2gallery. Плагин повесил с логом на OnFileManagerUpload. На стандартный загрузчик реагирует на ms2gallery нет. В чем может быть причина?
Николай Савин
28 августа 2023, 08:18
+1
В msGallery и ms2Gallery никаких событий нет, и не предвидится.
По простой причине — они сами по себе никак файлами не управляют, не загружают, и даже не знают, где эти файлы лежат по сути.
Они только обрабатывают входящие команды и передают массив данных загрузчику MODX, который в свою очередь передает команду на загрузку (или другие операции) источнику файлов.
Источник файлов может быть разным, не только локальным. К примеру на какой-нибудь S3 Amazon загружать.

Вывод — пользоваться встроенными событиями на загрузку MODX.
Сергей С
27 августа 2023, 23:50
0
В документации нету. Группы у ms2gallery тоже нет. По файлам поискать хорошая мысль. Спасибо! Подожду ещё может кто подскажет само событие
Артур Шевченко
27 августа 2023, 23:34
0
Если в документации про это не написано, можно попробовать в админке рядом с системными настройками по группе ms2Gallery поискать, или скопировать файлы на локалку и через ide по файлам поискать invokeEvent
Дмитрий
27 августа 2023, 22:31
0
Спасибо, отличное решение.
Dan
Dan
27 августа 2023, 21:52
0
Нормально он работает в консоли, я оттуда и тестил. Создал два файла и переименовал их без проблем. Код покажи? Подозреваю, что ты не абсолютный путь к файлу указываешь. Там не просто имя файла должно быть в аргументах, а абсолютный путь.
Сергей С
27 августа 2023, 21:47
0
Да бог его знает не хочет и все. Вообще как я понял rename не хочет работать в консоли.
Dan
Dan
27 августа 2023, 18:22
0
Почему не видит? Протестил у себя, без проблем переименовал файл без имени с помощью rename. Если scandir запустить, там же этот файл будет?
Vladimir
27 августа 2023, 16:31
0
Могу дать пример на питоне и объяснить как я это сделал(потратил минут 5, так как давно не работал на питоне).
Задача такая: Найти все файлы что относятся к изображениям, можно сразу сделать регулярку чтобы проверял начиналось всё с точки и заканчивалось расширением изображений, либо найти все изображения затем пробежаться по ним и проверить на тоже самое начинается с точки и заканчивается расширением, далее заменить название, чат gpt в помощь с таким он должен справится.
import os
import pathlib

allowed_imgs = ('jpg','png','jpeg','webp','svg')

for root, dirs, files in os.walk("./"):
	for file in files:
		if file.startswith('.') and file.endswith(allowed_imgs):
			fl = os.path.join(root, file)
			ext = fl.split(".")[-1]
			nfl = os.path.join(root, f"newfile.{ext}")
			os.rename(fl, nfl)