Example #1
0
function EasyDiscussBuildRoute(&$query)
{
    $segments = array();
    $config = DiscussHelper::getConfig();
    if (isset($query['view'])) {
        switch ($query['view']) {
            case 'post':
                // We don't want to include the view for the entry links.
                unset($query['view']);
                if (isset($query['id'])) {
                    $segments[] = DiscussRouter::getPostAlias($query['id']);
                    unset($query['id']);
                }
                if (isset($query['layout'])) {
                    $segments[] = $query['layout'];
                    unset($query['layout']);
                }
                break;
            case 'profile':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['layout'])) {
                    $segments[] = $query['layout'];
                    unset($query['layout']);
                }
                if (isset($query['id'])) {
                    $segments[] = DiscussRouter::getUserAlias($query['id']);
                    unset($query['id']);
                }
                if (isset($query['category_id'])) {
                    $aliases = DiscussRouter::getCategoryAliases($query['category_id']);
                    foreach ($aliases as $alias) {
                        $segments[] = $alias;
                    }
                    unset($query['category_id']);
                }
                if (isset($query['viewtype'])) {
                    $segments[] = $query['viewtype'];
                    unset($query['viewtype']);
                }
                break;
            case 'index':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['category_id'])) {
                    $aliases = DiscussRouter::getCategoryAliases($query['category_id']);
                    foreach ($aliases as $alias) {
                        $segments[] = $alias;
                    }
                    unset($query['category_id']);
                }
                break;
            case 'ask':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['category'])) {
                    $aliases = DiscussRouter::getCategoryAliases($query['category']);
                    foreach ($aliases as $alias) {
                        $segments[] = $alias;
                    }
                    unset($query['category']);
                }
                break;
            case 'points':
                $segments[] = $query['view'];
                unset($query['view']);
                $segments[] = $query['layout'];
                unset($query['layout']);
                $segments[] = DiscussRouter::getUserAlias($query['id']);
                unset($query['id']);
                break;
            case 'tags':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['id'])) {
                    $segments[] = DiscussRouter::getTagAlias($query['id']);
                    unset($query['id']);
                }
                break;
            case 'users':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['sorting'])) {
                    $segments[] = 'latest';
                    unset($query['sorting']);
                }
                break;
            case 'badges':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['id'])) {
                    $segments[] = DiscussRouter::getAlias('badges', $query['id']);
                    unset($query['id']);
                    unset($query['layout']);
                }
                if (isset($query['layout'])) {
                    $segments[] = $query['layout'];
                    unset($query['layout']);
                }
                break;
            case 'favourites':
                // We don't want to include the view for the entry links.
                $segments[] = $query['view'];
                unset($query['view']);
                break;
            case 'categories':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['layout'])) {
                    $segments[] = $query['layout'];
                    unset($query['layout']);
                }
                if (isset($query['category_id'])) {
                    $segments[] = DiscussRouter::getAlias('category', $query['category_id']);
                    unset($query['category_id']);
                }
                break;
            case 'conversation':
                $segments[] = $query['view'];
                unset($query['view']);
                if (isset($query['layout'])) {
                    $segments[] = $query['layout'];
                    unset($query['layout']);
                }
                break;
            default:
                $segments[] = $query['view'];
                unset($query['view']);
        }
    }
    if (isset($query['filter'])) {
        $segments[] = $query['filter'];
        unset($query['filter']);
    }
    if (isset($query['sort'])) {
        $segments[] = $query['sort'];
        unset($query['sort']);
    }
    if (!isset($query['Itemid'])) {
        $query['Itemid'] = DiscussRouter::getItemId();
    }
    return $segments;
}
}
if (empty($Itemid)) {
    $Itemid = DiscussRouter::getItemId($view);
    shAddToGETVarsList('Itemid', $Itemid);
}
$name = shGetComponentPrefix($option);
$name = empty($name) ? getMenuTitle($option, $task, $Itemid, null, $shLangName) : $name;
$name = empty($name) || $name == '/' ? 'discuss' : $name;
$title[] = $name;
if (isset($view) && !empty($view)) {
    // Translate the view
    $title[] = JText::_('COM_EASYDISCUSS_SH404_VIEW_' . JString::strtoupper($view));
    shRemoveFromGETVarsList('view');
}
if ($view == 'categories' && !empty($category_id)) {
    $title[] = DiscussRouter::getAlias('category', $category_id);
    shRemoveFromGETVarsList('category_id');
    // Remove the view since we don't want to set the view.
    unset($layout);
    shRemoveFromGETVarsList('layout');
}
if (!empty($id)) {
    if (!empty($permalink)) {
        $title[] = $permalink;
        shRemoveFromGETVarsList('id');
    }
}
// Category id may be category_id=0 in index view.
if (isset($category_id) && $category_id == 0) {
    shRemoveFromGETVarsList('category_id');
}