Удаление пустых папок в Upload 2.X

1515
Сделал задание планировщика, которое запускает хук \system\controllers\files\hooks\cron_clear_upload.php, который сканирует папку upload и удаляет пустые папки.
Установка обычным способом. После установки появляется задача хрона, которая будет срабатывать в 4 часа и под покровом ночи удалять пустые каталоги.
Если вам не терпится посмотреть утилиту в работе - перейдите в Панель урправления - Настройки - Планировщик и стартаните вручную задание "Удаление пустых папок в Upload".
Имена удаленных папок будут выведены на экран.

Удаление пустых папок в Upload
СКАЧАТЬ
Дополнение перезалито.
Для обновления просто удалите задание хрона "Удаление пустых папок в Upload" в планировщике и установите дополнение заново.
Ospanel и InstantCMS | Поиск и перенос неиспользуемых картинок в Upload
Комментарии (42)
Loadырь 1 февраля 2018 в 14:17 +2
small user social cms
Оперативно вы, +++

Осталось "смержить" это с чистильщиком и удобный компонент получится smile
Ris 1 февраля 2018 в 14:31 +3
small user social cms
Я в тот чистильщик смотрел долго, но, к сожалению, так принципа работы и не понял.
Поэтому у меня где-то валяется своя утилита для расчистки. Я её быстро запускаю и быстро удаляю нафиг с сайта, потому что в ней пароли к базе.
vikont 1 февраля 2018 в 15:09 +1
small user social cms
Спасибо! Успокоили! А то уж думал я один не понимаю этого Чистильщика!
Поделитесь своим Чистильщиком! Хотя бы тем что есть...
Ris 1 февраля 2018 в 16:00 0
small user social cms
Что-то переделанное из чистильщика для первой ветки.
Вот из этого:
http://instantcms.ru/forum/thread21787-1.html#208213
Домой вернусь - посмотрю.
Ris 1 февраля 2018 в 19:46 0
small user social cms
Посмотрел. Моя утилита удаляет неиспользованные фото из моих старых папок, которые я переносил с первой ветки.
Как удалять из аплоада двойки с его кашеобразной структурой - неизвестно.
Попробую запросить алгоритм на форуме в той же ветке.
WebMan 1 февраля 2018 в 14:28 0
small user social cms
Полезно!
1. По поводу вывода SessionMessage. Если у админа всю ночь открыт браузер и по крону почистятся папки, то при обновлении любой страницы эти системные сообщения будут выведены на ней. Сообщения сохраняются в сессию и выводятся при показе первой же страницы. Или я ошибаюсь?
2. Может можно отследить. что запуск идёт через крон и тогда их не выводить?
3. Второй момент, может не делать кучу сообщений, каждое для своей папки, а собрать весь список удалённых папок и вывести по окончании сканирования в одном сообщении?
Ris 1 февраля 2018 в 14:33 +2
small user social cms
Да, Вы правы.
Вечером дома доработаю. А то тут работать надо...
Kreator 1 февраля 2018 в 15:22 0
small user social cms
Если у админа всю ночь открыт браузер и по крону почистятся папки, то при обновлении любой страницы эти системные сообщения будут выведены на ней.
Системные сообщения пишутся в сессию того кто выполнял задачу. И выводятся автору сессии. Если задачу запустил Крон, то как записи попадут в вашу сессию?
WebMan 2 февраля 2018 в 20:26 0
small user social cms
Логично, не учёл. Спасибо. smile
Ris 2 февраля 2018 в 20:30 0
small user social cms
Но мысль выдавать все удаленные файлы в одном сообщении была правильной!
yury 1 февраля 2018 в 15:26 +3
no avatar
а зачем вообще система создает пустые папки?
yury 1 февраля 2018 в 15:27 +1
no avatar
Однозначно +
MegaRostov 1 февраля 2018 в 15:34 +1
small user social cms
Плюс+Плюс Что и требовалось для чистки.
Спасибо огромное.
TOPg 1 февраля 2018 в 15:34 0
small user social cms
Спасибо! чистильщик наудалял, я уже убедился))
yury 1 февраля 2018 в 15:57 0
no avatar
главное чтобы не удалил с картинками:)
MegaRostov 1 февраля 2018 в 15:45 0
small user social cms
У меня беда при установке..
503 Service Unavailable
Please, enable debug mode in the site settings

Ошибка в запросе БД:
Unknown column 'is_strict_period' in 'field list'

INSERT INTO `cms_scheduler_tasks` (`id`, `title`, `controller`, `hook`, `period`, `is_strict_period`, `date_last_run`, `is_active`, `is_new`) VALUES (NULL, 'Удаление пустых папок в Upload', 'files', 'clear_upload', '1430', NULL, '2018-02-01 04:00:00', '1', '0')
Последние вызовы:

install_package()
call_user_func() @ /system/controllers/admin/actions/install_finish.php : 316
actionAdminInstallFinish->runPackageInstaller() @ /system/controllers/admin/actions/install_finish.php : 29
actionAdminInstallFinish->run()
call_user_func_array() @ /system/core/controller.php : 461
cmsController->runExternalAction() @ /system/core/controller.php : 379
cmsController->runAction()
call_user_func_array() @ /system/core/action.php : 29
cmsAction->__call() @ /system/controllers/admin/actions/install.php : 12
actionAdminInstall->runAction() @ /system/controllers/admin/actions/install.php : 12
actionAdminInstall->run()

