zira/stat/stat.php
2019-10-09 18:27:31 +05:00

65 lines
No EOL
2.4 KiB
PHP

<?php
/**
* Zira project.
* stat.php
* (c)2018 https://github.com/ziracms/zira
*/
namespace Stat;
use Zira;
use Dash;
class Stat {
private static $_instance;
public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}
public function bootstrap() {
if (ENABLE_CONFIG_DATABASE && Dash\Dash::getInstance()->isPanelEnabled() && Zira\Permission::check(Zira\Permission::TO_ACCESS_DASHBOARD) && Zira\Permission::check(Zira\Permission::TO_EXECUTE_TASKS)) {
Dash\Dash::loadDashLanguage();
Dash\Dash::getInstance()->addPanelModulesGroupItem('glyphicon glyphicon-signal', Zira\Locale::tm('Statistics', 'stat', null, Dash\Dash::getDashLanguage()), null, 'statsWindow()');
Dash\Dash::getInstance()->registerModuleWindowClass('statsWindow', 'Stat\Windows\Stats', 'Stat\Models\Stats');
Dash\Dash::getInstance()->registerModuleWindowClass('statRequestsWindow', 'Stat\Windows\Requests', 'Stat\Models\Requests');
Dash\Dash::getInstance()->registerModuleWindowClass('statSettingsWindow', 'Stat\Windows\Settings', 'Stat\Models\Settings');
Dash\Dash::unloadDashLanguage();
}
Zira\View::registerRenderHook(get_class(), 'log');
if (Zira\Config::get('stat_views_preview')) {
Zira\Page::registerRecordsPreviewHook($this, 'previewCallback');
}
}
public static function log() {
if (Zira\View::isAjax()) return;
\Stat\Models\Access::log();
}
public static function previewCallback($records, $is_widget = false) {
$display_in_widgets = true;
if ($is_widget && !$display_in_widgets) return;
if (empty($records)) return;
$record_ids = array();
foreach($records as $record) {
if (Zira\Page::isRecordPreviewDataExists($record->id, 'stat')) continue;
$record_ids []= $record->id;
}
if (empty($record_ids)) return;
$rows = \Stat\Models\Record::getCollection()
->where('record_id','in',$record_ids)
->get();
foreach($rows as $row) {
Zira\Page::addRecordPreviewData($row->record_id, array('views'=>$row->views_count), 'stat/preview', $display_in_widgets, 'stat');
}
}
}