Esempio n. 1
0
 /**
  * Eliminamos el post de un usuario.
  * @param int $id ID del post a borrar.
  */
 public function action_eliminar_post($id)
 {
     $id = (int) $id;
     // Cargamos el modelo del post.
     $model_post = new Model_Post($id);
     if (!$model_post->existe()) {
         $_SESSION['flash_error'] = 'El post que deseas eliminar no se encuentra disponible.';
         Request::redirect('/admin/contenido/posts/');
     }
     // Verifico cual es el estado actual.
     if ($model_post->estado === Model_Post::ESTADO_BORRADO) {
         $_SESSION['flash_error'] = 'El post que deseas eliminar no se encuentra disponible.';
         Request::redirect('/admin/contenido/posts/');
     }
     // Cargamos la vista.
     $vista = View::factory('admin/contenido/eliminar_post');
     // Valores por defecto y errores.
     $vista->assign('tipo', '');
     $vista->assign('error_tipo', FALSE);
     $vista->assign('razon', '');
     $vista->assign('error_razon', FALSE);
     $vista->assign('borrador', FALSE);
     $vista->assign('error_borrador', FALSE);
     if (Request::method() == 'POST') {
         // Seteamos sin error.
         $error = FALSE;
         // Obtenemos los campos.
         $tipo = isset($_POST['tipo']) ? (int) $_POST['tipo'] : NULL;
         $razon = isset($_POST['razon']) ? preg_replace('/\\s+/', ' ', trim($_POST['razon'])) : NULL;
         $borrador = isset($_POST['borrador']) ? $_POST['borrador'] == 1 : FALSE;
         // Valores para cambios.
         $vista->assign('tipo', $tipo);
         $vista->assign('razon', $razon);
         $vista->assign('borrador', $borrador);
         // Verifico el tipo.
         if (!in_array($tipo, array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))) {
             $error = TRUE;
             $vista->assign('error_tipo', 'No ha seleccionado un tipo válido.');
         } else {
             // Verifico la razón si corresponde.
             if ($tipo === 12) {
                 // Verificamos el nombre.
                 if (!preg_match('/^[a-z0-9\\sáéíóúñ]{10,200}$/iD', $razon)) {
                     $error = TRUE;
                     $vista->assign('error_razon', 'La razón dete tener entre 10 y 200 caractéres alphanuméricos.');
                 }
             } else {
                 $razon = NULL;
             }
         }
         if (!$error) {
             // Creo la moderación.
             $model_post->moderar($model_post->id, $tipo, $razon, $borrador);
             // Enviamos el suceso.
             $model_suceso = new Model_Suceso();
             if (Usuario::$usuario_id != $model_post->usuario_id) {
                 $model_suceso->crear($model_post->usuario_id, 'post_borrar', TRUE, $model_post->id, Usuario::$usuario_id);
                 $model_suceso->crear(Usuario::$usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
             } else {
                 $model_suceso->crear($model_post->usuario_id, 'post_borrar', FALSE, $model_post->id, Usuario::$usuario_id);
             }
             // Informamos el resultado.
             $_SESSION['flash_success'] = 'Post borrado correctamente.';
             Request::redirect('/admin/contenido/posts/');
         }
     }
     // Seteamos el menu.
     $this->template->assign('master_bar', parent::base_menu('admin'));
     // Cargamos plantilla administracion.
     $admin_template = View::factory('admin/template');
     $admin_template->assign('contenido', $vista->parse());
     unset($portada);
     $admin_template->assign('top_bar', Controller_Admin_Home::submenu('contenido_post'));
     // Asignamos la vista a la plantilla base.
     $this->template->assign('contenido', $admin_template->parse());
 }