Inherit avatar cache file permissions

This commit is contained in:
Michael 2022-05-09 17:36:46 +00:00
parent e1f32f7f15
commit 916aa1c9a9

View File

@ -109,18 +109,32 @@ class Avatar
$filepath = DI::basePath() . $path;
$dirpath = dirname($filepath);
$dirpath = DI::basePath() . '/avatar/';
DI::profiler()->startRecording('file');
// 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, 0775, true);
} else {
chmod($dirpath, 0775);
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();