Что это может быть?
Ris 1 февраля 2018 в 15:51 0
small user social cms
Я на 2.9 это делал. Там есть такая функция "Строгое следование периоду". В 2.8.2 такого нет.
Переделал, перезалил.
Попробуйте скачать еще раз.
http://instantcms.ru/users/files/download6804.html
MegaRostov 1 февраля 2018 в 16:25 0
small user social cms
Спасибо ОГРОМНОЕ все получилось..
Алексей 1 февраля 2018 в 15:53 0
small user social cms
Что это может быть?
MegaRostov, это карма facepalm
MegaRostov 1 февраля 2018 в 16:24 0
small user social cms
Это точно! Что то у меня последнее время все как то через "режим отладки"
Rainbow 1 февраля 2018 в 16:50 +2
small user social cms
Ris , отлично, только в архиве для версии 2.8.2 поправьте в install.php запрос к базе префикс не cms_ scheduler_tasks, а {#}scheduler_tasks для тех у кого префикс другой.

И тоже интересует ваш чистильщик файлов, может быть подойдет...

Спойлер
Ris 1 февраля 2018 в 17:24 0
small user social cms
Спасибо за найденный недочет!
Изменил, перезалил.
yury 1 февраля 2018 в 22:02 0
no avatar
не выкладывали еще в общий каталог дополнений? будет полезно там его находить)
Ris 1 февраля 2018 в 22:20 0
small user social cms
Причешу и выложу.
Вон пара багов нашлась, может еще найдутся.
Сейчас кто-нибудь напишет, что с сайта удалилась прижизненная фотография А.С.Пушкина и пойду посыпать голову пеплом...
Jestik 1 февраля 2018 в 22:52 0
small user social cms
Это ж фейк) не существует ее, та разница между первой фото в истории и его смертью 10 лет, но за 10 лет технология не сильно улучшилась, и получить то качество которое якобы его фото было не реально
Ris 1 февраля 2018 в 23:18 0
small user social cms
Я знаю.
Ris 2 февраля 2018 в 20:15 +3
small user social cms
Вот нашел еще несколько косяков, кое-что улучшил и можно выкладывать.
AS31 4 февраля 2018 в 05:47 0
small user social cms
Люди а где скачать то.
Нажимаю скачать пишет файл не найден
Ris 4 февраля 2018 в 09:29 0
small user social cms
Глюк какой-то. Перезалил.
MegaRostov 4 февраля 2018 в 12:25 0
small user social cms
Подскажите если я установил версию которая была первой без улучшений, и сейчас скачал свежую ее просто перезалить через ftp или можно устанавливать через админику?
Ris 4 февраля 2018 в 12:28 0
small user social cms
Просто перезалить по ftp.
Разница только в отображении списка удаленных папок..
vikont 4 февраля 2018 в 16:40 0
small user social cms
Пустые папки удаляет замечательно!
А как на счет удаления "потерянных" файлов изображений? Тех что нигде не используются.
Ris 4 февраля 2018 в 17:14 +4
small user social cms
Процесс получения списка используемых почти налажен.
vikont 4 февраля 2018 в 18:35 0
small user social cms
Спасибо! Как и многие, весь в ожидании!
Ris 4 февраля 2018 в 20:01 +1
small user social cms
Можете пока написать регулярку, которая будет отличать /u32/rge/fgcb/65ffgr6ubfg87.jpg от photka_is_interneta.jpg
Андрей 13 февраля 2018 в 13:29 -1
small user social cms
Я поставил, всё чистит, но у меня два недостатка:
1. Задача автоматом не запускается. (остальные задачи по крону работают норм)
2. Удаляет папку installer (я ее кончено закидываю обратно, но тоже вручную)
Подскажите, что я делаю не так?
Ris 13 февраля 2018 в 19:46 +2
small user social cms
Да, при срабатывании по хрону выдает ошибку. Вручную работает нормально.
Сейчас исследую, в чем может быть проблема.
Ris 13 февраля 2018 в 23:25 0
small user social cms
Исправил. Навешал везде сепараторов, как на молокозаводе.
Перезалил версию.
Для обновления просто удалите задание хрона "Удаление пустых папок в Upload" в планировщике и установите дополнение заново.
Андрей 16 февраля 2018 в 13:55 -1
small user social cms
Сейчас всё правильно работает!
DeusSpa 4 февраля 2018 в 22:08 0
small user social cms
Хорошее дополнение +

Вот только поправьте не удалять папку installer иначе удаляет и потом дополнения не поставить - пишет ошибку распаковки.
Не все потом догадаются создать её заново при установке дополнений.
Alex 5 февраля 2018 в 16:24 0
small user social cms
У вас в 15 строке исключение 'upload\installer' не обрабатывается, потому что 'upload/installer' != 'upload\installer'
15стр.: if([] === (array_diff(scandir($v), array('.', '..'))) && $v != 'upload\installer' && $v != 'upload\files' ){
Олег Васильевич я 8 февраля 2018 в 12:28 0
small user social cms
Просмотрел 8 сайтов с помощью утилиты.
Пустые папки обнаружил на 3-х из них. Вся тройка обновляется с версий старше 2.7.2. Ни одной пустой папки на сайтах изначально сделанных на версиях моложе 2.7.2 не обнаружено.
Ris, спасибо за дополнение!