예제 #1
0
 /**
  * Method to get the meta-data
  *
  * @return array
  */
 public function getRequestData()
 {
     // Compile the meta-data
     if (empty($this->_meta_data) || !is_array($this->_meta_data)) {
         $application = JFactory::getApplication();
         $input = $application->input;
         $user = JFactory::getUser();
         $uri = JURI::getInstance();
         $session = JFactory::getSession();
         $config = JFactory::getConfig();
         $storeHelper = MageBridgeStoreHelper::getInstance();
         $bridge = MageBridgeModelBridge::getInstance();
         $app_type = $storeHelper->getAppType();
         $app_value = $storeHelper->getAppValue();
         $arguments = array('api_session' => $bridge->getApiSession(), 'api_user' => MageBridgeEncryptionHelper::encrypt(MagebridgeModelConfig::load('api_user')), 'api_key' => MageBridgeEncryptionHelper::encrypt(MagebridgeModelConfig::load('api_key')), 'api_url' => JURI::root() . 'component/magebridge/?controller=jsonrpc&task=call', 'app' => $application->getClientId(), 'app_type' => $app_type, 'app_value' => $app_value, 'storeview' => MagebridgeModelConfig::load('storeview'), 'storegroup' => MagebridgeModelConfig::load('storegroup'), 'website' => MagebridgeModelConfig::load('website'), 'customer_group' => MagebridgeModelConfig::load('customer_group'), 'joomla_url' => $bridge->getJoomlaBridgeUrl(), 'joomla_sef_url' => $bridge->getJoomlaBridgeSefUrl(), 'joomla_sef_suffix' => (int) MageBridgeUrlHelper::hasUrlSuffix(), 'joomla_user_email' => $application->isSite() && !empty($user->email) ? $user->email : null, 'joomla_current_url' => $uri->current(), 'modify_url' => MagebridgeModelConfig::load('modify_url'), 'enforce_ssl' => MagebridgeModelConfig::load('enforce_ssl'), 'has_ssl' => (int) $uri->isSSL(), 'payment_urls' => MagebridgeModelConfig::load('payment_urls'), 'enable_messages' => MagebridgeModelConfig::load('enable_messages'), 'joomla_session' => session_id(), 'joomla_conf_caching' => $config->get('caching', 60), 'joomla_conf_lifetime' => $config->get('lifetime', 60) * 60, 'magento_session' => $bridge->getMageSession(), 'magento_persistent_session' => $bridge->getMagentoPersistentSession(), 'magento_user_allowed_save_cookie' => isset($_COOKIE['user_allowed_save_cookie']) ? $_COOKIE['user_allowed_save_cookie'] : null, 'request_uri' => MageBridgeUrlHelper::getRequest(), 'request_id' => md5(JURI::current() . serialize($input->get->getArray())), 'post' => !empty($_POST) ? $_POST : null, 'http_referer' => $bridge->getHttpReferer(), 'http_host' => $uri->toString(array('host')), 'user_agent' => isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '', 'remote_addr' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '', 'supportkey' => MagebridgeModelConfig::load('supportkey'), 'debug' => (int) MageBridgeModelDebug::isDebug(), 'debug_level' => MagebridgeModelConfig::load('debug_level'), 'debug_display_errors' => MagebridgeModelConfig::load('debug_display_errors'), 'protocol' => MagebridgeModelConfig::load('protocol'), 'state' => 'initializing', 'ajax' => (int) $bridge->isAjax(), 'disable_css' => MageBridgeHelper::getDisableCss(), 'disable_js' => MageBridgeHelper::getDisableJs());
         if (MageBridgeTemplateHelper::isMobile()) {
             $arguments['theme'] = MagebridgeModelConfig::load('mobile_magento_theme');
         } else {
             $arguments['theme'] = MagebridgeModelConfig::load('magento_theme');
         }
         foreach ($arguments as $name => $value) {
             if (is_string($value)) {
                 $arguments[$name] = MageBridgeEncryptionHelper::base64_encode($value);
             }
         }
         $this->_meta_data = $arguments;
     }
     return $this->_meta_data;
 }
