Пример #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 if it's possible to run this event
  *
  * @param string $event
  * @param array $options
  * @return bool
  */
 public static function allowEvent($event, $options = array())
 {
     static $denied_events = array();
     // Do not run this event if the bridge itself is offline
     if (MageBridge::getBridge()->isOffline()) {
         MageBridgeModelDebug::getInstance()->notice("Plugin helper detects bridge is offline");
         return false;
     }
     // Do not run this event if the option "disable_bridge" is set to true
     if (isset($options['disable_bridge']) && $options['disable_bridge'] == true) {
         MageBridgeModelDebug::getInstance()->notice("Plugin helper detects event '{$event}' is currently disabled");
         return false;
     }
     // Do not execute additional plugin-events on the success-page (to prevent refreshing)
     $request = MageBridgeUrlHelper::getRequest();
     if (preg_match('/checkout\\/onepage\\/success/', $request)) {
         MageBridgeModelDebug::getInstance()->notice("Plugin helper detects checkout/onepage/success page");
         return false;
     }
     // Do not execute this event if we are in XML-RPC or JSON-RPC
     if (MageBridge::isApiPage() == true) {
         return false;
     }
     // Check if this event is the list of events already thrown
     if (in_array($event, $denied_events)) {
         MageBridgeModelDebug::getInstance()->notice("Plugin helper detects event '{$event}' is already run");
         return false;
     }
     MageBridgeModelDebug::getInstance()->notice("Plugin helper allows event '{$event}'");
     $denied_events[] = $event;
     return true;
 }
Пример #3
0
 /**
  * Event onBeforeBuildMageBridge
  */
 public function onBeforeBuildMageBridge()
 {
     // Get base variables
     $application = JFactory::getApplication();
     // Get the current Magento request
     $request = MageBridgeUrlHelper::getRequest();
     // Check for the logout-page
     if ($request == 'customer/account/logoutSuccess') {
         $application->logout();
     }
     // When visiting the checkout/cart/add URL without a valid session, the action will fail because the session does not exist yet
     // The following workaround makes sure we first redirect to another page (to initialize the session) after which we can add the product
     if (preg_match('/checkout\\/cart\\/add\\//', $request) && !preg_match('/redirect=1/', $request)) {
         $bridge = MageBridgeModelBridge::getInstance();
         $session = $bridge->getMageSession();
         // Check for the Magento session-key stored in the Joomla! session
         // Session is NOT yet initialized, therefor addtocart is not working yet either
         if (empty($session) && !empty($_COOKIE)) {
             // Redirect the client to an intermediate page to properly initialize the session
             $bridge->setHttpReferer(MageBridgeUrlHelper::route($request . '?redirect=1'));
             MageBridgeUrlHelper::setRequest('magebridge/redirect/index/url/' . base64_encode($request));
             MageBridgeModelBridgeMeta::getInstance()->reset();
         }
     }
 }
Пример #4
0
 public function __construct($name = '', $request = null, $cache_time = null)
 {
     $this->request = !empty($request) ? $request : MageBridgeUrlHelper::getRequest();
     $this->cache_name = $name . '_' . md5($this->request);
     $this->cache_folder = JPATH_SITE . '/cache/com_magebridge';
     $this->cache_file = $this->cache_folder . '/' . $this->cache_name . '.php';
     $this->cache_time = !empty($cache_time) ? (int) $cache_time : MagebridgeModelConfig::load('cache_time');
 }
Пример #5
0
 public function getUrl($block)
 {
     $url = 'index.php?option=com_magebridge&view=ajax&tmpl=component&block=' . $block;
     $request = MageBridgeUrlHelper::getRequest();
     if (!empty($request)) {
         $url .= '&request=' . $request;
     }
     return $url;
 }
Пример #6
0
 /**
  * Event onBeforeBuildMageBridge
  *
  * @access public
  * @param null
  * @return null
  */
 public function onBeforeBuildMageBridge()
 {
     // Get the current Magento request
     $request = MageBridgeUrlHelper::getRequest();
     // Get the current MageBridge register
     $register = MageBridgeModelRegister::getInstance();
     // Check for the checkout-page
     if ($request == 'checkout/onepage') {
         $register->add('mystuff', null, array('test1', 'test2', 'test3'));
     }
 }
