/var/www/html_us/wp-content/plugins/woocommerce/src/StoreApi/SchemaController.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
namespace Automattic\WooCommerce\StoreApi;

use 
Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema;

/**
 * SchemaController class.
 */
class SchemaController {

    
/**
     * Stores schema class instances.
     *
     * @var Schemas\V1\AbstractSchema[]
     */
    
protected $schemas = [];

    
/**
     * Stores Rest Extending instance
     *
     * @var ExtendSchema
     */
    
private $extend;

    
/**
     * Constructor.
     *
     * @param ExtendSchema $extend Rest Extending instance.
     */
    
public function __constructExtendSchema $extend ) {
        
$this->extend  $extend;
        
$this->schemas = [
            
'v1' => [
                
Schemas\V1\BatchSchema::IDENTIFIER         => Schemas\V1\BatchSchema::class,
                
Schemas\V1\ErrorSchema::IDENTIFIER         => Schemas\V1\ErrorSchema::class,
                
Schemas\V1\ImageAttachmentSchema::IDENTIFIER => Schemas\V1\ImageAttachmentSchema::class,
                
Schemas\V1\TermSchema::IDENTIFIER          => Schemas\V1\TermSchema::class,
                
Schemas\V1\BillingAddressSchema::IDENTIFIER => Schemas\V1\BillingAddressSchema::class,
                
Schemas\V1\ShippingAddressSchema::IDENTIFIER => Schemas\V1\ShippingAddressSchema::class,
                
Schemas\V1\CartShippingRateSchema::IDENTIFIER => Schemas\V1\CartShippingRateSchema::class,
                
Schemas\V1\CartCouponSchema::IDENTIFIER    => Schemas\V1\CartCouponSchema::class,
                
Schemas\V1\CartFeeSchema::IDENTIFIER       => Schemas\V1\CartFeeSchema::class,
                
Schemas\V1\CartItemSchema::IDENTIFIER      => Schemas\V1\CartItemSchema::class,
                
Schemas\V1\CartSchema::IDENTIFIER          => Schemas\V1\CartSchema::class,
                
Schemas\V1\CartExtensionsSchema::IDENTIFIER => Schemas\V1\CartExtensionsSchema::class,
                
Schemas\V1\CheckoutOrderSchema::IDENTIFIER => Schemas\V1\CheckoutOrderSchema::class,
                
Schemas\V1\CheckoutSchema::IDENTIFIER      => Schemas\V1\CheckoutSchema::class,
                
Schemas\V1\OrderItemSchema::IDENTIFIER     => Schemas\V1\OrderItemSchema::class,
                
Schemas\V1\OrderCouponSchema::IDENTIFIER   => Schemas\V1\OrderCouponSchema::class,
                
Schemas\V1\OrderFeeSchema::IDENTIFIER      => Schemas\V1\OrderFeeSchema::class,
                
Schemas\V1\OrderSchema::IDENTIFIER         => Schemas\V1\OrderSchema::class,
                
Schemas\V1\ProductSchema::IDENTIFIER       => Schemas\V1\ProductSchema::class,
                
Schemas\V1\ProductAttributeSchema::IDENTIFIER => Schemas\V1\ProductAttributeSchema::class,
                
Schemas\V1\ProductCategorySchema::IDENTIFIER => Schemas\V1\ProductCategorySchema::class,
                
Schemas\V1\ProductCollectionDataSchema::IDENTIFIER => Schemas\V1\ProductCollectionDataSchema::class,
                
Schemas\V1\ProductReviewSchema::IDENTIFIER => Schemas\V1\ProductReviewSchema::class,
                
Schemas\V1\AI\ProductsSchema::IDENTIFIER   => Schemas\V1\AI\ProductsSchema::class,
                
Schemas\V1\PatternsSchema::IDENTIFIER      => Schemas\V1\PatternsSchema::class,
            ],
        ];
    }

    
/**
     * Get a schema class instance.
     *
     * @throws \Exception If the schema does not exist.
     *
     * @param string $name Name of schema.
     * @param int    $version API Version being requested.
     * @return Schemas\V1\AbstractSchema A new instance of the requested schema.
     */
    
public function get$name$version ) {
        
$schema $this->schemas"v{$version}][ $name ] ?? false;

        if ( ! 
$schema ) {
            throw new 
\Exception"{$name} v{$version} schema does not exist" );
        }

        return new 
$schema$this->extend$this );
    }
}