src/App/Entity/Content/AbstractAlteration.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Content;
  3. use App\Entity\Content\Common\DiscriminatorInterface;
  4. use App\Entity\Content\Common\DiscriminatorTrait;
  5. use App\Entity\Content\Common\Props\HeadlineTrait;
  6. use App\Entity\Content\Common\Props\TimestampTrait;
  7. use App\Entity\Shared\UlidIdentifiableInterface;
  8. use App\Entity\Shared\UlidIdentifiableTrait;
  9. use App\Model\Content\AlterationInterface;
  10. use App\Model\Content\ContentInterface;
  11. use App\Model\Content\ObjectInterface;
  12. use Cms\CoreBundle\Model\Interfaces\Blameable;
  13. use Cms\CoreBundle\Model\Interfaces\Timestampable;
  14. use Cms\TenantBundle\Model as Tenantable;
  15. use Doctrine\ORM\Mapping as ORM;
  16. /**
  17.  * @ORM\Entity(
  18.  *     repositoryClass = "App\Doctrine\Repository\Content\AlterationRepository",
  19.  * )
  20.  * @ORM\InheritanceType("SINGLE_TABLE")
  21.  * @ORM\DiscriminatorColumn(
  22.  *     name = DiscriminatorInterface::COLUMN__NAME,
  23.  *     type = DiscriminatorInterface::COLUMN__TYPE,
  24.  *     length = 64,
  25.  * )
  26.  * @ORM\DiscriminatorMap(AbstractAlteration::DISCRS)
  27.  * @ORM\Table(
  28.  *     name = "sn__content__alteration",
  29.  *     indexes = {
  30.  *         @ORM\Index(
  31.  *             name = "idx__discr",
  32.  *             columns = {
  33.  *                 "discr",
  34.  *             },
  35.  *         ),
  36.  *     },
  37.  * )
  38.  */
  39. abstract class AbstractAlteration
  40.     implements
  41.         Tenantable\TenantableInterface,
  42.         UlidIdentifiableInterface,
  43.         Timestampable\TimestampableInterface,
  44.         Blameable\BlameableInterface,
  45.         DiscriminatorInterface,
  46.         AlterationInterface
  47. {
  48.     const DISCR null;
  49.     const DISCRS = [
  50.         Alerts\Alert\AlertAlteration::DISCR => Alerts\Alert\AlertAlteration::class,
  51.         Events\Event\EventAlteration::DISCR => Events\Event\EventAlteration::class,
  52.         Exhibits\Gallery\GalleryAlteration::DISCR => Exhibits\Gallery\GalleryAlteration::class,
  53.         Exhibits\Video\VideoAlteration::DISCR => Exhibits\Video\VideoAlteration::class,
  54.         Posts\Post\PostAlteration::DISCR => Posts\Post\PostAlteration::class,
  55.     ];
  56.     const CLASSES__OBJECT null;
  57.     use Tenantable\TenantableTrait;
  58.     use UlidIdentifiableTrait;
  59.     use Timestampable\TimestampableTrait;
  60.     use Blameable\BlameableTrait;
  61.     use DiscriminatorTrait;
  62.     use HeadlineTrait;
  63.     use TimestampTrait;
  64.     /**
  65.      * @var AbstractObject|null
  66.      */
  67.     protected ?AbstractObject $object null;
  68.     /**
  69.      * @param ContentInterface|null $content
  70.      */
  71.     public function __construct(?ContentInterface $content null)
  72.     {
  73.         if ($content) {
  74.             $this->copy($content);
  75.         }
  76.     }
  77.     /**
  78.      * {@inheritDoc}
  79.      */
  80.     public static function getObjectClass(): string
  81.     {
  82.         return static::CLASSES__OBJECT;
  83.     }
  84.     /**
  85.      * {@inheritDoc}
  86.      * @return AbstractObject
  87.      */
  88.     public function getObject(): ?ObjectInterface
  89.     {
  90.         return $this->object;
  91.     }
  92.     /**
  93.      * {@inheritDoc}
  94.      * @param AbstractObject $object
  95.      * @return $this
  96.      */
  97.     public function setObject(?ObjectInterface $object): self
  98.     {
  99.         $this->object $object;
  100.         return $this;
  101.     }
  102. }