Пример #7
0
 public function display($tpl = null)
 {
     // Load the bridge
     $bridge = MageBridgeModelBridge::getInstance();
     // Load the parameters
     $layout = $this->getLayout();
     $params = MageBridgeHelper::getParams();
     // Set the request based upon the choosen category
     $request = $params->get('request', false) ? $params->get('request') : MageBridgeUrlHelper::getRequest();
     $prefix = preg_replace('/\\?(.*)/', '', $request);
     $suffix = preg_replace('/(.*)\\?/', '', $request);
     // Check if this a non-URL-optimized request
     if (is_numeric($prefix)) {
         $request = MageBridgeUrlHelper::getLayoutUrl($layout, $prefix);
     } else {
         // Determine the suffix
         if ($layout == 'product') {
             $suffix = $bridge->getMageConfig('catalog/seo/product_url_suffix');
         } else {
             if ($layout == 'category') {
                 $suffix = $bridge->getMageConfig('catalog/seo/category_url_suffix');
             }
         }
         // Add the suffix, if this is set in the Magento configuration
         if (!empty($suffix) && !preg_match('/' . $suffix . '$/', $request)) {
             $request .= $suffix;
         }
     }
     // Add the
     $mode = $params->get('mode');
     if (!empty($mode)) {
         $request .= '?mode=' . $mode;
     }
     // Set the request in the bridge
     $this->setRequest($request);
     // Handle the redirect request
     $redirect = JRequest::getString('redirect');
     if (!empty($redirect)) {
         $bridge->setHttpReferer($redirect);
     }
     // Reuse this request to set the Canonical URL
     if (MagebridgeModelConfig::load('enable_canonical') == 1) {
         $uri = MageBridgeUrlHelper::route($request);
         $document = JFactory::getDocument();
         $document->setMetaData('canonical', $uri);
     }
     // Set which block to display
     $this->setBlock('content');
     parent::display($tpl);
 }
Пример #8
0
 /**
  * Helper-method to build the bridge
  * 
  * @param string $block_name
  * @return null
  */
 public function build()
 {
     static $block = null;
     if (empty($block)) {
         // Get the register and add all block-requirements to it
         $register = MageBridgeModelRegister::getInstance();
         $register->add('headers');
         $register->add('block', $this->block_name);
         // Only request breadcrumbs if we are loading another page than the homepage
         if (MagebridgeModelConfig::load('enable_breadcrumbs') == 1) {
             $request = MageBridgeUrlHelper::getRequest();
             if (!empty($request)) {
                 $register->add('breadcrumbs');
             }
         }
         // Build the bridge
         MageBridgeModelDebug::getInstance()->notice('Building view');
         $bridge = MageBridge::getBridge();
         $bridge->build();
         $bridge->setHeaders();
         // Add things for the frontend specifically
         $application = JFactory::getApplication();
         if ($application->isSite()) {
             if (MagebridgeModelConfig::load('enable_breadcrumbs') == 1) {
                 $bridge->setBreadcrumbs();
             }
         }
         // Query the bridge for the block
         $block = $bridge->getBlock($this->block_name);
         // Empty blocks
         if (empty($block)) {
             MageBridgeModelDebug::getInstance()->warning('JView: Empty block: ' . $this->block_name);
             $block = JText::_($this->getOfflineMessage());
         }
     }
     return $block;
 }
 public function display($cachable = false, $urlparams = false)
 {
     // Check if the bridge is offline
     if (MageBridge::getBridge()->isOffline()) {
         JRequest::setVar('view', 'offline');
         JRequest::setVar('layout', 'default');
     }
     // Set a default view
     if (JRequest::getVar('view') == '') {
         JRequest::setVar('view', 'root');
     }
     // Check for a logout action and perform a logout in Joomla! first
     if (MageBridgeUrlHelper::getRequest() == 'customer/account/logout') {
         $session = JFactory::getSession();
         $session->destroy();
     }
     // Redirect if the layout is not supported by the view
     if (JRequest::getVar('view') == 'catalog' && !in_array(JRequest::getVar('layout'), array('product', 'category', 'addtocart'))) {
         $url = MageBridgeUrlHelper::route('/');
         $this->setRedirect($url);
         return;
     }
     parent::display($cachable, $urlparams);
 }
