示例#1
0
/**
 * @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;
}