233 lines
4.4 KiB
PHP
Executable File
233 lines
4.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Mautic\PluginBundle\Entity;
|
|
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder;
|
|
use Mautic\CoreBundle\Entity\CacheInvalidateInterface;
|
|
use Mautic\CoreBundle\Entity\CommonEntity;
|
|
|
|
class Integration extends CommonEntity implements CacheInvalidateInterface
|
|
{
|
|
public const CACHE_NAMESPACE = 'IntegrationSettings';
|
|
|
|
/**
|
|
* @var int
|
|
*/
|
|
private $id;
|
|
|
|
/**
|
|
* @var Plugin|null
|
|
*/
|
|
private $plugin;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $name;
|
|
|
|
/**
|
|
* @var bool
|
|
*/
|
|
private $isPublished = false;
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
private $supportedFeatures = [];
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
private $apiKeys = [];
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
private $featureSettings = [];
|
|
|
|
public static function loadMetadata(ORM\ClassMetadata $metadata): void
|
|
{
|
|
$builder = new ClassMetadataBuilder($metadata);
|
|
|
|
$builder->setTable('plugin_integration_settings')
|
|
->setCustomRepositoryClass(IntegrationRepository::class);
|
|
|
|
$builder->createField('id', 'integer')
|
|
->makePrimaryKey()
|
|
->generatedValue()
|
|
->build();
|
|
|
|
$builder->createManyToOne('plugin', 'Plugin')
|
|
->inversedBy('integrations')
|
|
->addJoinColumn('plugin_id', 'id', true, false, 'CASCADE')
|
|
->build();
|
|
|
|
$builder->addField('name', 'string');
|
|
|
|
$builder->createField('isPublished', 'boolean')
|
|
->columnName('is_published')
|
|
->build();
|
|
|
|
$builder->createField('supportedFeatures', 'array')
|
|
->columnName('supported_features')
|
|
->nullable()
|
|
->build();
|
|
|
|
$builder->createField('apiKeys', 'array')
|
|
->columnName('api_keys')
|
|
->build();
|
|
|
|
$builder->createField('featureSettings', 'array')
|
|
->columnName('feature_settings')
|
|
->nullable()
|
|
->build();
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getId()
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
/**
|
|
* @return Plugin|null
|
|
*/
|
|
public function getPlugin()
|
|
{
|
|
return $this->plugin;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $plugin
|
|
*
|
|
* @return Integration
|
|
*/
|
|
public function setPlugin($plugin)
|
|
{
|
|
$this->plugin = $plugin;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getName()
|
|
{
|
|
return $this->name;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $name
|
|
*
|
|
* @return Integration
|
|
*/
|
|
public function setName($name)
|
|
{
|
|
$this->isChanged('name', $name);
|
|
|
|
$this->name = $name;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getIsPublished()
|
|
{
|
|
return $this->isPublished;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $isPublished
|
|
*
|
|
* @return Integration
|
|
*/
|
|
public function setIsPublished($isPublished)
|
|
{
|
|
$this->isChanged('isPublished', $isPublished);
|
|
|
|
$this->isPublished = $isPublished;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function isPublished(): bool
|
|
{
|
|
return $this->isPublished;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getSupportedFeatures()
|
|
{
|
|
return $this->supportedFeatures;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $supportedFeatures
|
|
*
|
|
* @return Integration
|
|
*/
|
|
public function setSupportedFeatures($supportedFeatures)
|
|
{
|
|
$this->isChanged('supportedFeatures', $supportedFeatures);
|
|
|
|
$this->supportedFeatures = $supportedFeatures;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getApiKeys()
|
|
{
|
|
return $this->apiKeys;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $apiKeys
|
|
*
|
|
* @return Integration
|
|
*/
|
|
public function setApiKeys($apiKeys)
|
|
{
|
|
$this->apiKeys = $apiKeys;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function getFeatureSettings()
|
|
{
|
|
return $this->featureSettings;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $featureSettings
|
|
*
|
|
* @return Integration
|
|
*/
|
|
public function setFeatureSettings($featureSettings)
|
|
{
|
|
$this->isChanged('featureSettings', $featureSettings);
|
|
|
|
$this->featureSettings = $featureSettings;
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function getCacheNamespacesToDelete(): array
|
|
{
|
|
return [self::CACHE_NAMESPACE];
|
|
}
|
|
}
|