Browse Source

Fix save type tags extrafields - refs BT#10219 #TMI

Angel Fernando Quiroz Campos 9 years ago
parent
commit
26dc2c9959
1 changed files with 14 additions and 16 deletions
  1. 14 16
      main/inc/lib/extra_field_value.lib.php

+ 14 - 16
main/inc/lib/extra_field_value.lib.php

@@ -122,6 +122,18 @@ class ExtraFieldValue extends Model
                                 );
                             } else {
                                 $em = Database::getManager();
+                                
+                                $currentTags = $em
+                                    ->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')
+                                    ->findBy([
+                                        'fieldId' => $extraFieldInfo['id'],
+                                        'itemId' => $params['item_id']
+                                    ]);
+
+                                foreach ($currentTags as $extraFieldtag) {
+                                    $em->remove($extraFieldtag);
+                                }
+
                                 $tagValues = is_array($value) ? $value : [$value];
                                 $tags = [];
 
@@ -144,23 +156,8 @@ class ExtraFieldValue extends Model
                                 }
 
                                 foreach ($tags as $tag) {
-                                    $fieldTags = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')->findBy([
-                                        'fieldId' => $extraFieldInfo['id'],
-                                        'itemId' => $params['item_id'],
-                                        'tagId' => $tag->getId()
-                                    ]);
-
-                                    foreach ($fieldTags as $fieldTag) {
-                                        $em->remove($fieldTag);
-
-                                        $tag->setCount($tag->getCount() - 1);
-                                        $em->persist($tag);
-                                        $em->flush();
-                                    }
-
                                     $tag->setCount($tag->getCount() + 1);
                                     $em->persist($tag);
-                                    $em->flush();
 
                                     $fieldRelTag = new Chamilo\CoreBundle\Entity\ExtraFieldRelTag();
                                     $fieldRelTag->setFieldId($extraFieldInfo['id']);
@@ -168,8 +165,9 @@ class ExtraFieldValue extends Model
                                     $fieldRelTag->setTagId($tag->getId());
 
                                     $em->persist($fieldRelTag);
-                                    $em->flush();
                                 }
+
+                                $em->flush();
                             }
                             break;
                         case ExtraField::FIELD_TYPE_FILE_IMAGE: