|
@@ -125,39 +125,55 @@ class ExtraFieldValue extends Model
|
|
|
$extraFieldInfo['id']
|
|
|
);
|
|
|
} else {
|
|
|
- /* $old = self::getAllValuesByItemAndField(
|
|
|
- $params['item_id'],
|
|
|
- $extraFieldInfo['id']
|
|
|
- );
|
|
|
-
|
|
|
- $deleteItems = array();
|
|
|
- if (!empty($old)) {
|
|
|
- $oldIds = array();
|
|
|
- foreach ($old as $oldItem) {
|
|
|
- $oldIds[] = $oldItem['value'];
|
|
|
+ $em = Database::getManager();
|
|
|
+ $tagValues = is_array($value) ? $value : [$value];
|
|
|
+ $tags = [];
|
|
|
+
|
|
|
+ foreach ($tagValues as $tagValue) {
|
|
|
+ $tagsResult = $em->getRepository('ChamiloCoreBundle:Tag')->findBy([
|
|
|
+ 'tag' => $tagValue,
|
|
|
+ 'fieldId' => $extraFieldInfo['id']
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if (empty($tagsResult)) {
|
|
|
+ $tag = new \Chamilo\CoreBundle\Entity\Tag();
|
|
|
+ $tag->setCount(0);
|
|
|
+ $tag->setFieldId($extraFieldInfo['id']);
|
|
|
+ $tag->setTag($tagValue);
|
|
|
+
|
|
|
+ $tags[] = $tag;
|
|
|
+ } else {
|
|
|
+ $tags = array_merge($tags, $tagsResult);
|
|
|
}
|
|
|
- $deleteItems = array_diff($oldIds, $value);
|
|
|
}
|
|
|
|
|
|
- foreach ($value as $optionId) {
|
|
|
- $newParams = array(
|
|
|
- 'item_id' => $params['item_id'],
|
|
|
- 'field_id' => $extraFieldInfo['id'],
|
|
|
- 'value' => $optionId,
|
|
|
- 'comment' => $comment
|
|
|
- );
|
|
|
- self::save($newParams);
|
|
|
- }
|
|
|
+ foreach ($tags as $tag) {
|
|
|
+ $fieldTags = $em->getRepository('ChamiloCoreBundle:ExtraFieldRelTag')->findBy([
|
|
|
+ 'fieldId' => $extraFieldInfo['id'],
|
|
|
+ 'itemId' => $params['item_id'],
|
|
|
+ 'tagId' => $tag->getId()
|
|
|
+ ]);
|
|
|
|
|
|
- if (!empty($deleteItems)) {
|
|
|
- foreach ($deleteItems as $deleteFieldValue) {
|
|
|
- self::deleteValuesByHandlerAndFieldAndValue(
|
|
|
- $params['item_id'],
|
|
|
- $extraFieldInfo['id'],
|
|
|
- $deleteFieldValue
|
|
|
- );
|
|
|
+ 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']);
|
|
|
+ $fieldRelTag->setItemId($params['item_id']);
|
|
|
+ $fieldRelTag->setTagId($tag->getId());
|
|
|
+
|
|
|
+ $em->persist($fieldRelTag);
|
|
|
+ $em->flush();
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case ExtraField::FIELD_TYPE_FILE_IMAGE:
|