Spaces:
No application file
No application file
| namespace Mautic\PageBundle\Entity; | |
| use Doctrine\ORM\Mapping as ORM; | |
| use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; | |
| use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; | |
| class Trackable | |
| { | |
| /** | |
| * @var Redirect | |
| */ | |
| private $redirect; | |
| /** | |
| * @var string | |
| */ | |
| private $channel; | |
| /** | |
| * @var int | |
| */ | |
| private $channelId; | |
| /** | |
| * @var int | |
| */ | |
| private $hits = 0; | |
| /** | |
| * @var int | |
| */ | |
| private $uniqueHits = 0; | |
| public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
| { | |
| $builder = new ClassMetadataBuilder($metadata); | |
| $builder->setTable('channel_url_trackables') | |
| ->setCustomRepositoryClass(TrackableRepository::class) | |
| ->addIndex(['channel', 'channel_id'], 'channel_url_trackable_search'); | |
| $builder->createManyToOne('redirect', Redirect::class) | |
| ->addJoinColumn('redirect_id', 'id', true, false, 'CASCADE') | |
| ->cascadePersist() | |
| ->inversedBy('trackables') | |
| ->isPrimaryKey() | |
| ->build(); | |
| $builder->createField('channelId', 'integer') | |
| ->columnName('channel_id') | |
| ->makePrimaryKey() | |
| ->build(); | |
| $builder->addField('channel', 'string'); | |
| $builder->addField('hits', 'integer'); | |
| $builder->addNamedField('uniqueHits', 'integer', 'unique_hits'); | |
| } | |
| /** | |
| * Prepares the metadata for API usage. | |
| */ | |
| public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
| { | |
| $metadata->setGroupPrefix('trackable') | |
| ->addListProperties( | |
| [ | |
| 'redirect', | |
| 'channelId', | |
| 'channel', | |
| 'hits', | |
| 'uniqueHits', | |
| ] | |
| ) | |
| ->build(); | |
| } | |
| /** | |
| * @return Redirect | |
| */ | |
| public function getRedirect() | |
| { | |
| return $this->redirect; | |
| } | |
| /** | |
| * @return Trackable | |
| */ | |
| public function setRedirect(Redirect $redirect) | |
| { | |
| $this->redirect = $redirect; | |
| return $this; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getChannel() | |
| { | |
| return $this->channel; | |
| } | |
| /** | |
| * @param string $channel | |
| * | |
| * @return Trackable | |
| */ | |
| public function setChannel($channel) | |
| { | |
| $this->channel = $channel; | |
| return $this; | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getChannelId() | |
| { | |
| return $this->channelId; | |
| } | |
| /** | |
| * @param int $channelId | |
| * | |
| * @return Trackable | |
| */ | |
| public function setChannelId($channelId) | |
| { | |
| $this->channelId = $channelId; | |
| return $this; | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getHits() | |
| { | |
| return $this->hits; | |
| } | |
| /** | |
| * @param int $hits | |
| * | |
| * @return Trackable | |
| */ | |
| public function setHits($hits) | |
| { | |
| $this->hits = $hits; | |
| return $this; | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getUniqueHits() | |
| { | |
| return $this->uniqueHits; | |
| } | |
| /** | |
| * @param int $uniqueHits | |
| * | |
| * @return Trackable | |
| */ | |
| public function setUniqueHits($uniqueHits) | |
| { | |
| $this->uniqueHits = $uniqueHits; | |
| return $this; | |
| } | |
| } | |