/** * Build method for URLs * This method is meant to transform the query parameters into a more human * readable form. It is only executed when SEF mode is switched on. * * @param array &$query An array of URL arguments * * @return array The URL arguments to use to assemble the subsequent URL. * * @since 3.3 */ public function build(&$query) { //error_log("IN AkrecipesRouter::build query == " . print_r($query,true)); // $e = new Exception() ; // //error_log($e->getTraceAsString()); $segments = array(); $view = null; $mView = null; $id = null; $mId = null; $menuItem = null; if ($query['option'] != 'com_akrecipes') { return $segments; } // We need a menu item. Either the one specified in the query, or the current active one if none specified if (empty($query['Itemid'])) { $menuItem = $this->menu->getActive(); $menuItemGiven = false; } else { $menuItem = $this->menu->getItem($query['Itemid']); $menuItemGiven = true; } // Check again if ($menuItemGiven && isset($menuItem) && $menuItem->component != 'com_akrecipes') { $menuItemGiven = false; unset($query['Itemid']); } $mView = empty($menuItem->query['view']) ? null : $menuItem->query['view']; $mId = empty($menuItem->query['id']) ? null : $menuItem->query['id']; if (is_array($mId)) { JArrayHelper::toInteger($mId); } if (!isset($query['view'])) { return $segments; } // Are we dealing with an article or category that is attached to a menu item? if ($menuItem instanceof stdClass && $menuItem->query['view'] == $query['view'] && isset($query['id']) && $menuItem->query['id'] == (int) $query['id']) { unset($query['view']); if (isset($query['catid'])) { unset($query['catid']); } if (isset($query['layout'])) { unset($query['layout']); } unset($query['id']); return $segments; } $view = $query['view']; unset($query['view']); if (!$menuItemGiven && $view != 'recipe') { $segments[] = $view; } //$model = AkrecipesFrontendHelper::getModel($view); if (isset($query['id'])) { $id = $query['id']; unset($query['id']); } else { $app = JFactory::getApplication(); $id = $app->input->getInt('id'); } // empty id , no SEF to be done. just return if (empty($id) or is_null($id)) { return $segments; } switch ($view) { case 'recipes': // category view $categories = JCategories::getInstance('Akrecipes'); $category = $categories->get($id); if (is_null($category)) { return $segments; } $catPath = $category->getPath(); if (is_array($catPath)) { foreach ($catPath as $key => $value) { list($id, $path) = explode(':', $value, 2); $segments[] = $path; } } unset($query['task']); unset($query['layout']); break; case 'recipe': // $model = AkrecipesFrontendHelper::getModel($view); // if ( $model !== null) { // $item = $model->getData($id); // $alias = $model->getAliasFieldNameByView($view); // $segments[] = $item->$alias; // unset($query['task']); // unset($query['catid']) ; // } if ($id) { $alias = AkrecipesFrontendHelper::getItemAlias($id); $segments[] = $alias; unset($query['task']); unset($query['catid']); } break; case 'recipesbyuser': $user = JFactory::getUser($id); $segments[] = 'author'; $segments[] = str_replace(' ', '-', strtolower($user->name)); unset($query['task']); unset($query['layout']); break; case 'contests': $segments[] = 'contests'; unset($query['task']); unset($query['layout']); unset($query['Itemid']); break; case 'contest': $segments[] = 'contests'; // $model = AkrecipesFrontendHelper::getModel($view); // if ( $model !== null) { // $item = $model->getData($id); // $alias = $model->getAliasFieldNameByView($view); // $segments[] = $item->$alias; // unset($query['task']); // unset($query['id']) ; // } if ($id) { $alias = AkrecipesFrontendHelper::getItemAlias($id, 'contests'); $segments[] = $alias; unset($query['task']); unset($query['catid']); } break; case 'brands': $segments[] = 'brands'; unset($query['task']); unset($query['layout']); unset($query['Itemid']); break; case 'brand': $segments[] = 'brands'; // $model = AkrecipesFrontendHelper::getModel($view); // if ( $model !== null) { // $item = $model->getData($id); // //$alias = $model->getAliasFieldNameByView($view); // $segments[] = $item->alias; // unset($query['task']); // unset($query['id']) ; // } if ($id) { $alias = AkrecipesFrontendHelper::getItemAlias($id, 'brands'); $segments[] = $alias; unset($query['task']); unset($query['catid']); } break; default: break; } //error_log("segments --> " . print_r($segments,true)); return $segments; }