Esempio n. 1
0
 public function testGetRequestString()
 {
     $this->assertEmpty($this->_model->getRequestString());
     $this->_model->setRequestUri('test');
     $this->_model->setPathInfo();
     $this->assertEquals('test', $this->_model->getRequestString());
 }
Esempio n. 2
0
 /**
  * @param Mage_Core_Controller_Request_Http $request
  *
  * @return string $query
  */
 private function getSearchQuery(Mage_Core_Controller_Request_Http $request)
 {
     $maxQueryLength = (int) Mage::getStoreConfig('catalog/search/max_query_length') > 0 ? (int) Mage::getStoreConfig('catalog/search/max_query_length') : 128;
     $query = preg_replace('/(\\W|html|php)+/', ' ', $request->getRequestString());
     if (count($request->getQuery()) > 0) {
         $query .= implode(' ', $request->getQuery());
     }
     return substr($query, 0, $maxQueryLength);
 }
Esempio n. 3
0
 /**
  * Checks whether route/controller action is allowed to be reached depending on initializer state
  *
  * @param Mage_Core_Controller_Request_Http $request
  * @return bool
  */
 public function isAllowed(Mage_Core_Controller_Request_Http $request)
 {
     if ($this->isDataCollected()) {
         return true;
     }
     if (count($this->_restrictions) == 1) {
         $initializerAclNode = Mage::getConfig()->getNode('default/xcom/initializer_acl');
         if ($initializerAclNode) {
             $this->_restrictions += $initializerAclNode->asArray();
         }
     }
     $parts = array('module' => str_replace('_adminhtml', '', strtolower($request->getControllerModule())), 'controller' => strtolower($request->getControllerName()), 'action' => strtolower($request->getActionName()), 'urn' => trim(strtolower($request->getRequestString()), '/'));
     $moduleParts = explode('_', $parts['module']);
     $parts['namespace'] = $moduleParts[0];
     $this->_currentMatch = array('scopeWeight' => 0, 'directionWeight' => 2, 'urn' => '');
     foreach ($this->_restrictions as $issuer => $rules) {
         if ($issuer != '*') {
             if (!Mage::getResourceModel('xcom_initializer/job')->hasJobsLeft($issuer)) {
                 continue;
             }
         }
         foreach (array('allowed', 'denied') as $direction) {
             if (empty($rules[$direction])) {
                 continue;
             }
             foreach ($rules[$direction] as $scope => $values) {
                 if (!is_array($values)) {
                     Mage::log(printf('Invalid configuration for scope node %s', $scope));
                     continue;
                 }
                 foreach ($values as $value) {
                     $value = strtolower(is_array($value) ? current($value) : $value);
                     $hasMatched = false;
                     if (empty($value)) {
                         Mage::log(printf('Empty node inside scope %s', $scope));
                         continue;
                     }
                     switch (strtolower($scope)) {
                         case 'namespace':
                             if ('denied' == $direction) {
                                 $hasMatched = $value == $parts['namespace'];
                             } else {
                                 Mage::log('<namespace> node allowed in <denied> section only');
                             }
                             break;
                         case 'action':
                         case 'controller':
                             $pattern = '(?P<module>.+)/(?P<controller>.+)';
                             $scopes = array('module', 'controller');
                             if ('action' == $scope) {
                                 $pattern .= '::(?P<action>.+)';
                                 $scopes[] = 'action';
                             }
                             if (preg_match('#' . $pattern . '#', $value, $matches)) {
                                 // Split value into module and controller (and action, if it's 'action' rule)
                                 $hasMatched = true;
                                 foreach ($scopes as $_scope) {
                                     if (!in_array($matches[$_scope], array('*', $parts[$_scope]))) {
                                         // Value part doesn't match corresponding part of current request or '*'
                                         $hasMatched = false;
                                         break;
                                     }
                                 }
                             } else {
                                 Mage::log(printf('Invalid action/controller definition: %s. Allowed pattern: namespace_module/controller::action', $value));
                             }
                             break;
                         case 'module':
                             $hasMatched = $value == $parts['module'];
                             break;
                         case 'urn':
                             $value = trim($value, '/');
                             $hasMatched = 0 === strpos($parts['urn'], $value);
                             break;
                         default:
                             Mage::log(printf('Unknown rule scope: %s', $scope));
                     }
                     if ($hasMatched) {
                         $this->_matched($scope, $direction, 'urn' == $scope ? $value : '');
                     }
                 }
             }
         }
     }
     return $this->_isAllowed();
 }
Esempio n. 4
0
 /**
  * Apply custom Cache-Control: max-age from db
  *
  * @param Mage_Core_Controller_Request_Http $request
  * @param Mage_Core_Controller_Response_Http $response
  */
 protected function _applyCustomMaxAgeFromDb(Mage_Core_Controller_Request_Http $request, Mage_Core_Controller_Response_Http $response)
 {
     if (!$this->messagesToShow) {
         // apply custom max-age from db
         $urls = array($request->getRequestString());
         $alias = $request->getAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS);
         if ($alias) {
             $urls[] = $alias;
         }
         /** @var $customUrlModel Aoe_Static_Model_CustomUrl */
         $customUrlModel = Mage::getModel('aoestatic/customUrl');
         $customUrlModel->setStoreId(Mage::app()->getStore()->getId());
         $customUrlModel->loadByRequestPath($urls);
         if ($customUrlModel->getId() && $customUrlModel->getMaxAge()) {
             $response->setHeader('Cache-Control', 'max-age=' . (int) $customUrlModel->getMaxAge(), true);
             $response->setHeader('X-Magento-Lifetime', (int) $customUrlModel->getMaxAge(), true);
             $response->setHeader('aoestatic', 'cache', true);
         }
     }
 }