src/App/Entity/Content/AbstractRevision.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\ContentInterface;
  10. use App\Model\Content\DraftInterface;
  11. use App\Model\Content\RevisionInterface;
  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\RevisionRepository",
  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(AbstractRevision::DISCRS)
  27.  * @ORM\Table(
  28.  *     name = "sn__content__revision",
  29.  *     indexes = {
  30.  *         @ORM\Index(
  31.  *             name = "idx__discr",
  32.  *             columns = {
  33.  *                 "discr",
  34.  *             },
  35.  *         ),
  36.  *     },
  37.  * )
  38.  */
  39. abstract class AbstractRevision
  40.     implements
  41.         Tenantable\TenantableInterface,
  42.         UlidIdentifiableInterface,
  43.         Timestampable\TimestampableInterface,
  44.         Blameable\BlameableInterface,
  45.         DiscriminatorInterface,
  46.         RevisionInterface
  47. {
  48.     const DISCR null;
  49.     const DISCRS = [
  50.         Alerts\Alert\AlertRevision::DISCR => Alerts\Alert\AlertRevision::class,
  51.         Events\Event\EventRevision::DISCR => Events\Event\EventRevision::class,
  52.         Exhibits\Gallery\GalleryRevision::DISCR => Exhibits\Gallery\GalleryRevision::class,
  53.         Exhibits\Video\VideoRevision::DISCR => Exhibits\Video\VideoRevision::class,
  54.         Posts\Post\PostRevision::DISCR => Posts\Post\PostRevision::class,
  55.     ];
  56.     use Tenantable\TenantableTrait;
  57.     use UlidIdentifiableTrait;
  58.     use Timestampable\TimestampableTrait;
  59.     use Blameable\BlameableTrait;
  60.     use DiscriminatorTrait;
  61.     use HeadlineTrait;
  62.     use TimestampTrait;
  63.     /**
  64.      * @var AbstractDraft|null
  65.      */
  66.     protected ?AbstractDraft $draft null;
  67.     /**
  68.      * @param ContentInterface|null $content
  69.      */
  70.     public function __construct(?ContentInterface $content null)
  71.     {
  72.         if ($content) {
  73.             $this->copy($content);
  74.         }
  75.     }
  76.     /**
  77.      * {@inheritDoc}
  78.      * @return AbstractDraft
  79.      */
  80.     public function getDraft(): ?DraftInterface
  81.     {
  82.         return $this->draft;
  83.     }
  84.     /**
  85.      * @param DraftInterface|null $draft
  86.      * @return $this
  87.      */
  88.     public function setDraft(?DraftInterface $draft): self
  89.     {
  90.         $this->draft $draft;
  91.         return $this;
  92.     }
  93. }