src/Entity/CapsuleBlock.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Traits\Timestampable;
  4. use App\Repository\CapsuleBlockRepository;
  5. use Doctrine\ORM\Mapping as ORM;
  6. // Bloc pédagogique ordonné d'une Capsule. `type` détermine comment Flutter
  7. // (BlockRenderer) et le builder Web l'affichent : text|example|summary
  8. // utilisent `content` (texte), image|video|audio|document utilisent
  9. // `mediaPath`, activity porte un Activity (quiz/exercice) via la relation
  10. // `activity`. `document` = PDF/fichier joint (ex: fiche d'exercices
  11. // imprimable) — mis en cache local par le mobile comme les autres médias,
  12. // jamais juste ouvert en streaming (voir CapsuleMediaCache côté Flutter).
  13. #[ORM\HasLifecycleCallbacks]
  14. #[ORM\Entity(repositoryClassCapsuleBlockRepository::class)]
  15. class CapsuleBlock
  16. {
  17.     use Timestampable;
  18.     public const TYPE_TEXT 'text';
  19.     public const TYPE_IMAGE 'image';
  20.     public const TYPE_VIDEO 'video';
  21.     public const TYPE_AUDIO 'audio';
  22.     public const TYPE_DOCUMENT 'document';
  23.     public const TYPE_EXAMPLE 'example';
  24.     public const TYPE_SUMMARY 'summary';
  25.     public const TYPE_ACTIVITY 'activity';
  26.     #[ORM\Id]
  27.     #[ORM\GeneratedValue]
  28.     #[ORM\Column]
  29.     private ?int $id null;
  30.     #[ORM\ManyToOne(inversedBy'blocks')]
  31.     #[ORM\JoinColumn(nullablefalseonDelete'CASCADE')]
  32.     private ?Capsule $capsule null;
  33.     #[ORM\Column(length20)]
  34.     private ?string $type null;
  35.     #[ORM\Column]
  36.     private int $position 0;
  37.     #[ORM\Column(type'text'nullabletrue)]
  38.     private ?string $content null;
  39.     #[ORM\Column(length255nullabletrue)]
  40.     private ?string $mediaPath null;
  41.     #[ORM\OneToOne(inversedBy'block'cascade: ['persist''remove'])]
  42.     #[ORM\JoinColumn(nullabletrueonDelete'SET NULL')]
  43.     private ?Activity $activity null;
  44.     public function getId(): ?int
  45.     {
  46.         return $this->id;
  47.     }
  48.     public function getCapsule(): ?Capsule
  49.     {
  50.         return $this->capsule;
  51.     }
  52.     public function setCapsule(?Capsule $capsule): static
  53.     {
  54.         $this->capsule $capsule;
  55.         return $this;
  56.     }
  57.     public function getType(): ?string
  58.     {
  59.         return $this->type;
  60.     }
  61.     public function setType(string $type): static
  62.     {
  63.         $this->type $type;
  64.         return $this;
  65.     }
  66.     public function getPosition(): int
  67.     {
  68.         return $this->position;
  69.     }
  70.     public function setPosition(int $position): static
  71.     {
  72.         $this->position $position;
  73.         return $this;
  74.     }
  75.     public function getContent(): ?string
  76.     {
  77.         return $this->content;
  78.     }
  79.     public function setContent(?string $content): static
  80.     {
  81.         $this->content $content;
  82.         return $this;
  83.     }
  84.     public function getMediaPath(): ?string
  85.     {
  86.         return $this->mediaPath;
  87.     }
  88.     public function setMediaPath(?string $mediaPath): static
  89.     {
  90.         $this->mediaPath $mediaPath;
  91.         return $this;
  92.     }
  93.     public function getActivity(): ?Activity
  94.     {
  95.         return $this->activity;
  96.     }
  97.     public function setActivity(?Activity $activity): static
  98.     {
  99.         $this->activity $activity;
  100.         return $this;
  101.     }
  102. }