示例#1
0
 /**
  * Get cached header js for redirect or load and save to cache
  *
  * @param $type  string
  * @param $objId string|int
  * @param $automaticRedirect
  * @return mixed|string|void
  */
 protected function _getCachedJsHeaderByType($type, $objId, $automaticRedirect)
 {
     $storeViewId = $this->_config->getStoreViewId();
     switch ($type) {
         case self::CATEGORY:
             $cacheKey = $storeViewId . '_sg_mobile_category_' . $objId . '_redirect_type_' . intval($automaticRedirect);
             break;
         case self::PRODUCT:
             $cacheKey = $storeViewId . '_sg_mobile_item_' . $objId . '_redirect_type_' . intval($automaticRedirect);
             break;
         case self::PAGE:
             $cacheKey = $storeViewId . '_sg_mobile_page_' . $objId . '_redirect_type_' . intval($automaticRedirect);
             break;
         case self::SEARCH:
             $cacheKey = $storeViewId . '_sg_mobile_catalogsearch_' . md5($objId) . '_redirect_type_' . intval($automaticRedirect);
             break;
         case self::INDEX:
             $cacheKey = $storeViewId . '_sg_mobile_index_redirect_type_' . intval($automaticRedirect);
             break;
         default:
             $cacheKey = $storeViewId . '_sg_mobile_default_type_' . intval($automaticRedirect);
             break;
     }
     $cache = Mage::app()->getCacheInstance();
     $value = $cache->load($cacheKey);
     if ($value !== false) {
         $jsHeader = unserialize($value);
     } else {
         $builder = new ShopgateBuilder($this->_config);
         $shopgateRedirect = $builder->buildRedirect();
         if (!in_array(Mage::app()->getRequest()->getControllerName(), array(self::CATEGORY, self::PRODUCT, self::SEARCH, self::INDEX)) && !Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ENABLE_DEFAULT_REDIRECT)) {
             $shopgateRedirect->suppressRedirect();
         }
         $disabledRoutes = explode(',', Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_DISABLE_REDIRECT_ROUTES));
         $route = Mage::app()->getRequest()->getRouteName();
         if (in_array($route, $disabledRoutes)) {
             $shopgateRedirect->suppressRedirect();
         }
         $disabledControllers = explode(',', Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_DISABLE_REDIRECT_CONTROLLERS));
         $controllerName = Mage::app()->getRequest()->getControllerName();
         if (in_array($controllerName, $disabledControllers)) {
             $shopgateRedirect->suppressRedirect();
         }
         if ($controllerName == 'product') {
             $productId = Mage::app()->getRequest()->getParam('id');
             $disabledProducts = explode(',', Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_DISABLE_REDIRECT_PRODUCTS));
             if (in_array($productId, $disabledProducts)) {
                 $shopgateRedirect->suppressRedirect();
             }
         }
         if ($controllerName == 'category') {
             $categoryId = Mage::app()->getRequest()->getParam('id');
             $disabledCategories = explode(',', Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_DISABLE_REDIRECT_CATEGORIES));
             if (in_array($categoryId, $disabledCategories)) {
                 $shopgateRedirect->suppressRedirect();
             }
         }
         switch ($type) {
             case self::CATEGORY:
                 $jsHeader = $shopgateRedirect->buildScriptCategory($objId, $automaticRedirect);
                 break;
             case self::PRODUCT:
                 $jsHeader = $shopgateRedirect->buildScriptItem($objId, $automaticRedirect);
                 break;
             case self::PAGE:
                 $jsHeader = $shopgateRedirect->buildScriptCms($objId, $automaticRedirect);
                 break;
             case self::SEARCH:
                 $jsHeader = $shopgateRedirect->buildScriptSearch($objId, $automaticRedirect);
                 break;
             case self::INDEX:
                 $jsHeader = $shopgateRedirect->buildScriptShop($automaticRedirect);
                 break;
             default:
                 $jsHeader = $shopgateRedirect->buildScriptDefault($automaticRedirect);
                 break;
         }
         $cache->save(serialize($jsHeader), $cacheKey, array('shopgate_mobile_redirect', Mage_Core_Model_Layout_Update::LAYOUT_GENERAL_CACHE_TAG), 7200);
     }
     return $jsHeader;
 }
示例#2
0
 public function doMobileRedirect()
 {
     $indexFile = 'index.php';
     if (version_compare(_PS_VERSION_, '1.4.1.0', '>=') && Configuration::get('PS_HOMEPAGE_PHP_SELF') !== false) {
         $indexFile = Configuration::get('PS_HOMEPAGE_PHP_SELF');
     }
     $shopgateConfig = new ShopgateConfigPresta();
     // instantiate and set up redirect class
     $shopgateBuilder = new ShopgateBuilder($shopgateConfig);
     $shopgateRedirector = $shopgateBuilder->buildRedirect();
     /* redirect logic */
     $controller = Tools::getValue('controller');
     if ($id_product = Tools::getValue('id_product', 0)) {
         $productId = PSShopgatePlugin::prefix . $id_product . '_0';
         $shopgateJsHeader = $shopgateRedirector->buildScriptItem($productId);
     } elseif ($id_category = Tools::getValue('id_category', 0)) {
         $shopgateJsHeader = $shopgateRedirector->buildScriptCategory($id_category);
     } elseif (isset($_SERVER['SCRIPT_FILENAME']) && mb_strpos($_SERVER['SCRIPT_FILENAME'], $indexFile) !== false && empty($controller)) {
         // TODO: doesn't work yet!
         $shopgateJsHeader = $shopgateRedirector->buildScriptShop();
     } else {
         $shopgateJsHeader = $shopgateRedirector->buildScriptDefault();
     }
     return $shopgateJsHeader;
 }
 /**
  * @return mixed|string
  */
 public static function calculateRedirect()
 {
     $shopgateConfig = new ShopgateConfigPrestashop();
     $shopgateBuilder = new ShopgateBuilder($shopgateConfig);
     $shopgateRedirect = $shopgateBuilder->buildRedirect();
     $controller = Tools::getValue('controller');
     /**
      * prepare controller for older versions
      */
     if (!$controller) {
         $fileInfo = pathinfo($_SERVER['SCRIPT_NAME']);
         $controller = $fileInfo['filename'];
     }
     switch ($controller) {
         case 'category':
             return $shopgateRedirect->buildScriptCategory(Tools::getValue('id_category', 0));
         case 'product':
             return $shopgateRedirect->buildScriptItem(Tools::getValue('id_product', 0));
         case 'search':
             return $shopgateRedirect->buildScriptSearch(Tools::getValue('search_query', ''));
         case 'index':
             return $shopgateRedirect->buildScriptShop();
         default:
             if ($manufacturerId = Tools::getValue('id_manufacturer')) {
                 /** @var ManufacturerCore $manufacturer */
                 $manufacturer = new Manufacturer($manufacturerId);
                 return $shopgateRedirect->buildScriptBrand($manufacturer->name);
             }
             return $shopgateRedirect->buildScriptDefault();
     }
 }