diff options
author | Simon L <szaimen@e.mail.de> | 2023-05-16 11:30:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-16 11:30:13 +0200 |
commit | ab848244fe3d1df6d6ac76b6676949b604458f22 (patch) | |
tree | a53015e2847ec5d059da015d604959ca5758a1a9 | |
parent | 5e02def3f49a56701a3facfb9dc82ef0fff703d5 (diff) | |
parent | 375466819e41f24f8c813c8ebdebb940a1850127 (diff) | |
download | nextcloud-server-ab848244fe3d1df6d6ac76b6676949b604458f22.tar.gz nextcloud-server-ab848244fe3d1df6d6ac76b6676949b604458f22.zip |
Merge pull request #38065 from nextcloud/fix-result-mimetype-loader
fix(mimetype): Fix returning value when finding existing mimetype in MimeType Loader
-rw-r--r-- | lib/private/Files/Type/Loader.php | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/private/Files/Type/Loader.php b/lib/private/Files/Type/Loader.php index 32013bc3786..20c298f21b3 100644 --- a/lib/private/Files/Type/Loader.php +++ b/lib/private/Files/Type/Loader.php @@ -116,7 +116,7 @@ class Loader implements IMimeTypeLoader { * @return int inserted ID */ protected function store($mimetype) { - $row = $this->atomic(function () use ($mimetype) { + $mimetypeId = $this->atomic(function () use ($mimetype) { try { $insert = $this->dbConnection->getQueryBuilder(); $insert->insert('mimetypes') @@ -124,34 +124,28 @@ class Loader implements IMimeTypeLoader { 'mimetype' => $insert->createNamedParameter($mimetype) ]) ->executeStatement(); - return [ - 'mimetype' => $mimetype, - 'id' => $insert->getLastInsertId(), - ]; + return $insert->getLastInsertId(); } catch (DbalException $e) { if ($e->getReason() !== DBException::REASON_UNIQUE_CONSTRAINT_VIOLATION) { throw $e; } $qb = $this->dbConnection->getQueryBuilder(); - $row = $qb->select('id') + $qb->select('id') ->from('mimetypes') - ->where($qb->expr()->eq('mimetype', $qb->createNamedParameter($mimetype))) - ->executeQuery() - ->fetchOne(); - if ($row) { - return [ - 'mimetype' => $mimetype, - 'id' => $row['id'], - ]; + ->where($qb->expr()->eq('mimetype', $qb->createNamedParameter($mimetype))); + $result = $qb->executeQuery(); + $id = $result->fetchOne(); + $result->closeCursor(); + if ($id !== false) { + return (int) $id; } throw new \Exception("Database threw an unique constraint on inserting a new mimetype, but couldn't return the ID for this very mimetype"); } }, $this->dbConnection); - if (!$row) { + if (!$mimetypeId) { throw new \Exception("Failed to get mimetype id for $mimetype after trying to store it"); } - $mimetypeId = (int) $row['id']; $this->mimetypes[$mimetypeId] = $mimetype; $this->mimetypeIds[$mimetype] = $mimetypeId; |