public function loadStatsAjaxAction() { if (null !== ($response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW))) { return $response; } $cacheExpire = ConfigQuery::getAdminCacheHomeStatsTTL(); /** @var AdapterInterface $cacheAdapter */ $cacheAdapter = $this->container->get('thelia.cache'); $month = (int) $this->getRequest()->query->get('month', date('m')); $year = (int) $this->getRequest()->query->get('year', date('Y')); $cacheKey = self::STATS_CACHE_KEY . "_" . $month . "_" . $year; $cacheItem = $cacheAdapter->getItem($cacheKey); // force flush if ($this->getRequest()->query->get('flush', "0")) { $cacheAdapter->deleteItem($cacheItem); } if (!$cacheItem->isHit()) { $data = $this->getStatus($month, $year); $cacheItem->set(json_encode($data)); $cacheItem->expiresAfter($cacheExpire); if ($cacheExpire) { $cacheAdapter->save($cacheItem); } } return $this->jsonResponse($cacheItem->get()); }
public function loadStatsAjaxAction() { if (null !== ($response = $this->checkAuth(self::RESOURCE_CODE, array(), AccessManager::VIEW))) { return $response; } $cacheExpire = ConfigQuery::getAdminCacheHomeStatsTTL(); $cacheContent = false; $month = (int) $this->getRequest()->query->get('month', date('m')); $year = (int) $this->getRequest()->query->get('year', date('Y')); if ($cacheExpire) { $context = "_" . $month . "_" . $year; $cacheKey = self::STATS_CACHE_KEY . $context; $cacheDriver = new FilesystemCache($this->getCacheDir()); if (!$this->getRequest()->query->get('flush', "0")) { $cacheContent = $cacheDriver->fetch($cacheKey); } else { $cacheDriver->delete($cacheKey); } } if ($cacheContent === false) { $data = new \stdClass(); $data->title = $this->getTranslator()->trans("Stats on %month/%year", ['%month' => $month, '%year' => $year]); /* sales */ $saleSeries = new \stdClass(); $saleSeries->color = self::testHexColor('sales_color', '#adadad'); $saleSeries->data = OrderQuery::getMonthlySaleStats($month, $year); /* new customers */ $newCustomerSeries = new \stdClass(); $newCustomerSeries->color = self::testHexColor('customers_color', '#f39922'); $newCustomerSeries->data = CustomerQuery::getMonthlyNewCustomersStats($month, $year); /* orders */ $orderSeries = new \stdClass(); $orderSeries->color = self::testHexColor('orders_color', '#5cb85c'); $orderSeries->data = OrderQuery::getMonthlyOrdersStats($month, $year); /* first order */ $firstOrderSeries = new \stdClass(); $firstOrderSeries->color = self::testHexColor('first_orders_color', '#5bc0de'); $firstOrderSeries->data = OrderQuery::getFirstOrdersStats($month, $year); /* cancelled orders */ $cancelledOrderSeries = new \stdClass(); $cancelledOrderSeries->color = self::testHexColor('cancelled_orders_color', '#d9534f'); $cancelledOrderSeries->data = OrderQuery::getMonthlyOrdersStats($month, $year, array(5)); $data->series = array($saleSeries, $newCustomerSeries, $orderSeries, $firstOrderSeries, $cancelledOrderSeries); $cacheContent = json_encode($data); if ($cacheExpire) { $cacheDriver->save($cacheKey, $cacheContent, $cacheExpire); } } return $this->jsonResponse($cacheContent); }