-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoperations.php
More file actions
108 lines (99 loc) · 2.99 KB
/
Copy pathoperations.php
File metadata and controls
108 lines (99 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
namespace phpfs;
class operations {
static public function deleteDirectoryRecursively($dir) {
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
if (!self::deleteDirectoryRecursively("$dir/$item")) {
return false;
}
}
return rmdir($dir);
}
static public function fileSort($a, $b) {
if ($a['isfolder'] && !$b['isfolder']) {
return -1;
}
if (!$a['isfolder'] && $b['isfolder']) {
return 1;
}
return (strtolower($a['name']) < strtolower($b['name'])) ? -1 : 1;
}
static public function getContentType($filefullpath) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$ext = finfo_file($finfo,$filefullpath);
finfo_close($finfo);
return $ext;
}
static public function getFilesInDir($dir, $skipFilesMatchingPattern = null, $getRecursiveFolderSize = true) {
$files = array();
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) {
if (!is_null($skipFilesMatchingPattern) &&
preg_match($skipFilesMatchingPattern, $entry)) {
continue;
}
if ($entry != "." && $entry != "..") {
$fullpath = $dir . $entry;
$isdir = is_dir($fullpath);
if ($getRecursiveFolderSize && $isdir) {
$filesize = self::getSizeOfFiles($fullpath . '/');
} else {
$filesize = $isdir ? null : filesize($fullpath);
}
$filedata = array(
'name' => $entry,
'filemtime' => filemtime($fullpath),
'size' => self::sizeTranslate($filesize),
'isfolder' => $isdir);
array_push($files, $filedata);
}
}
closedir($handle);
}
return $files;
}
static public function getSizeOfFiles($dir) {
$totsize = 0;
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
if (is_dir($dir . $item)) {
$totsize += self::getSizeOfFiles($dir . $item . '/');
} else {
$totsize += filesize($dir . $item);
}
}
return $totsize;
}
static public function sizeTranslate($filesize) {
$array = array(
'YB' => 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024,
'ZB' => 1024 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024,
'EB' => 1024 * 1024 * 1024 * 1024 * 1024 * 1024,
'PB' => 1024 * 1024 * 1024 * 1024 * 1024,
'TB' => 1024 * 1024 * 1024 * 1024,
'GB' => 1024 * 1024 * 1024,
'MB' => 1024 * 1024,
'KB' => 1024);
if ($filesize <= 1024) {
$filesize = $filesize . ' Bytes';
}
$precision = 1;
foreach ($array as $name => $size) {
if ($filesize > $size || $filesize == $size) {
$filesize = round((round($filesize / $size * 100) / 100), $precision) . ' ' . $name;
}
}
return $filesize;
}
}