/** * @param array A named array * @return array */ function JblanceBuildRoute(&$query) { $segments = array(); $db = JFactory::getDbo(); $task = null; //$segments[0] would either be view or task only. Both are not set at once. if (isset($query['view'])) { $segments[] = $query['view']; unset($query['view']); } else { if (isset($query['task'])) { $segments[] = $query['task']; $task = $query['task']; unset($query['task']); } } $layout = ''; //$segments[1] would be layout if (isset($query['layout'])) { $segments[] = $query['layout']; $layout = $query['layout']; unset($query['layout']); } //$segments[2] would be id if (isset($query['id'])) { $id = $query['id']; $q = null; switch ($layout) { case 'detailproject': case 'editproject': case 'placebid': case 'pickuser': case 'inviteuser': $q = "SELECT project_title FROM #__jblance_project WHERE id=" . $db->quote($id); break; case 'viewprofile': $q = "SELECT username FROM #__users WHERE id=" . $db->quote($id); break; case 'viewservice': case 'editservice': $q = "SELECT service_title from #__jblance_service where id=" . $db->quote($id); break; } if (!empty($q)) { $db->setQuery($q); $title = $db->loadResult(); if (!empty($title)) { $title = JblanceHelper::parseTitle($title); $segments[] = !empty($title) ? $id . '-' . $title : $id; } else { $segments[] = $query['id']; } } else { $segments[] = $query['id']; } unset($query['id']); } return $segments; }