Exemplo n.º 1
0
Arquivo: foto.php Projeto: 4bs4/marifa
 /**
  * Agregamos un comentario en la foto.
  * @param int $foto ID de la foto donde comentar.
  */
 public function action_comentar($foto)
 {
     // Verificamos el método de envio.
     if (Request::method() != 'POST') {
         Request::redirect('/foto/ver/' . $foto);
     }
     // Verifico esté conectado.
     if (!Usuario::is_login()) {
         $_SESSION['flash_error'] = 'Debes iniciar sessión para poder realizar comentarios.';
         Request::redirect('/usuario/login');
     }
     // Convertimos el 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 que quiere comentar no se encuentra disponible.';
         Request::redirect('/foto/');
     }
     // Verifico se pueda comentar.
     if (!(Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR_CERRADO) || $model_foto->soporta_comentarios() && Usuario::permiso(Model_Usuario_Rango::PERMISO_COMENTARIO_COMENTAR))) {
         $_SESSION['post_comentario_error'] = 'No tienes permisos para realizar comentarios en esa foto.';
         Request::redirect('/foto/ver/' . $foto);
     }
     // Obtenemos el comentario.
     $comentario = isset($_POST['comentario']) ? $_POST['comentario'] : NULL;
     // Verificamos el formato.
     $comentario_clean = preg_replace('/\\[.*\\]/', '', $comentario);
     if (!isset($comentario_clean[20]) || isset($comentario[400])) {
         $_SESSION['post_comentario_error'] = 'El comentario debe tener entre 20 y 400 caracteres.';
         // Evitamos la visualización de la plantilla.
         $this->template = NULL;
         Dispatcher::call('/foto/ver/' . $foto, TRUE);
     } else {
         // Evitamos XSS.
         $comentario = htmlentities($comentario, ENT_NOQUOTES, 'UTF-8');
         // Insertamos el comentario.
         $id = $model_foto->comentar(Usuario::$usuario_id, $comentario);
         // Envio el suceso.
         $model_suceso = new Model_Suceso();
         if (Usuario::$usuario_id != $model_foto->usuario_id) {
             $model_suceso->crear($model_foto->usuario_id, 'foto_comentario_crear', TRUE, $id);
             $model_suceso->crear(Usuario::$usuario_id, 'foto_comentario_crear', FALSE, $id);
         } else {
             $model_suceso->crear($model_foto->usuario_id, 'foto_comentario_crear', FALSE, $id);
         }
         // Informo el resultado.
         $_SESSION['post_comentario_success'] = 'El comentario se ha realizado correctamente.';
         Request::redirect('/foto/ver/' . $foto);
     }
 }