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; | |
} | |
} | |