/** * 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()); }