Ejemplo n.º 1
0
Archivo: foto.php Proyecto: 4bs4/marifa
 /**
  * Agregamos una denuncia a una foto.
  * @param int $foto ID de la foto a denunciar.
  */
 public function action_denunciar($foto)
 {
     $foto = (int) $foto;
     // Verifico esté logueado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder borrar una foto.';
         Request::redirect('/usuario/login/');
     }
     // Verificamos exista.
     if (!is_array($model_foto->as_array())) {
         $_SESSION['flash_error'] = 'La foto que quieres denunciar no se encuentra disponible.';
         Request::redirect('/foto/');
     }
     // Cargamos la foto.
     $model_foto = new Model_Foto($foto);
     // Verificamos que no sea autor.
     if ($model_foto->usuario_id === Usuario::$usuario_id) {
         $_SESSION['flash_error'] = 'La foto que quieres denunciar no se encuentra disponible.';
         Request::redirect('/post/ver/' . $post);
     }
     // Verifico que esté activa.
     if ($model_foto->estado !== Model_Foto::ESTADO_ACTIVA) {
         $_SESSION['flash_error'] = 'La foto que quieres denunciar no se encuentra disponible.';
         Request::redirect('/post/ver/' . $post);
     }
     // Asignamos el título.
     $this->template->assign('title', 'Denunciar foto');
     // Cargamos la vista.
     $view = View::factory('foto/denunciar');
     $view->assign('foto', $model_foto->id);
     // Elementos por defecto.
     $view->assign('motivo', '');
     $view->assign('comentario', '');
     $view->assign('error_motivo', FALSE);
     $view->assign('error_comentario', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $motivo = isset($_POST['motivo']) ? (int) $_POST['motivo'] : NULL;
         $comentario = isset($_POST['comentario']) ? preg_replace('/\\s+/', ' ', trim($_POST['comentario'])) : NULL;
         // Valores para cambios.
         $view->assign('motivo', $motivo);
         $view->assign('comentario', $comentario);
         // Verifico el tipo.
         if (!in_array($motivo, array(0, 1, 2, 3, 4, 5, 6, 7))) {
             $error = TRUE;
             $view->assign('error_motivo', 'No ha seleccionado un motivo válido.');
         }
         // Verifico la razón si corresponde.
         if ($motivo === 7) {
             if (!isset($comentario[10]) || isset($comentario[400])) {
                 $error = TRUE;
                 $view->assign('error_comentario', 'La descripción de la denuncia debe tener entre 10 y 400 caracteres.');
             }
         } else {
             if (isset($comentario[400])) {
                 $error = TRUE;
                 $view->assign('error_comentario', 'La descripción de la denuncia debe tener entre 10 y 400 caracteres.');
             }
             $comentario = NULL;
         }
         if (!$error) {
             // Creo la denuncia.
             $id = $model_foto->denunciar(Usuario::$usuario_id, $motivo, $comentario);
             // Agregamos el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $model_foto->usuario_id) {
                 $model_suceso->crear($model_foto->usuario_id, TRUE, 'foto_denuncia_crear', $id);
                 $model_suceso->crear(Usuario::$usuario_id, FALSE, 'foto_denuncia_crear', $id);
             } else {
                 $model_suceso->crear($model_foto->usuario_id, FALSE, 'foto_denuncia_crear', $id);
             }
             // Seteamos mensaje flash y volvemos.
             $_SESSION['flash_success'] = 'Denuncia enviada correctamente.';
             Request::redirect('/foto/ver/' . $model_foto->id);
         }
     }
     // Menu.
     $this->template->assign('master_bar', parent::base_menu('fotos'));
     $this->template->assign('top_bar', Controller_Home::submenu());
     // Asignamos la vista.
     $this->template->assign('contenido', $view->parse());
 }