Канал комментария статуса в ленте новостей (phpFox: feed)

В настройках движка можно активировать появление каналов - комментарии чего либо (блог, видео, фото и так далее). Пользователь прокомментирует, например, фотографию и на стене появится канал, что такой то человек прокомментировал такую то фотографию, будет привью фото, ее описание, название и текст коммента. По умолчанию данная опция отключена, я ее включил, мне показалось, что она необходима на моем ресурсе. При помощи данной опции, люди могут видеть, что комментировали их друзья, это очень удобно. Однако, вывод такого канала не работает на статусы пользователей и комментарии страниц, мне загорелось это исправить и я начал копать, в итоге, что то получилось! Сейчас расскажу, как я делал. Думаю, по моему примеру можно будет сделать вывод любых каналов, не только комментов.
Хочу сразу предупредить, что переменные в моем коде могут отличаться от штатных переменных и их следует привести к виду, как они выглядят у вас.

И так, начнем. При добавлении коммента фото, в таблицу phpfox_feed добавляется запись с type_id == photo_comment; комментируя видео, добавляется запись с type_id == video_comment и так далее. При комменте статуса в таблицу "phpfox_feed" ни чего не добавляется, а значит, что модуль feed ни чего не будет знать о новом канале. Исправляем это, добавляем код, который будет добавлять запись в таблицу "phpfox_feed" с type_id == user_status_comment: открываем файл: module/user/include/service/callback.class.php, находим:
		// Update the post counter if its not a comment put under moderation or if the person posting the comment is the owner of the item.
		if (empty($aVals['parent_id']))
		{
			$this->database()->updateCounter('user_status', 'total_comment', 'status_id', $aRow['status_id']);		
		}

Ниже вставляем:
		// Комментарий статуса (Канал в ленте новостей)
		$userId = ($userId === null) ? Phpfox::getUserId() : $userId;

		Phpfox::getService('feed.process')->add($aVals['type'] . '_comment', $aVals['comment_id'], 0, 0, 0, $userId);
		// Комментарий статуса (Канал в ленте новостей) End

Теперь запись будет добавляться каждый раз, как кто то будет комментировать статус пользователя, но вывода канала не будет, для вывода еще нужна функция, которая будет собирать необходимые данные в "кучу" канала. Я написал такую функцию:
	// Вывод канала: Комментарий статуса
	public function getActivityFeedStatus_Comment($row)
	{
		if (Phpfox::isUser() && Phpfox::isModule('like'))
		{
			$this->database()
			    ->select('l.like_id AS is_liked, ')
				->leftJoin(Phpfox::getT('like'), 'l', 'l.type_id = \'feed_mini\' AND l.item_id = c.comment_id AND l.user_id = ' . Phpfox::getUserId());
		}

		$item = $this->database()
		    ->select('c.comment_id, c.text, c.total_like, c.time_stamp, us.content, us.user_id, u.user_name, u.full_name')
			->from(Phpfox::getT('comment'), 'c')
			->join(Phpfox::getT('user_status'), 'us', 'us.status_id = c.item_id')
			->join(Phpfox::getT('user'), 'u', 'u.user_id = us.user_id')
			->where('c.comment_id = ' . (int) $row['item_id'])
			->execute('getSlaveRow');
		
		if (empty($item['comment_id']))
		{
			return false;
		}

		if ($row['user_id'] == $item['user_id'])
		{
			$message = Phpfox::getPhrase('user.status_a_comment', array('gender' => $row['gender']));
		}
		else
		{
			$user = '<a href="' . Phpfox::getLib('url')->makeUrl($item['user_name']) . '">' . $item['full_name'] . '</a>';

			$message = Phpfox::getPhrase('user.status_a_comment_on_user_name', array('gender' => $row['gender'], 'user_name' => $user));
		}

		return array(
			'feed_content'    => $item['text'],
			'feed_info'       => $message,
			'feed_link'       => '',
			'feed_status'     => $item['content'],
			'feed_total_like' => $item['total_like'],
			'feed_is_liked'   => isset($item['is_liked']) ? $item['is_liked'] : false,
			'feed_icon'       => Phpfox::getLib('image.helper')->display(array('theme' => 'module/blog.png', 'return_url' => true)),
			'time_stamp'      => $item['time_stamp'],
			'like_type_id'    => 'feed_mini'
		);
	} // Вывод канала: Комментарий статуса End

