Ejemplo n.º 1
0
Archivo: foto.php Proyecto: 4bs4/marifa
 /**
  * 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());
 }