__( 'You do not have permission to do this.', '360-orbit-database-cleaner' ) ), 403 ); } } /** * Speichert die eingesendeten Felder. Sie werden mit dem bestehenden Stand * zusammengefuehrt, weil jeder Tab nur seinen eigenen Teil sendet. */ public static function save_settings() { check_ajax_referer( self::NONCE_ACTION, 'nonce' ); self::check_capability(); $raw = isset( $_POST['settings'] ) && is_array( $_POST['settings'] ) ? map_deep( wp_unslash( $_POST['settings'] ), 'sanitize_text_field' ) : null; if ( null === $raw ) { wp_send_json_error( array( 'message' => __( 'Invalid data.', '360-orbit-database-cleaner' ) ), 400 ); } $saved = Wp360_Database_Cleaner_Settings::save( $raw ); wp_send_json_success( array( 'settings' => $saved ) ); } /** Autoload einer Option aendern ('off' = nicht automatisch laden, 'on' = laden). */ public static function autoload_set() { check_ajax_referer( self::NONCE_ACTION, 'nonce' ); self::check_capability(); $name = isset( $_POST['option'] ) ? sanitize_text_field( wp_unslash( $_POST['option'] ) ) : ''; $target = isset( $_POST['target'] ) ? sanitize_key( wp_unslash( $_POST['target'] ) ) : ''; self::respond( Wp360_Database_Cleaner_Autoload_Manager::set( $name, $target ) ); } /** Eine gesicherte Autoload-Aenderung zuruecknehmen. */ public static function autoload_undo() { check_ajax_referer( self::NONCE_ACTION, 'nonce' ); self::check_capability(); $name = isset( $_POST['option'] ) ? sanitize_text_field( wp_unslash( $_POST['option'] ) ) : ''; self::respond( Wp360_Database_Cleaner_Autoload_Manager::undo( $name ) ); } /** Vorschau einer Aufraeumart: was wuerde geloescht, ohne etwas zu veraendern. */ public static function cleanup_preview() { check_ajax_referer( self::NONCE_ACTION, 'nonce' ); self::check_capability(); $task = Wp360_Database_Cleaner_Cleaner::task( isset( $_POST['task'] ) ? sanitize_key( wp_unslash( $_POST['task'] ) ) : '' ); if ( ! $task ) { wp_send_json_error( array( 'message' => __( 'Unknown action.', '360-orbit-database-cleaner' ) ), 400 ); } $preview = $task->preview(); wp_send_json_success( array( 'count' => $preview['count'], 'message' => $task->message_for( $preview ), 'confirm' => $task->confirm_for( $preview ), ) ); } /** Fuehrt eine Aufraeumart aus (hoechstens ein Zeitbudget lang; der Rest wird gemeldet). */ public static function cleanup_run() { check_ajax_referer( self::NONCE_ACTION, 'nonce' ); self::check_capability(); self::respond( Wp360_Database_Cleaner_Cleaner::run( isset( $_POST['task'] ) ? sanitize_key( wp_unslash( $_POST['task'] ) ) : '' ) ); } /** * Antwortet mit dem Ergebnis des Managers: Fehler als 400 mit Text, sonst Erfolg. * * @param array|WP_Error $result Ergebnis. */ private static function respond( $result ) { if ( is_wp_error( $result ) ) { wp_send_json_error( array( 'message' => $result->get_error_message() ), 400 ); } wp_send_json_success( $result ); } }