????JFIF??x?x????'
Server IP : 104.21.16.1 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/tempvsty/buyeaa.com/wp-content/plugins/woocommerce/packages/blueprint/src/ |
Upload File : |
<?php namespace Automattic\WooCommerce\Blueprint; use Automattic\WooCommerce\Blueprint\Exporters\StepExporter; use Automattic\WooCommerce\Blueprint\Exporters\HasAlias; use Automattic\WooCommerce\Blueprint\Logger; use Automattic\WooCommerce\Blueprint\Steps\Step; use WP_Error; /** * Class ExportSchema * * Handles the export schema functionality for WooCommerce. * * @package Automattic\WooCommerce\Blueprint */ class ExportSchema { use UseWPFunctions; use UsePubSub; /** * Step exporters. * * @var StepExporter[] Array of step exporters. */ protected array $exporters = array(); /** * ExportSchema constructor. * * @param StepExporter[] $exporters Array of step exporters. */ public function __construct( $exporters = array() ) { $this->exporters = $exporters; } /** * Export the schema steps. * * @param string[] $steps Array of step names to export, optional. * * @return array|WP_Error The exported schema array or a WP_Error if the export fails. */ public function export( $steps = array() ) { $loading_page_path = $this->wp_apply_filters( 'wooblueprint_export_landingpage', '/' ); /** * Validate that the landing page path is a valid relative local URL path. * * Accepts: * - / * - /path/to/page * * Rejects: * - http://example.com/path/to/page * - invalid-path */ if ( ! preg_match( '#^/$|^/[^/].*#', $loading_page_path ) ) { return new WP_Error( 'wooblueprint_invalid_landing_page_path', 'Invalid loading page path.' ); } $schema = array( 'landingPage' => $loading_page_path, 'steps' => array(), ); $built_in_exporters = ( new BuiltInExporters() )->get_all(); /** * Filters the step exporters. * * Allows adding/removing custom step exporters. * * @param StepExporter[] $exporters Array of step exporters. * * @since 0.0.1 */ $exporters = $this->wp_apply_filters( 'wooblueprint_exporters', array_merge( $this->exporters, $built_in_exporters ) ); // Validate that the exporters are instances of StepExporter. $exporters = array_filter( $exporters, function ( $exporter ) { return $exporter instanceof StepExporter; } ); // Filter out any exporters that are not in the list of steps to export. if ( count( $steps ) ) { foreach ( $exporters as $key => $exporter ) { $name = $exporter->get_step_name(); $alias = $exporter instanceof HasAlias ? $exporter->get_alias() : $name; if ( ! in_array( $name, $steps, true ) && ! in_array( $alias, $steps, true ) ) { unset( $exporters[ $key ] ); } } } // Make sure the user has the required capabilities to export the steps. foreach ( $exporters as $exporter ) { if ( ! $exporter->check_step_capabilities() ) { return new WP_Error( 'wooblueprint_insufficient_permissions', 'Insufficient permissions to export for step: ' . $exporter->get_step_name() ); } } $logger = new Logger(); $logger->start_export( $exporters ); foreach ( $exporters as $exporter ) { try { $this->publish( 'onBeforeExport', $exporter ); $step = $exporter->export(); $this->add_result_to_schema( $schema, $step ); } catch ( \Throwable $e ) { $step_name = $exporter instanceof HasAlias ? $exporter->get_alias() : $exporter->get_step_name(); $logger->export_step_failed( $step_name, $e ); return new WP_Error( 'wooblueprint_export_step_failed', 'Export step failed: ' . $e->getMessage() ); } } $logger->complete_export( $exporters ); return $schema; } /** * Subscribe to the onBeforeExport event. * * @param string $step_name The step name to subscribe to. * @param callable $callback The callback to execute. */ public function on_before_export( $step_name, $callback ) { $this->subscribe( 'onBeforeExport', function ( $exporter ) use ( $step_name, $callback ) { if ( $step_name === $exporter->get_step_name() ) { $callback( $exporter ); } } ); } /** * Add export result to the schema array. * * @param array $schema Schema array to add steps to. * @param array|Step $step Step or array of steps to add. */ private function add_result_to_schema( array &$schema, $step ): void { if ( is_array( $step ) ) { foreach ( $step as $_step ) { $schema['steps'][] = $_step->get_json_array(); } return; } $schema['steps'][] = $step->get_json_array(); } }