Beispiel #1
0
 public function match(Zend_Controller_Request_Http $request)
 {
     $active = Mage::getStoreConfig("dev/offline/mwdevtoolbar");
     if ($active == 1) {
         $storeenabled = Mage::getStoreConfig('dev/offline/enable', $request->getStoreCodeFromPath());
         if ($storeenabled) {
             Mage::getSingleton('core/session', array('name' => 'adminhtml'));
             $helper = Mage::helper('developertoolbar/data');
             if ($helper->checkAllowsIps() == 0) {
                 Mage::getSingleton('core/session', array('name' => 'front'));
                 $front = $this->getFront();
                 $response = $front->getResponse();
                 $response->setHeader('HTTP/1.1', '503 Service Temporarily Unavailable');
                 $response->setHeader('Status', '503 Service Temporarily Unavailable');
                 $response->setHeader('Retry-After', '5000');
                 $response->setBody(html_entity_decode(Mage::getStoreConfig('dev/offline/message', $request->getStoreCodeFromPath()), ENT_QUOTES, "utf-8"));
                 $response->sendHeaders();
                 $response->outputBody();
                 exit;
             } else {
                 $showreminder = Mage::getStoreConfig('dev/offline/reminder', $request->getStoreCodeFromPath());
                 if ($showreminder) {
                     $front = $this->getFront();
                     $response = $front->getResponse()->clearBody();
                     $response = $front->getResponse()->appendBody('<div style="height:12px; background:red; color: white; position:relative; width:100%;padding:3px; z-index:100000;text-trasform:capitalize;">Offline</div>');
                 }
             }
         }
     }
     return parent::match($request);
 }
 public function match(Zend_Controller_Request_Http $request)
 {
     $helper = Mage::helper('BalkeTechnologies_StoreMaintenance');
     $storeCode = $request->getStoreCodeFromPath();
     $enabled = $helper->getConfig('enabled', $storeCode);
     // module enabled?
     if (1 == $enabled) {
         $allowedIPsString = $helper->getConfig('allowedIPs', $storeCode);
         // remove spaces from string
         $allowedIPsString = preg_replace('/ /', '', $allowedIPsString);
         $allowedIPs = array();
         if ('' !== trim($allowedIPsString)) {
             $allowedIPs = explode(',', $allowedIPsString);
         }
         $currentIP = $_SERVER['REMOTE_ADDR'];
         $allowFrontendForAdmins = $helper->getConfig('allowFrontendForAdmins', $storeCode);
         $adminIp = null;
         if (1 == $allowFrontendForAdmins) {
             //get the admin session
             Mage::getSingleton('core/session', array('name' => 'adminhtml'));
             //verify if the user is logged in to the backend
             $adminSession = Mage::getSingleton('admin/session');
             if ($adminSession->isLoggedIn()) {
                 //do stuff
                 $adminIp = $adminSession['_session_validator_data']['remote_addr'];
             }
         }
         if ($currentIP === $adminIp) {
             // current user is logged in as admin
             $this->__log('Access granted for admin with IP: ' . $currentIP . ' and store ' . $storeCode, 2, $storeCode);
         } else {
             // current user allowed to access website?
             if (!in_array($currentIP, $allowedIPs)) {
                 $this->__log('Access denied  for IP: ' . $currentIP . ' and store ' . $storeCode, 1, $storeCode);
                 $maintenancePage = trim($helper->getConfig('maintenancePage', $storeCode));
                 // if custom maintenance page is defined in backend, display this one
                 if ('' !== $maintenancePage) {
                     Mage::getSingleton('core/session', array('name' => 'front'));
                     $response = $this->getFront()->getResponse();
                     $response->setHeader('HTTP/1.1', '503 Service Temporarily Unavailable');
                     $response->setHeader('Status', '503 Service Temporarily Unavailable');
                     $response->setHeader('Retry-After', '5000');
                     $response->setBody($maintenancePage);
                     $response->sendHeaders();
                     $response->outputBody();
                 }
                 exit;
             } else {
                 $this->__log('Access granted for IP: ' . $currentIP . ' and store ' . $storeCode, 2, $storeCode);
             }
         }
     }
     return parent::match($request);
 }
