vendor/sulu/sulu/src/Sulu/Bundle/ContactBundle/Entity/SocialMediaProfileType.php line 26

  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\ContactBundle\Entity;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\Common\Collections\Collection;
  13. use JMS\Serializer\Annotation\ExclusionPolicy;
  14. use JMS\Serializer\Annotation\Groups;
  15. use JMS\Serializer\Annotation\SerializedName;
  16. use JMS\Serializer\Annotation\VirtualProperty;
  17. /**
  18.  * Type of social media profile (i.e. Facebook,...).
  19.  *
  20.  * @ExclusionPolicy("All")
  21.  */
  22. class SocialMediaProfileType implements \JsonSerializable
  23. {
  24.     /**
  25.      * @var int
  26.      */
  27.     private $id;
  28.     /**
  29.      * @var string
  30.      */
  31.     private $name;
  32.     /**
  33.      * @var Collection|SocialMediaProfile[]
  34.      */
  35.     private $socialMediaProfiles;
  36.     /**
  37.      * Constructor.
  38.      */
  39.     public function __construct()
  40.     {
  41.         $this->socialMediaProfiles = new ArrayCollection();
  42.     }
  43.     /**
  44.      * To force id = 1 in load fixtures.
  45.      *
  46.      * @param int $id
  47.      */
  48.     public function setId($id)
  49.     {
  50.         $this->id $id;
  51.     }
  52.     /**
  53.      * @VirtualProperty()
  54.      * @SerializedName("id")
  55.      * @Groups({"fullAccount", "fullContact", "frontend"})
  56.      *
  57.      * @return int
  58.      */
  59.     public function getId()
  60.     {
  61.         return $this->id;
  62.     }
  63.     /**
  64.      * @param string $name
  65.      *
  66.      * @return SocialMediaProfileType
  67.      */
  68.     public function setName($name)
  69.     {
  70.         // Limit to maximal sql column length.
  71.         $this->name \substr($name0100);
  72.         return $this;
  73.     }
  74.     /**
  75.      * @VirtualProperty()
  76.      * @SerializedName("name")
  77.      * @Groups({"fullAccount", "fullContact", "frontend"})
  78.      *
  79.      * @return string
  80.      */
  81.     public function getName()
  82.     {
  83.         return $this->name;
  84.     }
  85.     /**
  86.      * @return SocialMediaProfileType
  87.      */
  88.     public function addSocialMediaProfile(SocialMediaProfile $socialMediaProfile)
  89.     {
  90.         $this->socialMediaProfiles[] = $socialMediaProfile;
  91.         return $this;
  92.     }
  93.     public function removeSocialMediaProfile(SocialMediaProfile $socialMediaProfile)
  94.     {
  95.         $this->socialMediaProfiles->removeElement($socialMediaProfile);
  96.     }
  97.     /**
  98.      * @return Collection|SocialMediaProfile[]
  99.      */
  100.     public function getSocialMediaProfiles()
  101.     {
  102.         return $this->socialMediaProfiles;
  103.     }
  104.     /**
  105.      * Specify data which should be serialized to JSON.
  106.      *
  107.      * @see http://php.net/manual/en/jsonserializable.jsonserialize.php
  108.      *
  109.      * @return mixed data which can be serialized by <b>json_encode</b>,
  110.      *               which is a value of any type other than a resource
  111.      */
  112.     #[\ReturnTypeWillChange]
  113.     public function jsonSerialize()
  114.     {
  115.         return [
  116.             'id' => $this->getId(),
  117.             'name' => $this->getName(),
  118.         ];
  119.     }
  120. }