/** * 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; }
/** * 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; }
/** * 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(); } } }
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'); }
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; }
/** * 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')); } }
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); }
/** * 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); }
/** * 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(); } } } } }
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); } } } } }
/** * 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); }
/** * 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; }
<?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>';
/** * 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++; } } } } }
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; }
/** * 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(); } }
public static function getRequest() { return MageBridgeUrlHelper::getRequest(); }
/** * 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);
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()); } }