Beispiel #3
0
 public function match(Zend_Controller_Request_Http $request)
 {
     $helper = Mage::helper('Mdl_UnderConstruction');
     $storeCode = $request->getStoreCodeFromPath();
     $enabled = $helper->getConfig('enabled', $storeCode);
     if (1 == $enabled) {
         $allowedIPsString = $helper->getConfig('allowedIPs', $storeCode);
         $allowedIPsString = preg_replace('/ /', '', $allowedIPsString);
         $allowedIPs = array();
         if ('' !== trim($allowedIPsString)) {
             $allowedIPs = explode(',', $allowedIPsString);
         }
         $currentIP = $_SERVER['REMOTE_ADDR'];
         $allowFrontendForAdmins = $helper->getConfig('allowFrontendForAdmins', $storeCode);
         $adminIp = null;
         if (1 == $allowFrontendForAdmins) {
             Mage::getSingleton('core/session', array('name' => 'adminhtml'));
             $adminSession = Mage::getSingleton('admin/session');
             if ($adminSession->isLoggedIn()) {
                 $adminIp = $adminSession['_session_validator_data']['remote_addr'];
             }
         }
         if ($currentIP === $adminIp) {
             $this->__log('Access granted for admin with IP: ' . $currentIP . ' and store ' . $storeCode, 2, $storeCode);
         } else {
             if (!in_array($currentIP, $allowedIPs)) {
                 $this->__log('Access denied  for IP: ' . $currentIP . ' and store ' . $storeCode, 1, $storeCode);
                 Mage::getSingleton('core/session', array('name' => 'front'));
                 $response = $this->getFront()->getResponse();
                 $response->setHeader('HTTP/1.1', '503 Service Temporarily Unavailable');
                 $response->setHeader('Status', '503 Service Temporarily Unavailable');
                 $response->setHeader('Retry-After', '5000');
                 $response->setBody(Mage::app()->getLayout()->createBlock('core/template')->setTemplate('underconstruction/underconstruction.phtml')->toHtml());
                 $response->sendHeaders();
                 $response->outputBody();
                 //  }
                 exit;
             } else {
                 $this->__log('Access granted for IP: ' . $currentIP . ' and store ' . $storeCode, 2, $storeCode);
             }
         }
     }
     return parent::match($request);
 }
 /**
  * Send a custom message, configured in the admin panel.
  *
  * @param Zend_Controller_Request_Http $request
  */
 protected function _sendCustomMessage(Zend_Controller_Request_Http $request)
 {
     Mage::getSingleton('core/session', array('name' => 'front'));
     /** @var $front Mage_Core_Controller_Varien_Front */
     $front = $this->getFront();
     /** @var $response Mage_Core_Controller_Response_Http */
     $response = $front->getResponse();
     $response->setHeader('HTTP/1.1', '503 Service Temporarily Unavailable');
     $response->setHeader('Status', '503 Service Temporarily Unavailable');
     $response->setHeader('Retry-After', '5000');
     $response->setBody(html_entity_decode(Mage::getStoreConfig('dev/offlinemaintenance/message', $request->getStoreCodeFromPath()), ENT_QUOTES, "utf-8"));
     $response->sendHeaders();
     $response->outputBody();
     // We are done, we can exit now.
     exit;
 }
 /**
  * Validate and Match Cms Page and modify request
  *
  * @param Zend_Controller_Request_Http $request
  * @return bool
  */
 public function match(Zend_Controller_Request_Http $request)
 {
     if (Mage::helper('core')->isModuleEnabled('ArtsOnIT_OfflineMaintenance')) {
         $storeenabled = Mage::getStoreConfig('offlineMaintenance/settings/enabled', $request->getStoreCodeFromPath());
         if ($storeenabled) {
             Mage::getSingleton('core/session', array('name' => 'adminhtml'));
             if (!Mage::getSingleton('admin/session')->isLoggedIn()) {
                 Mage::getSingleton('core/session', array('name' => 'front'));
                 $front = $this->getFront();
                 $response = $front->getResponse();
                 $response->setHeader('HTTP/1.1', '503 Service Temporarily Unavailable');
                 $response->setHeader('Status', '503 Service Temporarily Unavailable');
                 $response->setHeader('Retry-After', '5000');
                 $response->setBody(html_entity_decode(Mage::getStoreConfig('offlineMaintenance/settings/message', $request->getStoreCodeFromPath()), ENT_QUOTES, "utf-8"));
                 $response->sendHeaders();
                 $response->outputBody();
                 exit;
             } else {
                 $showreminder = Mage::getStoreConfig('offlineMaintenance/settings/showreminder', $request->getStoreCodeFromPath());
                 if ($showreminder) {
                     $front = $this->getFront();
                     $response = $front->getResponse()->appendBody('<div style="height:12px; background:red; color: white; position:relative; width:100%;padding:3px; z-index:100000;text-trasform:capitalize;">Offline</div>');
                 }
             }
         }
     }
     if (!Mage::helper('smvendors')->enableVendorSlug()) {
         return parent::match($request);
     }
     //checking before even try to find out that current module
     //should use this router
     if (!$this->_beforeModuleMatch()) {
         return false;
     }
     $this->fetchDefault();
     $front = $this->getFront();
     $path = trim($request->getPathInfo(), '/');
     if (!$path) {
         return parent::match($request);
     }
     $p = explode('/', $path);
     if (strpos($p[0], '.html') !== false) {
         return parent::match($request);
     }
     $vendorCollection = Mage::getResourceModel('smvendors/vendor_collection')->addFieldToFilter('vendor_slug', $p[0]);
     if ($vendorCollection->count() && ($vendor = $vendorCollection->getFirstItem()) && $vendor->getId()) {
         Mage::register('current_vendor', $vendor, true);
         Mage::register('in_vendor', true, true);
         /**
          * Searching router args by module name from route using it as key
          */
         $frontName = 'vendor';
         $modules = $this->getModuleByFrontName($frontName);
         if ($modules === false) {
             continue;
         }
         /**
          * Going through modules to find appropriate controller
          */
         $found = false;
         foreach ($modules as $realModule) {
             $request->setRouteName($this->getRouteByFrontName($frontName));
             // get controller name
             if (!empty($p[1])) {
                 $controller = $p[1];
             } else {
                 //                    $controller = $front->getDefault('controller');
                 $controller = 'products';
                 $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getOriginalPathInfo(), '/'));
             }
             // get action name
             if ($realModule == 'SM_Vendors') {
                 $action = !empty($p[2]) ? $p[2] : 'index';
             } else {
                 $action = !empty($p[2]) ? $p[2] : $front->getDefault('action');
             }
             //checking if this place should be secure
             $this->_checkShouldBeSecure($request, '/' . $frontName . '/' . $controller . '/' . $action);
             $controllerClassName = $this->_validateControllerClassName($realModule, $controller);
             if (!$controllerClassName) {
                 continue;
             }
             // instantiate controller class
             $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse());
             if (!$controllerInstance->hasAction($action)) {
                 continue;
             }
             $found = true;
             break;
         }
         // set values only after all the checks are done
         $request->setModuleName($frontName);
         $request->setControllerName($controller);
         $request->setActionName($action);
         $request->setControllerModule($realModule);
         // set parameters from pathinfo
         for ($i = 3, $l = sizeof($p); $i < $l; $i += 2) {
             $request->setParam($p[$i], isset($p[$i + 1]) ? urldecode($p[$i + 1]) : '');
         }
         // dispatch action
         $request->setDispatched(true);
         $controllerInstance->dispatch($action);
         return true;
     }
     return parent::match($request);
 }