/** * Mostramos una foto. * @param int $foto ID de la foto. */ public function action_ver($foto) { // Convertimos la foto a ID. $foto = (int) $foto; // Cargamos la foto. $model_foto = new Model_Foto($foto); // Verificamos exista. if (!is_array($model_foto->as_array())) { $_SESSION['flash_error'] = 'La foto a la que intentas acceder no está disponible.'; Request::redirect('/foto/'); } // Verifico el estado. if ($model_foto->usuario_id !== Usuario::$usuario_id && $model_foto->estado !== Model_Foto::ESTADO_ACTIVA && !Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_DESAPROBADO) && !Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_PAPELERA)) { $_SESSION['flash_error'] == 'La foto a la que intentas acceder no está disponible.'; Request::redirect('/foto/'); } // Asignamos el título. $this->template->assign('title', 'Foto - ' . $model_foto->as_object()->titulo); // Cargamos la vista. $view = View::factory('foto/ver'); // Mi id. $view->assign('me', Usuario::$usuario_id); // Informamos los permisos a la vista. $view->assign('permiso_borrar', Usuario::$usuario_id === $model_foto->usuario_id || Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_ELIMINAR)); $view->assign('permiso_editar', Usuario::$usuario_id === $model_foto->usuario_id || Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_EDITAR)); $view->assign('permiso_ocultar', Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_OCULTAR) || Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_DESAPROBADO) || Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_DENUNCIAS)); $view->assign('permiso_papelera', Usuario::$usuario_id === $model_foto->usuario_id); // Información del usuario dueño del post. $u_data = $model_foto->usuario()->as_array(); $u_data['seguidores'] = $model_foto->usuario()->cantidad_seguidores(); $u_data['posts'] = $model_foto->usuario()->cantidad_posts(); $u_data['comentarios'] = $model_foto->usuario()->cantidad_comentarios(); $u_data['puntos'] = $model_foto->usuario()->cantidad_puntos(); $view->assign('usuario', $u_data); unset($u_data); // Información de la foto. $ft = $model_foto->as_array(); $ft['descripcion'] = Decoda::procesar($ft['descripcion']); $ft['votos'] = (int) $model_foto->votos(); $ft['favoritos'] = (int) $model_foto->favoritos(); $view->assign('foto', $ft); unset($ft); if (!Usuario::is_login() || $model_foto->as_object()->usuario_id == Usuario::$usuario_id) { $view->assign('es_favorito', TRUE); $view->assign('ya_vote', TRUE); } else { // Computamos la visita si es necesario. if ($model_foto->visitas !== NULL) { $model_foto->agregar_visita(); } $view->assign('es_favorito', $model_foto->es_favorito(Usuario::$usuario_id)); $view->assign('ya_vote', !Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VOTAR) || $model_foto->ya_voto(Usuario::$usuario_id)); } // Verifico si soporta comentarios. $view->assign('puedo_comentar', Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR_CERRADO) || $model_foto->soporta_comentarios() && Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR)); $view->assign('comentario_eliminar', Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_ELIMINAR)); $view->assign('comentario_ocultar', Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_OCULTAR)); $view->assign('comentario_editar', Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_EDITAR)); // Comentarios del post. $cmts = $model_foto->comentarios(); $l_cmt = array(); foreach ($cmts as $cmt) { $cl_cmt = $cmt->as_array(); $cl_cmt['usuario'] = $cmt->usuario()->as_array(); $l_cmt[] = $cl_cmt; } $view->assign('comentarios', $l_cmt); unset($l_cmt, $cmts); $view->assign('comentario_content', isset($_POST['comentario']) ? $_POST['comentario'] : NULL); $view->assign('comentario_error', get_flash('post_comentario_error')); $view->assign('comentario_success', get_flash('post_comentario_success')); // 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()); }