get_param( 'itemsType' ) ); if ( $items_type === '' ) { return ADBC_Rest::success( 'Success', ADBC_General_Cleanup::get_general_data() ); } return ADBC_Rest::success( 'Success', ADBC_General_Cleanup::get_general_data( $items_type ) ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } /** * Retrieves a list of items based on the provided filters. * * @param WP_REST_Request $request The request object containing the filters. * * @return WP_REST_Response The response containing the list of items. */ public static function get_items( WP_REST_Request $request ) { try { $args = ADBC_Common_Validator::sanitize_filters( $request ); if ( $args['items_type'] === '' ) { return ADBC_Rest::error( 'invalid items type.', ADBC_Rest::BAD_REQUEST ); } $list = ADBC_General_Cleanup::get_items( $args['items_type'], $args ); return ADBC_Rest::success( 'Success', $list ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } /** * Deletes items based on the provided items type and selected items. * * @param WP_REST_Request $request The request object containing the items type and selected items. * * @return WP_REST_Response The response indicating the success or failure of the deletion. */ public static function delete_items( WP_REST_Request $request ) { try { $items_type = ADBC_Common_Validator::sanitize_items_type( $request->get_param( 'itemsType' ) ); if ( $items_type === '' ) { return ADBC_Rest::error( 'invalid items type.', ADBC_Rest::BAD_REQUEST ); } $action_type = "delete_$items_type"; $validated_selected_items = ADBC_Common_Validator::validate_endpoint_action_data( $action_type, $items_type, $request ); if ( ! is_array( $validated_selected_items ) ) return ADBC_Rest::error( $validated_selected_items, ADBC_Rest::BAD_REQUEST ); $deleted = ADBC_General_Cleanup::delete_items( $items_type, $validated_selected_items ); return ADBC_Rest::success( 'Success', [ 'deleted' => $deleted ] ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } /** * Purges items based on the provided items type. * * @param WP_REST_Request $request The request object containing the items type. * * @return WP_REST_Response The response indicating the success or failure of the purge operation. */ public static function purge_items( WP_REST_Request $request ) { try { $items_type = ADBC_Common_Validator::sanitize_items_type( $request->get_param( 'itemsType' ) ); if ( $items_type === '' ) { return ADBC_Rest::error( 'invalid items type.', ADBC_Rest::BAD_REQUEST ); } $purged = ADBC_General_Cleanup::purge_items( $items_type ); return ADBC_Rest::success( 'Success', [ 'purged' => $purged ] ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } /** * Sets the "keep last" configuration for general cleanup. * * @param WP_REST_Request $request The request object containing the keep last configuration. * * @return WP_REST_Response The response indicating the success or failure of the operation. */ public static function set_keep_last( WP_REST_Request $request ) { try { $keep_last = $request->get_param( 'keepLast' ); if ( ADBC_VERSION_TYPE === 'FREE' && is_array( $keep_last ) ) { foreach ( $keep_last as $value ) { if ( ( $value['type'] ?? null ) === 'items' ) { return ADBC_Rest::error( __( 'Cannot use retention by items in free version, please upgrade to premium.' ), ADBC_Rest::BAD_REQUEST ); } } } if ( ! is_array( $keep_last ) || ! ADBC_Settings_Validator::is_keep_last_valid( 'keep_last', $keep_last ) ) { return ADBC_Rest::error( 'invalid keep last.', ADBC_Rest::BAD_REQUEST ); } $updated = ADBC_General_Cleanup::set_keep_last( $keep_last ); return ADBC_Rest::success( 'Success', $updated ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } /** * Retrieves the "keep last" configuration for general cleanup. * * @return WP_REST_Response The response containing the keep last configuration. */ public static function get_keep_last() { try { $keep_last = ADBC_General_Cleanup::get_keep_last(); return ADBC_Rest::success( 'Success', $keep_last ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } /** * Deletes the keep_last configuration for the specified items types. * * @param WP_REST_Request $request The request object containing the items types. * * @return WP_REST_Response The response indicating the success or failure of the deletion operation. */ public static function delete_keep_last( WP_REST_Request $request ) { try { $items_types = $request->get_param( 'itemsTypes' ); if ( ! is_array( $items_types ) || empty( $items_types ) ) { return ADBC_Rest::error( 'invalid items types.', ADBC_Rest::BAD_REQUEST ); } foreach ( $items_types as $items_type ) { if ( ADBC_Common_Validator::sanitize_items_type( $items_type ) === '' ) { // If any of the items types is invalid, return an error. return ADBC_Rest::error( 'invalid items type.', ADBC_Rest::BAD_REQUEST ); } } $deleted = ADBC_General_Cleanup::delete_keep_last( $items_types ); return ADBC_Rest::success( 'Success', $deleted ); } catch (Throwable $e) { return ADBC_Rest::error_for_uncaught_exception( __METHOD__, $e ); } } }