]> source.dussan.org Git - nextcloud-server.git/commitdiff
Refer to relative path instead of absolute path
authorLukas Reschke <lukas@owncloud.com>
Mon, 20 Oct 2014 10:37:32 +0000 (12:37 +0200)
committerLukas Reschke <lukas@owncloud.com>
Mon, 20 Oct 2014 17:15:23 +0000 (19:15 +0200)
There is no need to refer to the absolute path here if we can use the relative one.

Conflicts:
lib/private/templatelayout.php

Conflicts:
lib/private/templatelayout.php

lib/private/templatelayout.php

index 56ccbd197ed6f22acee171d7cb430559f16fa995..1f2f3ebeba0b93fc299a01ee70366a4e1594dd19 100644 (file)
@@ -140,7 +140,7 @@ class OC_TemplateLayout extends OC_Template {
        public function generateAssets()
        {
                $jsFiles = self::findJavascriptFiles(OC_Util::$scripts);
-               $jsHash = self::hashScriptNames($jsFiles);
+               $jsHash = self::hashFileNames($jsFiles);
 
                if (!file_exists("assets/$jsHash.js")) {
                        $jsFiles = array_map(function ($item) {
@@ -156,7 +156,7 @@ class OC_TemplateLayout extends OC_Template {
                }
 
                $cssFiles = self::findStylesheetFiles(OC_Util::$styles);
-               $cssHash = self::hashScriptNames($cssFiles);
+               $cssHash = self::hashFileNames($cssFiles);
 
                if (!file_exists("assets/$cssHash.css")) {
                        $cssFiles = array_map(function ($item) {
@@ -186,17 +186,29 @@ class OC_TemplateLayout extends OC_Template {
                $this->append('cssfiles', OC_Helper::linkTo('assets', "$cssHash.css"));
        }
 
+       /**
+        * Converts the absolute filepath to a relative path from \OC::$SERVERROOT
+        * @param string $filePath Absolute path
+        * @return string Relative path
+        * @throws Exception If $filePath is not under \OC::$SERVERROOT
+        */
+       public static function convertToRelativePath($filePath) {
+               $relativePath = explode(\OC::$SERVERROOT, $filePath);
+               if(count($relativePath) !== 2) {
+                       throw new \Exception('$filePath is not under the \OC::$SERVERROOT');
+               }
+
+               return $relativePath[1];
+       }
+
        /**
         * @param array $files
         * @return string
         */
-       private static function hashScriptNames($files)
-       {
-               $files = array_map(function ($item) {
-                       $root = $item[0];
-                       $file = $item[2];
-                       return $root . '/' . $file;
-               }, $files);
+       private static function hashFileNames($files) {
+               foreach($files as $i => $file) {
+                       $files[$i] = self::convertToRelativePath($file[0]).'/'.$file[2];
+               }
 
                sort($files);
                // include the apps' versions hash to invalidate the cached assets