FileAttribUtil::getUnixMode()   F
last analyzed

Complexity

Conditions 23
Paths > 20000

Size

Total Lines 66
Code Lines 46

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 552

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 23
eloc 46
c 1
b 0
f 1
nc 32768
nop 1
dl 0
loc 66
ccs 0
cts 43
cp 0
crap 552
rs 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace PhpZip\Util;
4
5
use PhpZip\Constants\DosAttrs;
6
use PhpZip\Constants\UnixStat;
7
8
/**
9
 * Class FileAttribUtil.
10
 *
11
 * @internal
12
 */
13
class FileAttribUtil implements DosAttrs, UnixStat
14
{
15
    /**
16
     * Get DOS mode,.
17
     *
18
     * @param int $xattr
19
     *
20
     * @return string
21
     */
22 1
    public static function getDosMode($xattr)
23
    {
24 1
        $xattr = (int) $xattr;
25
26 1
        $mode = (($xattr & self::DOS_DIRECTORY) === self::DOS_DIRECTORY) ? 'd' : '-';
27 1
        $mode .= (($xattr & self::DOS_ARCHIVE) === self::DOS_ARCHIVE) ? 'a' : '-';
28 1
        $mode .= (($xattr & self::DOS_READ_ONLY) === self::DOS_READ_ONLY) ? 'r' : '-';
29 1
        $mode .= (($xattr & self::DOS_HIDDEN) === self::DOS_HIDDEN) ? 'h' : '-';
30 1
        $mode .= (($xattr & self::DOS_SYSTEM) === self::DOS_SYSTEM) ? 's' : '-';
31 1
        $mode .= (($xattr & self::DOS_LABEL) === self::DOS_LABEL) ? 'l' : '-';
32
33 1
        return $mode;
34
    }
35
36
    /**
37
     * @param int $permission
38
     *
39
     * @return string
40
     */
41
    public static function getUnixMode($permission)
42
    {
43
        $mode = '';
44
        $permission = (int) $permission;
45
        switch ($permission & self::UNX_IFMT) {
46
            case self::UNX_IFDIR:
47
                $mode .= 'd';
48
                break;
49
50
            case self::UNX_IFREG:
51
                $mode .= '-';
52
                break;
53
54
            case self::UNX_IFLNK:
55
                $mode .= 'l';
56
                break;
57
58
            case self::UNX_IFBLK:
59
                $mode .= 'b';
60
                break;
61
62
            case self::UNX_IFCHR:
63
                $mode .= 'c';
64
                break;
65
66
            case self::UNX_IFIFO:
67
                $mode .= 'p';
68
                break;
69
70
            case self::UNX_IFSOCK:
71
                $mode .= 's';
72
                break;
73
74
            default:
75
                $mode .= '?';
76
                break;
77
        }
78
        $mode .= ($permission & self::UNX_IRUSR) ? 'r' : '-';
79
        $mode .= ($permission & self::UNX_IWUSR) ? 'w' : '-';
80
81
        if ($permission & self::UNX_IXUSR) {
82
            $mode .= ($permission & self::UNX_ISUID) ? 's' : 'x';
83
        } else {
84
            $mode .= ($permission & self::UNX_ISUID) ? 'S' : '-';  // S==undefined
85
        }
86
        $mode .= ($permission & self::UNX_IRGRP) ? 'r' : '-';
87
        $mode .= ($permission & self::UNX_IWGRP) ? 'w' : '-';
88
89
        if ($permission & self::UNX_IXGRP) {
90
            $mode .= ($permission & self::UNX_ISGID) ? 's' : 'x';
91
        }  // == self::UNX_ENFMT
92
        else {
93
            $mode .= ($permission & self::UNX_ISGID) ? 'S' : '-';
94
        }  // SunOS 4.1.x
95
96
        $mode .= ($permission & self::UNX_IROTH) ? 'r' : '-';
97
        $mode .= ($permission & self::UNX_IWOTH) ? 'w' : '-';
98
99
        if ($permission & self::UNX_IXOTH) {
100
            $mode .= ($permission & self::UNX_ISVTX) ? 't' : 'x';
101
        }  // "sticky bit"
102
        else {
103
            $mode .= ($permission & self::UNX_ISVTX) ? 'T' : '-';
104
        }  // T==undefined
105
106
        return $mode;
107
    }
108
}
109