Add MarketingCampaignType class
This allows defining campaign types for each marketing channel.
This commit is contained in:
parent
20efcfb804
commit
1687416413
|
@ -0,0 +1,130 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Represents a marketing campaign type supported by a marketing channel.
|
||||||
|
*
|
||||||
|
* Marketing channels (implementing MarketingChannelInterface) can use this class to define what kind of campaigns they support.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Automattic\WooCommerce\Admin\Marketing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MarketingCampaignType class
|
||||||
|
*
|
||||||
|
* @since x.x.x
|
||||||
|
*/
|
||||||
|
class MarketingCampaignType {
|
||||||
|
/**
|
||||||
|
* The unique identifier.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The marketing channel that this campaign type belongs to.
|
||||||
|
*
|
||||||
|
* @var MarketingChannelInterface
|
||||||
|
*/
|
||||||
|
protected $channel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the marketing campaign type.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description of the marketing campaign type.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The URL to the create campaign page.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $create_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The URL to an image/icon for the campaign type.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $icon_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MarketingCampaignType constructor.
|
||||||
|
*
|
||||||
|
* @param string $id A unique identifier for the campaign type.
|
||||||
|
* @param MarketingChannelInterface $channel The marketing channel that this campaign type belongs to.
|
||||||
|
* @param string $name Name of the marketing campaign type.
|
||||||
|
* @param string $description Description of the marketing campaign type.
|
||||||
|
* @param string $create_url The URL to the create campaign page.
|
||||||
|
* @param string $icon_url The URL to an image/icon for the campaign type.
|
||||||
|
*/
|
||||||
|
public function __construct( string $id, MarketingChannelInterface $channel, string $name, string $description, string $create_url, string $icon_url ) {
|
||||||
|
$this->id = $id;
|
||||||
|
$this->channel = $channel;
|
||||||
|
$this->name = $name;
|
||||||
|
$this->description = $description;
|
||||||
|
$this->create_url = $create_url;
|
||||||
|
$this->icon_url = $icon_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the marketing campaign's unique identifier.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_id(): string {
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the marketing channel that this campaign type belongs to.
|
||||||
|
*
|
||||||
|
* @return MarketingChannelInterface
|
||||||
|
*/
|
||||||
|
public function get_channel(): MarketingChannelInterface {
|
||||||
|
return $this->channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the name of the marketing campaign type.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_name(): string {
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the description of the marketing campaign type.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_description(): string {
|
||||||
|
return $this->description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the URL to the create campaign page.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_create_url(): string {
|
||||||
|
return $this->create_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the URL to an image/icon for the campaign type.
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function get_icon_url(): string {
|
||||||
|
return $this->icon_url;
|
||||||
|
}
|
||||||
|
}
|
|
@ -73,6 +73,13 @@ interface MarketingChannelInterface {
|
||||||
*/
|
*/
|
||||||
public function get_errors_count(): int;
|
public function get_errors_count(): int;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array of marketing campaign types that the channel supports.
|
||||||
|
*
|
||||||
|
* @return MarketingCampaignType[] Array of marketing campaign type objects.
|
||||||
|
*/
|
||||||
|
public function get_supported_campaign_types(): array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of the channel's marketing campaigns.
|
* Returns an array of the channel's marketing campaigns.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue