Как поднять канал ленты новостей вверх

Загорелось мне после голосования в опросе поднимать канал опроса в самый верх в ленты новостей (стенки), я написал пару строк кода и задуманное работает, как хотелось (ниже покажу, что получилось). Чтобы поднять канал в самый вверх стены после взаимодействия с ним, достаточно изменить поле "time_update" на текущее время (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
			);

Делалось для мода опросов, но, мой код можно использовать, как пример для любых других модификаций.

Похожие темы