. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Modules\Crm\Entities; use Espo\Core\ORM\Entity; use LogicException; class CampaignTrackingUrl extends Entity { public const ENTITY_TYPE = 'CampaignTrackingUrl'; public const ACTION_SHOW_MESSAGE = 'Show Message'; public function get(string $attribute): mixed { if ($attribute === 'urlToUse') { return $this->getUrlToUseInternal(); } return parent::get($attribute); } public function has(string $attribute): bool { if ($attribute === 'urlToUse') { return $this->hasUrlToUseInternal(); } return parent::has($attribute); } public function getCampaignId(): ?string { return $this->get('campaignId'); } public function getAction(): ?string { return $this->get('action'); } public function getMessage(): ?string { return $this->get('message'); } public function getUrl(): ?string { return $this->get('url'); } public function getUrlToUse(): string { if (!$this->id) { throw new LogicException(); } return $this->get('urlToUse'); } private function getUrlToUseInternal(): string { return "{trackingUrl:$this->id}"; } private function hasUrlToUseInternal(): bool { return !$this->isNew(); } public function getCampaign(): ?Campaign { /** @var ?Campaign */ return $this->relations->getOne('campaign'); } }