<?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'));
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; }