# assistant/trunk/backend/src/Controllers/BatchController.php

Assistant – Every Day Productivity Apps, version trunk. 49 lines.

- Page: https://pluginprobe.com/plugins/assistant/trunk/code/backend/src/Controllers/BatchController.php
- Raw: https://pluginprobe.com/plugins/assistant/trunk/raw/backend/src/Controllers/BatchController.php
- Modified: 2025-05-14T21:06:46+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/assistant/trunk/code/backend/src/Controllers/BatchController.php#L10-L20`.

```php
<?php

namespace FL\Assistant\Controllers;

use FL\Assistant\System\Contracts\ControllerAbstract;
use WP_REST_Server;
use WP_REST_Request;

/**
 * REST API logic for batch requests.
 */
class BatchController extends ControllerAbstract {

	/**
	 * Register routes.
	 */
	public function register_routes() {
		$this->route(
			'/batch', [
				[
					'methods'             => WP_REST_Server::READABLE,
					'callback'            => [ $this, 'get_batch' ],
					'permission_callback' => function () {
						return current_user_can( 'edit_others_posts' );
					},
				],
			]
		);
	}

	/**
	 * @param \WP_REST_Request $request
	 *
	 * @return mixed|\WP_REST_Response
	 */
	public function get_batch( \WP_REST_Request $request ) {
		$routes = $request->get_param( 'routes' );
		$response = [];

		foreach ( $routes as $route ) {
			$request  = new WP_REST_Request( 'GET', $route );
			$result = rest_do_request( $request );
			$response[ $route ] = $result->get_data();
		}

		return rest_ensure_response( $response );
	}
}

```
