/** * 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; }
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; }