summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Coevoet <stof@notk.org>2012-05-24 00:38:25 +0200
committerChristophe Coevoet <stof@notk.org>2012-05-24 00:38:25 +0200
commitaabc5c56c0504c2cd1f93cd50f49351d10c7a9a3 (patch)
treefe7ba918080c802878554afe0c288c782611158a
parent4a122d4b291158b1b42b7a6ed4ff6a6ea495e8b2 (diff)
Fixed the form to add new subscriptions
-rwxr-xr-xsrc/Tolkiendil/AssoBundle/Admin/MemberAdmin.php2
-rw-r--r--src/Tolkiendil/AssoBundle/Entity/Member.php31
2 files changed, 30 insertions, 3 deletions
diff --git a/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php b/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php
index a0f1789..909d2e2 100755
--- a/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php
+++ b/src/Tolkiendil/AssoBundle/Admin/MemberAdmin.php
@@ -67,7 +67,7 @@ class MemberAdmin extends Admin
->add(
'subscriptions',
'sonata_type_collection',
- array('required' => false, 'label' => ' '),
+ array('required' => false, 'label' => ' ', 'by_reference' => false),
array('edit' => 'inline', 'inline' => 'table')
)
->end()
diff --git a/src/Tolkiendil/AssoBundle/Entity/Member.php b/src/Tolkiendil/AssoBundle/Entity/Member.php
index 29fc8f4..b2b0495 100644
--- a/src/Tolkiendil/AssoBundle/Entity/Member.php
+++ b/src/Tolkiendil/AssoBundle/Entity/Member.php
@@ -3,6 +3,7 @@
namespace Tolkiendil\AssoBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
@@ -518,6 +519,22 @@ class Member
}
/**
+ * Removes a subscription
+ *
+ * @param \Tolkiendil\AssoBundle\Entity\Subscription $subscription
+ */
+ public function removeSubscription(Subscription $subscription)
+ {
+ if ($this !== $subscription->getMember()) {
+ return;
+ }
+
+ $subscription->setMember(null);
+
+ $this->subscriptions->removeElement($subscription);
+ }
+
+ /**
* Add subscription
*
* TODO remove this method once SonataAdminBundle has been fixed to avoid requiring it with this crappy name.
@@ -544,9 +561,19 @@ class Member
*
* @param \Doctrine\Common\Collections\Collection $subscriptions
*/
- public function setSubscriptions($subscriptions)
+ public function setSubscriptions(Collection $subscriptions)
{
- $this->subscriptions = $subscriptions;
+ foreach ($this->subscriptions as $subscription) {
+ if ($subscriptions->contains($subscription)) {
+ $subscriptions->removeElement($subscription);
+ } else {
+ $this->removeSubscription($subscription);
+ }
+ }
+
+ foreach ($subscriptions as $subscription) {
+ $this->addSubscription($subscription);
+ }
}
/**