diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2016-10-07 21:53:01 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@statuscode.ch> | 2016-10-07 21:56:43 +0200 |
commit | 0245dd7221b6901aab0118688a1a16328248d530 (patch) | |
tree | 41a21191068cda8f2836bead68ea20f313ef3e3f /lib/private/L10N | |
parent | bccc4e618a58281f390b6baa88cc0b03b1e40172 (diff) | |
download | nextcloud-server-0245dd7221b6901aab0118688a1a16328248d530.tar.gz nextcloud-server-0245dd7221b6901aab0118688a1a16328248d530.zip |
Simplify isSubDirectory check
Shaves off another 9ms per request as can be seen at https://blackfire.io/profiles/compare/dd54cef3-e58d-4a22-b8f4-c7c4b70697be/graph
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Diffstat (limited to 'lib/private/L10N')
-rw-r--r-- | lib/private/L10N/Factory.php | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index 91233a0c4a7..8aad395065c 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -2,6 +2,7 @@ /** * @copyright Copyright (c) 2016, ownCloud, Inc. * @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl> + * @copyright 2016 Lukas Reschke <lukas@statuscode.ch> * * @author Bart Visscher <bartv@thisnet.nl> * @author Joas Schilling <coding@schilljs.com> @@ -288,6 +289,27 @@ class Factory implements IFactory { } /** + * Checks if $sub is a subdirectory of $parent + * + * @param string $sub + * @param string $parent + * @return bool + */ + private function isSubDirectory($sub, $parent) { + // Check whether $sub contains no ".." + if(strpos($sub, '..') !== false) { + return false; + } + + // Check whether $sub is a subdirectory of $parent + if (strpos($sub, $parent) === 0) { + return true; + } + + return false; + } + + /** * Get a list of language files that should be loaded * * @param string $app @@ -302,10 +324,10 @@ class Factory implements IFactory { $i18nDir = $this->findL10nDir($app); $transFile = strip_tags($i18nDir) . strip_tags($lang) . '.json'; - if ((\OC_Helper::isSubDirectory($transFile, $this->serverRoot . '/core/l10n/') - || \OC_Helper::isSubDirectory($transFile, $this->serverRoot . '/lib/l10n/') - || \OC_Helper::isSubDirectory($transFile, $this->serverRoot . '/settings/l10n/') - || \OC_Helper::isSubDirectory($transFile, \OC_App::getAppPath($app) . '/l10n/') + if (($this->isSubDirectory($transFile, $this->serverRoot . '/core/l10n/') + || $this->isSubDirectory($transFile, $this->serverRoot . '/lib/l10n/') + || $this->isSubDirectory($transFile, $this->serverRoot . '/settings/l10n/') + || $this->isSubDirectory($transFile, \OC_App::getAppPath($app) . '/l10n/') ) && file_exists($transFile)) { // load the translations file |