Example #1
0
function DJCatalog2BuildRoute(&$query)
{
    $segments = array();
    $app = JFactory::getApplication();
    $menu = $app->getMenu('site');
    $params = JComponentHelper::getParams('com_djcatalog2');
    $component_views = array('items' => 'items', 'item' => 'item', 'producer' => 'producer', 'myitems' => 'myitems', 'itemform' => 'itemform', 'producers' => 'producers', 'cart' => 'cart', 'orders' => 'orders', 'order' => 'order', 'checkout' => 'checkout', 'query' => 'query');
    foreach ($component_views as $view_name => $seotag) {
        $alias = $params->get('seo_' . $view_name . '_view', $view_name);
        $alias = JApplication::stringURLSafe($alias);
        if (trim(str_replace('-', '', $alias)) != '') {
            $component_views[$view_name] = trim($alias);
        }
    }
    $default_menu = $menu->getDefault();
    $menuItem = null;
    if (empty($query['Itemid'])) {
        //JLog::add(' empty Itemid '.print_r($query, true));
        unset($query['Itemid']);
        $menuItem = $menu->getActive();
    } else {
        //JLog::add(' NOT empty Itemid '.print_r($query, true));
        $menuItem = $menu->getItem($query['Itemid']);
    }
    //JLog::add(' menu Item '.@$menuItem->component.' '.print_r(@$menuItem->query,true).' -----------------------');
    //$option = (empty($menuItem->component)) ? null : $menuItem->component;
    $mView = empty($menuItem->query['view']) ? null : $menuItem->query['view'];
    $mCatid = empty($menuItem->query['cid']) ? null : (int) $menuItem->query['cid'];
    $mProdid = empty($menuItem->query['pid']) ? null : (int) $menuItem->query['pid'];
    $mId = empty($menuItem->query['id']) ? null : (int) $menuItem->query['id'];
    $view = !empty($query['view']) ? $query['view'] : null;
    $cid = !empty($query['cid']) ? $query['cid'] : null;
    $pid = !empty($query['pid']) ? $query['pid'] : null;
    $id = !empty($query['id']) ? $query['id'] : null;
    $task = !empty($query['task']) ? $query['task'] : null;
    // JoomSEF bug workaround
    if (isset($query['start']) && isset($query['limitstart'])) {
        if ((int) $query['limitstart'] != (int) $query['start'] && (int) $query['start'] > 0) {
            // let's make it clear - 'limitstart' has higher priority than 'start' parameter,
            // however ARTIO JoomSEF doesn't seem to respect that.
            $query['start'] = $query['limitstart'];
            unset($query['limitstart']);
        }
    }
    // JoomSEF workaround - end
    //if ($view && $option == 'com_djcatalog2') {
    if ($view) {
        if ($view != $mView || empty($query['Itemid'])) {
            $segments[] = $view;
        }
        unset($query['view']);
        if ($view == 'item') {
            if ($view == $mView && intval($id) > 0 && intval($id) == $mId) {
                unset($query['id']);
                unset($query['cid']);
            } else {
                if (($mView == 'items' || $mView === null) && intval($id) > 0) {
                    if (intval($cid) != intval($mCatid)) {
                        $segments[] = (int) $cid == 0 ? 'all' : DJCatalogHelperRoute::formatAlias($cid);
                    }
                    $segments[] = DJCatalogHelperRoute::formatAlias($id);
                    unset($query['id']);
                    unset($query['cid']);
                }
            }
        }
        if ($view == 'items') {
            if ($cid === null) {
                $cid = '0';
            }
            if (intval($cid) != intval($mCatid)) {
                $segments[] = (int) $cid == 0 ? 'all' : DJCatalogHelperRoute::formatAlias($cid);
            } else {
                if ($menuItem->id == $default_menu->id && (int) $cid == 0 && (isset($query['cm']) || isset($query['ind']) || (int) $mProdid != (int) $pid)) {
                    $segments[] = 'all';
                }
            }
            unset($query['cid']);
            if (isset($query['pid']) && $query['pid'] === '' || intval($mProdid) == intval($pid)) {
                unset($query['pid']);
            }
        }
        if ($view == 'producer') {
            if (!($view == $mView && intval($pid) > 0 && intval($pid) == $mProdid) && $mView != 'producer') {
                $segments[] = DJCatalogHelperRoute::formatAlias($pid);
            }
            unset($query['pid']);
        }
        if ($view == 'itemform') {
            if (intval($id) > 0) {
                $segments[] = $id;
                unset($query['id']);
            }
        }
    }
    if (!empty($segments[0]) && array_key_exists($segments[0], $component_views)) {
        $segments[0] = $component_views[$segments[0]];
    }
    return $segments;
}