Beispiel #1
0
 /**
  * Editamos una foto.
  * @param int $foto ID de la foto a editar.
  */
 public function action_editar($foto)
 {
     // Verificamos usuario conectado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para editar fotos.';
         Request::redirect('/usuario/login/', TRUE);
     }
     // Cargamos la foto.
     $foto = (int) $foto;
     $model_foto = new Model_Foto($foto);
     // Verifico la existencia.
     if (!$model_foto->existe()) {
         $_SESSION['flash_error'] = 'La foto que quiere editar no se encuentra disponible.';
         Request::redirect('/foto/');
     }
     // Verifico los permisos.
     if ($model_foto->usuario_id !== Usuario::$usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_EDITAR)) {
         $_SESSION['flash_error'] = 'La foto que deseas editar no se encuentra disponible.';
         Request::redirect('/foto/ver/' . $foto);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Editar foto');
     // Cargamos la vista.
     $view = View::factory('foto/editar');
     $view->assign('foto', $model_foto->id);
     // Cargo valores actuales.
     $view->assign('titulo', $model_foto->titulo);
     $view->assign('descripcion', $model_foto->descripcion);
     $view->assign('comentarios', $model_foto->comentar);
     $view->assign('visitantes', $model_foto->visitas !== NULL);
     // Inicializo los errores.
     $view->assign('error_titulo', FALSE);
     $view->assign('error_descripcion', FALSE);
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('fotos'));
     $this->template->assign('top_bar', $this->submenu('index'));
     if (Request::method() == 'POST') {
         $error = FALSE;
         // Obtenemos los datos y seteamos valores.
         foreach (array('titulo', 'descripcion') as $k) {
             ${$k} = isset($_POST[$k]) ? $_POST[$k] : '';
             $view->assign($k, ${$k});
         }
         // Obtenemos los checkbox.
         $visitantes = isset($_POST['visitantes']) ? $_POST['visitantes'] == 1 : FALSE;
         $view->assign('visitantes', $visitantes);
         $comentarios = isset($_POST['comentarios']) ? $_POST['comentarios'] == 1 : FALSE;
         $view->assign('comentarios', $comentarios);
         // Verificamos el titulo.
         if (!preg_match('/^[a-zA-Z0-9áéíóú\\-,\\.:\\s]{6,60}$/D', $titulo)) {
             $view->assign('error_titulo', 'El formato del título no es correcto.');
             $error = TRUE;
         }
         // Verificamos quitando BBCODE.
         $descripcion_clean = preg_replace('/\\[([^\\[\\]]+)\\]/', '', $descripcion);
         // Verificamos la descripcion.
         if (!isset($descripcion_clean[20]) || isset($descripcion[600])) {
             $view->assign('error_descripcion', 'La descripción debe tener entre 20 y 600 caractéres.');
             $error = TRUE;
         }
         unset($contenido_clean);
         // Actualizamos los datos.
         if (!$error) {
             // Evitamos XSS.
             $descripcion = htmlentities($descripcion, ENT_NOQUOTES, 'UTF-8');
             // Formateamos los campos.
             $titulo = trim(preg_replace('/\\s+/', ' ', $titulo));
             // Listado de campos a actualizar.
             $campos = array('titulo' => $titulo, 'descripcion' => $descripcion, 'comentar' => $comentarios, 'visitas' => $visitantes ? $model_foto->visitas !== NULL ? $model_foto->visitas : 0 : NULL);
             // Actualizo los datos.
             if ($model_foto->actualizar_campos($campos)) {
                 // Agregamos el suceso.
                 $model_suceso = new Model_Suceso();
                 if (Usuario::$usuario_id != $model_foto->usuario_id) {
                     $model_suceso->crear($model_foto->usuario_id, 'foto_editar', TRUE, $model_foto->id, Usuario::$usuario_id);
                     $model_suceso->crear(Usuario::$usuario_id, 'foto_editar', FALSE, $model_foto->id, Usuario::$usuario_id);
                 } else {
                     $model_suceso->crear($model_foto->usuario_id, 'foto_editar', FALSE, $model_foto->id, Usuario::$usuario_id);
                 }
                 $_SESSION['flash_success'] = 'La foto se ha actualizado correctamente.';
                 Request::redirect('/foto/ver/' . $model_foto->id);
             }
         }
     }
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
 }
Beispiel #2
0
 /**
  * Borramos una foto.
  * @param int $foto ID de la foto a borrar.
  */
 public function action_borrar_foto($foto)
 {
     // Verifico permisos.
     if (!Usuario::permiso(Model_Usuario_Rango::PERMISO_FOTO_VER_DENUNCIAS)) {
         $_SESSION['flash_error'] = 'No tienes permiso para acceder a esa sección.';
         Request::redirect('/');
     }
     // Cargamos el post.
     $foto = (int) $foto;
     $model_foto = new Model_Foto($foto);
     // Verifico existencia del post.
     if (!$model_foto->existe()) {
         $_SESSION['flash_error'] = 'La foto que deseas borrar no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/fotos');
     }
     // Verifico los permisos.
     if (Usuario::$usuario_id !== $model_foto->usuario_id && !Usuario::permiso(Model_Usuario_Rango::PERMISO_ELIMINAR_FOTOS)) {
         $_SESSION['flash_error'] = 'No tienes permisos para realizar esa acción.';
         Request::redirect('/moderar/denuncias/fotos');
     }
     // Verifico el estado.
     if ($model_foto->estado === Model_Foto::ESTADO_BORRADA) {
         $_SESSION['flash_error'] = 'La foto que deseas borrar no se encuentra disponible.';
         Request::redirect('/moderar/denuncias/fotos');
     }
     // Actualizo la foto
     $model_foto->actualizar_campo('estado', Model_Foto::ESTADO_BORRADA);
     // Enviamos el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_foto->usuario_id) {
         $model_suceso->crear($model_foto->usuario_id, 'foto_borrar', TRUE, $model_foto->id, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'foto_borrar', FALSE, $model_foto->id, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($model_foto->usuario_id, 'foto_borrar', FALSE, $model_foto->id, Usuario::$usuario_id);
     }
     // Informamos el resultado.
     $_SESSION['flash_success'] = 'Post eliminado correctamente.';
     Request::redirect('/moderar/denuncias/fotos');
 }
Beispiel #3
0
 /**
  * La foto se ha borrado correctamente.
  * @param int $id ID de la foto a borrar.
  */
 public function action_eliminar_foto($id)
 {
     // Cargamos el modelo de la foto.
     $model_foto = new Model_Foto((int) $id);
     // Verifico que exista.
     if (!$model_foto->existe()) {
         $_SESSION['flash_error'] = 'No existe la foto que quiere mostrar.';
         Request::redirect('/admin/contenido/fotos');
     }
     // Borramos la foto.
     $model_foto->borrar();
     // Envio el suceso.
     $model_suceso = new Model_Suceso();
     if (Usuario::$usuario_id != $model_foto->usuario_id) {
         $model_suceso->crear($model_foto->usuario_id, 'foto_borrar', TRUE, $model_foto->id, Usuario::$usuario_id);
         $model_suceso->crear(Usuario::$usuario_id, 'foto_borrar', FALSE, $model_foto->id, Usuario::$usuario_id);
     } else {
         $model_suceso->crear($model_foto->usuario_id, 'foto_borrar', FALSE, $model_foto->id, Usuario::$usuario_id);
     }
     // Informamos.
     $_SESSION['flash_success'] = 'Foto borrrada correctamente.';
     Request::redirect('/admin/contenido/fotos');
 }