Пример #10
0
 /**
  * Method to redirect non-SEF URLs if enabled
  *
  * @access private
  *
  * @param null
  *
  * @return null
  */
 private function redirectNonSef()
 {
     // Initialize variables
     $uri = JURI::getInstance();
     $post = $this->input->post->getArray();
     $enabled = $this->getParam('enable_nonsef_redirect', 1);
     // Redirect non-SEF URLs to their SEF-equivalent
     if ($enabled == 1 && empty($post) && JFactory::getConfig()->get('sef') == 1 && $this->input->getCmd('option') == 'com_magebridge') {
         $request = str_replace($uri->base(), '', $uri->toString());
         // Detect the MageBridge component
         if (preg_match('/^index.php\\?option=com_magebridge/', $request)) {
             $view = $this->app->input->getCmd('view');
             $controller = $this->app->input->getCmd('controller');
             $task = $this->app->input->getCmd('task');
             if ($request != JRoute::_($request) && $view != 'ajax' && $view != 'jsonrpc' && $view != 'block' && $controller != 'jsonrpc' && $task != 'login') {
                 $request = MageBridgeUrlHelper::getSefUrl($request);
                 $this->app->redirect($request);
                 $this->app->close();
             }
         } else {
             if ($this->loadConfig('enforce_rootmenu') == 1 && !empty($request)) {
                 $url = MageBridgeUrlHelper::route(MageBridgeUrlHelper::getRequest());
                 if (!preg_match('/^\\//', $request)) {
                     $request = '/' . $request;
                 }
                 if ($request != $url && $this->app->input->getCmd('view') != 'ajax' && !preg_match('/\\/?/', $url)) {
                     $this->app->redirect($url);
                     $this->app->close();
                 }
             }
         }
     }
 }
Пример #11
0
 private function spoofHeaders($data = null)
 {
     // Determine whether to allow spoofing or not
     $spoof = false;
     if (MagebridgeModelConfig::load('spoof_headers') == 1) {
         $spoof = true;
     } else {
         if (preg_match('/^downloadable\\/download\\/link\\/id/', MageBridgeUrlHelper::getRequest())) {
             $spoof = true;
         } else {
             if (!empty($data) && preg_match('/\\%PDF/', $data)) {
                 $spoof = true;
             } else {
                 if (!empty($data) && preg_match('/\\<\\/rss\\>$/', $data)) {
                     $spoof = true;
                 }
             }
         }
     }
     // Set the original HTTP headers
     if ($spoof == true) {
         if (!empty($this->_head['headers'])) {
             $headers = explode("\r\n", $this->_head['headers']);
             if (!count($headers) > 1) {
                 $headers = explode("\n", $this->_head['headers']);
             }
             if (count($headers) > 1) {
                 foreach ($headers as $header) {
                     $header = trim($header);
                     if (preg_match('/^HTTP/', $header)) {
                         header($header);
                     }
                     if (preg_match('/^Cache/', $header)) {
                         header($header);
                     }
                     if (preg_match('/^Expires/', $header)) {
                         header($header);
                     }
                     if (preg_match('/^Pragma/', $header)) {
                         header($header);
                     }
                     if (preg_match('/^Content/', $header)) {
                         header($header);
                     }
                     if (preg_match('/^ETag/', $header)) {
                         header($header);
                     }
                     if (preg_match('/^Last-Modified/', $header)) {
                         header($header);
                     }
                     //if (preg_match('/^Set-Cookie/', $header)) header($header);
                 }
             }
         }
     }
 }
