コード例 #1
0
 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);
 }
コード例 #2
0
ファイル: plugin.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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
ファイル: meta.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #4
0
 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;
 }
コード例 #5
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');
 }
コード例 #6
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;
 }
コード例 #7
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'));
     }
 }
コード例 #8
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);
 }
コード例 #9
0
 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;
 }
コード例 #10
0
 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);
 }
コード例 #11
0
ファイル: view.html.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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);
 }
コード例 #12
0
 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);
 }
コード例 #13
0
ファイル: url.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #14
0
 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;
 }
コード例 #15
0
ファイル: register.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #16
0
ファイル: helper.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #17
0
<?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);
コード例 #18
0
 /**
  * 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;
 }
コード例 #19
0
 public static function getRequest()
 {
     return MageBridgeUrlHelper::getRequest();
 }
コード例 #20
0
ファイル: proxy.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #21
0
ファイル: view.html.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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);
 }
コード例 #22
0
        $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);
コード例 #23
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;
 }
コード例 #24
0
ファイル: helper.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #25
0
 /**
  * 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;
     }
 }
コード例 #26
0
<?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);
コード例 #27
0
 /**
  * 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);
         }
     }
 }
コード例 #28
0
ファイル: sso.php プロジェクト: apiceweb/MageBridgeCore
 /**
  * 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;
 }
コード例 #29
0
ファイル: router.php プロジェクト: apiceweb/MageBridgeCore
/**
 * 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;
}
コード例 #30
0
 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;
 }