/var/www/html_us/wp-content/plugins/woocommerce/src/Admin/Marketing/MarketingChannels.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
<?php
/**
 * Handles the registration of marketing channels and acts as their repository.
 */

namespace Automattic\WooCommerce\Admin\Marketing;

use 
Exception;

/**
 * MarketingChannels repository class
 *
 * @since x.x.x
 */
class MarketingChannels {
    
/**
     * The registered marketing channels.
     *
     * @var MarketingChannelInterface[]
     */
    
private $registered_channels = [];

    
/**
     * Registers a marketing channel.
     *
     * @param MarketingChannelInterface $channel The marketing channel to register.
     *
     * @return void
     *
     * @throws Exception If the given marketing channel is already registered.
     */
    
public function registerMarketingChannelInterface $channel ): void {
        if ( isset( 
$this->registered_channels$channel->get_slug() ] ) ) {
            throw new 
Exception__'Marketing channel cannot be registered because there is already a channel registered with the same slug!''woocommerce' ) );
        }

        
$this->registered_channels$channel->get_slug() ] = $channel;
    }

    
/**
     * Unregisters all marketing channels.
     *
     * @return void
     */
    
public function unregister_all(): void {
        unset( 
$this->registered_channels );
    }

    
/**
     * Returns an array of all registered marketing channels.
     *
     * @return MarketingChannelInterface[]
     */
    
public function get_registered_channels(): array {
        
/**
         * Filter the list of registered marketing channels.
         *
         * @param MarketingChannelInterface[] $channels Array of registered marketing channels.
         *
         * @since x.x.x
         */
        
$channels apply_filters'woocommerce_marketing_channels'$this->registered_channels );

        return 
array_values$channels );
    }
}