Удаление просроченных объявлений?

Вопросы и ответы по изменению функционала, смене дизайна, переносу сайта и т.п.

Модераторы: Xpycm, Koduc

Правила форума
ВНИМАНИЕ! Форум не является средством гарантированной поддержки клиентов и пользователей. Поэтому на быстрый ответ тут рассчитывать не нужно, как и на ответ вообще. Сотрудники отвечают по мере своих возможностей.

На форуме действует ограничение в 3 сообщения / сутки.
Если Вы хотите сказать "спасибо", то воспользуйтесь функцией "Повысить репутацию" - зелёная иконка "плюс" под ником ответившего.

Удаление просроченных объявлений?

Сообщение aizul » 11 мар 2016, 10:33

Как сделать автоматическое удаление объявлений, срок у которых истек?
aizul
Незнакомец
 
Сообщения: 20
Зарегистрирован: 29 дек 2015, 17:15
Очки репутации: 0

Re: Удаление просроченных объявлений?

Сообщение Xpycm » 11 мар 2016, 11:36

Файл protected\components\BeginRequest.php

Код:
Код: Выделить всё
if (is_array($ad)) {
    if (isset($ad['role']) && $ad['role'] == User::ROLE_ADMIN) {
        $sql = 'UPDATE {{apartment}} SET active = '.Apartment::STATUS_INACTIVE.' WHERE id = '.$ad['id'].' LIMIT 1';
        Yii::app()->db->createCommand($sql)->execute();
    }
    else {
        $sql = 'UPDATE {{apartment}} SET active = '.Apartment::STATUS_INACTIVE.', owner_active = '.Apartment::STATUS_INACTIVE.' WHERE id = '.$ad['id'].' LIMIT 1';
        Yii::app()->db->createCommand($sql)->execute();
    }
}
 


Заменить на:
Код: Выделить всё
if (is_array($ad)) {
    Apartment::model()->findByPk($ad['id'])->delete();
}
 


P.S: Не тестил, но должно работать.
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50

Re: Удаление просроченных объявлений?

Сообщение Alviksson » 21 фев 2017, 20:13

А прилагающиеся материалы (фото, видео) тоже удаляются физически? Иначе как отслеживать чем забит сервер?
Alviksson
Незнакомец
 
Сообщения: 9
Зарегистрирован: 11 янв 2017, 19:41
Очки репутации: 0

Re: Удаление просроченных объявлений?

Сообщение Xpycm » 22 фев 2017, 08:15

Код: Выделить всё
Apartment::model()->findByPk($ad['id'])->delete(); 


Как видим, вызывается метод delete модели Apartment.
Это значит, что отработают методы beforeDelete() и afterDelete() : http://www.yiiframework.com/doc/guide/1 ... e.ar#sec-9
В свою очередь, в этих методах и происходит удаление фотографий, видео, комментарий и прочее.
Если интересно, то можете посмотреть эти методы в файле Apartment.php, который находится в папке protected/modules/apartments/models
Dropbox
Open Real Estate CMS: FAQ | FAQ 2 | FAQ 3
Изображение
Xpycm
Разработчик
Разработчик
 
Сообщения: 1592
Зарегистрирован: 30 дек 2011, 11:06
Откуда: Йошкар-Ола
Очки репутации: 50


Вернуться в Вопросы и помощь по изменениям

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 22

cron