Пример #1
0
 /**
  * Helper-method to determine the current Magento request
  *
  * @return string
  */
 public static function getRequest()
 {
     $app = JFactory::getApplication();
     $input = $app->input;
     // Always override the current request with whatever comes from the bridge
     self::setRequest(MageBridgeModelBridge::getInstance()->getSessionData('request', false));
     // If the request is not set by Magento, and if it is not set earlier in MageBridge, set it
     if (empty(self::$request)) {
         // If this is not the frontend, default to the root
         if ($app->isSite() == false) {
             $request = null;
         } else {
             if ($input->getCmd('option') != 'com_magebridge') {
                 $request = null;
             } else {
                 if (empty($request)) {
                     $request = $input->getString('request');
                 }
                 // Build a list of current variables
                 $currentVars = array('option', 'view', 'layout', 'format', 'request', 'Itemid', 'lang', 'tmpl');
                 // Add the form token to current variables
                 $currentsVars[] = JSession::getFormToken();
                 // If the request is set, filter all rubbish
                 if (!empty($request)) {
                     // Parse the current request
                     $request = str_replace('index.php', '', $request);
                     $request = str_replace('//', '/', $request);
                     $request = str_replace('\\/', '/', $request);
                     $request = preg_replace('/(SID|sid)=(U|S)/', '', $request);
                     $request = preg_replace('/^\\//', '', $request);
                     // Convert the current request into an array (example: /checkout/cart)
                     /**$request_vars = explode('/', preg_replace('/\?([*]+)/', '', $request));
                      * if (!empty($request_vars)) {
                      * foreach ($request_vars as $var) {
                      * $currentVars[] = $var;
                      * }
                      * }*/
                     // Convert the current GET-variables into an array (example: ?limit=25)
                     if (preg_match('/([^\\?]+)\\?/', $request)) {
                         $query = preg_replace('/([^\\?]+)\\?/', '', $request);
                         parse_str($query, $query_array);
                         if (!empty($query_array)) {
                             foreach ($query_array as $name => $value) {
                                 $currentVars[] = $name;
                             }
                         }
                     }
                     // Catch illegal debugging entries
                     if (preg_match('/^magebridge\\//', $request) && !preg_match('/^magebridge\\/output\\//', $request) && MageBridgeModelDebug::isDebug() == false) {
                         $request = null;
                     }
                 }
                 // Add custom GET variables
                 $get = array();
                 $getVars = $input->get->getArray();
                 if (!empty($getVars)) {
                     foreach ($getVars as $name => $value) {
                         if (in_array($name, $currentVars)) {
                             continue;
                         }
                         if (preg_match('/^quot;/', $name)) {
                             continue;
                         }
                         if (strlen($name) == 32 && $value == 1) {
                             continue;
                         }
                         $get[$name] = $value;
                     }
                 }
                 if (!empty($get)) {
                     if (strstr($request, '?')) {
                         $request .= http_build_query($get);
                     } else {
                         $request .= '?' . http_build_query($get);
                     }
                 }
             }
         }
         $request = trim($request);
         if (!empty($request)) {
             self::$request = $request;
         }
     }
     return self::$request;
 }
Пример #2
0
 public static function getRequest()
 {
     // Always override the current request with whatever comes from the bridge
     $request = MageBridgeModelBridge::getInstance()->getMageConfig('request', false);
     if (!empty($request)) {
         self::$request = $request;
     }
     // If the request is not set by Magento, and if it is not set earlier in MageBridge, set it
     if (empty(self::$request)) {
         // If this is not the frontend, default to the root
         if (JFactory::getApplication()->isSite() == false) {
             $request = null;
             // If the MageBridge component is not called, default to the root
         } else {
             if (JRequest::getCmd('option') != 'com_magebridge') {
                 $request = null;
                 // If the MageBridge component is called, parse the request
             } else {
                 if (empty($request)) {
                     $request = JRequest::getString('request');
                 }
                 // Build a list of current variables
                 $current_vars = array('option', 'view', 'layout', 'format', 'request', 'Itemid', 'lang', 'tmpl', 'block');
                 // If the request is set, filter all rubbish
                 if (!empty($request)) {
                     // Parse the current request
                     $request = str_replace('index.php', '', $request);
                     $request = str_replace('//', '/', $request);
                     $request = str_replace('\\/', '/', $request);
                     $request = preg_replace('/(SID|sid)=(U|S)/', '', $request);
                     $request = preg_replace('/^\\//', '', $request);
                     // Convert the current request into an array (example: /checkout/cart)
                     $request_vars = explode('/', preg_replace('/\\?([*]+)/', '', $request));
                     if (!empty($request_vars)) {
                         foreach ($request_vars as $var) {
                             $current_vars[] = $var;
                         }
                     }
                     // Convert the current GET-variables into an array (example: ?limit=25)
                     if (preg_match('/([^\\?]+)\\?/', $request)) {
                         $query = preg_replace('/([^\\?]+)\\?/', '', $request);
                         parse_str($query, $query_array);
                         if (!empty($query_array)) {
                             foreach ($query_array as $name => $value) {
                                 $current_vars[] = $name;
                             }
                         }
                     }
                     // Catch illegal debugging entries
                     if (preg_match('/^magebridge\\//', $request) && !preg_match('/^magebridge\\/output\\//', $request) && MageBridgeModelDebug::isDebug() == false) {
                         $request = null;
                     }
                 }
                 // Add custom GET variables
                 $get = array();
                 $get_vars = JRequest::get('get');
                 if (!empty($get_vars)) {
                     foreach ($get_vars as $name => $value) {
                         if (!in_array($name, $current_vars) && !preg_match('/^quot;/', $name)) {
                             $get[$name] = $value;
                         }
                     }
                 }
                 if (!empty($get)) {
                     if (strstr($request, '?')) {
                         $request .= http_build_query($get);
                     } else {
                         $request .= '?' . http_build_query($get);
                     }
                 }
             }
         }
         self::$request = $request;
     }
     return self::$request;
 }