15:41 23.03.2018
Загорелось мне после голосования в опросе поднимать канал опроса в самый верх в ленты новостей (стенки), я написал пару строк кода и задуманное работает, как хотелось (ниже покажу, что получилось). Чтобы поднять канал в самый вверх стены после взаимодействия с ним, достаточно изменить поле "time_update" на текущее время (
После:
Теперь работает!
Немного о самом коде: Я недавно добавил возможность добавлять опросы на страницы (изначально этой возможности нет), по этому мой код начинается с проверки: существует ли значение "module_id" и если существует, равняется ли оно строке "pages". Если проверка вернет true, то переназначаем переменную
Эта проверка и переназначение переменной нужно для того, чтобы знать в какой именно таблице необходимо обновить запись, в "feed" или "pages_feed". Теперь когда переменная
Делалось для мода опросов, но, мой код можно использовать, как пример для любых других модификаций.
PHPFOX_TIME
) у записи нужного канала в таблице "feed" или "pages_feed", в зависимости кому принадлежит запись, так как каналы сортируются по этому значению, если оно есть. Я в функцию addVote() (мод "poll", файл "process.class.php") добавляю код:
// Обновление записи в таблице: "feed" | "pages_feed"
$table = 'feed';
if (!empty($poll['module_id']) && $poll['module_id'] == 'pages')
{
$table = 'pages_feed';
}
$this->database()
->update(Phpfox::getT($table), array(
'time_update' => PHPFOX_TIME
), 'type_id = \'poll\' AND item_id = ' . (int) $pollId
); // Обновление записи в таблице: "feed" | "pages_feed" End
После:
if (Phpfox::isModule('notification'))
{
Phpfox::getService('notification.process')->add('poll', $pollId, $poll['user_id']);
}
Теперь работает!
Немного о самом коде: Я недавно добавил возможность добавлять опросы на страницы (изначально этой возможности нет), по этому мой код начинается с проверки: существует ли значение "module_id" и если существует, равняется ли оно строке "pages". Если проверка вернет true, то переназначаем переменную
$table
, которая ранее получила значение feed
:
$table = 'feed';
if (!empty($poll['module_id']) && $poll['module_id'] == 'pages')
{
$table = 'pages_feed';
}
Эта проверка и переназначение переменной нужно для того, чтобы знать в какой именно таблице необходимо обновить запись, в "feed" или "pages_feed". Теперь когда переменная
$table
содержит название нужной нам таблице, мы можем обновить запись, что и делает следующий код:
$this->database()
->update(Phpfox::getT($table), array(
'time_update' => PHPFOX_TIME
), 'type_id = \'poll\' AND item_id = ' . (int) $pollId
);
Делалось для мода опросов, но, мой код можно использовать, как пример для любых других модификаций.
- Жалоба