]> git.mxchange.org Git - friendica.git/commitdiff
Inherit avatar cache file permissions
authorMichael <heluecht@pirati.ca>
Mon, 9 May 2022 17:36:46 +0000 (17:36 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 9 May 2022 17:36:46 +0000 (17:36 +0000)
src/Contact/Avatar.php

index 13a99f91068d0930a0a4a73c9f44b9e243503b08..8aa72bf9ba247ba1200aa065313d0eb717e40a84 100644 (file)
@@ -109,18 +109,32 @@ class Avatar
 
                $filepath = DI::basePath() . $path;
 
-               $dirpath = dirname($filepath);
+               $dirpath = DI::basePath() . '/avatar/';
 
                DI::profiler()->startRecording('file');
 
-               if (!file_exists($dirpath)) {
-                       mkdir($dirpath, 0775, true);
-               } else {
-                       chmod($dirpath, 0775);
+               // Fetch the permission and group ownership of the "avatar" path and apply to all files
+               $dir_perm  = fileperms($dirpath) & 0777;
+               $file_perm = fileperms($dirpath) & 0666;
+               $group     = filegroup($dirpath);
+
+               // Check directory permissions of all parts of the path
+               foreach (explode('/', dirname($filename)) as $part) {
+                       $dirpath .= $part . '/';
+                       if (!file_exists($dirpath)) {
+                               mkdir($dirpath, $dir_perm);
+                       } elseif (fileperms($dirpath) & 0777 != $dir_perm) {
+                               chmod($dirpath, $dir_perm);
+                       }
+
+                       if (filegroup($dirpath) != $group) {
+                               chgrp($dirpath, $group);
+                       }
                }
 
                file_put_contents($filepath, $image->asString());
-               chmod($filepath, 0664);
+               chmod($filepath, $file_perm);
+               chgrp($filepath, $group);
 
                DI::profiler()->stopRecording();