Вход Регистрация
Файл: 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 doExecute( ipsRegistry $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->addLabels( array_values($labels) );
            
$graph->addSeries( 'test', array_values($registrations) );
        }
        else
        {
            
$graph->options['title']    = sprintf( $this->lang->words['no_reg_x_days'], $days );
            
$graph->addLabels( array( 0 ) );
            
$graph->addSeries( 'test', array( 0 ) );
        }

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