Вход Регистрация
Файл: admin/applications/core/modules_admin/system/charts.php
Строк: 88
<?php
/**
 * @file        charts.php     Admin dashboard chart(s)
 *~TERABYTE_DOC_READY~
 * $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
 * $License: http://www.invisionpower.com/company/standards.php#license$
 * $Author: bfarber $
 * @since        -
 * $LastChangedDate: 2011-11-23 14:13:15 -0500 (Wed, 23 Nov 2011) $
 * @version        v3.3.3
 * $Revision: 9873 $
 */

if ( ! defined'IN_ACP' ) )
{
    print 
"<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded 'admin.php'.";
    exit();
}

/**
 *
 * @class        admin_core_system_charts
 * @brief        Admin dashboard chart(s)
 *
 */
class admin_core_system_charts extends ipsCommand
{
    
/**
     * Main function executed automatically by the controller
     *
     * @param    object        $registry        Registry object
     * @return    @e void
     */
    
public function doExecuteipsRegistry $registry )
    {
        
/* Language */
        
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'admin_system' ), 'core' );

        switch( 
$this->request['do'] )
        {
            case 
'reg':
            default:
                
$this->showRegistrationChart();
            break;
        }
    }
    
    
/**
     * Show chart of registrations over x days
     *
     * @return    @e void [Outputs to screen]
     * @link    http://community.invisionpower.com/tracker/issue-32300-dashboard-registration-chart
     */
    
public function showRegistrationChart()
    {
        
//-----------------------------------------
        // INIT
        //-----------------------------------------
        
        
$days    intval$this->request['days'] );
        
        if( !
$days )
        {
            
$days    7;
        }
        
        
$cutoff            time() - ( $days 86400 );
        
$_check            time();
        
/* initdata.php sets to GMT, so we need to take into account time offset ourselves */
        
$_tzOffset        $this->settings['time_offset'] * 3600;
        
$registrations    = array();
        
$labels            = array();
        
$_ttl            0;
        
        while( 
$_check $cutoff )
        {
            
$_day    strftime'%b %d'$_check $_tzOffset );
            
$_key    strftime'%Y-%m-%d'$_check $_tzOffset );

            
$labels$_key ]        = $_day;
            
$registrations$_key ]    = 0;

            
$_check    -= 86400;
        }

        
//-----------------------------------------
        // Get the data
        //-----------------------------------------

        
$this->DB->build( array( 'select' => 'member_id, joined''from' => 'members''where' => 'joined > ' $cutoff ) );
        
$this->DB->execute();
        
        while( 
$r $this->DB->fetch() )
        {
            
//$_day    = strftime( '%b %d', $r['joined'] );
            
$_key    strftime'%Y-%m-%d'$r['joined'] + $_tzOffset );

            if( isset(
$registrations$_key ]) )
            {
                
$registrations$_key ]    += 1;
                
$_ttl++;
            }
        }
        
        
ksort$labels );
        
ksort$registrations );

        
//-----------------------------------------
        // Output chart
        //-----------------------------------------

        
require_once( IPS_KERNEL_PATH '/classGraph.php' );/*noLibHook*/
        
$graph    = new classGraph();
        
$graph->options['title']            = '';
        
$graph->options['font']                = DOC_IPS_ROOT_PATH '/public/style_captcha/captcha_fonts/times.ttf';
        
$graph->options['width']            = 1024;
        
$graph->options['height']            = 400;
        
$graph->options['style3D']            = 1;
        
$graph->options['showlegend']        = 0;
        
//$graph->options['xaxisskip']        = 5;
        
$graph->options['showgridlinesx']    = 0;

        if( 
$_ttl )
        {
            
//ksort($labels);
            //ksort($registrations);
            
            
$graph->addLabelsarray_values($labels) );
            
$graph->addSeries'test'array_values($registrations) );
        }
        else
        {
            
$graph->options['title']    = sprintf$this->lang->words['no_reg_x_days'], $days );
            
$graph->addLabels( array( ) );
            
$graph->addSeries'test', array( ) );
        }

        
$graph->options['charttype'] = 'Line';
        
$graph->display();
        exit;
    }
}
Онлайн: 1
Реклама