Exemple #1
0
 /**
  * Mostramos tops de posts.
  * @param string $categoria Categoria para filtar los tops de post.
  * @param int $periodo Período para filtar post.
  */
 public function action_index($categoria, $periodo)
 {
     // Cargamos la portada.
     $portada = View::factory('tops/index');
     // Seteo el menu.
     $this->template->assign('master_bar', parent::base_menu('tops'));
     $this->template->assign('top_bar', $this->submenu());
     // Cargo las categorias.
     $model_categorias = new Model_Categoria();
     // Seteo el listado en la vista.
     $portada->assign('categorias', $model_categorias->lista());
     // Obtengo la categoria por POST.
     //TODO: hacer una mejora con jQuery.
     if (isset($_POST['categoria'])) {
         $categoria = $_POST['categoria'];
     }
     // Verifico si existe la categoria.
     $categoria = trim($categoria) == '' ? NULL : trim($categoria);
     if ($categoria !== NULL && $categoria != 'todas') {
         if (!$model_categorias->load_by_seo($categoria)) {
             Request::redirect('/tops');
         } else {
             $categoria_id = $model_categorias->id;
             $categoria = $model_categorias->seo;
         }
     } else {
         $categoria = 'todas';
         $categoria_id = NULL;
     }
     // Seteo la categoria actual.
     $portada->assign('categoria', $categoria);
     // Obtengo el período.
     $periodo = (int) $periodo;
     // Verifico por un válido.
     if ($periodo != 0 && $periodo != 1 && $periodo != 2 && $periodo != 3 && $periodo != 4) {
         Request::redirect('/tops');
     }
     $portada->assign('periodo', $periodo);
     // Cargo modelo de posts.
     $model_post = new Model_Post();
     $portada->assign('puntos', $model_post->top_puntos($categoria_id, $periodo));
     $portada->assign('favoritos', $model_post->top_favoritos($categoria_id, $periodo));
     $portada->assign('seguidores', $model_post->top_seguidores($categoria_id, $periodo));
     $portada->assign('comentarios', $model_post->top_comentarios($categoria_id, $periodo));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $portada->parse());
 }