예제 #1
0
파일: Grid.php 프로젝트: bizmate/battleship
 /**
  * Resets grid
  */
 public function reset()
 {
     if ($this->cache->contains('gridSquares')) {
         $this->cache->delete('gridSquares');
     }
     $this->buildGrid();
     $this->cache->delete('ships');
     $this->initShips();
     $this->cache->delete('hitsCount');
 }
예제 #2
0
 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);
 }
예제 #3
0
 /**
  * Check if cached sitemap can be used or generate a new one and cache it
  *
  * @param $cacheKey
  * @param $cacheDirName
  * @return Response
  */
 public function generateSitemap($cacheKey, $cacheDirName)
 {
     // Get and check locale
     $locale = $this->getSession()->getLang()->getLocale();
     if ("" !== $locale) {
         if (!$this->checkLang($locale)) {
             $this->pageNotFound();
         }
     }
     // Get sitemap cache information
     $sitemapContent = false;
     $cacheDir = $this->getCacheDir($cacheDirName);
     $cacheKey .= $locale;
     $cacheExpire = intval(ConfigQuery::read("sitemap_ttl", '7200')) ?: 7200;
     $cacheDriver = new FilesystemCache($cacheDir);
     // Check if sitemap has to be deleted
     if (!($this->checkAdmin() && "" !== $this->getRequest()->query->get("flush", ""))) {
         // Get cached sitemap
         $sitemapContent = $cacheDriver->fetch($cacheKey);
     } else {
         $cacheDriver->delete($cacheKey);
     }
     // If not in cache, generate and cache it
     if (false === $sitemapContent) {
         // Check if we generate the standard sitemap or the sitemap image
         switch ($cacheDirName) {
             // Image
             case self::SITEMAP_IMAGE_CACHE_DIR:
                 $sitemap = $this->hydrateSitemapImage($locale);
                 break;
                 // Standard
             // Standard
             case self::SITEMAP_CACHE_DIR:
             default:
                 $sitemap = $this->hydrateSitemap($locale);
                 break;
         }
         $sitemapContent = implode("\n", $sitemap);
         // Save cache
         $cacheDriver->save($cacheKey, $sitemapContent, $cacheExpire);
     }
     // Render
     $response = new Response();
     $response->setContent($sitemapContent);
     $response->headers->set('Content-Type', 'application/xml');
     return $response;
 }
예제 #4
0
 /**
  * @return Response
  */
 public function generateAction()
 {
     /** @var Request $request */
     $request = $this->getRequest();
     // the locale : fr, en,
     $lang = $request->query->get("lang", "");
     if ("" !== $lang) {
         if (!$this->checkLang($lang)) {
             $this->pageNotFound();
         }
     }
     // specific content : product, category, cms
     $context = $request->query->get("context", "");
     if (!in_array($context, array("", "catalog", "content"))) {
         $this->pageNotFound();
     }
     $flush = $request->query->get("flush", "");
     // check if sitemap already in cache
     $cacheContent = false;
     $cacheDir = $this->getCacheDir();
     $cacheKey = self::SITEMAP_CACHE_KEY . $lang . $context;
     $cacheExpire = intval(ConfigQuery::read("sitemap_ttl", '7200')) ?: 7200;
     $cacheDriver = new FilesystemCache($cacheDir);
     if (!($this->checkAdmin() && "" !== $flush)) {
         $cacheContent = $cacheDriver->fetch($cacheKey);
     } else {
         $cacheDriver->delete($cacheKey);
     }
     // if not in cache
     if (false === $cacheContent) {
         // render the view
         $cacheContent = $this->renderRaw("sitemap", array("_lang_" => $lang, "_context_" => $context));
         // save cache
         $cacheDriver->save($cacheKey, $cacheContent, $cacheExpire);
     }
     $response = new Response();
     $response->setContent($cacheContent);
     $response->headers->set('Content-Type', 'application/xml');
     return $response;
 }
예제 #5
0
 /**
  * render the RSS feed
  *
  * @param $context string   The context of the feed : catalog, content. default: catalog
  * @param $lang string      The lang of the feed : fr_FR, en_US, ... default: default language of the site
  * @param $id string        The id of the parent element. The id of the main parent category for catalog context.
  *                          The id of the content folder for content context
  * @return Response
  * @throws \RuntimeException
  */
 public function generateAction($context, $lang, $id)
 {
     /** @var Request $request */
     $request = $this->getRequest();
     // context
     if ("" === $context) {
         $context = "catalog";
     } else {
         if (!in_array($context, array("catalog", "content", "brand"))) {
             $this->pageNotFound();
         }
     }
     // the locale : fr_FR, en_US,
     if ("" !== $lang) {
         if (!$this->checkLang($lang)) {
             $this->pageNotFound();
         }
     } else {
         try {
             $lang = Lang::getDefaultLanguage();
             $lang = $lang->getLocale();
         } catch (\RuntimeException $ex) {
             // @todo generate error page
             throw new \RuntimeException("No default language is defined. Please define one.");
         }
     }
     if (null === ($lang = LangQuery::create()->findOneByLocale($lang))) {
         $this->pageNotFound();
     }
     $lang = $lang->getId();
     // check if element exists and is visible
     if ("" !== $id) {
         if (false === $this->checkId($context, $id)) {
             $this->pageNotFound();
         }
     }
     $flush = $request->query->get("flush", "");
     // check if feed already in cache
     $cacheContent = false;
     $cacheDir = $this->getCacheDir();
     $cacheKey = self::FEED_CACHE_KEY . $lang . $context . $id;
     $cacheExpire = intval(ConfigQuery::read("feed_ttl", '7200')) ?: 7200;
     $cacheDriver = new FilesystemCache($cacheDir);
     if (!($this->checkAdmin() && "" !== $flush)) {
         $cacheContent = $cacheDriver->fetch($cacheKey);
     } else {
         $cacheDriver->delete($cacheKey);
     }
     // if not in cache
     if (false === $cacheContent) {
         // render the view
         $cacheContent = $this->renderRaw("feed", array("_context_" => $context, "_lang_" => $lang, "_id_" => $id));
         // save cache
         $cacheDriver->save($cacheKey, $cacheContent, $cacheExpire);
     }
     $response = new Response();
     $response->setContent($cacheContent);
     $response->headers->set('Content-Type', 'application/rss+xml');
     return $response;
 }