示例#1
0
 /**
  * Parse method for URLs
  * This method is meant to transform the human readable URL back into
  * query parameters. It is only executed when SEF mode is switched on.
  *
  * @param   array  &$segments  The segments of the URL to parse.
  *
  * @return  array  The URL attributes to be used by the application.
  *
  * @since   3.3
  */
 public function parse(&$segments)
 {
     error_log("IN AkrecipesRouter::parse segments == " . print_r($segments, true));
     $vars = array();
     $total = count($segments);
     // if segment is 1, then it is a recipe
     if ($total == 1) {
         // check if it is contests or brands list
         switch ($segments[0]) {
             case 'contests':
                 $vars['view'] = 'contests';
                 break;
             case 'brands':
                 $vars['view'] = 'brands';
                 break;
             default:
                 $vars['view'] = 'recipe';
                 // $model        = AkrecipesFrontendHelper::getModel($vars['view']);
                 // $id = $model->getItemIdByAlias($segments[0]);
                 $id = AkrecipesFrontendHelper::getItemIdByAlias($segments[0], 'recipe');
                 $vars['id'] = $id;
                 break;
         }
         return $vars;
     } elseif ($total == 2) {
         // check if it is a contest/brand page. If not assume it is category
         $iscat = false;
         $table_name = null;
         switch ($segments[0]) {
             case 'contests':
                 $vars['view'] = 'contest';
                 $table_name = 'contests';
                 break;
             case 'brands':
                 $vars['view'] = 'brand';
                 $table_name = 'brands';
                 break;
             case 'author':
                 $vars['view'] = 'recipesbyuser';
                 $table_name = 'users';
                 break;
             default:
                 $iscat = true;
                 break;
         }
         if (!$iscat) {
             // $model        = AkrecipesFrontendHelper::getModel($vars['view']);
             // $id = $model->getItemIdByAlias($segments[1]);
             $id = AkrecipesFrontendHelper::getItemIdByAlias($segments[1], $table_name);
             $vars['id'] = $id;
             return $vars;
         }
     }
     // reached here, assume it is a category
     // We get the category id from the menu item and search from there
     $id = $item->query['id'];
     $category = JCategories::getInstance('Akrecipes')->get($id);
     if (!$category) {
         JError::raiseError(404, JText::_('COM_CONTENT_ERROR_PARENT_CATEGORY_NOT_FOUND'));
         return $vars;
     }
     $categories = $category->getChildren();
     $vars['catid'] = $id;
     $vars['id'] = $id;
     $vars['layout'] = 'blog';
     $found = 0;
     foreach ($segments as $segment) {
         $segment = str_replace(':', '-', $segment);
         foreach ($categories as $category) {
             if ($category->alias == $segment) {
                 $vars['id'] = $category->id;
                 $vars['view'] = 'recipes';
                 $categories = $category->getChildren();
                 $found = 1;
                 break;
             }
         }
     }
     return $vars;
 }