Browse Source

Merge pull request #1552 from jloguercio/1.11.x

Added Delete session with SequenceResource Linked validation
José Loguercio 8 years ago
parent
commit
11fa8639a5

+ 14 - 2
main/inc/lib/sessionmanager.lib.php

@@ -1549,6 +1549,18 @@ class SessionManager
 
         $userId = api_get_user_id();
 
+        /** @var \Chamilo\CoreBundle\Entity\Repository\SequenceRepository $repo */
+        $repo = Database::getManager()->getRepository('ChamiloCoreBundle:SequenceResource');
+        $sequenceResourse = $repo->findRequirementForResource(
+            $id_checked,
+            \Chamilo\CoreBundle\Entity\SequenceResource::SESSION_TYPE
+        );
+
+        if ($sequenceResourse) {
+            Display::addFlash(Display::return_message(get_lang('ThereIsASequenceResourceLinkedToThisSessionYouNeedToDeleteItFirst'), 'error'));
+            return false;
+        }
+
         if (is_array($id_checked)) {
             foreach ($id_checked as $sessionId) {
                 self::delete($sessionId);
@@ -1612,8 +1624,6 @@ class SessionManager
         $extraFieldValue = new ExtraFieldValue('session');
         $extraFieldValue->deleteValuesByItem($id_checked);
 
-        /** @var \Chamilo\CoreBundle\Entity\Repository\SequenceRepository $repo */
-        $repo = Database::getManager()->getRepository('ChamiloCoreBundle:SequenceResource');
         $repo->deleteResource(
             $id_checked,
             \Chamilo\CoreBundle\Entity\SequenceResource::SESSION_TYPE
@@ -1627,6 +1637,8 @@ class SessionManager
             api_get_utc_datetime(),
             $userId
         );
+
+        return true;
     }
 
     /**

+ 5 - 2
main/session/session_list.php

@@ -19,8 +19,11 @@ $idChecked = isset($_REQUEST['idChecked']) ? $_REQUEST['idChecked'] : null;
 $list_type = isset($_REQUEST['list_type']) ? $_REQUEST['list_type'] : 'simple';
 
 if ($action == 'delete') {
-    SessionManager::delete($idChecked);
-    Display::addFlash(Display::return_message(get_lang('Deleted')));
+    $response = SessionManager::delete($idChecked);
+
+    if ($response) {
+        Display::addFlash(Display::return_message(get_lang('Deleted')));
+    }
     header('Location: session_list.php');
     exit();
 } elseif ($action == 'copy') {

+ 4 - 3
src/Chamilo/CoreBundle/Entity/Repository/SequenceRepository.php

@@ -75,6 +75,7 @@ class SequenceRepository extends EntityRepository
      *
      * @param int $resourceId
      * @param int $type
+     * @return boolean
      */
     public function deleteResource($resourceId, $type)
     {
@@ -82,7 +83,7 @@ class SequenceRepository extends EntityRepository
 
         if ($sequence && $sequence->hasGraph()) {
             $em = $this->getEntityManager();
-            $graph = $sequence->getUnSerializeGraph();
+            $graph = $sequence->getSequence()->getUnSerializeGraph();
 
             $mainVertex = $graph->getVertex($resourceId);
             $vertices = $graph->getVertices();
@@ -92,10 +93,10 @@ class SequenceRepository extends EntityRepository
                 $subResourceId = $vertex->getId();
                 $subSequence = $this->findRequirementForResource($subResourceId, $type);
                 if ($sequence && $subSequence->hasGraph()) {
-                    $graph = $subSequence->getUnSerializeGraph();
+                    $graph = $subSequence->getSequence()->getUnSerializeGraph();
                     $subMainVertex = $graph->getVertex($resourceId);
                     $subMainVertex->destroy();
-                    $subSequence->setGraphAndSerialize($graph);
+                    $subSequence->getSequence()->setGraphAndSerialize($graph);
                     $em->persist($subSequence);
                 }
             }