XF 2.1 Как скрыть объявление запросом?

Umar

Проверенные
Сообщения
107
Реакции
54
Баллы
330
Здравствуйте, подскажите, как скрыть объявление (созданное через админку. Связь -> Объявления) не через админку, а запросом? Это необходимо для реализации определенной цели, рассказывать думаю смысла нет. Пробовал колонку active менять на 0

104462

В админке отображается, что объявление отключено

104463

Но на самом деле объявление активно

104464

Может нужно выполнить какой-то дополнительный запрос? Заранее спасибо

Никто не знает?
 
Последнее редактирование модератором:
Проблема абсолютно в коде, ну не хочешь говорить не говори :), а то украдут топ секретную разработку скорей всего. Движок глянуть трудно наверное с такими громкими заявлениями.
Код:
<?php

namespace XF\ControllerPlugin;

class Toggle extends AbstractPlugin
{
    public function actionToggle($identifier, $column = 'active', array $options = [])
    {
        $this->assertPostOnly();

        $this->toggle($identifier, $column, $options);

        return $this->message(\XF::phrase('your_changes_have_been_saved'));
    }

    public function toggle($identifier, $column = 'active', array $options = [])
    {
        $options = array_replace([
            'input' => null,
            'preSaveCallback' => null
        ], $options);

        if (!$options['input'])
        {
            $options['input'] = $column;
        }

        $activeState = $this->request->filter($options['input'], 'array-bool');
        $entities = $this->em->findByIds($identifier, array_keys($activeState));

        foreach ($entities AS $id => $entity)
        {
            if ($entity->getExistingValue($column) != $activeState[$id])
            {
                $entity->{$column} = $activeState[$id];

                if ($options['preSaveCallback'])
                {
                    $cb = $options['preSaveCallback'];
                    $cb($entity);
                }

                $entity->save();
            }
        }
    }
}
Где передается сущность Notice. Где после сохранения или удаления потом перестраивается кеш. Как и при удаление:
PHP:
protected function _postSave()
    {
        $this->rebuildNoticeCache();
    }

    protected function _postDelete()
    {
        $this->db()->delete('xf_notice_dismissed', 'notice_id = ?', $this->notice_id);
        $this->rebuildNoticeCache();
    }
PHP:
protected function rebuildNoticeCache()
    {
        \XF::runOnce('noticeCacheRebuild', function()
        {
            $this->getNoticeRepo()->rebuildNoticeCache();
        });
    }
И сам запрос на перестройку дергающийся после изменения.
PHP:
public function rebuildNoticeCache()
    {
        $cache = [];

        $notices = $this->finder('XF:Notice')
            ->where('active', 1)
            ->order('display_order')
            ->keyedBy('notice_id');

        foreach ($notices->fetch() AS $noticeId => $notice)
        {
            $cache[$noticeId] = $notice->toArray(false);
        }

        \XF::registry()->set('notices', $cache);
        return $cache;
    }
Мои подозрения, что кто то фигачит прямой скуль запрос минуя абстракцию и отсюда вытекающие проблемы. И да за частый ап темы буду наказывать
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу