guard_admin(); if ( $check ) { return $check; } try { $request = new \WP_REST_Request( 'GET', '/booktics/v1/module' ); $request->set_query_params( [ 'type' => 'all' ] ); $controller = new \Booktics\Extensions\Controllers\Module_Controller(); $result = $this->extract_response( $controller->get_items( $request ), 'Failed to retrieve modules.' ); if ( isset( $result['error'] ) ) { return $result; } // Keep only in-place feature toggles; exclude plugin/addon installs. $modules = array_filter( $result, static function ( $module ) { return is_array( $module ) && in_array( $module['type'] ?? '', self::TOGGLEABLE_TYPES, true ); } ); return [ 'items' => $this->shape_rows( array_values( $modules ), fn( $module ) => $this->shape_module( $module ) ) ]; } catch ( \Throwable $e ) { Log::error( 'Booktics_List_Modules_Tool error', [ 'error' => $e->getMessage() ] ); return [ 'error' => 'Failed to retrieve modules: ' . $e->getMessage() ]; } } }