예제 #2
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;
 }
예제 #3
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;
 }
예제 #4
0
 /**
  * Helper-method to set the debugging information
  *
  * @param null
  * @return null
  */
 public static function addDebug()
 {
     // Do not add debugging information when posting or redirecting
     if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
         return false;
     }
     // Only continue when debugging is enabled
     if (MageBridgeModelDebug::isDebug() && MagebridgeModelConfig::load('debug_bar')) {
         // Load variables
         $debug = MageBridgeModelDebug::getInstance();
         $bridge = MageBridgeModelBridge::getInstance();
         $register = MageBridgeModelRegister::getInstance();
         $original_request = MageBridgeUrlHelper::getOriginalRequest();
         $request = MageBridgeUrlHelper::getRequest();
         // Debug the MageBridge request
         if (MagebridgeModelConfig::load('debug_bar_request')) {
             $url = $bridge->getMagentoUrl() . $request;
             if (empty($request)) {
                 $request = '[empty]';
             }
             $Itemid = JFactory::getApplication()->input->getInt('Itemid');
             $root_item = MageBridgeUrlHelper::getRootItem();
             $root_item_id = $root_item ? $root_item->id : false;
             $menu_message = 'Menu-Item: ' . $Itemid;
             if ($root_item_id == $Itemid) {
                 $menu_message .= ' (Root Menu-Item)';
             }
             JError::raiseNotice('notice', $menu_message);
             JError::raiseNotice('notice', JText::sprintf('Page request: %s', !empty($request) ? $request : '[empty]'));
             JError::raiseNotice('notice', JText::sprintf('Original request: %s', $bridge->getSessionData('request')));
             JError::raiseNotice('notice', JText::sprintf('Received request: %s', $bridge->getSessionData('request')));
             JError::raiseNotice('notice', JText::sprintf('Received referer: %s', $bridge->getSessionData('referer')));
             JError::raiseNotice('notice', JText::sprintf('Current referer: %s', $bridge->getHttpReferer()));
             JError::raiseNotice('notice', JText::sprintf('Magento request: <a href="%s" target="_new">%s</a>', $url, $url));
             JError::raiseNotice('notice', JText::sprintf('Magento session: %s', $bridge->getMageSession()));
             if (MageBridgeTemplateHelper::isCategoryPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCategoryPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isProductPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isProductPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCatalogPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCatalogPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCustomerPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCustomerPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCartPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCartPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCheckoutPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCheckoutPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isSalesPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isSalesPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isHomePage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isHomePage() == TRUE'));
             }
         }
         // Add store information
         if (MagebridgeModelConfig::load('debug_bar_store')) {
             JError::raiseNotice('notice', JText::sprintf('Magento store loaded: %s (%s)', $bridge->getSessionData('store_name'), $bridge->getSessionData('store_code')));
         }
         // Add category information
         $category_id = $bridge->getSessionData('current_category_id');
         if ($category_id > 0) {
             JError::raiseNotice('notice', JText::sprintf('Magento category: %d', $category_id));
         }
         // Add product information
         $product_id = $bridge->getSessionData('current_product_id');
         if ($product_id > 0) {
             JError::raiseNotice('notice', JText::sprintf('Magento product: %d', $product_id));
         }
         // Add information on bridge-segments
         if (MagebridgeModelConfig::load('debug_bar_parts')) {
             $i = 0;
             $segments = $register->getRegister();
             foreach ($segments as $segment) {
                 if (isset($segment['status']) && $segment['status'] == 1) {
                     switch ($segment['type']) {
                         case 'breadcrumbs':
                         case 'meta':
                         case 'debug':
                         case 'headers':
                         case 'events':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: %s', $i, ucfirst($segment['type'])));
                             break;
                         case 'api':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: API resource "%s"', $i, $segment['name']));
                             break;
                         case 'block':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: Block "%s"', $i, $segment['name']));
                             break;
                         default:
                             $name = isset($segment['name']) ? $segment['name'] : null;
                             $type = isset($segment['type']) ? $segment['type'] : null;
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: type %s, name %s', $i, $type, $name));
                             break;
                     }
                     $i++;
                 }
             }
         }
     }
 }
