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 register( MarketingChannelInterface $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 ); } }
|