![]() 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/PageBundle/Entity/ |
<?php namespace Mautic\PageBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; use Mautic\CategoryBundle\Entity\Category; use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; use Mautic\CoreBundle\Entity\FormEntity; use Mautic\CoreBundle\Entity\TranslationEntityInterface; use Mautic\CoreBundle\Entity\TranslationEntityTrait; use Mautic\CoreBundle\Entity\VariantEntityInterface; use Mautic\CoreBundle\Entity\VariantEntityTrait; use Mautic\CoreBundle\Validator\EntityEvent; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Constraints\Callback; use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Mapping\ClassMetadata; class Page extends FormEntity implements TranslationEntityInterface, VariantEntityInterface { use TranslationEntityTrait; use VariantEntityTrait; /** * @var int */ private $id; /** * @var string */ private $title; /** * @var string */ private $alias; /** * @var string|null */ private $template; /** * @var string|null */ private $customHtml; /** * @var array */ private $content = []; /** * @var \DateTimeInterface */ private $publishUp; /** * @var \DateTimeInterface */ private $publishDown; /** * @var int */ private $hits = 0; /** * @var int */ private $uniqueHits = 0; /** * @var int */ private $variantHits = 0; /** * @var int */ private $revision = 1; /** * @var string|null */ private $metaDescription; /** * @var string|null */ private $headScript; /** * @var string|null */ private $footerScript; /** * @var string|null */ private $redirectType; /** * @var string|null */ private $redirectUrl; /** * @var Category|null **/ private $category; /** * @var bool|null */ private $isPreferenceCenter; /** * @var bool|null */ private $noIndex; /** * Used to identify the page for the builder. */ private $sessionId; public function __clone() { $this->id = null; $this->clearTranslations(); $this->clearVariants(); parent::__clone(); } public function __construct() { $this->translationChildren = new \Doctrine\Common\Collections\ArrayCollection(); $this->variantChildren = new \Doctrine\Common\Collections\ArrayCollection(); } public static function loadMetadata(ORM\ClassMetadata $metadata): void { $builder = new ClassMetadataBuilder($metadata); $builder->setTable('pages') ->setCustomRepositoryClass(PageRepository::class) ->addIndex(['alias'], 'page_alias_search'); $builder->addId(); $builder->addField('title', 'string'); $builder->addField('alias', 'string'); $builder->addNullableField('template', 'string'); $builder->createField('customHtml', 'text') ->columnName('custom_html') ->nullable() ->build(); $builder->createField('content', 'array') ->nullable() ->build(); $builder->addPublishDates(); $builder->addField('hits', 'integer'); $builder->createField('uniqueHits', 'integer') ->columnName('unique_hits') ->build(); $builder->createField('variantHits', 'integer') ->columnName('variant_hits') ->build(); $builder->addField('revision', 'integer'); $builder->createField('metaDescription', 'string') ->columnName('meta_description') ->nullable() ->build(); $builder->createField('headScript', 'text') ->columnName('head_script') ->nullable() ->build(); $builder->createField('footerScript', 'text') ->columnName('footer_script') ->nullable() ->build(); $builder->createField('redirectType', 'string') ->columnName('redirect_type') ->nullable() ->length(100) ->build(); $builder->createField('redirectUrl', 'string') ->columnName('redirect_url') ->nullable() ->length(2048) ->build(); $builder->addCategory(); $builder->createField('isPreferenceCenter', 'boolean') ->columnName('is_preference_center') ->nullable() ->build(); $builder->createField('noIndex', 'boolean') ->columnName('no_index') ->nullable() ->build(); self::addTranslationMetadata($builder, self::class); self::addVariantMetadata($builder, self::class); } public static function loadValidatorMetadata(ClassMetadata $metadata): void { $metadata->addPropertyConstraint('title', new NotBlank([ 'message' => 'mautic.core.title.required', ])); $metadata->addConstraint(new Callback([ 'callback' => function (Page $page, ExecutionContextInterface $context): void { $type = $page->getRedirectType(); if (!is_null($type)) { $validator = $context->getValidator(); $violations = $validator->validate($page->getRedirectUrl(), [ new Assert\Url( [ 'message' => 'mautic.core.value.required', ] ), ]); if (count($violations) > 0) { $string = (string) $violations; $context->buildViolation($string) ->atPath('redirectUrl') ->addViolation(); } } if ($page->isVariant()) { // Get a summation of weights $parent = $page->getVariantParent(); $children = $parent ? $parent->getVariantChildren() : $page->getVariantChildren(); $total = 0; foreach ($children as $child) { $settings = $child->getVariantSettings(); $total += (int) $settings['weight']; } if ($total > 100) { $context->buildViolation('mautic.core.variant_weights_invalid') ->atPath('variantSettings[weight]') ->addViolation(); } } }, ])); $metadata->addConstraint(new EntityEvent()); } /** * Prepares the metadata for API usage. */ public static function loadApiMetadata(ApiMetadataDriver $metadata): void { $metadata->setGroupPrefix('page') ->addListProperties( [ 'id', 'title', 'alias', 'category', ] ) ->addProperties( [ 'language', 'publishUp', 'publishDown', 'hits', 'uniqueHits', 'variantHits', 'revision', 'metaDescription', 'redirectType', 'redirectUrl', 'isPreferenceCenter', 'noIndex', 'variantSettings', 'variantStartDate', 'variantParent', 'variantChildren', 'translationParent', 'translationChildren', 'template', 'customHtml', ] ) ->setMaxDepth(1, 'variantParent') ->setMaxDepth(1, 'variantChildren') ->setMaxDepth(1, 'translationParent') ->setMaxDepth(1, 'translationChildren') ->build(); } /** * Get id. * * @return int */ public function getId() { return $this->id; } /** * Set title. * * @param string $title * * @return Page */ public function setTitle($title) { $this->isChanged('title', $title); $this->title = $title; return $this; } /** * Get title. * * @return string */ public function getTitle() { return $this->title; } /** * Set alias. * * @param string $alias * * @return Page */ public function setAlias($alias) { $this->isChanged('alias', $alias); $this->alias = $alias; return $this; } /** * Get alias. * * @return string */ public function getAlias() { return $this->alias; } /** * Set content. * * @param array<string> $content * * @return Page */ public function setContent($content) { $this->isChanged('content', $content); $this->content = $content; return $this; } /** * Get content. * * @return array<string> */ public function getContent() { return $this->content; } /** * Set publishUp. * * @param \DateTime $publishUp * * @return Page */ public function setPublishUp($publishUp) { $this->isChanged('publishUp', $publishUp); $this->publishUp = $publishUp; return $this; } /** * Get publishUp. * * @return \DateTimeInterface */ public function getPublishUp() { return $this->publishUp; } /** * Set publishDown. * * @param \DateTime $publishDown * * @return Page */ public function setPublishDown($publishDown) { $this->isChanged('publishDown', $publishDown); $this->publishDown = $publishDown; return $this; } /** * Get publishDown. * * @return \DateTimeInterface */ public function getPublishDown() { return $this->publishDown; } /** * Set hits. * * @param int $hits * * @return Page */ public function setHits($hits) { $this->hits = $hits; return $this; } /** * Get hits. * * @param bool $includeVariants * * @return int|mixed */ public function getHits($includeVariants = false) { return ($includeVariants) ? $this->getAccumulativeVariantCount('getHits') : $this->hits; } /** * Set revision. * * @param int $revision * * @return Page */ public function setRevision($revision) { $this->revision = $revision; return $this; } /** * Get revision. * * @return int */ public function getRevision() { return $this->revision; } /** * Set metaDescription. * * @param string $metaDescription * * @return Page */ public function setMetaDescription($metaDescription) { $this->isChanged('metaDescription', $metaDescription); $this->metaDescription = $metaDescription; return $this; } /** * Get metaDescription. * * @return string */ public function getMetaDescription() { return $this->metaDescription; } /** * Set headScript. * * @param string $headScript * * @return Page */ public function setHeadScript($headScript) { $this->headScript = $headScript; return $this; } /** * Get headScript. * * @return string */ public function getHeadScript() { return $this->headScript; } /** * Set footerScript. * * @param string $footerScript * * @return Page */ public function setFooterScript($footerScript) { $this->footerScript = $footerScript; return $this; } /** * Get footerScript. * * @return string */ public function getFooterScript() { return $this->footerScript; } /** * Set redirectType. * * @param string $redirectType * * @return Page */ public function setRedirectType($redirectType) { $this->isChanged('redirectType', $redirectType); $this->redirectType = $redirectType; return $this; } /** * Get redirectType. * * @return string */ public function getRedirectType() { return $this->redirectType; } /** * Set redirectUrl. * * @param string $redirectUrl * * @return Page */ public function setRedirectUrl($redirectUrl) { $this->isChanged('redirectUrl', $redirectUrl); $this->redirectUrl = $redirectUrl; return $this; } /** * Get redirectUrl. * * @return string */ public function getRedirectUrl() { return $this->redirectUrl; } /** * Set category. * * @return Page */ public function setCategory(Category $category = null) { $this->isChanged('category', $category); $this->category = $category; return $this; } /** * Get category. * * @return Category */ public function getCategory() { return $this->category; } /** * @param bool|null $isPreferenceCenter * * @return Page */ public function setIsPreferenceCenter($isPreferenceCenter) { $sanitizedValue = null === $isPreferenceCenter ? null : (bool) $isPreferenceCenter; $this->isChanged('isPreferenceCenter', $sanitizedValue); $this->isPreferenceCenter = $sanitizedValue; return $this; } /** * @return bool|null */ public function getIsPreferenceCenter() { return $this->isPreferenceCenter; } /** * @param bool|null $noIndex */ public function setNoIndex($noIndex): void { $sanitizedValue = null === $noIndex ? null : (bool) $noIndex; $this->isChanged('noIndex', $sanitizedValue); $this->noIndex = $sanitizedValue; } /** * @return bool|null */ public function getNoIndex() { return $this->noIndex; } /** * Set sessionId. * * @param string $id * * @return Page */ public function setSessionId($id) { $this->sessionId = $id; return $this; } /** * Get sessionId. * * @return string */ public function getSessionId() { return $this->sessionId; } /** * Set template. * * @param string $template * * @return Page */ public function setTemplate($template) { $this->isChanged('template', $template); $this->template = $template; return $this; } /** * Get template. * * @return string */ public function getTemplate() { return $this->template; } protected function isChanged($prop, $val) { $getter = 'get'.ucfirst($prop); $current = $this->$getter(); if ('translationParent' == $prop || 'variantParent' == $prop || 'category' == $prop) { $currentId = ($current) ? $current->getId() : ''; $newId = ($val) ? $val->getId() : null; if ($currentId != $newId) { $this->changes[$prop] = [$currentId, $newId]; } } else { parent::isChanged($prop, $val); } } /** * Set uniqueHits. * * @param int $uniqueHits * * @return Page */ public function setUniqueHits($uniqueHits) { $this->uniqueHits = $uniqueHits; return $this; } /** * Get uniqueHits. * * @return int */ public function getUniqueHits($includeVariants = false) { return ($includeVariants) ? $this->getAccumulativeVariantCount('getUniqueHits') : $this->uniqueHits; } /** * @param bool $includeVariants * * @return int|mixed */ public function getVariantHits($includeVariants = false) { return ($includeVariants) ? $this->getAccumulativeVariantCount('getVariantHits') : $this->variantHits; } /** * @param mixed $variantHits */ public function setVariantHits($variantHits): void { $this->variantHits = $variantHits; } /** * @return mixed */ public function getCustomHtml() { return $this->customHtml; } /** * @param mixed $customHtml */ public function setCustomHtml($customHtml): void { $this->customHtml = $customHtml; } }