![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/PluginBundle/Entity/ |
<?php namespace Mautic\PluginBundle\Entity; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Mapping as ORM; use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; use Mautic\CoreBundle\Entity\CacheInvalidateInterface; use Mautic\CoreBundle\Entity\CommonEntity; class Plugin extends CommonEntity implements CacheInvalidateInterface { public const DESCRIPTION_DELIMITER_REGEX = "/\R---\R/"; public const CACHE_NAMESPACE = 'Plugin'; /** * @var int */ private $id; /** * @var string */ private $name; /** * @var string|null */ private $description; /** * @var string */ private $primaryDescription; /** * @var string */ private $secondaryDescription; /** * @var bool */ private $isMissing = false; /** * @var string */ private $bundle; /** * @var string|null */ private $version; /** * @var string|null */ private $author; /** * @var ArrayCollection<int, \Mautic\PluginBundle\Entity\Integration> */ private $integrations; public function __construct() { $this->integrations = new ArrayCollection(); } public static function loadMetadata(ORM\ClassMetadata $metadata): void { $builder = new ClassMetadataBuilder($metadata); $builder->setTable('plugins') ->setCustomRepositoryClass(PluginRepository::class) ->addUniqueConstraint(['bundle'], 'unique_bundle'); $builder->addIdColumns(); $builder->createField('isMissing', 'boolean') ->columnName('is_missing') ->build(); $builder->createField('bundle', 'string') ->length(50) ->build(); $builder->createField('version', 'string') ->nullable() ->build(); $builder->createField('author', 'string') ->nullable() ->build(); $builder->createOneToMany('integrations', 'Integration') ->setIndexBy('id') ->mappedBy('plugin') ->fetchExtraLazy() ->build(); } public function __clone() { $this->id = null; } /** * Get id. * * @return int */ public function getId() { return $this->id; } /** * Set name. * * @param string $name * * @return Plugin */ public function setName($name) { $this->name = $name; return $this; } /** * Get name. * * @return string */ public function getName() { return $this->name; } /** * @param string $bundle */ public function setBundle($bundle): void { $this->bundle = $bundle; } /** * @return string */ public function getBundle() { return $this->bundle; } /** * @return mixed */ public function getIntegrations() { return $this->integrations; } /** * @return mixed */ public function getDescription() { return $this->description; } /** * @param mixed $description */ public function setDescription($description): void { $this->description = $description; $this->splitDescriptions(); } /** * @return string|null */ public function getPrimaryDescription() { return $this->primaryDescription ?: $this->description; } public function hasSecondaryDescription(): bool { return $this->description && preg_match(self::DESCRIPTION_DELIMITER_REGEX, $this->description) >= 1; } /** * @return string|null */ public function getSecondaryDescription() { return $this->secondaryDescription; } /** * @return mixed */ public function getVersion() { return $this->version; } /** * @param mixed $version */ public function setVersion($version): void { $this->version = $version; } /** * @return mixed */ public function getIsMissing() { return $this->isMissing; } /** * @param mixed $isMissing */ public function setIsMissing($isMissing): void { $this->isMissing = $isMissing; } /** * @return mixed */ public function getAuthor() { return $this->author; } /** * @param mixed $author */ public function setAuthor($author): void { $this->author = $author; } /** * Splits description into primary and secondary. */ public function splitDescriptions(): void { if ($this->hasSecondaryDescription()) { $parts = preg_split(self::DESCRIPTION_DELIMITER_REGEX, $this->description); $this->primaryDescription = trim($parts[0]); $this->secondaryDescription = trim($parts[1]); } } public function getCacheNamespacesToDelete(): array { return [ self::CACHE_NAMESPACE, Integration::CACHE_NAMESPACE, ]; } }