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; }