17.01.2021 11:40:13 am
На главной странице Админ панели есть блок статистики, где отображается количество жалоб, новых сообщений форума, комментарий, добавленных видео/фото и так далее. Но в эту колонку не добавлены такие пункты, как статусы пользователей, комменты на стене страниц и профилей пользователей. Я решил это исправить, добавить эти три пункта. И сейчас расскажу, как я это сделал.
Во первых, я переписал файл: "module/core/include/component/block/site-stat.class.php", сейчас он у меня выглядит так:
Затем, в файл: "module/feed/include/service/callback.class.php", добавил функцию:
Дальше, добавляю три новых фразы:
-
-
-
Чищу кеш сайта. Готово.
Теперь, в блоке статистике есть три новых пункта, при появлении соответствующих записей на сайте.
Во первых, я переписал файл: "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
- Заметки стен страницЧищу кеш сайта. Готово.
Теперь, в блоке статистике есть три новых пункта, при появлении соответствующих записей на сайте.
- Жалоба
17.01.2021 12:25:53 pm
Подумал, можно еще добавить количество лайков поставленных за текущий день. Делаю так: Открываю файл: "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')
];
}
Чищу кеш. Готово.
22.01.2021 08:25:58 pm
Добавил в статистику количество голосований в опросах. Для этой доработки, необходимо исправить файл: "module/core/include/component/block/site-stat.class.php", как описано в первом сообщении данной темы.
Значит, открываем файл: "module/poll/include/service/callback.class.php", находим функцию getSiteStatsForAdmins() и полностью меняем ее на код ниже:
Добавляем фразу, если таковой нет:
-
Значит, открываем файл: "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
- Голоса.