Пример #12
0
 /**
  * Method to display the requested view
  */
 public function display($tpl = null)
 {
     // Load the bridge
     $bridge = MageBridgeModelBridge::getInstance();
     // Load the parameters
     $layout = $this->getLayout();
     $params = MageBridgeHelper::getParams();
     // Set the request based upon the choosen category
     $request = $params->get('request', false) ? $params->get('request') : MageBridgeUrlHelper::getRequest();
     $prefix = preg_replace('/\\?(.*)/', '', $request);
     $suffix = preg_replace('/(.*)\\?/', '', $request);
     // Check if this a non-URL-optimized request
     if (is_numeric($prefix)) {
         $request = MageBridgeUrlHelper::getLayoutUrl($layout, $prefix);
     } else {
         // Determine the suffix
         if ($layout == 'product') {
             $suffix = $bridge->getSessionData('catalog/seo/product_url_suffix');
         } else {
             if ($layout == 'category') {
                 $suffix = $bridge->getSessionData('catalog/seo/category_url_suffix');
             }
         }
         // Add the suffix, if this is set in the Magento configuration
         if (!empty($suffix) && !preg_match('/' . $suffix . '$/', $request)) {
             $request .= $suffix;
         }
     }
     // Add the qty parameter
     $qty = JFactory::getApplication()->input->getInt('qty');
     if (!empty($qty)) {
         $request .= 'qty/' . $qty . '/';
     }
     // Check for the redirect parameter
     $redirect = $this->input->getString('redirect');
     if ($layout == 'addtocart' && empty($redirect)) {
         $redirect = 'checkout/cart';
     }
     // Add the redirect parameter
     if (!empty($redirect)) {
         $redirect = MageBridgeUrlHelper::route($redirect);
         if (!empty($redirect)) {
             $request .= 'uenc/' . MageBridgeEncryptionHelper::base64_encode($redirect) . '/';
         }
         $form_key = MageBridgeModelBridge::getInstance()->getSessionData('form_key');
         if (!empty($form_key)) {
             $request .= 'form_key/' . $form_key;
         }
     }
     // Add the mode (for catalog)
     $mode = $params->get('mode');
     if (!empty($mode)) {
         $request .= '?mode=' . $mode;
     }
     // Set the request in the bridge and wait for the response
     $this->setRequest($request);
     // Reuse this request to set the Canonical URL
     if (MagebridgeModelConfig::load('enable_canonical') == 1) {
         $uri = MageBridgeUrlHelper::route($request);
         $document = JFactory::getDocument();
         $document->setMetaData('canonical', $uri);
     }
     // Set which block to display
     $this->setBlock('content');
     parent::display($tpl);
 }
Пример #13
0
 /**
  * Method to check whether spoofing of HTTP headers is allowed
  *
  * @return bool
  */
 protected function canSpoofHeaders($data)
 {
     if (MagebridgeModelConfig::load('spoof_headers') == 1) {
         return true;
     }
     if (strstr(MageBridgeUrlHelper::getRequest(), 'downloadable/download/link/id')) {
         return true;
     }
     if (!empty($data) && preg_match('/\\%PDF/', $data)) {
         return true;
     }
     if (!empty($data) && preg_match('/\\<\\/rss\\>$/', $data)) {
         return true;
     }
     if (!empty($data) && strstr($data, '<?xml version')) {
         return true;
     }
     return false;
 }
Пример #14
0
<?php

/**
 * Joomla! component MageBridge
 *
 * @author Yireo (info@yireo.com)
 * @package MageBridge
 * @copyright Copyright 2012
 * @license GNU Public License
 * @link http://www.yireo.com
 */
// No direct access
defined('_JEXEC') or die('Restricted access');
// Handy variables
$request = MageBridgeUrlHelper::getRequest();
$bridge = MageBridgeModelBridge::getInstance();
$page_layout = MageBridgeTemplateHelper::getRootTemplate();
/*
 * Developers note: Do NOT edit the contents of this file directly. 
 * Instead, create a override of this file by copying it to:
 *
 * "templates/YOUR_TEMPLATE/html/com_magebridge/fixes.php
 */
// FIX: Magento refers from opcheckout.js to these specific HTML-classes, but currently we do not care
if (strstr($request, 'checkout/onepage') && $bridge->getBlock('checkout.progress') == '') {
    $html .= '<!-- Begin Checkout Progress Fix -->';
    $html .= '<div class="col-right" style="display:none;">';
    $html .= '<div class="one-page-checkout-progress"></div>';
    $html .= '<div id="checkout-progress-wrapper"></div>';
    $html .= '<div id="col-right-opcheckout"></div>';
    $html .= '</div>';
Пример #15
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++;
                 }
             }
         }
     }
 }
