Вход Регистрация
Файл: library/XenForo/ControllerAdmin/Stats.php
Строк: 106
<?php

class XenForo_ControllerAdmin_Stats extends XenForo_ControllerAdmin_Abstract
{
    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('viewStatistics');
    }

    public function 
actionIndex()
    {
        return 
$this->responseReroute(__CLASS__, 'daily');
    }

    public function 
getStatsData($grouping, $defaultStart)
    {
        if (!
$start = $this->_input->filterSingle('start', XenForo_Input::DATE_TIME))
        {
            
$start = $defaultStart;
        }

        if (!
$end = $this->_input->filterSingle('end', XenForo_Input::DATE_TIME, array('dayEnd' => true)))
        {
            
$end = XenForo_Application::$time;
        }

        if (!
$statsTypes = $this->_input->filterSingle('statsTypes', XenForo_Input::ARRAY_SIMPLE))
        {
            
$statsTypes = array('post', 'post_like');
        }

        
$statsModel = $this->_getStatsModel();

        
$groupings = array(
            
'daily' => array(
                
'printDateFormat' => 'absolute',
                
'xAxisTime' => true
            
),
            
'monthly' => array(
                
'printDateFormat' => 'M Y',
                
'groupDateFormat' => 'Ym'
            
),
            
'weekly' => array(
                
'printDateFormat' => 'WW Y',
                
'groupDateFormat' => 'YW'
            
)
        );

        if (!isset(
$groupings[$grouping]))
        {
            
$grouping = 'daily';
        }

        
$groupingConfig = $groupings[$grouping];

        
$plots = $statsModel->getStatsData($start, $end, $statsTypes, $grouping);
        
$dateMap = array();

        foreach (
$plots AS $type => $plot)
        {
            
$output = $statsModel->prepareGraphData($plot, $grouping);

            
$plots[$type] = $output['plot'];
            
$dateMap[$type] = $output['dateMap'];
        }

        if (empty(
$groupingConfig['xAxisTime']))
        {
            
$output = $statsModel->filterGraphDataDates($plots, $dateMap);
            
$plots = $output['plots'];
            
$dateMap = $output['dateMap'];
        }

        
$viewParams = array(
            
'plots' => $plots,
            
'dateMap' => $dateMap,
            
'start' => $start,
            
'end' => $end,
            
'endDisplay' => ($end >= XenForo_Application::$time ? 0 : $end),
            
'statsTypeOptions' => $statsModel->getStatsTypeOptions($statsTypes),
            
'statsTypePhrases' => $statsModel->getStatsTypePhrases($statsTypes),
            
'datePresets' => XenForo_Helper_Date::getDatePresets(),
            
'grouping' => $grouping,
            
'groupingConfig' => $groupingConfig
        
);

        return 
$viewParams;
    }

    public function 
actionMonthly()
    {
        
$viewParams = $this->getStatsData('monthly', strtotime('-1 year'));

        return 
$this->responseView('XenForo_ViewAdmin_Stats_Monthly', 'stats_monthly', $viewParams);
    }

    public function 
actionWeekly()
    {
        
$viewParams = $this->getStatsData('weekly', strtotime('-1 year'));

        return 
$this->responseView('XenForo_ViewAdmin_Stats_Weekly', 'stats_weekly', $viewParams);
    }

    public function 
actionDaily()
    {
        
$viewParams = $this->getStatsData('daily', strtotime('-1 month'));

        return 
$this->responseView('XenForo_ViewAdmin_Stats_Daily', 'stats_daily', $viewParams);
    }

    
/**
     * @return XenForo_Model_Stats
     */
    
protected function _getStatsModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Stats');
    }
}
Онлайн: 2
Реклама