Блок статистики сайта в Администраторском разделе

На главной странице Админ панели есть блок статистики, где отображается количество жалоб, новых сообщений форума, комментарий, добавленных видео/фото и так далее. Но в эту колонку не добавлены такие пункты, как статусы пользователей, комменты на стене страниц и профилей пользователей. Я решил это исправить, добавить эти три пункта. И сейчас расскажу, как я это сделал.

Во первых, я переписал файл: "module/core/include/component/block/site-stat.class.php", сейчас он у меня выглядит так:
<?php
class core_component_block_site_stat extends phpfox_component
{
	public function process()
	{
		$stats = [];

		$online = phpfox::getService('log.session')->getOnlineStats();
		$stats[phpfox::getPhrase('admincp.online')] = [[
				'phrase' => phpfox::getPhrase('admincp.members'),
				'value'  => $online['members'],
				'link'   => $this->url()->makeUrl('admincp.user.browse', ['view' => 'online'])
			]
		];

        if (phpfox::getParam('core.log_site_activity'))
        {
            $stats[phpfox::getPhrase('admincp.online')][] = [
				'phrase' => phpfox::getPhrase('admincp.guests'),
				'value'  => $online['guests'],
				'link'   => $this->url()->makeUrl('admincp.core.online-guest')
			];
        }

		$pendingCallback = phpfox::massCallback('pendingApproval');	
		$stats[phpfox::getPhrase('admincp.pending_approval')] = [];
		$totalApprove = 0;		
		foreach ($pendingCallback as $module => $pendings)
		{
			if (isset($pendings['value']))
			{
				if (!$pendings['value'])
				{
					continue;
				}

				$totalApprove++;
				$stats[phpfox::getPhrase('admincp.pending_approval')][] = $pendings;
			}
			else 
			{
				foreach ($pendings as $key => $value)
				{
					if (!$value['value'])
					{
						continue;
					}

					$totalApprove++;
					$stats[phpfox::getPhrase('admincp.pending_approval')][] = $value;					
				}
			}
		}		

		if ($totalApprove === 0)
		{
			unset($stats[phpfox::getPhrase('admincp.pending_approval')]);
		}

		// Жалобы
		$reports = phpfox::getService('report')->getActiveReports();
		if (count($reports))
		{
			$stats[phpfox::getPhrase('admincp.reported_items_users')] = [];
			foreach ($reports as $report)
			{			
				$stats[phpfox::getPhrase('admincp.reported_items_users')][] = $report;
			}
		} // Жалобы End

		// Контент
		$siteStatsForAdmins = phpfox::massCallback('getSiteStatsForAdmins');		
		$stats[phpfox::getPhrase('admincp.today_s_site_stats')] = [];
		$totalStats = 0;
		foreach ($siteStatsForAdmins as $module => $siteStatsForAdmin)
		{
			if (isset($siteStatsForAdmin['array']))
			{
				foreach ($siteStatsForAdmin['array'] as $val => $array)
				{
					if (!$array['value'])
					{
						continue;
					}

					$totalStats++;
					$stats[phpfox::getPhrase('admincp.today_s_site_stats')][] = $array;
				}
			}
			else if (!$siteStatsForAdmin['value'])
			{
				continue;
			}
			else
			{
				$totalStats++;
				$stats[phpfox::getPhrase('admincp.today_s_site_stats')][] = $siteStatsForAdmin;
			}
		}		

		if ($totalStats === 0)
		{
			unset ($stats[phpfox::getPhrase('admincp.today_s_site_stats')]);
		} // Контент End

		$this->template()->assign([
				'sHeader' => phpfox::getPhrase('admincp.site_statistics'),
				'aStats'  => $stats
			]
		);	

		return 'block';
	}
}

Затем, в файл: "module/feed/include/service/callback.class.php", добавил функцию:
	public function getSiteStatsForAdmins()
	{
		$today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

		$array = [];

		// Заметки стен профиля
		$array['array'][] = [
			'phrase' => phpfox::getPhrase('feed.notes_stats'),
			'value'  => $this->database()
				->select('COUNT(*)')
				->from(phpfox::getT('feed_comment'))
				->where('time_stamp >= ' . $today)
				->execute('getSlaveField')
		]; // Заметки стен профиля End

		// Заметки стен страниц
		$array['array'][] = [
			'phrase' => phpfox::getPhrase('pages.page_notes_stats'),
			'value'  => $this->database()
				->select('COUNT(*)')
				->from(phpfox::getT('pages_feed_comment'))
				->where('time_stamp >= ' . $today)
				->execute('getSlaveField')
		]; // Заметки стен страниц End

		// Статусы пользователей
		$array['array'][] = [
			'phrase' => phpfox::getPhrase('user.user_statuses_stats'),
			'value'  => $this->database()
				->select('COUNT(*)')
				->from(phpfox::getT('user_status'))
				->where('time_stamp >= ' . $today)
				->execute('getSlaveField')
		]; // Статусы пользователей End

		return $array;
	}

Дальше, добавляю три новых фразы:
- user.user_statuses_stats - Статусы пользователей
- feed.notes_stats - Заметки стен профиля
- pages.page_notes_stats - Заметки стен страниц

Чищу кеш сайта. Готово.

Теперь, в блоке статистике есть три новых пункта, при появлении соответствующих записей на сайте.
Подумал, можно еще добавить количество лайков поставленных за текущий день. Делаю так: Открываю файл: "module/like/include/service/callback.class.php" и добавляю функцию:
	public function getSiteStatsForAdmins()
	{
		$today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

		return [
			'phrase' => phpfox::getPhrase('like.likes'),
			'value'  => $this->database()
				->select('COUNT(*)')
				->from(phpfox::getT('like'))
				->where('time_stamp >= ' . $today)
				->execute('getSlaveField')
		];
	}

Чищу кеш. Готово.
Добавил в статистику количество голосований в опросах. Для этой доработки, необходимо исправить файл: "module/core/include/component/block/site-stat.class.php", как описано в первом сообщении данной темы.

Значит, открываем файл: "module/poll/include/service/callback.class.php", находим функцию getSiteStatsForAdmins() и полностью меняем ее на код ниже:
	public function getSiteStatsForAdmins()
	{
		$today = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

		$array = [];

		$array['array'][] = [
			'phrase' => phpfox::getPhrase('poll.polls'),
			'value'  => $this->database()
				->select('COUNT(*)')
				->from(phpfox::getT('poll'))
				->where('view_id = 0 AND time_stamp >= ' . $today)
				->execute('getSlaveField')
		];

		$array['array'][] = [
			'phrase' => phpfox::getPhrase('poll.vote'),
			'value'  => $this->database()
				->select('COUNT(*)')
				->from(phpfox::getT('poll_result'))
				->where('time_stamp >= ' . $today)
				->execute('getSlaveField')
		];

		return $array;
	}

Добавляем фразу, если таковой нет:
- poll.vote - Голоса.