Пример #16
0
 public function isAjax()
 {
     // Things to consider: Backend Lightbox-effect, frontend AJAX-lazyloading
     $check_xrequestedwith = true;
     if (JFactory::getApplication()->isSite() == false) {
         $check_xrequestedwith = false;
     } else {
         if (JRequest::getCmd('view') == 'ajax') {
             $check_xrequestedwith = false;
         }
     }
     // Detect the X-Requested-With headers
     if ($check_xrequestedwith) {
         if (function_exists('apache_request_headers')) {
             $headers = apache_request_headers();
             if (isset($headers['X-Requested-With']) && strtolower($headers['X-Requested-With']) == 'xmlhttprequest') {
                 return true;
             }
         } else {
             if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
                 return true;
             }
         }
     }
     // Simple check to see if AJAX is mentioned in the current Magento URL
     $current_url = MageBridgeUrlHelper::getRequest();
     if (stristr($current_url, 'ajax')) {
         return true;
     }
     return false;
 }
Пример #17
0
 /**
  * Event onAfterBuildMageBridge
  *
  * @access public
  * @param null
  * @return null
  */
 public function onAfterBuildMageBridge()
 {
     $request = MageBridgeUrlHelper::getRequest();
     // Perform actions on the frontend
     $application = JFactory::getApplication();
     if ($application->isSite()) {
         $this->doDelayedRedirect();
         $this->doDelayedLogin();
     }
 }
Пример #18
0
 public static function getRequest()
 {
     return MageBridgeUrlHelper::getRequest();
 }
Пример #19
0
 /**
  * Default method showing a JView
  *
  * @param boolean $cachable
  * @param boolean $urlparams
  *
  * @return null
  */
 public function display($cachable = false, $urlparams = false)
 {
     // Check if the bridge is offline
     if (MageBridge::getBridge()->isOffline()) {
         JFactory::getApplication()->input->set('view', 'offline');
         JFactory::getApplication()->input->set('layout', 'default');
     }
     // Set a default view
     if (JFactory::getApplication()->input->get('view') == '') {
         JFactory::getApplication()->input->set('view', 'root');
     }
     // Check for a logout action and perform a logout in Joomla! first
     $request = MageBridgeUrlHelper::getRequest();
     if ($request == 'customer/account/logout') {
         $session = JFactory::getSession();
         $session->destroy();
     }
     // Check for an admin request
     $backend = MageBridgeModelConfig::load('backend');
     if (!empty($backend) && substr($request, 0, strlen($backend)) === $backend) {
         $request = str_replace($backend, '', $request);
         $url = MageBridgeModelBridge::getInstance()->getMagentoAdminUrl($request);
         $this->setRedirect($url);
         return;
     }
     // Redirect if the layout is not supported by the view
     if (JFactory::getApplication()->input->get('view') == 'catalog' && !in_array(JFactory::getApplication()->input->get('layout'), array('product', 'category', 'addtocart'))) {
         $url = MageBridgeUrlHelper::route('/');
         $this->setRedirect($url);
         return;
     }
     parent::display($cachable, $urlparams);
 }
<?php

/**
 * Joomla! module MageBridge: Newsletter block
 *
 * @author	Yireo (info@yireo.com)
 * @package   MageBridge
 * @copyright Copyright 2015
 * @license   GNU Public License
 * @link	  http://www.yireo.com
 */
// No direct access
defined('_JEXEC') or die('Restricted access');
// Import the MageBridge autoloader
require_once JPATH_SITE . '/components/com_magebridge/helpers/loader.php';
// Read the parameters
$layout = $params->get('layout', 'default');
// Call the helper
require_once dirname(__FILE__) . '/helper.php';
$block = modMageBridgeNewsletterHelper::build($params);
// Get the current user
$user = JFactory::getUser();
// Set the form URL
$form_url = MageBridgeUrlHelper::route('newsletter/subscriber/new');
$redirect_url = MageBridgeUrlHelper::route(MageBridgeUrlHelper::getRequest());
$redirect_url = MageBridgeEncryptionHelper::base64_encode($redirect_url);
// Require form validation
JHTML::_('behavior.formvalidation');
// Include the layout-file
require JModuleHelper::getLayoutPath('mod_magebridge_newsletter', $layout);
Пример #21
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());
     }
 }