示例#1
0
文件: buscador.php 项目: 4bs4/marifa
 /**
  * Post con las mismas etiquetas que el selecionado.
  * @param int $post ID del post a mostrar relacionados.
  * @param int $pagina Número de página a mostrar.
  */
 public function action_relacionados($post, $pagina)
 {
     // Transformamos a entero.
     $post = (int) $post;
     // Cargamos el post.
     $model_post = new Model_Post($post);
     // Verificamos existencia.
     if (!$model_post->existe()) {
         Request::redirect('/buscador/q/');
     }
     // Cargamos la vista.
     $vista = View::factory('buscador/index');
     // Formato de la página.
     $pagina = (int) $pagina > 0 ? (int) $pagina : 1;
     // Cantidad de elementos por pagina.
     $model_configuracion = new Model_Configuracion();
     $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20);
     // Realizamos la busqueda.
     list($listado, $cantidad) = $model_post->buscar_relacionados($pagina, $cantidad_por_pagina);
     // Verifivo que la página seleccionada sea válida.
     if (count($listado) == 0 && $pagina != 1) {
         Request::redirect('/buscador/relacionados/' . $post);
     }
     // Paginación.
     $paginador = new Paginator($cantidad, $cantidad_por_pagina);
     $vista->assign('paginacion', $paginador->get_view($pagina, "/buscador/relacionados/{$post}/%s/"));
     unset($paginador);
     $vista->assign('total', $cantidad);
     // Procesamos listado de post.
     foreach ($listado as $k => $v) {
         $a = $v->as_array();
         $a['usuario'] = $v->usuario()->as_array();
         $a['puntos'] = $v->puntos();
         $a['comentarios'] = $v->cantidad_comentarios();
         $a['categoria'] = $v->categoria()->as_array();
         $listado[$k] = $a;
     }
     $vista->assign('resultados', $listado);
     unset($listado);
     $vista->assign('q', '');
     // Vista de relacionado.
     $view_relacionado = View::factory('buscador/relacionado');
     $view_relacionado->assign('post', $model_post->as_array());
     $vista->assign('relacionado', $view_relacionado->parse());
     unset($view_relacionado);
     // Listado de categorias.
     $mc = new Model_Categoria();
     $vista->assign('categorias', $mc->lista());
     unset($mc);
     $vista->assign('categoria', 'todos');
     $vista->assign('usuario', '');
     // Menu.
     $this->template->assign('master_bar', parent::base_menu());
     $this->template->assign('top_bar', Controller_Home::submenu('buscador'));
     // Asignamos la vista.
     $this->template->assign('contenido', $vista->parse());
 }