ContactForm7::class, 'wpforms-lite' => WPForms::class, 'woocommerce' => WooCommerce::class, 'simplybook' => SimplyBook::class, ]; /** * Replace all placeholders in the given content * * @param \WP_REST_Request $request - The request. * @return \WP_REST_Response */ public static function processPlaceholders($request) { $patterns = $request->get_param('patterns'); $patterns = array_map(function ($pattern) { $newCode = ($pattern['patternReplacementCode'] ?? null); $pluginDependency = ($pattern['pluginDependency'] ?? null); if (!$newCode || !$pluginDependency) { return $pattern; } $metadata = null; if (isset($pattern['patternMetadata'])) { $metadata = json_decode($pattern['patternMetadata'], true); } $handlerClass = isset(self::PLUGIN_HANDLERS[$pluginDependency]) ? self::PLUGIN_HANDLERS[$pluginDependency] : null; if ($handlerClass && isset($metadata['key'])) { $pattern['code'] = $handlerClass::create($pattern['code'], $metadata['key'], $newCode); return $pattern; } // We added a feature this version doesn't yet support. return $pattern; }, $patterns); // if any of the pattern code is a wp_error, we need to fail. foreach ($patterns as $pattern) { if (is_wp_error($pattern['code'])) { return new \WP_REST_Response($pattern['code'], 422); } } return new \WP_REST_Response($patterns); } }