<?php

// No direct access.
defined('_JEXEC') or die;
// Include dependancies.
require_once JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_bixprintshop' . DS . 'classes' . DS . 'bixtools.php';
require_once dirname(__FILE__) . '/helper.php';
JFactory::getDocument()->addScript('modules/mod_bps_stats/assets/bps_stats.js');
$app = JFactory::getApplication();
$currentPeriode = $app->getUserState('com_bixprintshop.mod_bps_stats.periode', 'week');
$perodeOptions = array(JHtml::_('select.option', 'week', JText::_('MOD_BPS_STATS_PWEEK')), JHtml::_('select.option', 'maand', JText::_('MOD_BPS_STATS_PMAAND')));
$currentDataType = $app->getUserState('com_bixprintshop.mod_bps_stats.dataType', 'omzet');
$datatypeOptions = array(JHtml::_('select.option', 'omzet', JText::_('MOD_BPS_STATS_DT_OMZET')), JHtml::_('select.option', 'factuur', JText::_('MOD_BPS_STATS_DT_FACTUUR')));
$currentStartDatum = $app->getUserState('com_bixprintshop.mod_bps_stats.startDatum', JFactory::getDate()->format('Y-m-d'));
$browseRanges = modbps_statsHelper::getBrowseRange($currentPeriode);
require JModuleHelper::getLayoutPath('mod_bps_stats', $params->get('layout', 'default'));
Exemplo n.º 2
0
 public static function showstats($params)
 {
     $app = JFactory::getApplication();
     $app->setUserState('com_bixprintshop.mod_bps_stats.periode', $params['periode']);
     $app->setUserState('com_bixprintshop.mod_bps_stats.dataType', $params['dataType']);
     $sStartDatum = JArrayHelper::getValue($params, 'startDatum', JFactory::getDate()->format('Y-m-d'));
     $app->setUserState('com_bixprintshop.mod_bps_stats.startDatum', $sStartDatum);
     $sRapportageDag = $params['rapportageDag'];
     $date1 = JFactory::getDate($sStartDatum);
     $aStats = array();
     $aInfos = array();
     $aGraphInfo = array();
     switch ($params['dataType']) {
         case 'omzet':
             $sStatFunction = 'getBestelTotals';
             $aGraphInfo['titelBase'] = 'MOD_BPS_STATS_GRAPHTITLE_OMZET_DATES_SPR';
             $aGraphInfo['titelvAxis'] = JText::_('MOD_BPS_STATS_TOTALEN');
             $aGraphInfo['titelhAxis'] = JText::_('MOD_BPS_STATS_DAGEN');
             $aGraphInfo['lineCol'] = 0;
             break;
         case 'factuur':
             $sStatFunction = 'getFactuurTotals';
             $aGraphInfo['titelBase'] = 'MOD_BPS_STATS_GRAPHTITLE_FACTUUR_DATES_SPR';
             $aGraphInfo['titelvAxis'] = JText::_('MOD_BPS_STATS_TOTALEN');
             $aGraphInfo['titelhAxis'] = JText::_('MOD_BPS_STATS_DAGEN');
             break;
     }
     $aTotalQueries = array();
     //get juiste startmoment en eindmoment
     switch ($params['periode']) {
         case 'week':
             //begindag bepalen
             $dagNu = $date1->format('N');
             if ($dagNu > $sRapportageDag) {
                 //rapp.dag al voorbij
                 $diff = new DateInterval('P' . ($sRapportageDag - $dagNu + 7) . 'D');
             } else {
                 $diff = new DateInterval('P' . ($sRapportageDag - $dagNu) . 'D');
             }
             $date1->add($diff);
             $date1->setTime(22, 59, 59);
             //TODO voor de volgende zomertijd...
             //totalen periode
             $aQueryData['dateBegin'] = clone $date1;
             $aQueryData['dateBegin']->sub(new DateInterval('P7D'));
             $aQueryData['dateEind'] = clone $date1;
             $aQueryData['labelInfo'] = array('date' => false, 'format' => 'total', 'formatted' => JText::_('FIELD_TOTALS'));
             //formats
             $eenheid = 'dag';
             $aGraphInfo['titel'] = JText::sprintf($aGraphInfo['titelBase'], 'week ' . $aQueryData['dateEind']->format('W'), $aQueryData['dateBegin']->format('d M Y'), $aQueryData['dateEind']->format('d M Y'));
             $aGraphInfo['dateBegin'] = $aQueryData['dateBegin']->format('c');
             $aGraphInfo['dateEind'] = $aQueryData['dateEind']->format('c');
             $aTotalQueries['dag8'] = $aQueryData;
             //subtotalen
             for ($d = 7; $d > 0; $d--) {
                 $aQueryData['dateBegin'] = clone $date1;
                 $aQueryData['dateBegin']->sub(new DateInterval('P' . $d . 'D'));
                 $aQueryData['dateEind'] = clone $date1;
                 $aQueryData['dateEind']->sub(new DateInterval('P' . ($d - 1) . 'D'));
                 $aQueryData['labelInfo'] = array('date' => $aQueryData['dateEind']->format('c'), 'format' => 'D d-m', 'formatted' => $aQueryData['dateEind']->format('D d-m'));
                 $aTotalQueries['dag' . $d] = $aQueryData;
             }
             break;
         case 'maand':
             //begindag bepalen
             $date1 = $date1->add(new DateInterval('P' . ($date1->format('t') - $date1->format('j')) . 'D'));
             $date1->setTime(22, 59, 59);
             //TODO voor de volgende zomertijd...
             //totalen periode
             $aQueryData['dateBegin'] = clone $date1;
             $aQueryData['dateBegin']->sub(new DateInterval('P' . $date1->format('t') . 'D'));
             $aQueryData['dateEind'] = clone $date1;
             $aQueryData['labelInfo'] = array('date' => false, 'format' => 'total', 'formatted' => JText::_('FIELD_TOTALS'));
             //formats
             $eenheid = 'datum';
             $aGraphInfo['titel'] = JText::sprintf($aGraphInfo['titelBase'], $aQueryData['dateEind']->format('F'), $aQueryData['dateBegin']->add(new DateInterval('PT5H'))->format('d M Y'), $aQueryData['dateEind']->format('d M Y'));
             $aGraphInfo['dateBegin'] = $aQueryData['dateBegin']->format('c');
             $aGraphInfo['dateEind'] = $aQueryData['dateEind']->format('c');
             $aTotalQueries['dag99'] = $aQueryData;
             //subtotalen
             for ($d = $date1->format('t'); $d > 0; $d--) {
                 $aQueryData['dateBegin'] = clone $date1;
                 $aQueryData['dateBegin']->sub(new DateInterval('P' . $d . 'D'));
                 $aQueryData['dateEind'] = clone $date1;
                 $aQueryData['dateEind']->sub(new DateInterval('P' . ($d - 1) . 'D'));
                 $aQueryData['labelInfo'] = array('date' => $aQueryData['dateEind']->format('c'), 'format' => 'j', 'formatted' => $aQueryData['dateEind']->format('j'));
                 $aTotalQueries['dag' . $d] = $aQueryData;
             }
             break;
         case 'kwart':
             //formats
             $eenheid = 'week';
             $date2 = JFactory::getDate($date1->toSql());
             $date2->sub(new DateInterval('P3M'));
             break;
         case 'jaar':
             //formats
             $eenheid = 'maand';
             $date2 = JFactory::getDate($date1->toSql());
             $date2->sub(new DateInterval('P2Y'));
             break;
     }
     $browseRange = modbps_statsHelper::getBrowseRange($params['periode']);
     // pr($aTotalQueries,$date1->toSql());
     foreach ($aTotalQueries as $key => $aQueryData) {
         $sDatumEind = $aQueryData['dateEind']->toSql();
         $sDatumBegin = $aQueryData['dateBegin']->toSql();
         $aStats[$key] = self::$sStatFunction($sDatumBegin, $sDatumEind);
         $aInfos[$key] = $aQueryData['labelInfo'];
     }
     //uit laatste object velden pakken
     $aFields = array_keys($aStats[$key]);
     $aFieldInfos = self::getFieldInfos($eenheid, $aFields);
     // pr($aStats);
     // pr($aInfos);
     $output = json_encode(array('stats' => $aStats, 'infos' => $aInfos, 'fields' => $aFieldInfos, 'graphInfo' => $aGraphInfo, 'browseRange' => $browseRange, 'params' => $params));
     return $output;
 }