function EasyBlogParseRoute(&$segments) { JFactory::getLanguage()->load('com_easyblog', JPATH_ROOT); $vars = array(); $menu = JFactory::getApplication()->getMenu(); $item = $menu->getActive(); $config = EasyBlogHelper::getConfig(); //feed view if (isset($segments[1])) { if ($segments[1] == 'rss' || $segments[1] == 'atom') { $vars['view'] = $segments[0]; unset($segments); return $vars; } } // If user chooses to use the simple sef setup, we need to add the proper view if ($config->get('main_sef') == 'simple' && count($segments) == 1) { $files = JFolder::folders(JPATH_ROOT . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_easyblog' . DIRECTORY_SEPARATOR . 'views'); $views = array(); foreach ($files as $file) { $views[] = EasyBlogSEFTranslation::_($file); } if (!in_array($segments[0], $views)) { array_unshift($segments, EasyBlogSEFTranslation::_('entry')); } } if ($config->get('main_sef') == 'simple' && count($segments) == 2 && $segments[0] == 'categories') { array_push($segments, EasyBlogSEFTranslation::_('listings')); } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('entry')) { $count = count($segments); $entryId = ''; if ($config->get('main_sef_unicode')) { // perform manual split on the string. $permalinkSegment = $segments[$count - 1]; $permalinkArr = explode(':', $permalinkSegment); $entryId = $permalinkArr[0]; } else { $table = EasyBlogHelper::getTable('Blog', 'Table'); $table->load($segments[$count - 1], true); $entryId = $table->id; } if ($entryId) { $vars['id'] = $entryId; } $vars['view'] = 'entry'; } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('archive')) { $vars['view'] = 'archive'; $count = count($segments); $totalSegments = $count - 1; if ($totalSegments >= 1) { $indexSegment = 1; if ($segments[1] == 'calendar') { $vars['layout'] = 'calendar'; $indexSegment = 2; } // First segment is always the year if (isset($segments[$indexSegment])) { $vars['archiveyear'] = $segments[$indexSegment]; } // Second segment is always the month if (isset($segments[$indexSegment + 1])) { $vars['archivemonth'] = $segments[$indexSegment + 1]; } // Third segment is always the day if (isset($segments[$indexSegment + 2])) { $vars['archiveday'] = $segments[$indexSegment + 2]; } } } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('categories')) { $count = count($segments); if ($count > 1) { $categoryId = ''; if ($config->get('main_sef_unicode')) { $segmentIndex = $count - 1; if ($config->get('main_sef') == 'simple') { $segmentIndex = 1; } // perform manual split on the string. $permalinkSegment = $segments[$segmentIndex]; $permalinkArr = explode(':', $permalinkSegment); $categoryId = $permalinkArr[0]; } $segments = EasyBlogRouter::_encodeSegments($segments); if (empty($categoryId)) { $table = EasyBlogHelper::getTable('Category', 'Table'); $permalink = $segments[1]; $table->load($permalink, true); if (!$table->id) { $table->load($segments[$count - 1], true); } $categoryId = $table->id; } $vars['id'] = $categoryId; $vars['layout'] = 'listings'; } $vars['view'] = 'categories'; } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('tags')) { $count = count($segments); if ($count > 1) { $tagId = ''; if ($config->get('main_sef_unicode')) { // perform manual split on the string. $permalinkSegment = $segments[$count - 1]; $permalinkArr = explode(':', $permalinkSegment); $tagId = $permalinkArr[0]; } $segments = EasyBlogRouter::_encodeSegments($segments); if (empty($tagId)) { $table = EasyBlogHelper::getTable('Tag', 'Table'); $table->load($segments[$count - 1], true); $tagId = $table->id; } $vars['id'] = $tagId; $vars['layout'] = 'tag'; } $vars['view'] = 'tags'; } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('blogger')) { $count = count($segments); if ($count > 1) { $user = 0; $rawSegments = $segments; $segments = EasyBlogRouter::_encodeSegments($segments); if ($config->get('main_sef_unicode')) { // perform manual split on the string. if (isset($segments[2]) && $segments[2] == EasyBlogSEFTranslation::_('statistic')) { $permalinkSegment = $rawSegments[1]; } else { $permalinkSegment = $rawSegments[$count - 1]; } $permalinkArr = explode(':', $permalinkSegment); $bloggerId = $permalinkArr[0]; } else { if (isset($segments[2]) && $segments[2] == EasyBlogSEFTranslation::_('statistic')) { $permalink = $segments[1]; } else { $permalink = $segments[$count - 1]; } if ($id = EasyBlogHelper::getUserId($permalink)) { $user = JFactory::getUser($id); } if (!$user) { // For usernames with spaces, we might need to replace with dashes since SEF will rewrite it. $id = EasyBlogHelper::getUserId(JString::str_ireplace('-', ' ', $permalink)); $user = JFactory::getUser($id); } if (!$id) { // For usernames with spaces, we might need to replace with dashes since SEF will rewrite it. $id = EasyBlogHelper::getUserId(JString::str_ireplace('-', '_', $permalink)); $user = JFactory::getUser($id); } $bloggerId = $user->id; } $vars['id'] = $bloggerId; if ($count > 2) { if ($segments[2] == EasyBlogSEFTranslation::_('statistic')) { $vars['layout'] = 'statistic'; if ($count == 5) { if (isset($segments[3])) { $vars['stat'] = ''; switch (EasyBlogSEFTranslation::_($segments[3])) { case EasyBlogSEFTranslation::_('category'): if ($config->get('main_sef_unicode')) { // perform manual split on the string. $permalinkSegment = $rawSegments[4]; $permalinkArr = explode(':', $permalinkSegment); $categoryId = $permalinkArr[0]; } else { $table = EasyBlogHelper::getTable('Category', 'Table'); $table->load($segments[4], true); $categoryId = $table->id; } $vars['stat'] = 'category'; $vars['catid'] = $categoryId; break; case EasyBlogSEFTranslation::_('tag'): if ($config->get('main_sef_unicode')) { // perform manual split on the string. $permalinkSegment = $segments[4]; $permalinkArr = explode(':', $permalinkSegment); $tagId = $permalinkArr[0]; } else { $table = EasyBlogHelper::getTable('Tag', 'Table'); $table->load($segments[4], true); $tagId = $table->id; } $vars['stat'] = 'tag'; $vars['tagid'] = $tagId; break; default: // do nothing. } } } } else { $vars['layout'] = 'listings'; } } } $vars['view'] = 'blogger'; } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('dashboard')) { $count = count($segments); if ($count > 1) { switch (EasyBlogSEFTranslation::_($segments[1])) { case EasyBlogSEFTranslation::_('write'): $vars['layout'] = 'write'; break; case EasyBlogSEFTranslation::_('profile'): $vars['layout'] = 'profile'; break; case EasyBlogSEFTranslation::_('drafts'): $vars['layout'] = 'drafts'; break; case EasyBlogSEFTranslation::_('entries'): $vars['layout'] = 'entries'; break; case EasyBlogSEFTranslation::_('comments'): $vars['layout'] = 'comments'; break; case EasyBlogSEFTranslation::_('categories'): $vars['layout'] = 'categories'; break; case EasyBlogSEFTranslation::_('listCategories'): $vars['layout'] = 'listCategories'; break; case EasyBlogSEFTranslation::_('category'): $vars['layout'] = 'category'; break; case EasyBlogSEFTranslation::_('tags'): $vars['layout'] = 'tags'; break; case EasyBlogSEFTranslation::_('review'): $vars['layout'] = 'review'; break; case EasyBlogSEFTranslation::_('pending'): $vars['layout'] = 'pending'; break; case EasyBlogSEFTranslation::_('teamblogs'): $vars['layout'] = 'teamblogs'; break; case EasyBlogSEFTranslation::_('microblog'): $vars['layout'] = 'microblog'; break; } if (isset($vars['layout']) && $vars['layout'] == 'entries') { if (count($segments) == 3) { if (isset($segments[2])) { $vars['postType'] = $segments[2]; } } if (count($segments) == 4) { if (isset($segments[2])) { $vars['filter'] = $segments[2]; } if (isset($segments[3])) { $vars['postType'] = $segments[3]; } } } else { if (isset($segments[2])) { $vars['filter'] = $segments[2]; } } } $vars['view'] = 'dashboard'; } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('teamblog')) { $count = count($segments); if ($count > 1) { $rawSegments = $segments; $segments = EasyBlogRouter::_encodeSegments($segments); if ($config->get('main_sef_unicode')) { // perform manual split on the string. if (isset($segments[2]) && $segments[2] == EasyBlogSEFTranslation::_('statistic')) { $permalinkSegment = $rawSegments[1]; } else { $permalinkSegment = $rawSegments[$count - 1]; } $permalinkArr = explode(':', $permalinkSegment); $teamId = $permalinkArr[0]; } else { if (isset($segments[2]) && $segments[2] == EasyBlogSEFTranslation::_('statistic')) { $permalink = $segments[1]; } else { $permalink = $segments[$count - 1]; } $table = EasyBlogHelper::getTable('TeamBlog', 'Table'); $loaded = $table->load($permalink, true); if (!$loaded) { $name = $segments[$count - 1]; $name = JString::str_ireplace(':', ' ', $name); $name = JString::str_ireplace('-', ' ', $name); $table->load($name, true); } $teamId = $table->id; } $vars['id'] = $teamId; if (isset($segments[2]) && $segments[2] == EasyBlogSEFTranslation::_('statistic')) { $vars['layout'] = EasyBlogSEFTranslation::_($segments[2]); if ($count == 5) { if (isset($segments[3])) { $vars['stat'] = EasyBlogSEFTranslation::_($segments[3]); switch (EasyBlogSEFTranslation::_($segments[3])) { case EasyBlogSEFTranslation::_('category'): if ($config->get('main_sef_unicode')) { // perform manual split on the string. $permalinkSegment = $rawSegments[4]; $permalinkArr = explode(':', $permalinkSegment); $categoryId = $permalinkArr[0]; } else { $table = EasyBlogHelper::getTable('Category', 'Table'); $table->load($segments[4], true); $categoryId = $table->id; } $vars['catid'] = $categoryId; break; case EasyBlogSEFTranslation::_('tag'): if ($config->get('main_sef_unicode')) { // perform manual split on the string. $permalinkSegment = $segments[4]; $permalinkArr = explode(':', $permalinkSegment); $tagId = $permalinkArr[0]; } else { $table = EasyBlogHelper::getTable('Tag', 'Table'); $table->load($segments[4], true); $tagId = $table->id; } $vars['tagid'] = $tagId; break; default: // do nothing. } } } } else { $vars['layout'] = 'listings'; } } $vars['view'] = 'teamblog'; } if (isset($segments[0]) && $segments[0] == EasyBlogSEFTranslation::_('search')) { $count = count($segments); if ($count == 2) { if ($segments[1] == "parsequery") { $vars['layout'] = EasyBlogSEFTranslation::_($segments[1]); } else { $vars['query'] = $segments[1]; } } $vars['view'] = 'search'; } $count = count($segments); if ($count == 1) { switch (EasyBlogSEFTranslation::_($segments[0])) { case EasyBlogSEFTranslation::_('latest'): $vars['view'] = 'latest'; break; case EasyBlogSEFTranslation::_('featured'): $vars['view'] = 'featured'; break; case EasyBlogSEFTranslation::_('images'): $vars['view'] = 'images'; break; case EasyBlogSEFTranslation::_('login'): $vars['view'] = 'login'; break; case EasyBlogSEFTranslation::_('myblog'): $vars['view'] = 'myblog'; break; case EasyBlogSEFTranslation::_('ratings'): $vars['view'] = 'ratings'; break; case EasyBlogSEFTranslation::_('subscription'): $vars['view'] = 'subscription'; break; case EasyBlogSEFTranslation::_('trackback'): $vars['view'] = 'trackback'; break; } } return $vars; }