/** * Mostramos listado de fotos. * @param int $pagina Número de página a mostrar. */ public function action_index($pagina) { // Asignamos el título. $this->template->assign('title', 'Fotos'); // Cargamos la vista. $view = View::factory('foto/index'); // Cantidad de elementos por pagina. $model_configuracion = new Model_Configuracion(); $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20); // Formato de la página. $pagina = (int) $pagina > 0 ? (int) $pagina : 1; // Cargamos el listado de fotos. $model_fotos = new Model_Foto(); $fotos = $model_fotos->obtener_ultimas($pagina, $cantidad_por_pagina); // Verifivo validez de la pagina. if (count($fotos) == 0 && $pagina != 1) { Request::redirect('/foto/'); } // Paginación. $paginador = new Paginator($model_fotos->cantidad(Model_Foto::ESTADO_ACTIVA), $cantidad_por_pagina); $view->assign('paginacion', $paginador->get_view($pagina, '/foto/index/%d')); unset($paginador); // Procesamos información relevante. foreach ($fotos as $key => $value) { $d = $value->as_array(); $d['descripcion'] = Decoda::procesar($d['descripcion']); $d['categoria'] = $value->categoria()->as_array(); $d['votos'] = $value->votos(); $d['favoritos'] = $value->favoritos(); $d['comentarios'] = $value->cantidad_comentarios(Model_Foto::ESTADO_ACTIVA); $d['usuario'] = $value->usuario()->as_array(); // Acciones. if (Usuario::is_login()) { if (Usuario::$usuario_id == $value->usuario_id) { $d['favorito'] = TRUE; $d['voto'] = TRUE; $d['denunciar'] = FALSE; } else { $d['favorito'] = $value->es_favorito(Usuario::$usuario_id); $d['voto'] = !Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VOTAR) || $value->ya_voto(Usuario::$usuario_id); $d['denunciar'] = TRUE; } } else { $d['favorito'] = TRUE; $d['voto'] = TRUE; $d['denunciar'] = FALSE; } $fotos[$key] = $d; } $view->assign('fotos', $fotos); unset($fotos); // Menu. $this->template->assign('master_bar', parent::base_menu('fotos')); $this->template->assign('top_bar', $this->submenu('index')); // Asignamos la vista. $this->template->assign('contenido', $view->parse()); }
/** * Portada del sitio. * @param int $pagina Número de página para lo últimos posts. */ public function action_index($pagina) { // Cargamos la portada. $portada = View::factory('home/index'); // Seteo el menu. $this->template->assign('master_bar', parent::base_menu('posts')); $this->template->assign('top_bar', self::submenu('inicio')); // Cargamos datos de posts. $model_post = new Model_Post(); // Cantidad posts y comentarios en posts. $portada->assign('cantidad_posts', $model_post->cantidad()); $portada->assign('cantidad_comentarios_posts', $model_post->cantidad_comentarios()); // Cantidad de elementos por pagina. $model_configuracion = new Model_Configuracion(); $cantidad_por_pagina = $model_configuracion->get('elementos_pagina', 20); // Formato de la página. $pagina = (int) $pagina > 0 ? (int) $pagina : 1; if ($pagina == 1) { // Cargo fijos. $post_sticky = $model_post->sticky(); // Extendemos la información de los posts. foreach ($post_sticky as $k => $v) { $a = $v->as_array(); $a['usuario'] = $v->usuario()->as_array(); $a['puntos'] = $v->puntos(); $a['comentarios'] = $v->cantidad_comentarios(Model_Post_Comentario::ESTADO_VISIBLE); $a['categoria'] = $v->categoria()->as_array(); $post_sticky[$k] = $a; } // Seteo y limpio. $portada->assign('sticky', $post_sticky); unset($post_sticky); } // Ultimos posts $post_list = $model_post->obtener_ultimos($pagina, $cantidad_por_pagina); // Verifivo validez de la pagina. if (count($post_list) == 0 && $pagina != 1) { Request::redirect('/'); } // Paginación. $paginador = new Paginator($model_post->cantidad(Model_Post::ESTADO_ACTIVO), $cantidad_por_pagina); $portada->assign('paginacion', $paginador->get_view($pagina, '/home/index/%d')); unset($paginador); // Extendemos la información de los posts. foreach ($post_list as $k => $v) { $a = $v->as_array(); $a['usuario'] = $v->usuario()->as_array(); $a['puntos'] = $v->puntos(); $a['comentarios'] = $v->cantidad_comentarios(Model_Post_Comentario::ESTADO_VISIBLE); $a['categoria'] = $v->categoria()->as_array(); $post_list[$k] = $a; } $portada->assign('ultimos_posts', $post_list); unset($post_list); // Cargamos TOP posts. $post_top_list = $model_post->obtener_tops(); // Extendemos la información de los posts. foreach ($post_top_list as $k => $v) { $a = $v->as_array(); $a['puntos'] = $v->puntos(); $post_top_list[$k] = $a; } $portada->assign('top_posts', $post_top_list); unset($post_top_list, $model_post); // Cargamos últimos comentarios. $comentario_list = Model_Post_Comentario::obtener_ultimos(); // Extendemos la información de los comentarios. foreach ($comentario_list as $k => $v) { $a = $v->as_array(); $a['usuario'] = $v->usuario()->as_array(); $a['post'] = $v->post()->as_array(); $comentario_list[$k] = $a; } $portada->assign('ultimos_comentarios', $comentario_list); unset($comentario_list); // Cargamos top usuarios. $model_usuario = new Model_Usuario(); // Cantidad de usuarios $portada->assign('cantidad_usuarios', $model_usuario->cantidad()); $portada->assign('cantidad_usuarios_online', $model_usuario->cantidad_activos()); // Top de usuarios. $usuario_top_list = $model_usuario->obtener_tops(); // Extendemos la información de los usuarios. foreach ($usuario_top_list as $k => $v) { $a = $v->as_array(); $a['puntos'] = $v->cantidad_puntos(); $usuario_top_list[$k] = $a; } $portada->assign('usuario_top', $usuario_top_list); unset($usuario_top_list, $model_usuario); // Cargamos ultimas fotos. $model_foto = new Model_Foto(); $foto_list = $model_foto->obtener_ultimas(1, 1); // Extendemos la información de las fotos. foreach ($foto_list as $k => $v) { $foto_list[$k] = $v->as_array(); } $portada->assign('ultimas_fotos', $foto_list); unset($foto_list); // Cantidad fotos y comentarios en fotos. $portada->assign('cantidad_fotos', $model_foto->cantidad()); $portada->assign('cantidad_comentarios_fotos', $model_foto->cantidad_comentarios()); unset($model_foto); // Asignamos la vista a la plantilla base. $this->template->assign('contenido', $portada->parse()); }