diff --git a/lib/DoctrineExtensions/Taggable/TagManager.php b/lib/DoctrineExtensions/Taggable/TagManager.php index cb3c20c..e84937e 100644 --- a/lib/DoctrineExtensions/Taggable/TagManager.php +++ b/lib/DoctrineExtensions/Taggable/TagManager.php @@ -128,7 +128,9 @@ public function loadOrCreateTags(array $names) $loadedNames[] = $tag->getName(); } - $missingNames = array_udiff($names, $loadedNames, 'strcasecmp'); + $missingNames = array_udiff($names, $loadedNames, function ($str1, $str2) { + return strcmp(mb_strtolower($str1, 'UTF8'), mb_strtolower($str2, 'UTF8')); + }); if (sizeof($missingNames)) { foreach ($missingNames as $name) { $tag = $this->createTag($name); @@ -151,7 +153,7 @@ public function loadOrCreateTags(array $names) public function saveTagging(Taggable $resource) { $oldTags = $this->getTagging($resource); - $newTags = $resource->getTags(); + $newTags = clone $resource->getTags(); $tagsToAdd = $newTags; if ($oldTags !== null and is_array($oldTags) and !empty($oldTags)) {