src\Entity\User.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  8. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. /**
  11.  * @ORM\Entity(repositoryClass=UserRepository::class)
  12.  * @ORM\Table(name="Users")
  13.  * @UniqueEntity(fields={"email"}, message="There is already an account with this email")
  14.  * @ORM\HasLifecycleCallbacks()
  15.  */
  16. class User implements UserInterfacePasswordAuthenticatedUserInterface
  17. {
  18.     /**
  19.      * @ORM\Id
  20.      * @ORM\GeneratedValue
  21.      * @ORM\Column(type="integer")
  22.      */
  23.     private $id;
  24.     /**
  25.      * @ORM\Column(type="string", length=180, unique=true)
  26.      */
  27.     private $email;
  28.     /**
  29.      * @ORM\Column(type="json")
  30.      */
  31.     private $roles = [];
  32.     /**
  33.      * @var string The hashed password
  34.      * @ORM\Column(type="string")
  35.      */
  36.     private $password;
  37.     /**
  38.      * @ORM\Column(type="string", length=255)
  39.      */
  40.     private $nom;
  41.     /**
  42.      * @ORM\Column(type="string", length=255)
  43.      */
  44.     private $prenom;
  45.     /**
  46.      * @ORM\Column(type="string", length=15)
  47.      */
  48.     private $tel;
  49.     /**
  50.      * @ORM\Column(type="integer")
  51.      */
  52.     private $civilite;
  53.     /**
  54.      * @ORM\Column(type="boolean")
  55.      */
  56.     private $status;
  57.     /**
  58.      * @ORM\Column(type="datetime")
  59.      */
  60.     private $created_at;
  61.     /**
  62.      * @ORM\Column(type="datetime", nullable=true)
  63.      */
  64.     private $updated_at;
  65.     /**
  66.      * @ORM\ManyToOne(targetEntity="App\Entity\Pays", inversedBy="users")
  67.      */
  68.     private $pays;
  69.     /**
  70.      * @ORM\OneToMany(targetEntity="App\Entity\Loginattemp", mappedBy="user", orphanRemoval=true)
  71.      */
  72.     private $loginattemps;
  73.     /**
  74.      * @ORM\OneToMany(targetEntity="App\Entity\Tracking", mappedBy="user")
  75.      */
  76.     private $trackings;
  77.     /**
  78.      * @ORM\OneToMany(targetEntity="App\Entity\Evenement", mappedBy="user")
  79.      */
  80.     private $evenements;
  81.     /**
  82.      * @ORM\OneToMany(targetEntity="App\Entity\News", mappedBy="user")
  83.      */
  84.     private $news;
  85.     /**
  86.      * @ORM\OneToMany(targetEntity="App\Entity\Formation", mappedBy="user", orphanRemoval=true)
  87.      */
  88.     private $formations;
  89.     /**
  90.      * @ORM\OneToMany(targetEntity="App\Entity\ChapitreFormation", mappedBy="user")
  91.      */
  92.     private $chapitresFormation;
  93.     /**
  94.      * @ORM\OneToMany(targetEntity="App\Entity\FichierFormation", mappedBy="user")
  95.      */
  96.     private $fichierFormations;
  97.     /**
  98.      * @ORM\OneToMany(targetEntity="App\Entity\Video", mappedBy="user")
  99.      */
  100.     private $videos;
  101.     /**
  102.      * @ORM\OneToMany(targetEntity=ResetPassword::class, mappedBy="user")
  103.      */
  104.     private $resetPasswords;
  105.     /**
  106.      * @ORM\OneToMany(targetEntity=NewsletterTypeUsers::class, mappedBy="user", orphanRemoval=true)
  107.      */
  108.     private $newsletterTypeUsers;
  109.     /**
  110.      * @ORM\Column(type="string", length=255, nullable=true)
  111.      */
  112.     private $avatar;
  113.     /**
  114.      * @ORM\OneToMany(targetEntity=Package::class, mappedBy="user")
  115.      */
  116.     private $packages;
  117.     /**
  118.      * @ORM\OneToMany(targetEntity=Souscription::class, mappedBy="user", orphanRemoval=true)
  119.      */
  120.     private $souscriptions;
  121.     /**
  122.      * @ORM\OneToMany(targetEntity=Facture::class, mappedBy="user")
  123.      */
  124.     private $factures;
  125.     /**
  126.      * @ORM\OneToMany(targetEntity=UserSubscription::class, mappedBy="user")
  127.      */
  128.     private $userSubscriptions;
  129.     /**
  130.      * @ORM\Column(type="string", length=255, nullable=true)
  131.      */
  132.     private $profil;
  133.     /**
  134.      * @ORM\Column(type="string", length=255, nullable=true)
  135.      */
  136.     private $societe;
  137.     /**
  138.      * @ORM\Column(type="integer", nullable=true)
  139.      */
  140.     private $categorie;
  141.     /**
  142.      * @ORM\OneToMany(targetEntity=Update::class, mappedBy="user")
  143.      */
  144.     private $updates;
  145.     /**
  146.      * @ORM\OneToMany(targetEntity=UserBookmark::class, mappedBy="user", orphanRemoval=true)
  147.      */
  148.     private $bookmarks;
  149.     const civilites = ['M','Mme','Mlle'],
  150.         civilites_long =['Monsieur','Madame','Mademoiselle'];
  151.     /**
  152.      * User constructor. setting status to true
  153.      */
  154.     function __construct()
  155.     {
  156.         $this->status=true;
  157.         $this->roles = ['ROLE_USER'];
  158.         $this->created_at=new \DateTime();
  159.         $this->loginattemps = new ArrayCollection();
  160.         $this->trackings = new ArrayCollection();
  161.         $this->evenements = new ArrayCollection();
  162.         $this->news = new ArrayCollection();
  163.         $this->formations = new ArrayCollection();
  164.         $this->chapitresFormation = new ArrayCollection();
  165.         $this->fichierFormations = new ArrayCollection();
  166.         $this->videos = new ArrayCollection();
  167.         $this->resetPasswords = new ArrayCollection();
  168.         $this->newsletterTypeUsers = new ArrayCollection();
  169.         $this->packages = new ArrayCollection();
  170.         $this->souscriptions = new ArrayCollection();
  171.         $this->factures = new ArrayCollection();
  172.         $this->userSubscriptions = new ArrayCollection();
  173.         $this->updates = new ArrayCollection();
  174.         $this->bookmarks = new ArrayCollection();
  175.     }
  176.     public function getId(): ?int
  177.     {
  178.         return $this->id;
  179.     }
  180.     public function getEmail(): ?string
  181.     {
  182.         return $this->email;
  183.     }
  184.     public function setEmail(string $email): self
  185.     {
  186.         $this->email $email;
  187.         return $this;
  188.     }
  189.     /**
  190.      * A visual identifier that represents this user.
  191.      *
  192.      * @see UserInterface
  193.      */
  194.     public function getUsername(): string
  195. //    public function getUserIdentifier(): string
  196.     {
  197.         return (string) $this->email;
  198.     }
  199.     /**
  200.      * @see UserInterface
  201.      */
  202.     public function getroles(): array
  203.     {
  204.         $roles=$this->roles;
  205.         $roles[] = 'ROLE_USER';
  206.         return array_unique($roles);
  207.     }
  208.     public function getFullRole(): string
  209.     {
  210.         if(in_array('ROLE_SUPER_ADMIN',$this->roles)){
  211.             return "Super Admin";
  212.         }else if(in_array('ROLE_TECH',$this->roles)){
  213.             return "Technicien";
  214.         }else if(in_array('ROLE_ADMIN',$this->roles)){
  215.             return "Editeur";
  216.         }else return "Membre";
  217.     }
  218.     public function setroles(array $roles): self
  219.     {
  220.         $this->roles $roles;
  221.         return $this;
  222.     }
  223.     /**
  224.      * @see UserInterface
  225.      */
  226.     public function getPassword(): string
  227.     {
  228.         return (string) $this->password;
  229.     }
  230.     public function setPassword(string $password): self
  231.     {
  232.         $this->password $password;
  233.         return $this;
  234.     }
  235.     /**
  236.      * @see UserInterface
  237.      *
  238.      * @return String
  239.      */
  240.     public function getSalt()
  241.     {
  242.         // not needed when using the "bcrypt" algorithm in security.yaml
  243.     }
  244.     /**
  245.      * @see UserInterface
  246.      */
  247.     public function eraseCredentials()
  248.     {
  249.         // If you store any temporary, sensitive data on the user, clear it here
  250.         // $this->plainPassword = null;
  251.     }
  252.     public function getNom(): ?string
  253.     {
  254.         return $this->nom;
  255.     }
  256.     public function setNom(string $nom): self
  257.     {
  258.         $this->nom $nom;
  259.         return $this;
  260.     }
  261.     public function getPrenom(): ?string
  262.     {
  263.         return $this->prenom;
  264.     }
  265.     public function setPrenom(string $prenom): self
  266.     {
  267.         $this->prenom $prenom;
  268.         return $this;
  269.     }
  270.     public function getTel(): ?string
  271.     {
  272.         return $this->tel;
  273.     }
  274.     public function setTel(string $tel): self
  275.     {
  276.         $this->tel $tel;
  277.         return $this;
  278.     }
  279.     public function getCivilite(): ?int
  280.     {
  281.         return $this->civilite;
  282.     }
  283.     public function getFullCivilite(): ?string
  284.     {
  285.         return self::civilites[$this->civilite];
  286.     }
  287.     public function getFullCiviliteLong(): ?string
  288.     {
  289.         return self::civilites_long[$this->civilite];
  290.     }
  291.     public function setCivilite(int $civilite): self
  292.     {
  293.         $this->civilite $civilite;
  294.         return $this;
  295.     }
  296.     public function getStatus(): ?bool
  297.     {
  298.         return $this->status;
  299.     }
  300.     public function setStatus(bool $status): self
  301.     {
  302.         $this->status $status;
  303.         return $this;
  304.     }
  305.     public function getCreatedAt(): ?\DateTimeInterface
  306.     {
  307.         return $this->created_at;
  308.     }
  309.     public function setCreatedAt(\DateTimeInterface $created_at): self
  310.     {
  311.         $this->created_at $created_at;
  312.         return $this;
  313.     }
  314.     public function getUpdatedAt(): ?\DateTimeInterface
  315.     {
  316.         return $this->updated_at;
  317.     }
  318.     public function setUpdatedAt(?\DateTimeInterface $updated_at): self
  319.     {
  320.         $this->updated_at $updated_at;
  321.         return $this;
  322.     }
  323.     //privates ---------------<
  324.     /**
  325.      * @ORM\PrePersist
  326.      */
  327.     private function setPreCreated(){
  328.         $this->status=true;
  329.         $this->roles 'ROLE_USER';
  330.         $this->created_at=new \DateTime();
  331.     }
  332.     /**
  333.      * @ORM\PreUpdate
  334.      */
  335.     private function setPreUpdate(){
  336.         $this->updated_at=new \DateTime();
  337.     }
  338.     public function getPays(): ?Pays
  339.     {
  340.         return $this->pays;
  341.     }
  342.     public function setPays(?Pays $pays): self
  343.     {
  344.         $this->pays $pays;
  345.         return $this;
  346.     }
  347.     /**
  348.      * @return Collection|Loginattemp[]
  349.      */
  350.     public function getLoginattemps(): Collection
  351.     {
  352.         return $this->loginattemps;
  353.     }
  354.     public function addLoginattemp(Loginattemp $loginattemp): self
  355.     {
  356.         if (!$this->loginattemps->contains($loginattemp)) {
  357.             $this->loginattemps[] = $loginattemp;
  358.             $loginattemp->setUser($this);
  359.         }
  360.         return $this;
  361.     }
  362.     public function removeLoginattemp(Loginattemp $loginattemp): self
  363.     {
  364.         if ($this->loginattemps->contains($loginattemp)) {
  365.             $this->loginattemps->removeElement($loginattemp);
  366.             // set the owning side to null (unless already changed)
  367.             if ($loginattemp->getUser() === $this) {
  368.                 $loginattemp->setUser(null);
  369.             }
  370.         }
  371.         return $this;
  372.     }
  373.     /**
  374.      * @return Collection|Tracking[]
  375.      */
  376.     public function getTrackings(): Collection
  377.     {
  378.         return $this->trackings;
  379.     }
  380.     public function addTracking(Tracking $tracking): self
  381.     {
  382.         if (!$this->trackings->contains($tracking)) {
  383.             $this->trackings[] = $tracking;
  384.             $tracking->setUser($this);
  385.         }
  386.         return $this;
  387.     }
  388.     public function removeTracking(Tracking $tracking): self
  389.     {
  390.         if ($this->trackings->contains($tracking)) {
  391.             $this->trackings->removeElement($tracking);
  392.             // set the owning side to null (unless already changed)
  393.             if ($tracking->getUser() === $this) {
  394.                 $tracking->setUser(null);
  395.             }
  396.         }
  397.         return $this;
  398.     }
  399.     /**
  400.      * @return Collection|Evenement[]
  401.      */
  402.     public function getEvenements(): Collection
  403.     {
  404.         return $this->evenements;
  405.     }
  406.     public function addEvenement(Evenement $evenement): self
  407.     {
  408.         if (!$this->evenements->contains($evenement)) {
  409.             $this->evenements[] = $evenement;
  410.             $evenement->setUser($this);
  411.         }
  412.         return $this;
  413.     }
  414.     public function removeEvenement(Evenement $evenement): self
  415.     {
  416.         if ($this->evenements->contains($evenement)) {
  417.             $this->evenements->removeElement($evenement);
  418.             // set the owning side to null (unless already changed)
  419.             if ($evenement->getUser() === $this) {
  420.                 $evenement->setUser(null);
  421.             }
  422.         }
  423.         return $this;
  424.     }
  425.     /**
  426.      * @return Collection|News[]
  427.      */
  428.     public function getNews(): Collection
  429.     {
  430.         return $this->news;
  431.     }
  432.     public function addNews(News $news): self
  433.     {
  434.         if (!$this->news->contains($news)) {
  435.             $this->news[] = $news;
  436.             $news->setUser($this);
  437.         }
  438.         return $this;
  439.     }
  440.     public function removeNews(News $news): self
  441.     {
  442.         if ($this->news->contains($news)) {
  443.             $this->news->removeElement($news);
  444.             // set the owning side to null (unless already changed)
  445.             if ($news->getUser() === $this) {
  446.                 $news->setUser(null);
  447.             }
  448.         }
  449.         return $this;
  450.     }
  451.     /**
  452.      * @return Collection|Formation[]
  453.      */
  454.     public function getFormations(): Collection
  455.     {
  456.         return $this->formations;
  457.     }
  458.     public function addFormation(Formation $formation): self
  459.     {
  460.         if (!$this->formations->contains($formation)) {
  461.             $this->formations[] = $formation;
  462.             $formation->setUser($this);
  463.         }
  464.         return $this;
  465.     }
  466.     public function removeFormation(Formation $formation): self
  467.     {
  468.         if ($this->formations->contains($formation)) {
  469.             $this->formations->removeElement($formation);
  470.             // set the owning side to null (unless already changed)
  471.             if ($formation->getUser() === $this) {
  472.                 $formation->setUser(null);
  473.             }
  474.         }
  475.         return $this;
  476.     }
  477.     /**
  478.      * @return Collection|ChapitreFormation[]
  479.      */
  480.     public function getChapitresFormation(): Collection
  481.     {
  482.         return $this->chapitresFormation;
  483.     }
  484.     public function addChapitresFormation(ChapitreFormation $chapitresFormation): self
  485.     {
  486.         if (!$this->chapitresFormation->contains($chapitresFormation)) {
  487.             $this->chapitresFormation[] = $chapitresFormation;
  488.             $chapitresFormation->setUser($this);
  489.         }
  490.         return $this;
  491.     }
  492.     public function removeChapitresFormation(ChapitreFormation $chapitresFormation): self
  493.     {
  494.         if ($this->chapitresFormation->contains($chapitresFormation)) {
  495.             $this->chapitresFormation->removeElement($chapitresFormation);
  496.             // set the owning side to null (unless already changed)
  497.             if ($chapitresFormation->getUser() === $this) {
  498.                 $chapitresFormation->setUser(null);
  499.             }
  500.         }
  501.         return $this;
  502.     }
  503.     /**
  504.      * @return Collection|FichierFormation[]
  505.      */
  506.     public function getFichierFormations(): Collection
  507.     {
  508.         return $this->fichierFormations;
  509.     }
  510.     public function addFichierFormation(FichierFormation $fichierFormation): self
  511.     {
  512.         if (!$this->fichierFormations->contains($fichierFormation)) {
  513.             $this->fichierFormations[] = $fichierFormation;
  514.             $fichierFormation->setUser($this);
  515.         }
  516.         return $this;
  517.     }
  518.     public function removeFichierFormation(FichierFormation $fichierFormation): self
  519.     {
  520.         if ($this->fichierFormations->contains($fichierFormation)) {
  521.             $this->fichierFormations->removeElement($fichierFormation);
  522.             // set the owning side to null (unless already changed)
  523.             if ($fichierFormation->getUser() === $this) {
  524.                 $fichierFormation->setUser(null);
  525.             }
  526.         }
  527.         return $this;
  528.     }
  529.     /**
  530.      * @return Collection|Video[]
  531.      */
  532.     public function getVideos(): Collection
  533.     {
  534.         return $this->videos;
  535.     }
  536.     public function addVideo(Video $video): self
  537.     {
  538.         if (!$this->videos->contains($video)) {
  539.             $this->videos[] = $video;
  540.             $video->setUser($this);
  541.         }
  542.         return $this;
  543.     }
  544.     public function removeVideo(Video $video): self
  545.     {
  546.         if ($this->videos->contains($video)) {
  547.             $this->videos->removeElement($video);
  548.             // set the owning side to null (unless already changed)
  549.             if ($video->getUser() === $this) {
  550.                 $video->setUser(null);
  551.             }
  552.         }
  553.         return $this;
  554.     }
  555.     /**
  556.      * @return Collection|ResetPassword[]
  557.      */
  558.     public function getResetPasswords(): Collection
  559.     {
  560.         return $this->resetPasswords;
  561.     }
  562.     public function addResetPassword(ResetPassword $resetPassword): self
  563.     {
  564.         if (!$this->resetPasswords->contains($resetPassword)) {
  565.             $this->resetPasswords[] = $resetPassword;
  566.             $resetPassword->setUser($this);
  567.         }
  568.         return $this;
  569.     }
  570.     public function removeResetPassword(ResetPassword $resetPassword): self
  571.     {
  572.         if ($this->resetPasswords->contains($resetPassword)) {
  573.             $this->resetPasswords->removeElement($resetPassword);
  574.             // set the owning side to null (unless already changed)
  575.             if ($resetPassword->getUser() === $this) {
  576.                 $resetPassword->setUser(null);
  577.             }
  578.         }
  579.         return $this;
  580.     }
  581.     /**
  582.      * @return Collection|NewsletterTypeUsers[]
  583.      */
  584.     public function getNewsletterTypeUsers(): Collection
  585.     {
  586.         return $this->newsletterTypeUsers;
  587.     }
  588.     public function addNewsletterTypeUser(NewsletterTypeUsers $newsletterTypeUser): self
  589.     {
  590.         if (!$this->newsletterTypeUsers->contains($newsletterTypeUser)) {
  591.             $this->newsletterTypeUsers[] = $newsletterTypeUser;
  592.             $newsletterTypeUser->setUser($this);
  593.         }
  594.         return $this;
  595.     }
  596.     public function removeNewsletterTypeUser(NewsletterTypeUsers $newsletterTypeUser): self
  597.     {
  598.         if ($this->newsletterTypeUsers->contains($newsletterTypeUser)) {
  599.             $this->newsletterTypeUsers->removeElement($newsletterTypeUser);
  600.             // set the owning side to null (unless already changed)
  601.             if ($newsletterTypeUser->getUser() === $this) {
  602.                 $newsletterTypeUser->setUser(null);
  603.             }
  604.         }
  605.         return $this;
  606.     }
  607.     public function getAvatar(): ?string
  608.     {
  609.         return $this->avatar;
  610.     }
  611.     public function setAvatar(?string $avatar): self
  612.     {
  613.         $this->avatar $avatar;
  614.         return $this;
  615.     }
  616.     /**
  617.      * @return Collection|Package[]
  618.      */
  619.     public function getPackages(): Collection
  620.     {
  621.         return $this->packages;
  622.     }
  623.     public function addPackage(Package $package): self
  624.     {
  625.         if (!$this->packages->contains($package)) {
  626.             $this->packages[] = $package;
  627.             $package->setUser($this);
  628.         }
  629.         return $this;
  630.     }
  631.     public function removePackage(Package $package): self
  632.     {
  633.         if ($this->packages->contains($package)) {
  634.             $this->packages->removeElement($package);
  635.             // set the owning side to null (unless already changed)
  636.             if ($package->getUser() === $this) {
  637.                 $package->setUser(null);
  638.             }
  639.         }
  640.         return $this;
  641.     }
  642.     /**
  643.      * @return Collection|Souscription[]
  644.      */
  645.     public function getSouscriptions(): Collection
  646.     {
  647.         return $this->souscriptions;
  648.     }
  649.     public function addSouscription(Souscription $souscription): self
  650.     {
  651.         if (!$this->souscriptions->contains($souscription)) {
  652.             $this->souscriptions[] = $souscription;
  653.             $souscription->setUser($this);
  654.         }
  655.         return $this;
  656.     }
  657.     public function removeSouscription(Souscription $souscription): self
  658.     {
  659.         if ($this->souscriptions->contains($souscription)) {
  660.             $this->souscriptions->removeElement($souscription);
  661.             // set the owning side to null (unless already changed)
  662.             if ($souscription->getUser() === $this) {
  663.                 $souscription->setUser(null);
  664.             }
  665.         }
  666.         return $this;
  667.     }
  668.     /**
  669.      * @return Collection|Facture[]
  670.      */
  671.     public function getFactures(): Collection
  672.     {
  673.         return $this->factures;
  674.     }
  675.     public function addFacture(Facture $facture): self
  676.     {
  677.         if (!$this->factures->contains($facture)) {
  678.             $this->factures[] = $facture;
  679.             $facture->setUser($this);
  680.         }
  681.         return $this;
  682.     }
  683.     public function removeFacture(Facture $facture): self
  684.     {
  685.         if ($this->factures->contains($facture)) {
  686.             $this->factures->removeElement($facture);
  687.             // set the owning side to null (unless already changed)
  688.             if ($facture->getUser() === $this) {
  689.                 $facture->setUser(null);
  690.             }
  691.         }
  692.         return $this;
  693.     }
  694.     /**
  695.      * @return Collection|UserSubscription[]
  696.      */
  697.     public function getUserSubscriptions(): Collection
  698.     {
  699.         return $this->userSubscriptions;
  700.     }
  701.     public function addUserSubscription(UserSubscription $userSubscription): self
  702.     {
  703.         if (!$this->userSubscriptions->contains($userSubscription)) {
  704.             $this->userSubscriptions[] = $userSubscription;
  705.             $userSubscription->setUser($this);
  706.         }
  707.         return $this;
  708.     }
  709.     public function removeUserSubscription(UserSubscription $userSubscription): self
  710.     {
  711.         if ($this->userSubscriptions->contains($userSubscription)) {
  712.             $this->userSubscriptions->removeElement($userSubscription);
  713.             // set the owning side to null (unless already changed)
  714.             if ($userSubscription->getUser() === $this) {
  715.                 $userSubscription->setUser(null);
  716.             }
  717.         }
  718.         return $this;
  719.     }
  720.     public function getProfil(): ?string
  721.     {
  722.         return $this->profil;
  723.     }
  724.     public function setProfil(?string $profil): self
  725.     {
  726.         $this->profil $profil;
  727.         return $this;
  728.     }
  729.     public function getSociete(): ?string
  730.     {
  731.         return $this->societe;
  732.     }
  733.     public function setSociete(?string $societe): self
  734.     {
  735.         $this->societe $societe;
  736.         return $this;
  737.     }
  738.     public function getCategorie(): ?int
  739.     {
  740.         return $this->categorie;
  741.     }
  742.     public function setCategorie(?int $categorie): self
  743.     {
  744.         $this->categorie $categorie;
  745.         return $this;
  746.     }
  747.     /**
  748.      * @return Collection|Update[]
  749.      */
  750.     public function getUpdates(): Collection
  751.     {
  752.         return $this->updates;
  753.     }
  754.     public function addUpdate(Update $update): self
  755.     {
  756.         if (!$this->updates->contains($update)) {
  757.             $this->updates[] = $update;
  758.             $update->setUser($this);
  759.         }
  760.         return $this;
  761.     }
  762.     public function removeUpdate(Update $update): self
  763.     {
  764.         if ($this->updates->removeElement($update)) {
  765.             // set the owning side to null (unless already changed)
  766.             if ($update->getUser() === $this) {
  767.                 $update->setUser(null);
  768.             }
  769.         }
  770.         return $this;
  771.     }
  772.     /**
  773.      * @return Collection|UserBookmark[]
  774.      */
  775.     public function getBookmarks(): Collection
  776.     {
  777.         return $this->bookmarks;
  778.     }
  779.     public function addBookmark(UserBookmark $bookmark): self
  780.     {
  781.         if (!$this->bookmarks->contains($bookmark)) {
  782.             $this->bookmarks[] = $bookmark;
  783.             $bookmark->setUser($this);
  784.         }
  785.         return $this;
  786.     }
  787.     public function removeBookmark(UserBookmark $bookmark): self
  788.     {
  789.         if ($this->bookmarks->removeElement($bookmark)) {
  790.             // set the owning side to null (unless already changed)
  791.             if ($bookmark->getUser() === $this) {
  792.                 $bookmark->setUser(null);
  793.             }
  794.         }
  795.         return $this;
  796.     }
  797. }