Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Автоматическое удаление сообщений форума, не прошедших модерацию

00 голосов
2
Добрый день!

Как правильнее организовать автоматическое удаление сообщений, не прошедших модерацию? Удаление должно происходить раз в сутки.
спросил 18 Март, 14 от Sherin (120 баллов)

2 Ответы

00 голосов
Итак, автоматическое ежесуточное удаление организуется с помошью Агентов.
После прочтения документации, у меня получилось следующее:

код создания агента:
Код
// добавим агент модуля "Форум"
CAgent::AddAgent(
    "DeleteBadMessages();", // имя функции
    "",                     // идентификатор модуля
    "N",                    // агент не критичен к кол-ву запусков
    86400,                  // интервал запуска - 1 сутки
    "",                       // дата первой проверки на запуск - текущая
    "Y",                    // агент активен
    "",                     // дата первого запуска - текущая
    30);


код функции DeleteBadMessages:
Код
function DeleteBadMessages()
    {
       $control_date = date('d.m.Y', mktime(0, 0, 0, date('m') , (date('d') + 2), date('Y') ) );
       // выберем все неопубликованные сообщения
      $db_res = CForumMessage::GetList(array("ID"=>"ASC"), array("APPROVED"=>"N"));
      while ($ar_res = $db_res->Fetch())
      {
        if($ar_res["POST_DATE"] < $control_date)
        {
              //Проверяем, имеет ли текущий пользователь право удалять сообщения и удаляем, есил имеет
              if (CForumMessage::CanUserDeleteMessage($ar_res["ID"], CUser::GetUserGroupArray(), CUser::GetID()))
            {
               CForumMessage::Delete($ar_res["ID"]);
            }
        }
      
      }
    }


Теперь меня мучает вопрос: эта функция-агент принадлежит модулю форума или нет? И куда следует поместить определение этой функции и добавление агента?
ответил 08 Сен, 14 от Sherin (120 баллов)
00 голосов
Насколько я понимаю, функция для агента должна обязательно возвращать свое название, т.е. в функцию нужно еще добавить
Код
return "DeleteBadMessages()";
. Этот момент лучше уточнить у более компетентных товарищей.
А заводить нового агента, думаю, что лучше не программный способом (Вы же не собираетесь его снова и снова создавать), а через админку битрикса - вкладка"Настройки", далее "Инструменты"->"Агенты" и на открывшейся вкладке создать нового агента руками. Там же при создании Вы и зададите указанные Вами в первом посте настройки.
ответил 14 Янв, 15 от LIla (100 баллов)

Похожие вопросы

0 голосов
4 ответов
0 голосов
1 ответ
0 голосов
3 ответов
спросил 10 Фев, 14 от LAYS (180 баллов)
0 голосов
4 ответов
спросил 30 Дек, 13 от SemnI (100 баллов)
0 голосов
4 ответов
спросил 23 Дек, 13 от Tylalyla (100 баллов)