Чистильщик для двойки

+56
5.76K
Установщик обновлён 13 августа в 19:00

Иллюстрация

Находит и удаляет изображения, которые не были использованы ни в одном типе контента и комментариях, а также, выявляет отсутствующие изображения.

Модульная архитектура позволяет быстро добавить новый функционал. Поддерживается ступенчатая работа.

Используйте только "Изображения контента 2", ибо он работает быстро у большинства пользователей. "Изображения контента" работает по другому принципу и его использование оправдано, если будет производится поиск малого количества изображений в очень большом количестве контента.

Важно добавить в файл index.php в папках /system/controllers/lcleaner/cleaners/content_images и content_images_2 названия установленных у вас сторонних полей:
  1.  
  2. $ctypes = array('comments'=>array('content_html')); // здесь нестандартные таблицы и их поля
  3. foreach($content_model->getContentTypesNames() as $ctype_name){
  4. $fields = $content_model->selectOnly('i.name', 'name')->
  5. filterIn('type', array('images','image','html'))-> // здесь названия полей
  6.  
Возможно, в след версиях это можно будет делать в настройках.

Используйте с осторожностью, дабы не удалить изображения из нестандартных компонентов и полей!

Скриншот работы

Иллюстрация

Скачать


В планах

  1. прогресс бар
  2. галерея найденных изображений в лайтбоксе
  3. выбор пользователя помимо группы
  4. сортировка таблиц
+4
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Спасибо, полезная вещь!!!
+2
Александр Kreator Александр Kreator 6 лет назад #
Теперь постараюсь то написать:
- Неплохобы превьюшку увидеть при наведении на ссылку найденной картинки
- Вывод даты создания картинки и сортировку по дате

Чтоб не рубить с плеча можно еще фильтр по пользователю, или все кроме какого то пользователя. Папки же созданы по пользователям.
+6
lokanaft lokanaft 6 лет назад #
Ну пока только по группам. Добавлю пользователей позже и дату. Об сортировке я уже думал.
Если выводить хинт, то будет слишком хлопотно наводить на каждую строку при большом кол-ве, ведь задача проверить именно каждую в итоге. Поэтому минигалерея будет немного удобнее.
Если он нашёл другие размеры превьюшки - значит их нет в базе, а это значит, что они никогда не смогут быть использованы. В базе хранятся пути до всех размеров, которые учтены, даже если не использованы.

Просто вся фишка в том, что изображений много лишь в первый раз, затем следить за ними будет проще и лишние функции будут ни к чему.
0
Александр Kreator Александр Kreator 6 лет назад #
Добавлю пользователей позже и дату
Ну тогда и размер картинки добавте в таблицу, чтоб лучше понимать откуда ноги растут
+2
Александр Kreator Александр Kreator 6 лет назад #
Не суть важно конечно, но тоже деталь: проверять не только по типам контента и профилю пользователя. Там тоже могут использоваться фото. (Хотя может у вас это сделано?)
+3
lokanaft lokanaft 6 лет назад #
Про стену в профиле не подумал, сейчас добавлю.
+1
lokanaft lokanaft 6 лет назад #
Архив обновил. Теперь учитываются стены и аватар. Также добавил столбики с размером картинки и датой последнего изменения.
0
Александр Kreator Александр Kreator 6 лет назад #
Тем кто ставил перезалить просто? или с в БД тоже изменения?
0
lokanaft lokanaft 6 лет назад #
Просто поставить поверх или перезалить, не забыть про другие шаблоны, помимо дефолта.
+4
Val Val 6 лет назад #
lokanaft, СУПЕР! Тоже вынашивал в отдалённых планах подобное дополнение, а тут такой подарок!!! dance
Огромное вам спасибо!
+1
Val Val 6 лет назад #
жаль не могу поставить +1 в карму(((
0
lezginka.ru lezginka.ru 6 лет назад #
+
0
Алексей Т Алексей Т 6 лет назад #
Отличная штука +Попробовал!
+2
Александр Александр 6 лет назад #
Если поставить бакграунд-картинку в профиле, то "чистильщик" тоже считает картинку за неиспользуемую
+3
lokanaft lokanaft 6 лет назад #
Спасибо за находку!

Чтобы исправить, надо в указанных в посте файлах в строке:
Код PHP:
  1. $ctypes = array('comments'=>array('content_html'), 'wall_entries'=>array('content_html'), 'cms_users'=>array('avatar')); // нестандартные таблицы и их поля
Добавить так:
Код PHP:
  1. $ctypes = array('comments'=>array('content_html'), 'wall_entries'=>array('content_html'), 'cms_users'=>array('avatar','theme')); // нестандартные таблицы и их поля
Либо заново скачать архив установщика.
+1
Xamle Xamle 6 лет назад #
Не активная кнопка "Очистить" scratch что может быть не так
Спойлер
0
lokanaft lokanaft 6 лет назад #
Значит ещё не завершился процесс анализа
+1
Xamle Xamle 6 лет назад #
и как долго он будет вести анализ ?! у меня уже минут 15 весит
0
lokanaft lokanaft 6 лет назад #
Значит сервер прервал запрос, а скрипт всё ещё ждёт ответ.
0
Xamle Xamle 6 лет назад #
можно это как то исправить sad , сижу на виртуалке, выделенный пока не зачем
0
MegaRostov MegaRostov 6 лет назад #
Будьте осторожны в выборе удаления изображения! Я по не знанию много чего удалил НУЖНОГО! (Предупреждение!) Хороший компонент+++++. Мне пригодился!
-2
Андрей Андрей 6 лет назад #
А я поставил, у меня он установился, зашёл в него, вижу две кнопки, АНАЛИЗ и ОЧИСТКА пожамкал их - реакции ноль, скажите ЧЯДНТ?
0
lokanaft lokanaft 6 лет назад #
Значит у вас недефолтный шаблон и вы не залили в него файлы из установщика.
-3
Андрей Андрей 6 лет назад #
да у меня мой шаблон. Просто другие компоненты как бы устанавливаются, а почему ваш нет?
+1
lokanaft lokanaft 6 лет назад #
Значит там как бы нет скриптов или они как бы подключаются всегда через. дефолт
-3
Андрей Андрей 6 лет назад #
ну как бы это минус пока - для меня. Проще когда установил компонент и он работает без лишних телодвижений scratch
0
lokanaft lokanaft 6 лет назад #
Я мог бы вообще не двигаться и не делать его. Копировать шаблоны в папки своих шаблонов - это нормально, пока нет более совершенного установщика.
-2
Андрей Андрей 6 лет назад #
я не говорил что компонент плохой или не нужен, мне как раз он очень понравился. v
-3
Андрей Андрей 6 лет назад #
например компоненты crystalchat, биллинг2, кнопка вверх вниз - они же не требуют доп действий.
+3
lokanaft lokanaft 6 лет назад #
Ещё раз. Там подключается например так:
Код PHP:
  1. <?php $this->addCSS('templates/default/css/updownscroll.css'); ?>
  2. <?php $this->addJS('templates/default/js/updownscroll.js'); ?>
И какой бы ни был шаблон, скрипт всегда подключится из default, что неправильно.
0
Fenix Fenix 6 лет назад #
Можно по подробнее? - А какая разница, откуда подключится скрипт? главное, что подключиться. А если использовать несколько шаблонов? - дублировать js в каждый?
+3
Fuze Fuze 6 лет назад #
Большая разница откуда подключается скрипт js.
В вашем шаблоне вообще может не использоваться jquery (если используется другой js фреймворк например).
В вашем шаблоне разметка css может отличаться от той, которая в дефолтном шаблоне и css нужно будет немного адаптировать под ваш шаблон. И это нормальная практика, так и должно быть.
В чем проблема скопировать пару файлов согласно инструкции, я не понимаю. Наверное лишь бы написать что-нибудь не думая.
0
Fenix Fenix 6 лет назад #
В чем проблема скопировать пару файлов согласно инструкции
Да в общем ни каких :)
Просто была интересна суть подключения, так, как все прописывают пути по разнмоу
Код PHP:
  1. <?php $this->addJS('templates/default/js/updownscroll.js'); ?>
  2. или
  3. <?php $this->addJS('templates/{$this->name}/js/updownscroll.js'); ?>
Вот и хотел узнать какой вариант лучше - подключать из используемого шаблона или из дефолта.
+1
Fuze Fuze 6 лет назад #
Вот и хотел узнать какой вариант лучше - подключать из используемого шаблона или из дефолта.
лучше так, чтобы не править файлы
Код PHP:
  1. $this->addJS("templates/{$this->name}/js/updownscroll.js");
0
Александр Александр 6 лет назад #
Создал в редактировании пользователя поле, фото. Пользователь загружает фото, оно используется. Но "Чистильщик" хочет его удалить
0
lokanaft lokanaft 6 лет назад #
Вы пост читали? Там же написано, куда и что добавлять, когда у вас есть нестандартные поля.
0
jorgovich jorgovich 6 лет назад #
Собираюсь почистить один боевой сайт, на версии 2.3.0 корректно работает?
0
lokanaft lokanaft 6 лет назад #
Вы прежде чем нажимать "Удалить" смотрите, что там за фотки то.
0
jorgovich jorgovich 6 лет назад #
Да я пока еще не ставил даже, посмотрю обязательно, только 12 гигов фоток сложно будет отсмотреть, попробую на следующих выходных, зарезервируюсь, потом поэксперементирую
0
Root77 Root77 5 лет назад #
Не всегда, неиспользуемые картинки - ненужны. Все таки лучше, если была бы превью картинки. По ссылке не понятно, что это за картинка такая.
В templates\ваш шаблон\controllers\lcleaner\js\cleaners\content_images_2.js и content_images.js, строку:

Код PHP:
  1. $('#lcl_res_tbl_content_images tbody').append('<tr id="lcl_content_images_res_'+(++lcl.res_cnt)+'" class="lcl_st1"><td><input type="hidden" value="'+(lcl.res_cnt)+'" name="'+name+'[id]['+(lcl.res_cnt)+']" /><img style="width:50px;display: inline-block; position: relative;" src='+res[i].src+' />&nbsp;&nbsp;<a href="'+res[i].src+'" target="_blank">'+res[i].src+'</a></td><td>'+res[i].size+'</td><td><input name="'+name+'[src]['+(lcl.res_cnt)+']" value="'+res[i].src+'" type="checkbox" checked /></td></tr>');
Дополнить этим:
Код PHP:
  1. $('#lcl_res_tbl_content_images tbody').append('<tr id="lcl_content_images_res_'+(++lcl.res_cnt)+'" class="lcl_st1"><td><input type="hidden" value="'+(lcl.res_cnt)+'" name="'+name+'[id]['+(lcl.res_cnt)+']" />[b]<img style="width:50px;display: inline-block; position: relative;" src='+res[i].src+' />&nbsp;&nbsp;[/b]<a href="'+res[i].src+'" target="_blank">'+res[i].src+'</a></td><td>'+res[i].size+'</td><td><input name="'+name+'[src]['+(lcl.res_cnt)+']" value="'+res[i].src+'" type="checkbox" checked /></td></tr>');
0
Root77 Root77 5 лет назад #
Код PHP:
  1. <img style="width:50px;display: inline-block; position: relative;margin-right:20px;" src='+res[i].src+' />
0
Pocus Pocus 4 года назад #
Что-то не получается у меня добавить нестандартное поле (слайдер) в стандартном типе контента (con_news)
Поясните пожалуйста, этот компонент ищет неиспользуемые изображения только в тегах <img scr=.....>?
А как быть с такими записями в полях?
Код SQL:
  1. ---
  2. -
  3. normal: 000/u22/011/8f1749a9.jpg
  4. preview: 000/u22/011/b1153e1e.jpg
  5. -
  6. normal: 000/u22/011/2a824bc3.jpg
  7. preview: 000/u22/011/5afd6b61.jpg
0
Pocus Pocus 4 года назад #
Что я делаю не так?
Добавляю поле "photoslider" (пример содержимого выше), но чистильщик упорно не видит эти записи и предлагает удалить изображения.
Код PHP:
  1. $ctypes = array( // нестандартные таблицы и их поля
  2. 'comments'=>array('content_html'),
  3. 'wall_entries'=>array('content_html'),
  4. 'cms_users'=>array('avatar','theme'),
  5. 'con_news'=>array('photoslider')
  6. );
  7. foreach($content_model->getContentTypesNames() as $ctype_name){
  8. $fields = $content_model->selectOnly('i.name', 'name')->
  9. filterIn('type', array( // сюда надо добавить названия нестандартных полей в стандартных типах контента
  10. 'images',
  11. 'image',
  12. 'html',
  13. 'photoslider'
  14. ))->
0
Евгений Евгений 3 года назад #
а будет обновление до версий инстанта 2.8.2 и 2.9.0
0
Pocus Pocus 3 года назад #
Так он работает на 2.8.2 и на 2.9 должен, в них структура БД и папок не изменилась.
А вот просто устранить недоработки не мешало бы. Что, впрочем, маловероятно.
Я пол-года назад спрашивал об этом lokanaft-а, ссылается на нехватку времени (читай, желания)
Упрекать автора нельзя, компонент-то бесплатный, хотите - пользуйтесь, хотите - нет.
Мне он реально помогал на начальном этапе, когда я засирал систему своими неумелыми экспериментами, а инстант еще не умел сам удалять файлы вместе с контентом.
Сейчас это не слишком актуально. Но Ris готовит нам какой-то сюрприз. Ждем-с.

Еще от автора

Ajax подгрузка контента для двойки
Ну что, товарищи, сегодня вы своими руками сможете сделать ajax подгрузку записей контента.
AJAX подгрузка комментов для двойки
Как следует из названия, дополнение ограничивает полный вывод всех комментов записи и позволяет пользователю при необходимости посмотреть следующие.
ContentWatch - проверка уникальности добавляемого контента для icms2
Компонент позволяет проверять уникальность текста с помощью сервиса Content-Watch.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.