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; | |
| use Mautic\CoreBundle\Entity\IpAddress; | |
| use Mautic\EmailBundle\Entity\Email; | |
| use Mautic\LeadBundle\Entity\Lead; | |
| use Mautic\LeadBundle\Entity\LeadDevice; | |
| class Hit | |
| { | |
| public const TABLE_NAME = 'page_hits'; | |
| /** | |
| * @var string | |
| */ | |
| private $id; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $dateHit; | |
| /** | |
| * @var \DateTimeInterface | |
| */ | |
| private $dateLeft; | |
| private ?Page $page = null; | |
| /** | |
| * @var Redirect|null | |
| */ | |
| private $redirect; | |
| /** | |
| * @var Email|null | |
| */ | |
| private $email; | |
| /** | |
| * @var Lead|null | |
| */ | |
| private $lead; | |
| /** | |
| * @var IpAddress|null | |
| */ | |
| private $ipAddress; | |
| /** | |
| * @var string|null | |
| */ | |
| private $country; | |
| /** | |
| * @var string|null | |
| */ | |
| private $region; | |
| /** | |
| * @var string|null | |
| */ | |
| private $city; | |
| /** | |
| * @var string|null | |
| */ | |
| private $isp; | |
| /** | |
| * @var string|null | |
| */ | |
| private $organization; | |
| /** | |
| * @var int | |
| */ | |
| private $code; | |
| private $referer; | |
| private $url; | |
| /** | |
| * @var string|null | |
| */ | |
| private $urlTitle; | |
| /** | |
| * @var string|null | |
| */ | |
| private $userAgent; | |
| /** | |
| * @var string|null | |
| */ | |
| private $remoteHost; | |
| /** | |
| * @var string|null | |
| */ | |
| private $pageLanguage; | |
| /** | |
| * @var array<string> | |
| */ | |
| private $browserLanguages = []; | |
| /** | |
| * @var string | |
| **/ | |
| private $trackingId; | |
| /** | |
| * @var string|null | |
| */ | |
| private $source; | |
| /** | |
| * @var int|null | |
| */ | |
| private $sourceId; | |
| /** | |
| * @var array | |
| */ | |
| private $query = []; | |
| /** | |
| * @var LeadDevice|null | |
| */ | |
| private $device; | |
| public static function loadMetadata(ORM\ClassMetadata $metadata): void | |
| { | |
| $builder = new ClassMetadataBuilder($metadata); | |
| $builder->setTable(self::TABLE_NAME) | |
| ->setCustomRepositoryClass(HitRepository::class) | |
| ->addIndex(['tracking_id'], 'page_hit_tracking_search') | |
| ->addIndex(['code'], 'page_hit_code_search') | |
| ->addIndex(['source', 'source_id'], 'page_hit_source_search') | |
| ->addIndex(['date_hit', 'date_left'], 'date_hit_left_index') | |
| ->addIndexWithOptions(['url'], 'page_hit_url', ['lengths' => [0 => 128]]); | |
| $builder->addBigIntIdField(); | |
| $builder->createField('dateHit', 'datetime') | |
| ->columnName('date_hit') | |
| ->build(); | |
| $builder->createField('dateLeft', 'datetime') | |
| ->columnName('date_left') | |
| ->nullable() | |
| ->build(); | |
| $builder->createManyToOne('page', 'Page') | |
| ->addJoinColumn('page_id', 'id', true, false, 'SET NULL') | |
| ->build(); | |
| $builder->createManyToOne('redirect', 'Redirect') | |
| ->addJoinColumn('redirect_id', 'id', true, false, 'SET NULL') | |
| ->build(); | |
| $builder->createManyToOne('email', Email::class) | |
| ->addJoinColumn('email_id', 'id', true, false, 'SET NULL') | |
| ->build(); | |
| $builder->addLead(true, 'SET NULL'); | |
| $builder->addIpAddress(true); | |
| $builder->createField('country', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('region', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('city', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('isp', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('organization', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->addField('code', 'integer'); | |
| $builder->createField('referer', 'text') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('url', 'text') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('urlTitle', 'string') | |
| ->columnName('url_title') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('userAgent', 'text') | |
| ->columnName('user_agent') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('remoteHost', 'string') | |
| ->columnName('remote_host') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('pageLanguage', 'string') | |
| ->columnName('page_language') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('browserLanguages', 'array') | |
| ->columnName('browser_languages') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('trackingId', 'string') | |
| ->columnName('tracking_id') | |
| ->build(); | |
| $builder->createField('source', 'string') | |
| ->nullable() | |
| ->build(); | |
| $builder->createField('sourceId', 'integer') | |
| ->columnName('source_id') | |
| ->nullable() | |
| ->build(); | |
| $builder->addNullableField('query', 'array'); | |
| $builder->createManyToOne('device', LeadDevice::class) | |
| ->addJoinColumn('device_id', 'id', true, false, 'SET NULL') | |
| ->cascadePersist() | |
| ->build(); | |
| } | |
| /** | |
| * Prepares the metadata for API usage. | |
| */ | |
| public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
| { | |
| $metadata->setGroupPrefix('hit') | |
| ->addProperties( | |
| [ | |
| 'id', | |
| 'dateHit', | |
| 'dateLeft', | |
| 'page', | |
| 'redirect', | |
| 'email', | |
| 'lead', | |
| 'ipAddress', | |
| 'country', | |
| 'region', | |
| 'city', | |
| 'isp', | |
| 'organization', | |
| 'code', | |
| 'referer', | |
| 'url', | |
| 'urlTitle', | |
| 'userAgent', | |
| 'remoteHost', | |
| 'pageLanguage', | |
| 'browserLanguages', | |
| 'trackingId', | |
| 'source', | |
| 'sourceId', | |
| 'query', | |
| ] | |
| ) | |
| ->build(); | |
| } | |
| /** | |
| * Get id. | |
| */ | |
| public function getId(): int | |
| { | |
| return (int) $this->id; | |
| } | |
| /** | |
| * Set dateHit. | |
| * | |
| * @param \DateTime $dateHit | |
| * | |
| * @return Hit | |
| */ | |
| public function setDateHit($dateHit) | |
| { | |
| $this->dateHit = $dateHit; | |
| return $this; | |
| } | |
| /** | |
| * Get dateHit. | |
| * | |
| * @return \DateTimeInterface | |
| */ | |
| public function getDateHit() | |
| { | |
| return $this->dateHit; | |
| } | |
| /** | |
| * @return \DateTimeInterface | |
| */ | |
| public function getDateLeft() | |
| { | |
| return $this->dateLeft; | |
| } | |
| /** | |
| * @param \DateTime $dateLeft | |
| * | |
| * @return Hit | |
| */ | |
| public function setDateLeft($dateLeft) | |
| { | |
| $this->dateLeft = $dateLeft; | |
| return $this; | |
| } | |
| /** | |
| * Set country. | |
| * | |
| * @param string $country | |
| * | |
| * @return Hit | |
| */ | |
| public function setCountry($country) | |
| { | |
| $this->country = $country; | |
| return $this; | |
| } | |
| /** | |
| * Get country. | |
| * | |
| * @return string | |
| */ | |
| public function getCountry() | |
| { | |
| return $this->country; | |
| } | |
| /** | |
| * Set region. | |
| * | |
| * @param string $region | |
| * | |
| * @return Hit | |
| */ | |
| public function setRegion($region) | |
| { | |
| $this->region = $region; | |
| return $this; | |
| } | |
| /** | |
| * Get region. | |
| * | |
| * @return string | |
| */ | |
| public function getRegion() | |
| { | |
| return $this->region; | |
| } | |
| /** | |
| * Set city. | |
| * | |
| * @param string $city | |
| * | |
| * @return Hit | |
| */ | |
| public function setCity($city) | |
| { | |
| $this->city = $city; | |
| return $this; | |
| } | |
| /** | |
| * Get city. | |
| * | |
| * @return string | |
| */ | |
| public function getCity() | |
| { | |
| return $this->city; | |
| } | |
| /** | |
| * Set isp. | |
| * | |
| * @param string $isp | |
| * | |
| * @return Hit | |
| */ | |
| public function setIsp($isp) | |
| { | |
| $this->isp = $isp; | |
| return $this; | |
| } | |
| /** | |
| * Get isp. | |
| * | |
| * @return string | |
| */ | |
| public function getIsp() | |
| { | |
| return $this->isp; | |
| } | |
| /** | |
| * Set organization. | |
| * | |
| * @param string $organization | |
| * | |
| * @return Hit | |
| */ | |
| public function setOrganization($organization) | |
| { | |
| $this->organization = $organization; | |
| return $this; | |
| } | |
| /** | |
| * Get organization. | |
| * | |
| * @return string | |
| */ | |
| public function getOrganization() | |
| { | |
| return $this->organization; | |
| } | |
| /** | |
| * Set code. | |
| * | |
| * @param int $code | |
| * | |
| * @return Hit | |
| */ | |
| public function setCode($code) | |
| { | |
| $this->code = $code; | |
| return $this; | |
| } | |
| /** | |
| * Get code. | |
| * | |
| * @return int | |
| */ | |
| public function getCode() | |
| { | |
| return $this->code; | |
| } | |
| /** | |
| * Set referer. | |
| * | |
| * @param string $referer | |
| * | |
| * @return Hit | |
| */ | |
| public function setReferer($referer) | |
| { | |
| $this->referer = $referer; | |
| return $this; | |
| } | |
| /** | |
| * Get referer. | |
| * | |
| * @return string | |
| */ | |
| public function getReferer() | |
| { | |
| return $this->referer; | |
| } | |
| /** | |
| * Set url. | |
| * | |
| * @param string $url | |
| * | |
| * @return Hit | |
| */ | |
| public function setUrl($url) | |
| { | |
| $this->url = $url; | |
| return $this; | |
| } | |
| /** | |
| * Get url. | |
| * | |
| * @return string | |
| */ | |
| public function getUrl() | |
| { | |
| return $this->url; | |
| } | |
| /** | |
| * Set url title. | |
| * | |
| * @param string $urlTitle | |
| * | |
| * @return Hit | |
| */ | |
| public function setUrlTitle($urlTitle) | |
| { | |
| $urlTitle = mb_strlen($urlTitle) <= 191 ? $urlTitle : mb_substr($urlTitle, 0, 191); | |
| $this->urlTitle = $urlTitle; | |
| return $this; | |
| } | |
| /** | |
| * Get url title. | |
| * | |
| * @return string | |
| */ | |
| public function getUrlTitle() | |
| { | |
| return $this->urlTitle; | |
| } | |
| /** | |
| * Set userAgent. | |
| * | |
| * @param string $userAgent | |
| * | |
| * @return Hit | |
| */ | |
| public function setUserAgent($userAgent) | |
| { | |
| $this->userAgent = $userAgent; | |
| return $this; | |
| } | |
| /** | |
| * Get userAgent. | |
| * | |
| * @return string | |
| */ | |
| public function getUserAgent() | |
| { | |
| return $this->userAgent; | |
| } | |
| /** | |
| * Set remoteHost. | |
| * | |
| * @param string $remoteHost | |
| * | |
| * @return Hit | |
| */ | |
| public function setRemoteHost($remoteHost) | |
| { | |
| $this->remoteHost = $remoteHost; | |
| return $this; | |
| } | |
| /** | |
| * Get remoteHost. | |
| * | |
| * @return string | |
| */ | |
| public function getRemoteHost() | |
| { | |
| return $this->remoteHost; | |
| } | |
| /** | |
| * Set page. | |
| * | |
| * @return Hit | |
| */ | |
| public function setPage(Page $page = null) | |
| { | |
| $this->page = $page; | |
| return $this; | |
| } | |
| /** | |
| * @return ?Page | |
| */ | |
| public function getPage() | |
| { | |
| return $this->page; | |
| } | |
| /** | |
| * @return Hit | |
| */ | |
| public function setIpAddress(IpAddress $ipAddress) | |
| { | |
| $this->ipAddress = $ipAddress; | |
| return $this; | |
| } | |
| /** | |
| * @return IpAddress|null | |
| */ | |
| public function getIpAddress() | |
| { | |
| return $this->ipAddress; | |
| } | |
| /** | |
| * @param string $trackingId | |
| * | |
| * @return Hit | |
| */ | |
| public function setTrackingId($trackingId) | |
| { | |
| $this->trackingId = $trackingId; | |
| return $this; | |
| } | |
| /** | |
| * Get trackingId. | |
| * | |
| * @return string|null | |
| */ | |
| public function getTrackingId() | |
| { | |
| return $this->trackingId; | |
| } | |
| /** | |
| * Set pageLanguage. | |
| * | |
| * @param string $pageLanguage | |
| * | |
| * @return Hit | |
| */ | |
| public function setPageLanguage($pageLanguage) | |
| { | |
| $this->pageLanguage = $pageLanguage; | |
| return $this; | |
| } | |
| /** | |
| * Get pageLanguage. | |
| * | |
| * @return string | |
| */ | |
| public function getPageLanguage() | |
| { | |
| return $this->pageLanguage; | |
| } | |
| /** | |
| * Set browserLanguages. | |
| * | |
| * @param array<string> $browserLanguages | |
| * | |
| * @return Hit | |
| */ | |
| public function setBrowserLanguages($browserLanguages) | |
| { | |
| $this->browserLanguages = $browserLanguages; | |
| return $this; | |
| } | |
| /** | |
| * Get browserLanguages. | |
| * | |
| * @return array<string> | |
| */ | |
| public function getBrowserLanguages() | |
| { | |
| return $this->browserLanguages; | |
| } | |
| /** | |
| * @return Lead | |
| */ | |
| public function getLead() | |
| { | |
| return $this->lead; | |
| } | |
| /** | |
| * @return Hit | |
| */ | |
| public function setLead(Lead $lead) | |
| { | |
| $this->lead = $lead; | |
| return $this; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getSource() | |
| { | |
| return $this->source; | |
| } | |
| /** | |
| * @param string $source | |
| * | |
| * @return Hit | |
| */ | |
| public function setSource($source) | |
| { | |
| $this->source = $source; | |
| return $this; | |
| } | |
| /** | |
| * @return int | |
| */ | |
| public function getSourceId() | |
| { | |
| return $this->sourceId; | |
| } | |
| /** | |
| * @param int $sourceId | |
| * | |
| * @return Hit | |
| */ | |
| public function setSourceId($sourceId) | |
| { | |
| $this->sourceId = (int) $sourceId; | |
| return $this; | |
| } | |
| /** | |
| * @return Redirect | |
| */ | |
| public function getRedirect() | |
| { | |
| return $this->redirect; | |
| } | |
| /** | |
| * @return Hit | |
| */ | |
| public function setRedirect(Redirect $redirect) | |
| { | |
| $this->redirect = $redirect; | |
| return $this; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function getEmail() | |
| { | |
| return $this->email; | |
| } | |
| /** | |
| * @param mixed $email | |
| */ | |
| public function setEmail(Email $email): void | |
| { | |
| $this->email = $email; | |
| } | |
| /** | |
| * @return array | |
| */ | |
| public function getQuery() | |
| { | |
| return $this->query; | |
| } | |
| /** | |
| * @param array $query | |
| * | |
| * @return Hit | |
| */ | |
| public function setQuery($query) | |
| { | |
| $this->query = $query; | |
| return $this; | |
| } | |
| /** | |
| * @return LeadDevice | |
| */ | |
| public function getDeviceStat() | |
| { | |
| return $this->device; | |
| } | |
| /** | |
| * @return Hit | |
| */ | |
| public function setDeviceStat(LeadDevice $device) | |
| { | |
| $this->device = $device; | |
| return $this; | |
| } | |
| } | |