]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix(SystemTagManager): Use truncated tagName in getTag and updateTag 38667/head
authorMarcel Klehr <mklehr@gmx.net>
Tue, 6 Jun 2023 11:58:27 +0000 (13:58 +0200)
committerMarcel Klehr <mklehr@gmx.net>
Thu, 27 Jul 2023 11:56:11 +0000 (13:56 +0200)
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
lib/private/SystemTag/SystemTagManager.php

index 65046ebf000b782f230c69cc8c9fb65aec442dcb..1d5bc10fc2c7d6614ddc30f565ab659b53382af7 100644 (file)
@@ -177,8 +177,10 @@ class SystemTagManager implements ISystemTagManager {
         * {@inheritdoc}
         */
        public function getTag(string $tagName, bool $userVisible, bool $userAssignable): ISystemTag {
+               // Length of name column is 64
+               $truncatedTagName = substr($tagName, 0, 64);
                $result = $this->selectTagQuery
-                       ->setParameter('name', $tagName)
+                       ->setParameter('name', $truncatedTagName)
                        ->setParameter('visibility', $userVisible ? 1 : 0)
                        ->setParameter('editable', $userAssignable ? 1 : 0)
                        ->execute();
@@ -187,7 +189,7 @@ class SystemTagManager implements ISystemTagManager {
                $result->closeCursor();
                if (!$row) {
                        throw new TagNotFoundException(
-                               'Tag ("' . $tagName . '", '. $userVisible . ', ' . $userAssignable . ') does not exist'
+                               'Tag ("' . $truncatedTagName . '", '. $userVisible . ', ' . $userAssignable . ') does not exist'
                        );
                }
 
@@ -247,9 +249,11 @@ class SystemTagManager implements ISystemTagManager {
                }
 
                $beforeUpdate = array_shift($tags);
+               // Length of name column is 64
+               $truncatedNewName = substr($newName, 0, 64);
                $afterUpdate = new SystemTag(
                        $tagId,
-                       $newName,
+                       $truncatedNewName,
                        $userVisible,
                        $userAssignable
                );
@@ -260,7 +264,7 @@ class SystemTagManager implements ISystemTagManager {
                        ->set('visibility', $query->createParameter('visibility'))
                        ->set('editable', $query->createParameter('editable'))
                        ->where($query->expr()->eq('id', $query->createParameter('tagid')))
-                       ->setParameter('name', $newName)
+                       ->setParameter('name', $truncatedNewName)
                        ->setParameter('visibility', $userVisible ? 1 : 0)
                        ->setParameter('editable', $userAssignable ? 1 : 0)
                        ->setParameter('tagid', $tagId);