<?php
namespace App\Entity;
use App\Entity\CustomCode;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Annotation\Context;
use DateTime;
/**
* @ORM\Entity (repositoryClass="App\Repository\EditionModeleRubriqueRepository")
*/
class EditionModeleRubrique
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $name;
/**
* @ORM\Column(type="string", nullable=true, options={"comment":"Type de rubrique: 'SAUT', 'DYNAMIQUE', 'IMAGE', 'CONTENTS' ou 'COVER'"})
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionModele", inversedBy="rubriques")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="modele_id", referencedColumnName="id", onDelete="CASCADE")
* })
*/
private $modele;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionTemplateGabarit", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="gabarit_id", referencedColumnName="id")
* })
*/
private $gabarit;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionModeleRubriqueDynamiqueModele", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="rubrique_dynamique_modele_id", referencedColumnName="id")
* })
*/
private $modeleRubriqueDynamique;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\CustomCode", inversedBy="editionModeleRubriques")
*/
private $customCodes;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionTemplateTetiere", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tetiere_id", referencedColumnName="id")
* })
*/
private $tetiere;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionTemplateEntete", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="entete_id", referencedColumnName="id")
* })
*/
private $entete;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionTemplatePied", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="pied_id", referencedColumnName="id")
* })
*/
private ?EditionTemplatePied $pied;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $ordering;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $displayConditions;
/**
* @ORM\Column(type="string", nullable=true, options={"comment":"Type de réorganisation des fiches : 'NONE', 'PERIOD' ou 'DAY'"})
*/
private $duplicateProductsBy;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionContentsPageTemplate", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="contents_id", referencedColumnName="id")
* })
*/
private ?EditionContentsPageTemplate $contentsPage;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionCoverTemplate", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="cover_id", referencedColumnName="id")
* })
*/
private ?EditionCoverTemplate $cover;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\EditionNotesPageTemplate", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="notes_id", referencedColumnName="id")
* })
*/
private ?EditionNotesPageTemplate $notesPage;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleRubriqueParameter", mappedBy="rubrique", cascade={"persist","remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $parameters;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleContentsRubriqueParameter", mappedBy="rubrique", cascade={"persist","remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $contentsPageParameters;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleCoverRubriqueParameter", mappedBy="rubrique", cascade={"persist","remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $coverParameters;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleNotesRubriqueParameter", mappedBy="rubrique", cascade={"persist","remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $notesPageParameters;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleRubriqueZone", mappedBy="rubrique", cascade={"persist","remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $zones;
/**
* @ORM\Column(type="json", nullable=true, options={"comment":"Images (+rs langues)"})
*/
private $images;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\WebSort", inversedBy="editionRubriquesStartSortOne")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="start_sort_one_id", referencedColumnName="id")
* })
*/
private $startSortOne;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\WebSort", inversedBy="editionRubriquesStartSortTwo")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="start_sort_two_id", referencedColumnName="id")
* })
*/
private $startSortTwo;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\WebSort", inversedBy="editionRubriquesStartSortThree")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="start_sort_three_id", referencedColumnName="id")
* })
*/
private $startSortThree;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleRubriqueLegende", mappedBy="rubrique", cascade={"persist","remove"})
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $rubriqueLegendes;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default":true, "comment":"Cette rubrique doit-elle apparaître dans le sommaire ?"})
*/
private ?bool $isInContentsPage;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default":false, "comment":"Afficher un index dans le sommaire ?"})
*/
private ?bool $hasIndexInContentsPage;
/**
* @ORM\Column(type="string", length=255, options={"comment":"Intitulé de la rubrique dans le sommaire"}, nullable=true)
*/
private ?string $labelInContents;
/**
* @ORM\Column(type="string", length=255, options={"comment":"Identifiant unique"}, nullable=true)
*/
private ?string $uniqueIdentifier;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $labelInContentsTranslations;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $labelStyleInContents;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $indexStyleInContents;
/**
* @ORM\Column(type="json", nullable=true)
* Contenu total d'une rubrique sommaire
*/
private ?array $sommaireContent;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default":false})
*/
private ?bool $hasDynamicAnnonces;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\TagAnnonce", inversedBy="rubriques", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="tag_annonce_id", referencedColumnName="id")
* })
*/
private ?TagAnnonce $tagAnnonce;
/**
* @ORM\Column(type="string", length=500, options={"comment":"Zone de texte pour la page sommaire+légende"}, nullable=true)
*/
private ?string $textZone;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $textZoneTranslations;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleRubriqueAnnonce", mappedBy="rubrique", cascade={"persist","remove"}, orphanRemoval=true)
* @ORM\OrderBy({"ordering" = "ASC"})
*/
private $rubriqueAnnonces;
/**
* @ORM\Column(type="json", nullable=true, options={"comment":"Parametres techniques"})
*/
private $params;
/**
* @ORM\Column(type="date", nullable=true)
* @Context({ DateTimeNormalizer::FORMAT_KEY = "Y-m-d" })
*/
private ?\DateTimeInterface $startPublicationDate;
/**
* @ORM\Column(type="date", nullable=true)
* @Context({ DateTimeNormalizer::FORMAT_KEY = "Y-m-d" })
*/
private ?\DateTimeInterface $endPublicationDate;
public function __construct()
{
$this->parameters = new ArrayCollection();
$this->contentsPageParameters = new ArrayCollection();
$this->coverParameters = new ArrayCollection();
$this->notesPageParameters = new ArrayCollection();
$this->zones = new ArrayCollection();
$this->rubriqueLegendes = new ArrayCollection();
$this->rubriqueAnnonces = new ArrayCollection();
$this->customCodes = new ArrayCollection();
}
public function getId() : ?int
{
return $this->id;
}
public function getOrdering() : ?int
{
return $this->ordering;
}
public function setOrdering(?int $ordering) : self
{
$this->ordering = $ordering;
return $this;
}
public function getModele() : ?EditionModele
{
return $this->modele;
}
public function setModele(?EditionModele $modele) : self
{
$this->modele = $modele;
return $this;
}
/**
* @return Collection|EditionModeleRubriqueParameter[]
*/
public function getParameters() : Collection
{
return $this->parameters;
}
public function addParameter(EditionModeleRubriqueParameter $parameter) : self
{
if (!$this->parameters->contains($parameter)) {
$this->parameters[] = $parameter;
$parameter->setRubrique($this);
}
return $this;
}
public function removeParameter(EditionModeleRubriqueParameter $parameter) : self
{
if ($this->parameters->contains($parameter)) {
$this->parameters->removeElement($parameter);
// set the owning side to null (unless already changed)
if ($parameter->getRubrique() === $this) {
$parameter->setRubrique(null);
}
}
return $this;
}
/**
* @return Collection|EditionModeleContentsRubriqueParameter[]
*/
public function getContentsPageParameters() : Collection
{
return $this->contentsPageParameters;
}
public function addContentsPageParameter(EditionModeleContentsRubriqueParameter $contentsPageParameter) : self
{
if (!$this->contentsPageParameters->contains($contentsPageParameter)) {
$this->contentsPageParameters[] = $contentsPageParameter;
$contentsPageParameter->setRubrique($this);
}
return $this;
}
public function removeContentsPageParameter(EditionModeleContentsRubriqueParameter $contentsPageParameter) : self
{
if ($this->contentsPageParameters->contains($contentsPageParameter)) {
$this->contentsPageParameters->removeElement($contentsPageParameter);
// set the owning side to null (unless already changed)
if ($contentsPageParameter->getRubrique() === $this) {
$contentsPageParameter->setRubrique(null);
}
}
return $this;
}
/**
* @return Collection|EditionModeleCoverRubriqueParameter[]
*/
public function getCoverParameters() : Collection
{
return $this->coverParameters;
}
public function addCoverParameter(EditionModeleCoverRubriqueParameter $coverParameter) : self
{
if (!$this->coverParameters->contains($coverParameter)) {
$this->coverParameters[] = $coverParameter;
$coverParameter->setRubrique($this);
}
return $this;
}
public function removeCoverParameter(EditionModeleCoverRubriqueParameter $coverParameter) : self
{
if ($this->coverParameters->contains($coverParameter)) {
$this->coverParameters->removeElement($coverParameter);
// set the owning side to null (unless already changed)
if ($coverParameter->getRubrique() === $this) {
$coverParameter->setRubrique(null);
}
}
return $this;
}
/**
* @return Collection|EditionModeleNotesRubriqueParameter[]
*/
public function getNotesPageParameters() : Collection
{
return $this->notesPageParameters;
}
public function addNotesPageParameter(EditionModeleNotesRubriqueParameter $notesPageParameter) : self
{
if (!$this->notesPageParameters->contains($notesPageParameter)) {
$this->notesPageParameters[] = $notesPageParameter;
$notesPageParameter->setRubrique($this);
}
return $this;
}
public function removeNotesPageParameter(EditionModeleNotesRubriqueParameter $notesPageParameter) : self
{
if ($this->notesPageParameters->contains($notesPageParameter)) {
$this->notesPageParameters->removeElement($notesPageParameter);
// set the owning side to null (unless already changed)
if ($notesPageParameter->getRubrique() === $this) {
$notesPageParameter->setRubrique(null);
}
}
return $this;
}
/**
* @return Collection|EditionModeleRubriqueZone[]
*/
public function getZones() : Collection
{
return $this->zones;
}
public function addZone(EditionModeleRubriqueZone $zone) : self
{
if (!$this->zones->contains($zone)) {
$this->zones[] = $zone;
$zone->setRubrique($this);
}
return $this;
}
public function removeZone(EditionModeleRubriqueZone $zone) : self
{
if ($this->zones->contains($zone)) {
$this->zones->removeElement($zone);
// set the owning side to null (unless already changed)
if ($zone->getRubrique() === $this) {
$zone->setRubrique(null);
}
}
return $this;
}
public function getName() : ?string
{
return $this->name;
}
public function setName(?string $name) : self
{
$this->name = $name;
return $this;
}
public function getType() : ?string
{
return $this->type;
}
public function setType(?string $type) : self
{
$this->type = $type;
return $this;
}
public function getDisplayConditions() : ?array
{
return $this->displayConditions;
}
public function setDisplayConditions(?array $displayConditions) : self
{
$this->displayConditions = $displayConditions;
return $this;
}
public function getGabarit() : ?EditionTemplateGabarit
{
return $this->gabarit;
}
public function setGabarit(?EditionTemplateGabarit $gabarit) : self
{
$this->gabarit = $gabarit;
return $this;
}
public function getModeleRubriqueDynamique() : ?EditionModeleRubriqueDynamiqueModele
{
return $this->modeleRubriqueDynamique;
}
public function setModeleRubriqueDynamique(?EditionModeleRubriqueDynamiqueModele $modeleRubriqueDynamique) : self
{
$this->modeleRubriqueDynamique = $modeleRubriqueDynamique;
return $this;
}
public function getTetiere() : ?EditionTemplateTetiere
{
return $this->tetiere;
}
public function setTetiere(?EditionTemplateTetiere $tetiere) : self
{
$this->tetiere = $tetiere;
return $this;
}
public function getEntete() : ?EditionTemplateEntete
{
return $this->entete;
}
public function setEntete(?EditionTemplateEntete $entete) : self
{
$this->entete = $entete;
return $this;
}
public function getPied() : ?EditionTemplatePied
{
return $this->pied;
}
public function setPied(?EditionTemplatePied $pied) : self
{
$this->pied = $pied;
return $this;
}
public function getImages() : ?array
{
return $this->images;
}
public function setImages(?array $images) : self
{
$this->images = $images;
return $this;
}
public function getStartSortOne() : ?WebSort
{
return $this->startSortOne;
}
public function setStartSortOne(?WebSort $startSortOne) : self
{
$this->startSortOne = $startSortOne;
return $this;
}
public function getStartSortTwo() : ?WebSort
{
return $this->startSortTwo;
}
public function setStartSortTwo(?WebSort $startSortTwo) : self
{
$this->startSortTwo = $startSortTwo;
return $this;
}
public function getStartSortThree() : ?WebSort
{
return $this->startSortThree;
}
public function setStartSortThree(?WebSort $startSortThree) : self
{
$this->startSortThree = $startSortThree;
return $this;
}
public function getDuplicateProductsBy() : ?string
{
return $this->duplicateProductsBy;
}
public function setDuplicateProductsBy(?string $duplicateProductsBy) : self
{
$this->duplicateProductsBy = $duplicateProductsBy;
return $this;
}
public function getContentsPage() : ?EditionContentsPageTemplate
{
return $this->contentsPage;
}
public function setContentsPage(?EditionContentsPageTemplate $contentsPage) : self
{
$this->contentsPage = $contentsPage;
return $this;
}
public function getCover() : ?EditionCoverTemplate
{
return $this->cover;
}
public function setCover(?EditionCoverTemplate $cover) : self
{
$this->cover = $cover;
return $this;
}
public function getNotesPage() : ?EditionNotesPageTemplate
{
return $this->notesPage;
}
public function setNotesPage(?EditionNotesPageTemplate $notesPage) : self
{
$this->notesPage = $notesPage;
return $this;
}
public function getIsInContentsPage() : ?bool
{
return $this->isInContentsPage;
}
public function setIsInContentsPage(?bool $isInContentsPage) : self
{
$this->isInContentsPage = $isInContentsPage;
return $this;
}
public function getHasIndexInContentsPage() : ?bool
{
return $this->hasIndexInContentsPage;
}
public function setHasIndexInContentsPage(?bool $hasIndexInContentsPage) : self
{
$this->hasIndexInContentsPage = $hasIndexInContentsPage;
return $this;
}
public function getLabelInContents() : ?string
{
return $this->labelInContents;
}
public function setLabelInContents(?string $labelInContents) : self
{
$this->labelInContents = $labelInContents;
return $this;
}
public function getUniqueIdentifier() : ?string
{
return $this->uniqueIdentifier;
}
public function setUniqueIdentifier(?string $uniqueIdentifier) : self
{
$this->uniqueIdentifier = $uniqueIdentifier;
return $this;
}
public function getLabelInContentsTranslations() : ?array
{
return $this->labelInContentsTranslations;
}
public function setLabelInContentsTranslations(?array $labelInContentsTranslations) : self
{
$this->labelInContentsTranslations = $labelInContentsTranslations;
return $this;
}
public function getLabelStyleInContents() : ?array
{
return $this->labelStyleInContents;
}
public function setLabelStyleInContents(?array $labelStyleInContents) : self
{
$this->labelStyleInContents = $labelStyleInContents;
return $this;
}
public function getIndexStyleInContents() : ?array
{
return $this->indexStyleInContents;
}
public function setIndexStyleInContents(?array $indexStyleInContents) : self
{
$this->indexStyleInContents = $indexStyleInContents;
return $this;
}
public function getSommaireContent() : ?array
{
return $this->sommaireContent;
}
public function setSommaireContent(?array $sommaireContent) : self
{
$this->sommaireContent = $sommaireContent;
return $this;
}
public function getHasDynamicAnnonces(): ?bool
{
return $this->hasDynamicAnnonces;
}
public function setHasDynamicAnnonces(?bool $hasDynamicAnnonces): self
{
$this->hasDynamicAnnonces = $hasDynamicAnnonces;
return $this;
}
public function getTagAnnonce() : ?TagAnnonce
{
return $this->tagAnnonce;
}
public function setTagAnnonce(?TagAnnonce $tagAnnonce) : self
{
$this->tagAnnonce = $tagAnnonce;
return $this;
}
public function getTextZone() : ?string
{
return $this->textZone;
}
public function setTextZone(?string $textZone) : self
{
$this->textZone = $textZone;
return $this;
}
public function getTextZoneTranslations() : ?array
{
return $this->textZoneTranslations;
}
public function setTextZoneTranslations(?array $textZoneTranslations) : self
{
$this->textZoneTranslations = $textZoneTranslations;
return $this;
}
/**
* @return Collection|EditionModeleRubriqueLegendes[]
*/
public function getRubriqueLegendes() : Collection
{
return $this->rubriqueLegendes;
}
public function addRubriqueLegende(EditionModeleRubriqueLegende $rubriqueLegende) : self
{
if (!$this->rubriqueLegendes->contains($rubriqueLegende)) {
$this->rubriqueLegendes[] = $rubriqueLegende;
// ajouter aussi la relation correspondante de l'autre côté pour éviter les incohérences
$rubriqueLegende->setRubrique($this);
}
return $this;
}
public function removeRubriqueLegende(EditionModeleRubriqueLegende $rubriqueLegende) : self
{
if ($this->rubriqueLegendes->contains($rubriqueLegende)) {
$this->rubriqueLegendes->removeElement($rubriqueLegende);
// passer l'autre côté à null pour éviter les incohérences
if ($rubriqueLegende->getRubrique() === $this) {
$rubriqueLegende->setRubrique(null);
}
}
return $this;
}
/**
* @return Collection|EditionModeleRubriqueAnnonces[]
*/
public function getRubriqueAnnonces() : Collection
{
return $this->rubriqueAnnonces;
}
public function addRubriqueAnnonce(EditionModeleRubriqueAnnonce $rubriqueAnnonce) : self
{
if (!$this->rubriqueAnnonces->contains($rubriqueAnnonce)) {
$this->rubriqueAnnonces[] = $rubriqueAnnonce;
// ajouter aussi la relation correspondante de l'autre côté pour éviter les incohérences
$rubriqueAnnonce->setRubrique($this);
}
return $this;
}
public function removeRubriqueAnnonce(EditionModeleRubriqueAnnonce $rubriqueAnnonce) : self
{
if ($this->rubriqueAnnonces->contains($rubriqueAnnonce)) {
$this->rubriqueAnnonces->removeElement($rubriqueAnnonce);
// passer l'autre côté à null pour éviter les incohérences
if ($rubriqueAnnonce->getRubrique() === $this) {
$rubriqueAnnonce->setRubrique(null);
}
}
return $this;
}
public function getParams() : ?array
{
return $this->params;
}
public function setParams(?array $params) : self
{
$this->params = $params;
return $this;
}
public function getStartPublicationDate() : ?\DateTimeInterface
{
return $this->startPublicationDate;
}
public function setStartPublicationDate(?\DateTime $newDate) : ?\DateTimeInterface
{
$this->startPublicationDate = $newDate;
// $this->startPublicationDate = $newDate ? clone $newDate : new DateTime("1111-04-10");
return $this->startPublicationDate;
}
public function getEndPublicationDate() : ?\DateTimeInterface
{
return $this->endPublicationDate;
}
public function setEndPublicationDate(?DateTime $newDate = null) : ?\DateTimeInterface
{
$this->endPublicationDate = $newDate;
return $this->endPublicationDate;
}
/**
* @return Collection|CustomCode[]
*/
public function getCustomCodes () : Collection
{
return $this->customCodes;
}
public function addCustomCode (CustomCode $code) : self
{
if (!$this->customCodes->contains($code)) {
$this->customCodes[] = $code;
}
return $this;
}
public function removeCustomCode(CustomCode $code) : self
{
if ($this->customCodes->contains($code)) {
$this->customCodes->removeElement($code);
}
return $this;
}
}