summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon L <szaimen@e.mail.de>2023-05-16 11:30:13 +0200
committerGitHub <noreply@github.com>2023-05-16 11:30:13 +0200
commitab848244fe3d1df6d6ac76b6676949b604458f22 (patch)
treea53015e2847ec5d059da015d604959ca5758a1a9
parent5e02def3f49a56701a3facfb9dc82ef0fff703d5 (diff)
parent375466819e41f24f8c813c8ebdebb940a1850127 (diff)
downloadnextcloud-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.php26
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;