From 65750cb2448af6d543132819ea7f7ee9720b825c Mon Sep 17 00:00:00 2001 From: Victor Dubiniuk Date: Fri, 4 Oct 2013 16:17:19 +0300 Subject: [PATCH] Load all mimetypes in one go --- lib/private/files/cache/cache.php | 39 +++++++++++++++++-------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/lib/private/files/cache/cache.php b/lib/private/files/cache/cache.php index e69733727a..852036929d 100644 --- a/lib/private/files/cache/cache.php +++ b/lib/private/files/cache/cache.php @@ -64,30 +64,33 @@ class Cache { * @return int */ public function getMimetypeId($mime) { - if (!isset($this->mimetypeIds[$mime])) { - $result = \OC_DB::executeAudited('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?', array($mime)); - if ($row = $result->fetchRow()) { - $this->mimetypeIds[$mime] = $row['id']; - } else { - $result = \OC_DB::executeAudited('INSERT INTO `*PREFIX*mimetypes`(`mimetype`) VALUES(?)', array($mime)); - $this->mimetypeIds[$mime] = \OC_DB::insertid('*PREFIX*mimetypes'); - } - $this->mimetypes[$this->mimetypeIds[$mime]] = $mime; + if (empty($this->mimetypeIds)) { + $this->loadMimetypes(); } + + if (!isset($this->mimetypeIds[$mime])) { + $result = \OC_DB::executeAudited('INSERT INTO `*PREFIX*mimetypes`(`mimetype`) VALUES(?)', array($mime)); + $this->mimetypeIds[$mime] = \OC_DB::insertid('*PREFIX*mimetypes'); + $this->mimetypes[$this->mimetypeIds[$mime]] = $mime; + } + return $this->mimetypeIds[$mime]; } public function getMimetype($id) { - if (!isset($this->mimetypes[$id])) { - $sql = 'SELECT `mimetype` FROM `*PREFIX*mimetypes` WHERE `id` = ?'; - $result = \OC_DB::executeAudited($sql, array($id)); - if ($row = $result->fetchRow()) { - $this->mimetypes[$id] = $row['mimetype']; - } else { - return null; - } + if (empty($this->mimetypes)) { + $this->loadMimetypes(); } - return $this->mimetypes[$id]; + + return isset($this->mimetypes[$id]) ? $this->mimetypes[$id] : null; + } + + protected function loadMimetypes(){ + $result = \OC_DB::executeAudited('SELECT `id`, `mimetype` FROM `*PREFIX*mimetypes`', array()); + while ($result && $row = $result->fetchRow()) { + $this->mimetypeIds[$row['mimetype']] = $row['id']; + $this->mimetypes[$row['id']] = $row['mimetype']; + } } /**