И вставил ее в тот же файл (module/user/include/service/callback.class.php). В моей функции используются фразы, которых нет в безе языковых фраз/слов, их необходимо добавить в модуль user:
status_a_comment - прокомментировал(а) свою запись
status_a_comment_on_user_name - прокомментировал(а) запись от {user_name}

Чистим кеш движка. Готово!
Продолжаем! Правки выше выведут канал коммента только от статуса пользователя. Коммента комментария страницы (тавтология, блин), модуля pages эти правки не касаются, для вывода канала коммента комментария страницы надо вносить новые правки.

Значит, открываем: module/pages/include/service/callback.class.php, находим:
		// Update the post counter if its not a comment put under moderation or if the person posting the comment is the owner of the item.
		if (empty($aVals['parent_id']))
		{
			$this->database()->updateCounter('pages_feed_comment', 'total_comment', 'feed_comment_id', $row['feed_comment_id']);		
		}

Добавляем ниже:
		// Комментарий статуса (Канал в ленте новостей)
		$userId = ($userId === null) ? Phpfox::getUserId() : $userId;

		Phpfox::getService('feed.process')->add('pages_note_comment', $aVals['comment_id'], 0, 0, 0, $userId);
		// Комментарий статуса (Канал в ленте новостей) End

В этот же файл необходимо добавить функцию:
	public function getActivityFeedNote_Comment($row)
	{
		if (Phpfox::isUser() && Phpfox::isModule('like'))
		{
			$this->database()
			    ->select('l.like_id AS is_liked, ')
				->leftJoin(Phpfox::getT('like'), 'l', 'l.type_id = \'feed_mini\' AND l.item_id = c.comment_id AND l.user_id = ' . Phpfox::getUserId());
		}

		$item = $this->database()
		    ->select('c.comment_id, c.text, c.total_like, c.time_stamp, pfc.content, pfc.user_id, u.user_name, u.full_name')
			->from(Phpfox::getT('comment'), 'c')
			->join(Phpfox::getT('pages_feed_comment'), 'pfc', 'pfc.feed_comment_id = c.item_id')
			->join(Phpfox::getT('user'), 'u', 'u.user_id = pfc.user_id')
			->where('c.comment_id = ' . (int) $row['item_id'])
			->execute('getSlaveRow');
		
		if (empty($item['comment_id']))
		{
			return false;
		}

		if ($row['user_id'] == $item['user_id'])
		{
			$message = Phpfox::getPhrase('user.status_a_comment', array('gender' => $row['gender']));
		}
		else
		{
			$user = '<a href="' . Phpfox::getLib('url')->makeUrl($item['user_name']) . '">' . $item['full_name'] . '</a>';

			$message = Phpfox::getPhrase('user.status_a_comment_on_user_name', array('gender' => $row['gender'], 'user_name' => $user));
		}

		return array(
			'feed_content'    => $item['text'],
			'feed_info'       => $message,
			'feed_link'       => '',
			'feed_status'     => $item['content'],
			'feed_total_like' => $item['total_like'],
			'feed_is_liked'   => isset($item['is_liked']) ? $item['is_liked'] : false,
			'feed_icon'       => Phpfox::getLib('image.helper')->display(array('theme' => 'module/blog.png', 'return_url' => true)),
			'time_stamp'      => $item['time_stamp'],
			'like_type_id'    => 'feed_mini'
		);
	}

Тут используются фразы из первого поста темы.
Готово.