Приложение "Toolbox": различия между версиями
Abushyk (обсуждение | вклад) |
Abushyk (обсуждение | вклад) |
||
Строка 15: | Строка 15: | ||
=== Пользовательские контроллеры === | === Пользовательские контроллеры === | ||
− | Пользовательские контроллеры | + | Пользовательские контроллеры создаются путем размещения в каталоге /apps/toolbox/useractions/ классов определенного вида. |
+ | |||
+ | <pre> | ||
+ | class recalc extends Object_Manager { | ||
+ | |||
+ | public function getName(){ | ||
+ | return 'Имя'; | ||
+ | } | ||
+ | |||
+ | public function run(){ | ||
+ | $counts = array(); | ||
+ | $DBC=DBC::getInstance(); | ||
+ | $query = 'SELECT COUNT(`id`) AS _c, `user_id` FROM '.DB_PREFIX.'_data GROUP BY `user_id`'; | ||
+ | $stmt = $DBC->query($query, $query_vals); | ||
+ | |||
+ | |||
+ | if ($stmt) { | ||
+ | $timelimit = time() - $item['t'] * 24 * 3600; | ||
+ | while ($ar = $DBC->fetch($stmt)) { | ||
+ | $counts[$ar['user_id']] = $ar['_c']; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | $query = 'UPDATE '.DB_PREFIX.'_user SET `objcount`=0 WHERE 1'; | ||
+ | $stmt = $DBC->query($query); | ||
+ | |||
+ | if(!empty($counts)){ | ||
+ | $query = 'UPDATE '.DB_PREFIX.'_user SET `objcount`=? WHERE user_id=?'; | ||
+ | foreach($counts as $user_id=>$count){ | ||
+ | $stmt = $DBC->query($query, array($count, $user_id)); | ||
+ | } | ||
+ | } | ||
+ | return 'Выполнено'; | ||
+ | //print_r($counts); | ||
+ | } | ||
+ | } | ||
+ | </pre> |
Версия 16:55, 22 января 2020
Приложение для выполнения рутинных массовых задач.
Подгонка превьюшек
Используется для подгонки уменьшенных изображений картинок для объявлений. Применимо только к элементу типа Uploadify_image.
Принцип работы: выбирает все картинки объявлений и пересоздает их уменьшенные копии согласно настроек apps.realty.data_image_preview_height, apps.realty.data_image_preview_width и apps.realty.preview_smart_resizing. Поскольку за исходное изображение берется нормальное изображение, то не уменьшенных изображениях, в результате этой операции, возможно появление водяного знака, если он был нанесен на нормальные изображения.
Из Uploadify в Uploads
Мигратор картинок из элемента типа Uploadify_image (базовая поставка) в элемент типа Uploads. Применяется для объявлений. Для своей работы требует указания системного имени элемента типа Uploads в который будут помещены изображения (при использовании Uploadify_image изображения хранятся во внешней таблице БД).
Перед миграцией необходимо дополнить, в случае отсутствия, таблицу re_image полями title VARCHAR(255) и description TEXT.
Если миграция не выполнена, но старый элемент типа Uploadify_image заменен одноименным элементом типа Uploads, присоединенные картинки будут доступны только на просмотр с фронта, но не будут доступны на редактирование из админки. Эта доступность сохранится до первой загрузки картинки в элемент типа Uploads. После этого все изображения, которые были подхвачены из старого элемента, будут утеряны.
Пользовательские контроллеры
Пользовательские контроллеры создаются путем размещения в каталоге /apps/toolbox/useractions/ классов определенного вида.
class recalc extends Object_Manager { public function getName(){ return 'Имя'; } public function run(){ $counts = array(); $DBC=DBC::getInstance(); $query = 'SELECT COUNT(`id`) AS _c, `user_id` FROM '.DB_PREFIX.'_data GROUP BY `user_id`'; $stmt = $DBC->query($query, $query_vals); if ($stmt) { $timelimit = time() - $item['t'] * 24 * 3600; while ($ar = $DBC->fetch($stmt)) { $counts[$ar['user_id']] = $ar['_c']; } } $query = 'UPDATE '.DB_PREFIX.'_user SET `objcount`=0 WHERE 1'; $stmt = $DBC->query($query); if(!empty($counts)){ $query = 'UPDATE '.DB_PREFIX.'_user SET `objcount`=? WHERE user_id=?'; foreach($counts as $user_id=>$count){ $stmt = $DBC->query($query, array($count, $user_id)); } } return 'Выполнено'; //print_r($counts); } }