Пример #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
 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);
 }
Пример #3
0
/**
 * Function to convert a system URL to a SEF URL
 */
function MagebridgeBuildRoute(&$query)
{
    // If there's only an Itemid (and an option), skip because this Menu-Item is fine already
    if (isset($query['Itemid']) && count($query) <= 2 && MageBridgeUrlHelper::enforceRootMenu() == false) {
        return array();
    }
    // Initialize some parts
    $segments = array();
    $Itemid = isset($query['Itemid']) ? $query['Itemid'] : 0;
    $orig_Itemid = $Itemid;
    // Get the menu items for this component
    $items = MageBridgeUrlHelper::getMenuItems();
    $current_item = MageBridgeUrlHelper::getItem($Itemid);
    // Strip the slug
    if (!empty($query['request']) && preg_match('/^([0-9]+)\\:(.*)/', $query['request'], $match)) {
        $query['id'] = $match[1];
        $query['request'] = $match[2];
    }
    // Try to match the current query with a Menu-Item
    if (!empty($items)) {
        foreach ($items as $item) {
            // Match a specific combination of view-layout-request
            if (!empty($item->query['request']) && !empty($query['request']) && isset($item->query['view']) && isset($query['view']) && $item->query['view'] == $query['view'] && isset($item->query['layout']) && isset($query['layout']) && $item->query['layout'] == $query['layout']) {
                // Match a specific combination of view-layout-request (string)
                if ($item->query['request'] == $query['request']) {
                    $query = array('option' => 'com_magebridge', 'Itemid' => $item->id);
                    return array();
                    // Match a specific combination of view-layout-request (ID)
                } else {
                    if (isset($query['id']) && $item->query['request'] == $query['id']) {
                        $query = array('option' => 'com_magebridge', 'Itemid' => $item->id);
                        return array();
                    }
                }
                // Match a specific combination of view-layout
            } else {
                if (empty($query['request']) && isset($item->query['view']) && isset($query['view']) && $item->query['view'] == $query['view'] && isset($item->query['layout']) && isset($query['layout']) && $item->query['layout'] == $query['layout']) {
                    $query = array('option' => 'com_magebridge', 'Itemid' => $item->id);
                    return array();
                }
            }
        }
    }
    // Fetch the Root-Item
    $query_option = isset($query['option']) ? $query['option'] : null;
    $query_view = isset($query['view']) ? $query['view'] : null;
    if ($query_option == 'com_magebridge' && $query_view == 'root' && !empty($query['Itemid'])) {
        $root_item = false;
        $root_item_id = false;
    } else {
        $root_item = MageBridgeUrlHelper::getRootItem();
        $root_item_id = $root_item && $root_item->id > 0 ? $root_item->id : false;
    }
    // Set a default empty view
    if (!isset($query['view'])) {
        $query['view'] = null;
    }
    // Reset fake views (used by JCE editor)
    if (in_array($query['view'], array('product', 'category'))) {
        $query['view'] = 'root';
    }
    // If there is a root-item (and therefor "use_rootmenu" is enabled), see if we need to replace the current URL with the root-items URL
    if ($root_item_id > 0) {
        // If there is a root-view or when "enforce_rootmenu" is enabled, reset the Itemid to the Root Menu-Item
        if ($query['view'] == 'root' || MageBridgeUrlHelper::enforceRootMenu()) {
            $query['Itemid'] = $root_item_id;
        }
        // Build the Magento request based upon the current Menu-Item
        if (!empty($current_item)) {
            // Get data from the current Menu-Item
            $cparams = YireoHelper::toRegistry($current_item->params);
            $cquery = $current_item->query;
            // Complete the Magento request if it is still empty
            if (empty($query['request']) && $query['Itemid'] == $root_item_id) {
                // Determine the request if set in the $query['link']
                if (empty($cquery['request'])) {
                    parse_str(preg_replace('/^index.php\\?/', '', $current_item->link), $link);
                    if (!empty($link['request'])) {
                        $cquery['request'] = $link['request'];
                    }
                }
                // Use the MVC-layout to determine the request
                if (!empty($query['layout'])) {
                    $query['request'] = MageBridgeUrlHelper::getLayoutUrl($query['layout']);
                    // Use the MVC-layout plus the current request to determine the request (f.i. configured Menu-Items)
                } else {
                    if (!empty($cquery['layout'])) {
                        $query['request'] = MageBridgeUrlHelper::getLayoutUrl($cquery['layout'], $cquery['request']);
                        // Use the Menu-Item request as Magento request
                    } else {
                        if (!empty($cquery['request'])) {
                            $query['request'] = $cquery['request'];
                            // Use the Menu-Item parameter as Magento request
                        } else {
                            if ($cparams->get('request') != '') {
                                $query['request'] = $cparams->get('request');
                                // Obsolete?
                                //} else if ($current_item->id != $root_item_id) {
                                //	$query['request'] = $current_item->route;
                            }
                        }
                    }
                }
            }
            if (isset($query['request']) && is_numeric($query['request']) && !empty($query['layout'])) {
                $query['request'] = MageBridgeUrlHelper::getLayoutUrl($query['layout'], $query['request']);
            }
            // Enforce the Itemid of the MageBridge Root upon the current route
            if (MageBridgeUrlHelper::enforceRootMenu() && !in_array($root_item_id, $current_item->tree)) {
                $query['Itemid'] = $root_item_id;
                $query['view'] = 'root';
                // If the request is not empty, set the route to the MageBridge Root
            } else {
                if (!empty($query['request'])) {
                    $query['Itemid'] = $root_item_id;
                }
            }
            // If there is no current item, assume to apply the Itemid of the MageBridge Root
        } else {
            $query['Itemid'] = $root_item_id;
        }
    }
    // Add the request as only segment
    if (!empty($query['request']) && !empty($query['Itemid']) && $query['Itemid'] == $root_item_id) {
        $segments[] = $query['request'];
    } else {
        if (!empty($query['request']) && (empty($root_item_id) && $query['view'] == 'root')) {
            $segments[] = $query['request'];
        }
    }
    // Unset an Itemid that does not make sense
    if (isset($query['Itemid']) && $query['Itemid'] == 0) {
        unset($query['Itemid']);
    }
    // Unset all unneeded query-parts because they should be now either segmented or referenced from the Itemid
    $unset_elements = array('view', 'task', 'request', 'layout', 'format', 'SID', 'language', 'id');
    foreach ($unset_elements as $u) {
        unset($query[$u]);
    }
    // Return the segments
    return $segments;
}
Пример #4
0
 /**
  * Method to display the requested view
  */
 public function display($tpl = null)
 {
     // Load the bridge
     $bridge = MageBridgeModelBridge::getInstance();
     // Load the parameters
     $layout = $this->getLayout();
     $params = MageBridgeHelper::getParams();
     // Set the request based upon the choosen category
     $request = $params->get('request', false) ? $params->get('request') : MageBridgeUrlHelper::getRequest();
     $prefix = preg_replace('/\\?(.*)/', '', $request);
     $suffix = preg_replace('/(.*)\\?/', '', $request);
     // Check if this a non-URL-optimized request
     if (is_numeric($prefix)) {
         $request = MageBridgeUrlHelper::getLayoutUrl($layout, $prefix);
     } else {
         // Determine the suffix
         if ($layout == 'product') {
             $suffix = $bridge->getSessionData('catalog/seo/product_url_suffix');
         } else {
             if ($layout == 'category') {
                 $suffix = $bridge->getSessionData('catalog/seo/category_url_suffix');
             }
         }
         // Add the suffix, if this is set in the Magento configuration
         if (!empty($suffix) && !preg_match('/' . $suffix . '$/', $request)) {
             $request .= $suffix;
         }
     }
     // Add the qty parameter
     $qty = JFactory::getApplication()->input->getInt('qty');
     if (!empty($qty)) {
         $request .= 'qty/' . $qty . '/';
     }
     // Check for the redirect parameter
     $redirect = $this->input->getString('redirect');
     if ($layout == 'addtocart' && empty($redirect)) {
         $redirect = 'checkout/cart';
     }
     // Add the redirect parameter
     if (!empty($redirect)) {
         $redirect = MageBridgeUrlHelper::route($redirect);
         if (!empty($redirect)) {
             $request .= 'uenc/' . MageBridgeEncryptionHelper::base64_encode($redirect) . '/';
         }
         $form_key = MageBridgeModelBridge::getInstance()->getSessionData('form_key');
         if (!empty($form_key)) {
             $request .= 'form_key/' . $form_key;
         }
     }
     // Add the mode (for catalog)
     $mode = $params->get('mode');
     if (!empty($mode)) {
         $request .= '?mode=' . $mode;
     }
     // Set the request in the bridge and wait for the response
     $this->setRequest($request);
     // Reuse this request to set the Canonical URL
     if (MagebridgeModelConfig::load('enable_canonical') == 1) {
         $uri = MageBridgeUrlHelper::route($request);
         $document = JFactory::getDocument();
         $document->setMetaData('canonical', $uri);
     }
     // Set which block to display
     $this->setBlock('content');
     parent::display($tpl);
 }