Spaces:
No application file
No application file
namespace Mautic\ChannelBundle\Event; | |
use Mautic\ChannelBundle\Model\MessageModel; | |
use Mautic\CoreBundle\Event\CommonEvent; | |
class ChannelEvent extends CommonEvent | |
{ | |
/** | |
* @var array | |
*/ | |
protected $channels = []; | |
/** | |
* @var array | |
*/ | |
protected $featureChannels = []; | |
/** | |
* Adds a submit action to the list of available actions. | |
* | |
* @param string $channel a unique identifier; it is recommended that it be namespaced if there are multiple entities in a channel i.e. something.something | |
* @param array $config Should be keyed by the feature it supports that contains an array of feature configuration options. i.e. | |
* $config = [ | |
* MessageModel::CHANNEL_FEATURE => [ | |
* 'lookupFormType' => (optional) Form type class/alias for the channel lookup list, | |
* 'propertiesFormType' => (optional) Form type class/alias for the channel properties if a lookup list is not used, | |
* | |
* 'channelTemplate' => (optional) template to inject UI/DOM into the bottom of the channel's tab | |
* 'formTheme' => (optional) theme directory for custom form types | |
* | |
* ] | |
* ] | |
* | |
* @return $this | |
*/ | |
public function addChannel($channel, array $config = []) | |
{ | |
$this->channels[$channel] = $config; | |
foreach ($config as $feature => $featureConfig) { | |
$this->featureChannels[$feature][$channel] = $featureConfig; | |
} | |
return $this; | |
} | |
/** | |
* Returns registered channels with their configs. | |
* | |
* @return array | |
*/ | |
public function getChannelConfigs() | |
{ | |
return $this->channels; | |
} | |
/** | |
* Returns repository name for the provided channel. Defaults to classic naming convention. | |
* | |
* @param string $channel | |
* | |
* @return string | |
*/ | |
public function getRepositoryName($channel) | |
{ | |
if (isset($this->channels[$channel][MessageModel::CHANNEL_FEATURE]['repository'])) { | |
return $this->channels[$channel][MessageModel::CHANNEL_FEATURE]['repository']; | |
} | |
// if not defined, try the classic naming convention | |
$channel = ucfirst($channel); | |
$class = "\Mautic\\{$channel}Bundle\Entity\\{$channel}"; | |
\assert(class_exists($class)); | |
return $class; | |
} | |
/** | |
* Returns the name of the column holding the channel name for the provided channel. Defaults to 'name'. | |
* | |
* @param string $channel | |
* | |
* @return string | |
*/ | |
public function getNameColumn($channel) | |
{ | |
return $this->channels[$channel][MessageModel::CHANNEL_FEATURE]['nameColumn'] ?? 'name'; | |
} | |
/** | |
* @return array | |
*/ | |
public function getFeatureChannels() | |
{ | |
return $this->featureChannels; | |
} | |
} | |