PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.9.4
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.9.4
4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Filesystem / Permissions.php
wp-staging / Framework / Filesystem Last commit date
Filters 2 days ago Scanning 5 years ago AbstractFileObject.php 1 year ago AbstractFilesystemScanner.php 2 days ago DebugLogReader.php 2 years ago DirectoryListing.php 6 months ago DirectorySize.php 2 weeks ago DiskWriteCheck.php 6 months ago FileObject.php 1 year ago Filesystem.php 7 months ago FilesystemExceptions.php 5 years ago FilesystemScanner.php 2 weeks ago FilesystemScannerDto.php 1 month ago FilterableDirectoryIterator.php 1 year ago LegacyFileRulesTrait.php 2 weeks ago LogCleanup.php 6 months ago LogFiles.php 1 year ago MissingFileException.php 3 years ago OPcache.php 6 months ago PartIdentifier.php 9 months ago PathChecker.php 2 years ago PathIdentifier.php 3 weeks ago Permissions.php 1 month ago WpUploadsFolderSymlinker.php 1 month ago
Permissions.php
70 lines
1 <?php
2
3 namespace WPStaging\Framework\Filesystem;
4
5 use WPStaging\Framework\Traits\ApplyFiltersTrait;
6
7 class Permissions
8 {
9 use ApplyFiltersTrait;
10
11 /** @var string */
12 const FILTER_FOLDER_PERMISSION = 'wpstg_folder_permission';
13
14 /** @var string */
15 const FILTER_FILE_PERMISSION = 'wpstg_file_permission';
16
17 /** @var int */
18 const DEFAULT_FILE_PERMISSION = 0644;
19
20 /** @var int */
21 const DEFAULT_DIR_PERMISSION = 0755;
22
23 /**
24 * @return int
25 */
26 public function getDirectoryOctal(): int
27 {
28 if (!defined('FS_CHMOD_DIR')) {
29 return $this->applyFilters(self::FILTER_FOLDER_PERMISSION, self::DEFAULT_DIR_PERMISSION);
30 }
31
32 if ($this->isValidPermission(FS_CHMOD_DIR)) {
33 return $this->applyFilters(self::FILTER_FOLDER_PERMISSION, FS_CHMOD_DIR);
34 }
35
36 return $this->applyFilters(self::FILTER_FOLDER_PERMISSION, self::DEFAULT_DIR_PERMISSION);
37 }
38
39 /**
40 * @param string $filePath Absolute path to the file, or empty string when no path is known.
41 * Passed as a second arg to wpstg_file_permission; callbacks that
42 * want per-file control must register with accepted_args = 2.
43 * @return int
44 */
45 public function getFilePermission(string $filePath): int
46 {
47 $permission = self::DEFAULT_FILE_PERMISSION;
48 if (defined('FS_CHMOD_FILE') && $this->isValidPermission(FS_CHMOD_FILE)) {
49 $permission = FS_CHMOD_FILE;
50 }
51
52 $filtered = $this->applyFilters(self::FILTER_FILE_PERMISSION, $permission, $filePath);
53
54 if (!is_int($filtered) || !$this->isValidPermission($filtered)) {
55 return $permission;
56 }
57
58 return $filtered;
59 }
60
61 /**
62 * @param int $permission
63 * @return bool
64 */
65 private function isValidPermission(int $permission): bool
66 {
67 return $permission >= 0 && $permission <= 0777;
68 }
69 }
70