\d+)', [ 'methods' => WP_REST_Server::READABLE, 'callback' => $container->get(GetFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Get all forms register_rest_route( $routeNamespace, '/form', [ 'methods' => WP_REST_Server::READABLE, 'callback' => $container->get(GetFormsController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Add new form register_rest_route( $routeNamespace, '/form/add/', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(AddFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Update form register_rest_route( $routeNamespace, '/form/update/(?P\d+)', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(UpdateFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Delete single form register_rest_route( $routeNamespace, '/form/delete/(?P\d+)', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(DeleteFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Delete multiple forms register_rest_route( $routeNamespace, '/forms/delete', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(DeleteFormsController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); } /** * Register form management routes (search, status updates, etc.) * * @throws DependencyException * @throws NotFoundException */ private static function registerFormManagementRoutes(Container $container, string $routeNamespace): void { // Search forms register_rest_route( $routeNamespace, '/forms/search', [ 'methods' => WP_REST_Server::READABLE, 'callback' => $container->get(SearchFormsController::class), 'args' => [ 'page' => ['type' => 'integer'], 'perPage' => ['type' => 'integer'], 'search' => ['type' => 'string'], 'orderBy' => ['type' => 'string'], 'order' => ['type' => 'string'], 'shouldGetCount' => ['type' => 'boolean'], ], 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Update form starred status register_rest_route( $routeNamespace, '/form/update/starred/(?P\d+)', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(UpdateFormStarredController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Update form status register_rest_route( $routeNamespace, '/form/update/status/(?P\d+)', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(UpdateFormStatusController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Duplicate form register_rest_route( $routeNamespace, '/form/duplicate/(?P\d+)', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(DuplicateFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Bulk update forms register_rest_route( $routeNamespace, '/forms/batch-actions', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => [$container->get(BulkUpdateFormController::class), 'handle'], 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); } /** * Register form submission routes (public-facing) * * @throws DependencyException * @throws NotFoundException */ private static function registerFormSubmissionRoutes(Container $container, string $routeNamespace): void { // Form submission (public route) register_rest_route( $routeNamespace, '/form/submission/', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(FormSubmissionController::class), // TODO - Add IvyForms capability - Public use 'permission_callback' => '__return_true' ] ); } /** * Register form import/export routes * * @throws DependencyException * @throws NotFoundException */ private static function registerFormImportExportRoutes(Container $container, string $routeNamespace): void { // Export forms register_rest_route( $routeNamespace, '/forms/export', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(ExportFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); // Import forms register_rest_route( $routeNamespace, '/forms/import', [ 'methods' => WP_REST_Server::CREATABLE, 'callback' => $container->get(ImportFormController::class), 'permission_callback' => function () { return current_user_can('manage_options'); } ] ); } }