]> Raphaƫl G. Git Repositories - airbundle/blobdiff - Entity/Dance.php
Protect from infinite remove recursion
[airbundle] / Entity / Dance.php
index e3779da83fc03d8558dbaa0c4dead87b3aea33a8..8d83062901439c9a72b02a88da5c5f7da43f1b7b 100644 (file)
@@ -26,7 +26,12 @@ class Dance {
        /**
         * @var string
         */
-       protected $title;
+       protected $name;
+
+       /**
+        * @var string
+        */
+       protected $type;
 
        /**
         * @var \DateTime
@@ -50,11 +55,18 @@ class Dance {
 
        /**
         * Constructor
+        *
+        * @param string $name The dance name
+        * @param string $type The dance type
         */
-       public function __construct() {
+       public function __construct(string $name, string $type) {
                //Set defaults
+               $this->name = $name;
+               $this->type = $type;
                $this->created = new \DateTime('now');
                $this->updated = new \DateTime('now');
+
+               //Set collections
                $this->applications = new ArrayCollection();
                $this->users = new ArrayCollection();
        }
@@ -69,25 +81,47 @@ class Dance {
        }
 
        /**
-        * Set title
+        * Set name
         *
-        * @param string $title
+        * @param string $name
         *
         * @return Dance
         */
-       public function setTitle(string $title): Dance {
-               $this->title = $title;
+       public function setName(string $name): Dance {
+               $this->name = $name;
 
                return $this;
        }
 
        /**
-        * Get title
+        * Get name
         *
         * @return string
         */
-       public function getTitle(): string {
-               return $this->title;
+       public function getName(): string {
+               return $this->name;
+       }
+
+       /**
+        * Set type
+        *
+        * @param string $type
+        *
+        * @return Dance
+        */
+       public function setType(string $type): Dance {
+               $this->type = $type;
+
+               return $this;
+       }
+
+       /**
+        * Get type
+        *
+        * @return string
+        */
+       public function getType(): string {
+               return $this->type;
        }
 
        /**
@@ -175,6 +209,9 @@ class Dance {
         * @return Dance
         */
        public function addUser(User $user): Dance {
+               //Add from owning side
+               $user->addSubscriber($this);
+
                $this->users[] = $user;
 
                return $this;
@@ -188,6 +225,13 @@ class Dance {
         * @return bool
         */
        public function removeUser(User $user): bool {
+               if (!$this->users->contains($user)) {
+                       return true;
+               }
+
+               //Remove from owning side
+               $user->removeSubscriber($this);
+
                return $this->users->removeElement($user);
        }
 
@@ -204,7 +248,7 @@ class Dance {
         * {@inheritdoc}
         */
        public function preUpdate(PreUpdateEventArgs $eventArgs) {
-               //Check that we have an session instance
+               //Check that we have a dance instance
                if (($dance = $eventArgs->getEntity()) instanceof Dance) {
                        //Set updated value
                        $dance->setUpdated(new \DateTime('now'));
@@ -217,6 +261,6 @@ class Dance {
         * @return string
         */
        public function __toString(): string {
-               return $this->title;
+               return $this->name.' '.lcfirst($this->type);
        }
 }