public function display($tpl = null) { $application = JFactory::getApplication(); $params = $application->getParams(); // Set the request based upon the choosen layout switch ($this->getLayout()) { case 'logout': $intermediate_page = $params->get('intermediate_page'); if ($intermediate_page != 1) { $this->setRequest('customer/account/logout'); } else { $logout_url = MageBridgeUrlHelper::route('customer/account/logout'); $this->assignRef('logout_url', $logout_url); } break; default: $this->setRequest(MageBridgeUrlHelper::getLayoutUrl($this->getLayout())); break; } // Set which block to display $this->setBlock('content'); // Assign the parameters to this template $this->assignRef('params', $params); parent::display($tpl); }
/** * 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; }
/** * 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; }
public function build($params = null) { $products = parent::getCall('getAPI', 'magebridge_product.list', modMageBridgeProductsHelper::getArguments($params)); if (!empty($products)) { foreach ($products as $index => $product) { // Use the URL-key to build a URL if (!empty($product['url_store'])) { $product['url'] = MageBridgeUrlHelper::route($product['url_store']); } elseif (!empty($product['url_path'])) { $product['url'] = MageBridgeUrlHelper::route($product['url_path']); } elseif (empty($product['url'])) { $product['url'] = MageBridgeUrlHelper::route($product['url_key']); } $product['addtocart_url'] = MageBridgeUrlHelper::route('checkout/cart/add/product/' . $product['product_id'] . '/'); // Create labels $product['addtocart_label'] = JText::sprintf($params->get('addtocart', 'MOD_MAGEBRIDGE_PRODUCTS_ADDTOCART'), $product['label']); $product['addtocart_text'] = JText::sprintf($params->get('addtocart', 'MOD_MAGEBRIDGE_PRODUCTS_ADDTOCART'), $product['name']); $product['readmore_label'] = JText::sprintf($params->get('readmore', 'MOD_MAGEBRIDGE_PRODUCTS_READMORE'), $product['label']); $product['readmore_text'] = JText::sprintf($params->get('readmore', 'MOD_MAGEBRIDGE_PRODUCTS_READMORE'), $product['name']); // Remove the current product from the list if (JURI::getInstance()->toString(array('path')) == $product['url']) { unset($products[$index]); continue; } $products[$index] = $product; } } return $products; }
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); }
public function display($tpl = null) { // Get useful variables $application = JFactory::getApplication(); // Set the admin-request MageBridgeUrlHelper::setRequest(JRequest::getVar('request', 'admin')); // Set which block to display $this->setBlock('root'); // Build the bridge right away, because we need data from Magento $block = $this->build(); echo $block; $application->close(); exit; }
public function display($tpl = null) { // Load the parameters $params = MageBridgeHelper::getParams(); $request = $params->get('request'); $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 display the requested view */ public function display($tpl = null) { // Load the parameters $params = MageBridgeHelper::getParams(); // Load the request $request = $params->get('request'); if (empty($request)) { $request = JFactory::getApplication()->input->getString('request'); } // Remove the dummy ID from the request $request = preg_replace('/^([0-9]+)\\:/', '', $request); // Set the request $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); }
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); }
/** * Helper-method to get the specified Menu-Item * * @param int $id * * @return object */ public static function getItem($id = 0) { $items = MageBridgeUrlHelper::getMenuItems(); if (!empty($items)) { foreach ($items as $item) { if ($item->id == $id) { if (!isset($item->route)) { $item->route = null; } if (!isset($item->query)) { $item->query = array(); } if (!isset($item->query['view'])) { $item->query['view'] = 'root'; } if (!isset($item->query['request'])) { $item->query['request'] = null; } if (!isset($item->query['layout'])) { $item->query['layout'] = null; } // If the parameters include the request, set is as query-request if (!empty($item->params)) { if (is_object($item->params)) { $item->params = YireoHelper::toRegistry($item->params); } if (is_object($item->params)) { $item->query['request'] = $item->params->get('request'); } } return $item; } } } return null; }
public static function filterUrl($url, $use_sef = true) { if (empty($url)) { return null; } // Parse the query-part of the URL $q = explode('?', $url); array_shift($q); // Merge the Magento query with the Joomla! query $qs = implode('&', $q); $qs = str_replace('&', '&', $qs); parse_str($qs, $query); // Get rid of the annoying SID $sids = array('SID', 'sid', '__SID', '___SID'); foreach ($sids as $sid) { if (isset($query[$sid])) { unset($query[$sid]); } } // Construct the URL again $url = 'index.php?'; $url_segments = array(); foreach ($query as $name => $value) { $url_segments[] = $name . '=' . $value; } $url = 'index.php?' . implode('&', $url_segments); if ($use_sef == true) { $url = MageBridgeUrlHelper::getSefUrl($url); } $prefix = JURI::getInstance()->toString(array('scheme', 'host', 'port')); $path = str_replace($prefix, '', JURI::base()); $pos = strpos($url, $path); if (!empty($path) && $pos !== false) { $url = substr($url, $pos + strlen($path)); } return $url; }
/** * Method to correct the request URI depending on what is asked * * @param array $data * @return array */ private function doCorrectRequest($data) { // If the data do not include any visual elements, setting the Request URI is not needed $url_needed = false; foreach ($data as $index => $segment) { if ($index == 'breadcrumbs' || $index == 'headers' || $segment['name'] == 'block') { $url_needed = true; break; } } // Reset the Request URI if it is not needed if ($url_needed == false && isset($data['meta']['arguments']['request_uri'])) { // Change the META-data $data['meta']['arguments']['request_uri'] = '/'; // Correct the helper so it returns the new value MageBridgeUrlHelper::setRequest('/'); // Reset the proxy to make sure 404s or other status codes are not preventing us from building the bridge again MageBridgeModelProxy::getInstance()->reset(); } return $data; }
/** * Parse the categories of a tree for display * * @access public * @param array $tree * @param int $endLevel * @return mixed */ public static function parseTree($tree, $startLevel = 1, $endLevel = 99) { $current_category_id = modMageBridgeMenuHelper::getCurrentCategoryId(); $current_category_path = modMageBridgeMenuHelper::getCurrentCategoryPath(); if (is_array($tree) && count($tree) > 0) { foreach ($tree as $index => $item) { $item['path'] = explode('/', $item['path']); if (empty($item)) { unset($tree[$index]); continue; } // Remove disabled categories if ($item['is_active'] != 1) { unset($tree[$index]); continue; } // Remove categories that should not be in the menu if (isset($item['include_in_menu']) && $item['include_in_menu'] != 1) { unset($tree[$index]); continue; } // Remove items from the wrong start-level if ($startLevel > 0 && $item['level'] < $startLevel && !in_array($current_category_id, $item['path'])) { unset($tree[$index]); continue; } // Remove items from the wrong end-level if ($item['level'] > $endLevel) { unset($tree[$index]); continue; } // Handle HTML-entities in the title if (isset($item['name'])) { $item['name'] = htmlspecialchars($item['name']); } // Parse the children-tree if (!empty($item['children'])) { $item['children'] = modMageBridgeMenuHelper::parseTree($item['children'], $startLevel, $endLevel); } else { $item['children'] = array(); } // Translate the URL into Joomla! SEF URL if (empty($item['url'])) { $item['url'] = ''; } else { $item['url'] = MageBridgeUrlHelper::route($item['url']); } $tree[$index] = $item; } } return $tree; }
<?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);
/** * Method to do all system checks * * @package MageBridge * @access public * @return null */ public function doSystemChecks($installer = false) { $application = JFactory::getApplication(); $db = JFactory::getDBO(); $config = MagebridgeModelConfig::load(); // System Compatibility $result = version_compare(phpversion(), '5.2.8', '>=') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'PHP version', $result, JText::sprintf('CHECK_PHP_VERSION', '5.2.8')); $result = version_compare(ini_get('memory_limit'), '31M', '>') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'PHP memory', $result, JText::sprintf('CHECK_PHP_MEMORY', '32Mb', ini_get('memory_limit'))); $jversion = new JVersion(); $result = version_compare($jversion->getShortVersion(), '1.5.12', '>=') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'Joomla! version', $result, JText::sprintf('CHECK_JOOMLA_VERSION', '1.5.12')); $result = function_exists('simplexml_load_string') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'SimpleXML', $result, JText::_('CHECK_SIMPLEXML')); $result = in_array('ssl', stream_get_transports()) ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'OpenSSL', $result, JText::_('CHECK_OPENSSL')); $result = function_exists('json_decode') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'JSON', $result, JText::_('CHECK_JSON')); $result = function_exists('curl_init') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'CURL', $result, JText::_('CHECK_CURL')); $result = function_exists('mcrypt_cfb') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('compatibility', 'mcrypt', $result, JText::_('CHECK_MCRYPT')); $result = ini_get('magic_quotes_gpc') ? self::CHECK_ERROR : self::CHECK_OK; $this->addResult('compatibility', 'magic_quotes_gpc', $result, JText::_('CHECK_MAGIC_QUOTES_GPC')); $result = ini_get('safe_mode') ? self::CHECK_ERROR : self::CHECK_OK; $this->addResult('compatibility', 'safe_mode', $result, JText::_('CHECK_SAFE_MODE')); if (function_exists('apache_get_modules')) { $modules = apache_get_modules(); $result = in_array('mod_rewrite', $modules); } else { $result = getenv('HTTP_MOD_REWRITE') == 'On' ? true : false; } $this->addResult('compatibility', 'Apache mod_rewrite', $result, JText::_('CHECK_MOD_REWRITE')); $result = $this->checkWebOwner(); $this->addResult('compatibility', 'File Ownership', $result, JText::_('CHECK_FILE_OWNERSHIP')); // System Configuration $result = file_exists(JPATH_SITE . '/.htaccess') ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('system', 'htaccess', $result, JText::_('CHECK_HTACCESS')); $result = $application->getCfg('sef') == 1 ? self::CHECK_OK : self::CHECK_ERROR; $this->addResult('system', 'SEF', $result, JText::_('CHECK_SEF')); $result = $application->getCfg('sef_rewrite') == 1 ? self::CHECK_OK : self::CHECK_WARNING; $this->addResult('system', 'SEF Rewrites', $result, JText::_('CHECK_SEF_REWRITE')); $result = $application->getCfg('caching') == 0 ? self::CHECK_OK : self::CHECK_WARNING; $this->addResult('system', 'Caching', $result, JText::_('CHECK_CACHING')); if ($installer == false) { $result = (bool) MageBridgeUrlHelper::getRootItem() ? self::CHECK_OK : self::CHECK_WARNING; $this->addResult('system', 'Root item', $result, JText::_('CHECK_ROOT_ITEM')); } $result = self::checkWritable($application->getCfg('tmp_path')); $this->addResult('system', 'Temporary path writable', $result, JText::_('CHECK_TMP')); $result = self::checkWritable($application->getCfg('log_path')); $this->addResult('system', 'Log path writable', $result, JText::_('CHECK_LOG')); $result = self::checkWritable(JPATH_SITE . '/cache'); $this->addResult('system', 'Cache writable', $result, JText::_('CHECK_CACHE')); return; }
public static function getRequest() { return MageBridgeUrlHelper::getRequest(); }
/** * Method to set a redirect for later redirection * * @param string $redirect * @param int $max_redirects * * @return bool */ public function setRedirect($redirect = null, $max_redirects = 1) { // Do not redirect if the maximum redirect-count is reached if ($this->isMaxRedirect($redirect, $max_redirects) == true) { $this->debug->warning('Maximum redirects of ' . $max_redirects . ' reached'); return false; } // Strip the base-path from the URL $menuitem = MageBridgeUrlHelper::getRootItem(); if (empty($menuitem)) { $menuitem = MageBridgeUrlHelper::getCurrentItem(); } if (!empty($menuitem)) { $root_path = str_replace('/', '\\/', $menuitem->route); $redirect = preg_replace('/^\\//', '', $redirect); $redirect = preg_replace('/^' . $root_path . '/', '', $redirect); } // When the URL doesnt start with HTTP or HTTPS, assume it is still the original Magento request if (!preg_match('/^(http|https):\\/\\//', $redirect)) { $redirect = JURI::base() . 'index.php?option=com_magebridge&view=root&request=' . $redirect; } // Replace the System URL for the site if ($this->app->isSite() && preg_match('/index.php\\?(.*)$/', $redirect, $match)) { $redirect = str_replace($match[0], preg_replace('/^\\//', '', MageBridgeHelper::filterUrl($match[0])), $redirect); } $this->debug->warning('Redirect set to ' . $redirect); $this->redirectUrl = $redirect; return true; }
/** * 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); }
$return_url = MageBridgeUrlHelper::route('/'); break; case 'mbaccount': $return_url = MageBridgeUrlHelper::route('customer/account'); break; } $return_url = base64_encode($return_url); // Set the greeting name switch ($params->get('greeting_name')) { case 'name': $name = !empty($user->name) ? $user->name : $user->username; break; default: $name = $user->username; break; } // Construct the URLs $account_url = MageBridgeUrlHelper::route('customer/account'); $forgotpassword_url = MageBridgeUrlHelper::route('customer/account/forgotpassword'); $createnew_url = MageBridgeUrlHelper::route('customer/account/create'); // Construct the component variables $component = 'com_users'; $password_field = 'password'; $task_login = '******'; $task_logout = 'user.logout'; // Construct the component URL $component_url = JRoute::_('index.php'); //$component_url = JRoute::_('index.php?option='.$component); // Include the template-helper $magebridge = new MageBridgeTemplateHelper(); require JModuleHelper::getLayoutPath('mod_magebridge_login', $layout);
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; }
/** * Return a list of Root Menu Items associated with the current Root Menu Item * * @access public * * @param null * * @return array */ public static function getRootItemAssociations() { $assoc = JLanguageAssociations::isEnabled(); if ($assoc == false) { return false; } $root_item = MageBridgeUrlHelper::getRootItem(); if ($root_item == false) { return false; } $associations = MenusHelper::getAssociations($root_item->id); return $associations; }
/** * Redirect a specific URL * * @access private * * @param string $name * @param string $value * @param string $redirect * * @return null */ private function doRedirect($name = '', $value = '', $redirect = null) { if ($this->input->getCmd($name) == $value) { $return = base64_decode($this->input->getString('return')); if (!empty($return)) { $return = MageBridgeEncryptionHelper::base64_encode($return); $redirect .= '/referer/' . $return . '/'; } header('Location: ' . MageBridgeUrlHelper::route($redirect)); exit; } }
<?php /** * Joomla! module MageBridge: Newsletter block * * @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'); // 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'); // Include the layout-file require JModuleHelper::getLayoutPath('mod_magebridge_newsletter', $layout);
/** * Event onAfterRender * * @access public * @param null * @return null */ public function onAfterRender() { // Don't do anything if MageBridge is not enabled if ($this->isEnabled() == false) { return false; } if (JFactory::getApplication()->input->getCmd('option') == 'com_zoo') { $body = JResponse::getBody(); // Check for Magento CMS-tags if (preg_match('/\\{\\{([^}]+)\\}\\}/', $body) || preg_match('/\\{mb([^}]+)\\}/', $body)) { // Get system variables $bridge = MageBridgeModelBridge::getInstance(); $register = MageBridgeModelRegister::getInstance(); // Detect the request-tag if (preg_match_all('/\\{mbrequest url="([^\\"]+)"\\}/', $body, $matches)) { foreach ($matches[0] as $matchIndex => $match) { $url = $matches[1][$matchIndex]; MageBridgeUrlHelper::setRequest($url); $body = str_replace($match, '', $body); } } // Detect block-names if (preg_match_all('/\\{mbblock name="([^\\"]+)"\\}/', $body, $matches)) { foreach ($matches[0] as $matchIndex => $match) { $block_name = $matches[1][$matchIndex]; $register->add('block', $block_name); } } // Include the MageBridge register $key = md5(var_export($body, true)) . ':' . JFactory::getApplication()->input->getCmd('option'); $text = MageBridgeEncryptionHelper::base64_encode($body); // Conditionally load CSS if ($this->params->get('load_css') == 1 || $this->params->get('load_js') == 1) { $bridge->register('headers'); } // Build the bridge $segment_id = $bridge->register('filter', $key, $text); $bridge->build(); // Load CSS if needed if ($this->params->get('load_css') == 1) { $bridge->setHeaders('css'); } // Load JavaScript if needed if ($this->params->get('load_js') == 1) { $bridge->setHeaders('js'); } // Get the result from the bridge $result = $bridge->getSegmentData($segment_id); $result = MageBridgeEncryptionHelper::base64_decode($result); // Only replace the original if the new content exists if (!empty($result)) { $body = $result; } // Detect block-names if (preg_match_all('/\\{mbblock name="([^\\"]+)"\\}/', $body, $matches)) { foreach ($matches[0] as $matchIndex => $match) { $block_name = $matches[1][$matchIndex]; $block = $bridge->getBlock($block_name); $body = str_replace($match, $block, $body); } } } if (!empty($body)) { JResponse::setBody($body); } } }
/** * Method to check the SSO-request coming back from Magento * * @param null * @return bool|exit */ public static function checkSSOLogin() { // Check the security token JSession::checkToken('get') or die('SSO redirect failed due to wrong token'); // Get system variables $application = JFactory::getApplication(); $session = JFactory::getSession(); // Get the current Magento session $magento_session = JFactory::getApplication()->input->getCmd('session'); if (!empty($magento_session)) { MageBridgeModelBridge::getInstance()->setMageSession($magento_session); MageBridgeModelDebug::getInstance()->notice("SSO: Magento session " . $magento_session); } // Redirect back to the original URL $redirect = $session->get('magento_redirect', JURI::base()); if (empty($redirect)) { $redirect = MageBridgeUrlHelper::route('customer/account'); } MageBridgeModelDebug::getInstance()->notice("SSO: Redirect to {$redirect}"); $application->redirect($redirect); return true; }
/** * Function to convert a SEF URL back to a system URL */ function MagebridgeParseRoute($segments) { $vars = array(); // Strange bug: The first segment autoreplaces the first dash with a semi-column if (!empty($segments)) { foreach ($segments as $index => $segment) { $segments[$index] = preg_replace('/^([a-zA-Z0-9]+)\\:/', '\\1-', $segment); } } // Skip to the API if this is detected if (isset($segments[1]) && $segments[1] == 'jsonrpc') { $vars['view'] = 'jsonrpc'; $vars['task'] = $segments[2]; return $vars; } // Get the active menu item $menu = JFactory::getApplication()->getMenu('site'); $current_item = $menu->getActive(); $items = MageBridgeUrlHelper::getMenuItems(); // Fetch the Root-Item $root_item = MageBridgeUrlHelper::getRootItem(); $root_item_id = $root_item && $root_item->id > 0 ? $root_item->id : false; // Fix the segments when Root Menu-Item is enforced if (MageBridgeUrlHelper::enforceRootMenu()) { $current_item = $root_item; $current_path = JURI::getInstance()->toString(array('path')); $current_segments = explode('/', preg_replace('/^\\//', '', $current_path)); $root_path = JRoute::_($root_item->link . '&Itemid=' . $root_item->id); $root_segments = explode('/', preg_replace('/^\\//', '', $root_path)); $segments = array(); foreach ($current_segments as $current_index => $current_segment) { if (isset($root_segments[$current_index]) && $root_segments[$current_index] == $current_segment) { continue; } if (empty($current_segment)) { continue; } $segments[] = $current_segment; } } // Parse the segments if (!empty($segments)) { $request = implode('/', $segments); $request = preg_replace('/^component\\/magebridge\\//', '', $request); $vars['request'] = $request; } else { $vars['request'] = null; } // A hack to set the active Menu-Item if (!empty($vars['request']) && !empty($items)) { foreach ($items as $item) { $preg_route = '/^' . str_replace('/', '\\/', $item->route) . '/'; if (!empty($item->route) && preg_match($preg_route, $vars['request'])) { $menu->setActive($item->id); break; } if (isset($item->query['request']) && $item->query['request'] == $vars['request']) { $menu->setActive($item->id); break; } } } // Set the view based on the current item if (empty($vars['request']) && !empty($current_item->query['view'])) { $vars['view'] = $current_item->query['view']; } // Set the default if (!isset($vars['view'])) { $vars['view'] = 'root'; // Override the Itemid if the root is available if ($root_item_id) { $vars['Itemid'] = $root_item_id; } // Add the current pathing if ($current_item && $current_item->id != $root_item_id && in_array($root_item_id, $current_item->tree) && MageBridgeUrlHelper::enableRootMenu()) { $path = str_replace($root_item->route . '/', '', $current_item->route); if (!empty($vars['request'])) { $vars['request'] = $path . '/' . $vars['request']; } } } // Re-spoof the current Itemid if (isset($vars['Itemid']) && $vars['Itemid'] > 0) { JFactory::getApplication()->input->set('Itemid', $vars['Itemid']); } return $vars; }
public function filterHtml($html) { // Fix everything regarding URLs $html = MageBridgeHelper::filterContent($html); // Replace URLs where neccessary $replacement_urls = MageBridgeUrlHelper::getReplacementUrls(); if (!empty($replacement_urls)) { foreach ($replacement_urls as $replacement_url) { $source = $replacement_url->source; $destination = $replacement_url->destination; // Prepare the source URL if ($replacement_url->source_type == 0) { $source = MageBridgeUrlHelper::route($source); } else { $source = str_replace('/', '\\/', $source); } // Prepare the destination URL if (preg_match('/^index\\.php\\?option=/', $destination)) { $destination = JRoute::_($destination); } // Replace the actual URLs if ($replacement_url->source_type == 0) { $html = str_replace($source . '\'', $destination . '\'', $html); $html = str_replace($source . '"', $destination . '"', $html); } else { $html = preg_replace('/href=\\"([^\\"]+)' . $source . '([^\\"]+)/', 'href="' . $destination, $html); } } } return $html; }