diff --git a/lib/private/legacy/helper.php b/lib/private/legacy/helper.php index 9c4bc895fb946..dfe2e09afff4e 100644 --- a/lib/private/legacy/helper.php +++ b/lib/private/legacy/helper.php @@ -52,6 +52,7 @@ class OC_Helper { /** * Creates an absolute url for public use + * * @param string $service id * @param bool $add_slash * @return string the url @@ -62,13 +63,14 @@ public static function linkToPublic($service, $add_slash = false) { if ($service === 'files') { $url = OC::$server->getURLGenerator()->getAbsoluteURL('/s'); } else { - $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php').'?service='.$service); + $url = OC::$server->getURLGenerator()->getAbsoluteURL(OC::$server->getURLGenerator()->linkTo('', 'public.php') . '?service=' . $service); } return $url . (($add_slash && $service[strlen($service) - 1] != '/') ? '/' : ''); } /** * Make a human file size + * * @param int $bytes file size in bytes * @return string a human readable file size * @@ -104,6 +106,7 @@ public static function humanFileSize($bytes) { /** * Make a php file size + * * @param int $bytes file size in bytes * @return string a php parseable file size * @@ -130,6 +133,7 @@ public static function phpFileSize($bytes) { /** * Make a computer file size + * * @param string $str file size in human readable format * @return float a file size in bytes * @@ -172,6 +176,7 @@ public static function computerFileSize($str) { /** * Recursive copying of folders + * * @param string $src source folder * @param string $dest target folder * @@ -194,6 +199,7 @@ static function copyr($src, $dest) { /** * Recursive deletion of folders + * * @param string $dir path to the folder * @param bool $deleteSelf if set to false only the content of the folder will be deleted * @return bool @@ -393,6 +399,7 @@ public static function mb_array_change_key_case($input, $case = MB_CASE_LOWER, $ /** * performs a search in a nested array + * * @param array $haystack the array to be searched * @param string $needle the search string * @param string $index optional, only search this key name @@ -425,7 +432,7 @@ public static function recursiveArraySearch($haystack, $needle, $index = null) { * @return int number of bytes representing */ public static function maxUploadFilesize($dir, $freeSpace = null) { - if (is_null($freeSpace) || $freeSpace < 0){ + if (is_null($freeSpace) || $freeSpace < 0) { $freeSpace = self::freeSpace($dir); } return min($freeSpace, self::uploadLimit()); @@ -443,7 +450,7 @@ public static function freeSpace($dir) { $freeSpace = max($freeSpace, 0); return $freeSpace; } else { - return (INF > 0)? INF: PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188 + return (INF > 0) ? INF : PHP_INT_MAX; // work around https://bugs.php.net/bug.php?id=69188 } } @@ -510,7 +517,7 @@ public static function findBinaryPath($program) { if (empty($paths)) { $paths = '/usr/local/bin /usr/bin /opt/bin /bin'; } else { - $paths = str_replace(':',' ',getenv('PATH')); + $paths = str_replace(':', ' ', getenv('PATH')); } $command = 'find ' . $paths . ' -name ' . escapeshellarg($program) . ' 2> /dev/null'; exec($command, $output, $returnCode); @@ -533,6 +540,12 @@ public static function findBinaryPath($program) { * @throws \OCP\Files\NotFoundException */ public static function getStorageInfo($path, $rootInfo = null) { + $memcache = \OC::$server->getMemCacheFactory()->create('storageInfo'); + $cacheKey = $rootInfo ? '__root__' . md5($path) : md5($path); + $cached = $memcache->get($cacheKey); + if (is_array($cached)) { + return $cached; + } // return storage info without adding mount points $includeExtStorage = \OC::$server->getSystemConfig()->getValue('quota_include_external_storage', false); @@ -597,10 +610,20 @@ public static function getStorageInfo($path, $rootInfo = null) { $ownerId = $storage->getOwner($path); $ownerDisplayName = ''; $owner = \OC::$server->getUserManager()->get($ownerId); - if($owner) { + if ($owner) { $ownerDisplayName = $owner->getDisplayName(); } + $memcache->set($cacheKey, [ + 'free' => $free, + 'used' => $used, + 'quota' => $quota, + 'total' => $total, + 'relative' => $relative, + 'owner' => $ownerId, + 'ownerDisplayName' => $ownerDisplayName, + ], 5 * 60); + return [ 'free' => $free, 'used' => $used, @@ -645,6 +668,7 @@ private static function getGlobalStorageInfo() { /** * Returns whether the config file is set manually to read-only + * * @return bool */ public static function isReadOnlyConfigEnabled() {