예제 #5
0
 public function addDebug()
 {
     if (MageBridgeModelDebug::isDebug() && MagebridgeModelConfig::load('debug_bar')) {
         $debug = MageBridgeModelDebug::getInstance();
         $bridge = MageBridgeModelBridge::getInstance();
         $register = MageBridgeModelRegister::getInstance();
         $request = MageBridgeUrlHelper::getRequest();
         if (MagebridgeModelConfig::load('debug_bar_request')) {
             $url = $bridge->getMagentoUrl() . $request;
             if (empty($request)) {
                 $request = '[empty]';
             }
             $Itemid = JRequest::getInt('Itemid');
             $root_item = MageBridgeUrlHelper::getRootItem();
             $root_item_id = $root_item ? $root_item->id : false;
             $menu_message = 'Menu-Item: ' . $Itemid;
             if ($root_item_id == $Itemid) {
                 $menu_message .= ' (Root Menu-Item)';
             }
             JError::raiseNotice('notice', $menu_message);
             JError::raiseNotice('notice', JText::sprintf('Page request: %s', !empty($request) ? $request : '[empty]'));
             JError::raiseNotice('notice', JText::sprintf('Received request: %s', $bridge->getMageConfig('request')));
             JError::raiseNotice('notice', JText::sprintf('Received referer: %s', $bridge->getMageConfig('referer')));
             JError::raiseNotice('notice', JText::sprintf('Current referer: %s', $bridge->getHttpReferer()));
             JError::raiseNotice('notice', JText::sprintf('Magento request: <a href="%s" target="_new">%s</a>', $url, $url));
             JError::raiseNotice('notice', JText::sprintf('Magento session: %s', $bridge->getMageSession()));
             if (MageBridgeTemplateHelper::isCategoryPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCategoryPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isProductPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isProductPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCatalogPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCatalogPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCustomerPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCustomerPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCartPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCartPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isCheckoutPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isCheckoutPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isSalesPage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isSalesPage() == TRUE'));
             }
             if (MageBridgeTemplateHelper::isHomePage()) {
                 JError::raiseNotice('notice', JText::_('MageBridgeTemplateHelper::isHomePage() == TRUE'));
             }
         }
         if (MagebridgeModelConfig::load('debug_bar_store')) {
             JError::raiseNotice('notice', JText::sprintf('Magento store loaded: %s', $bridge->getMageConfig('store_name')));
         }
         if (MagebridgeModelConfig::load('debug_bar_parts')) {
             $i = 0;
             foreach ($register->getRegister() as $segment) {
                 if (isset($segment['status']) && $segment['status'] == 1) {
                     switch ($segment['type']) {
                         case 'breadcrumbs':
                         case 'meta':
                         case 'debug':
                         case 'headers':
                         case 'events':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: %s', $i, ucfirst($segment['type'])));
                             break;
                         case 'api':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: API resource "%s"', $i, $segment['name']));
                             break;
                         case 'block':
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: Block "%s"', $i, $segment['name']));
                             break;
                         default:
                             $name = isset($segment['name']) ? $segment['name'] : null;
                             $type = isset($segment['type']) ? $segment['type'] : null;
                             JError::raiseNotice('notice', JText::sprintf('Magento [%d]: type %s, name %s', $i, $type, $name));
                             break;
                     }
                     $i++;
                 }
             }
         }
         $this->assignRef('debug', $debug->getData());
     }
 }