From a29cd0d63b3f42acc00781f3c9b14468b835f1dc Mon Sep 17 00:00:00 2001 From: Nicolas Godfraind Date: Mon, 23 Nov 2015 14:39:00 +0100 Subject: [PATCH] Fixing delete. --- Entity/Paper.php | 1 + Listener/ExerciseListener.php | 55 +++++++------------ .../pdo_mysql/Version20151123143814.php | 41 ++++++++++++++ 3 files changed, 61 insertions(+), 36 deletions(-) create mode 100644 Migrations/pdo_mysql/Version20151123143814.php diff --git a/Entity/Paper.php b/Entity/Paper.php index e3e5dffeb..dae070c74 100755 --- a/Entity/Paper.php +++ b/Entity/Paper.php @@ -77,6 +77,7 @@ class Paper /** * @ORM\ManyToOne(targetEntity="UJM\ExoBundle\Entity\Exercise") + * @ORM\JoinColumn(onDelete="SET NULL", nullable=true) */ private $exercise; diff --git a/Listener/ExerciseListener.php b/Listener/ExerciseListener.php index bfc11786a..518fb1f1d 100755 --- a/Listener/ExerciseListener.php +++ b/Listener/ExerciseListener.php @@ -97,7 +97,7 @@ public function onOpen(OpenResourceEvent $event) public function onDelete(DeleteResourceEvent $event) { - $em = $this->container->get('doctrine.orm.entity_manager'); + $em = $this->container->get('claroline.persistence.object_manager'); $papers = $em->getRepository('UJMExoBundle:Paper') ->findOneBy(array( @@ -105,47 +105,30 @@ public function onDelete(DeleteResourceEvent $event) ) ); - if (count($papers) == 0) { - - $eqs = $em->getRepository('UJMExoBundle:ExerciseQuestion') - ->findBy(array( - 'exercise' => $event->getResource()->getId() - ) - ); - - foreach ($eqs as $eq) { - $em->remove($eq); - } - - $subscriptions = $em->getRepository('UJMExoBundle:Subscription') - ->findBy(array( - 'exercise' => $event->getResource()->getId() - ) - ); - - foreach ($subscriptions as $subscription) { - $em->remove($subscription); - } - - $em->flush(); - - $em->remove($event->getResource()); + $eqs = $em->getRepository('UJMExoBundle:ExerciseQuestion') + ->findBy(array( + 'exercise' => $event->getResource()->getId() + ) + ); - } else { + foreach ($eqs as $eq) { + $em->remove($eq); + } - $exercise = $em->getRepository('UJMExoBundle:Exercise')->find($event->getResource()->getId()); - $resourceNode = $em->getRepository('ClarolineCoreBundle:Resource\ResourceNode')->find( - $exercise->getResourceNode()->getId() + $subscriptions = $em->getRepository('UJMExoBundle:Subscription') + ->findBy(array( + 'exercise' => $event->getResource()->getId() + ) ); - $em->remove($resourceNode); - - $exercise->archiveExercise(); - $em->persist($exercise); - $em->flush(); - exit(); + foreach ($subscriptions as $subscription) { + $em->remove($subscription); } + $em->flush(); + + $em->remove($event->getResource()); + $event->stopPropagation(); } diff --git a/Migrations/pdo_mysql/Version20151123143814.php b/Migrations/pdo_mysql/Version20151123143814.php new file mode 100644 index 000000000..815ba7ce0 --- /dev/null +++ b/Migrations/pdo_mysql/Version20151123143814.php @@ -0,0 +1,41 @@ +addSql(" + ALTER TABLE ujm_paper + DROP FOREIGN KEY FK_82972E4BE934951A + "); + $this->addSql(" + ALTER TABLE ujm_paper + ADD CONSTRAINT FK_82972E4BE934951A FOREIGN KEY (exercise_id) + REFERENCES ujm_exercise (id) + ON DELETE SET NULL + "); + } + + public function down(Schema $schema) + { + $this->addSql(" + ALTER TABLE ujm_paper + DROP FOREIGN KEY FK_82972E4BE934951A + "); + $this->addSql(" + ALTER TABLE ujm_paper + ADD CONSTRAINT FK_82972E4BE934951A FOREIGN KEY (exercise_id) + REFERENCES ujm_exercise (id) + "); + } +} \ No newline at end of file