1: <?php defined('_JOOS_CORE') or exit();
2:
3: /**
4: * Работа с каталогами файловой системы
5: *
6: * @version 1.0
7: * @package Core\Libraries
8: * @subpackage Folder
9: * @category Libraries
10: * @author Joostina Team <info@joostina.ru>
11: * @copyright (C) 2007-2012 Joostina Team
12: * @license MIT License http://www.opensource.org/licenses/mit-license.php
13: * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
14: *
15: * */
16: class joosFolder
17: {
18: /**
19: * Проверка существования каталога
20: *
21: * @param string $location полный путь к каталогу
22: *
23: * @return bool наличие указанного каталога
24: */
25: public static function exists($location)
26: {
27: $location = (string) $location;
28:
29: return (bool) (file_exists($location) && is_dir($location));
30: }
31:
32: /**
33: * Проверка прав доступа на чтение содержимого каталога
34: *
35: * @param string $location полный путь к каталогу
36: *
37: * @return bool результат проверки доступа на запись в указанный каталог
38: */
39: public static function is_readable($location)
40: {
41: return (bool) is_readable($location);
42: }
43:
44: /**
45: * Проверка прав доступа к каталогу на запись
46: *
47: * @param string $location полный путь к каталогу
48: *
49: * @return bool результат проверки доступа на запись в указанный каталог
50: */
51: public static function is_writable($location)
52: {
53: return (bool) is_writable($location);
54: }
55:
56: /**
57: * Создание каталога с требуемыми правами доступа
58: *
59: * @param string $location полный путь к каталогу
60: * @param int $chmod права доступа в соответсвии с условиями работы стандартной php функции chmod
61: *
62: * @return bool результат создания каталога
63: */
64: public static function create($location, $chmod = 0755)
65: {
66: return (!self::exists($location)) ? mkdir((string) $location, $chmod, true) : true;
67: }
68:
69: /**
70: * Удаление каталога со всеми вложенными файлами и подкаталогами
71: *
72: * @param string $location полный путь к каталогу
73: *
74: * @return bool результат полного удаления каталога и вложенных файлов и каталогов
75: */
76: public static function delete($location)
77: {
78: if (is_dir($location) && file_exists($location)) {
79: foreach (glob($location . '/*') as $file) {
80: if (!(is_dir($file) ? joosFolder::delete($file) : joosFile::delete($file))) {
81: return false;
82: }
83:
84: }
85:
86: return rmdir($location);
87: }
88:
89: return false;
90: }
91:
92: /**
93: * Очистка каталога от вложенных файлов и подкаталогов
94: *
95: * @param string $location полный путь к каталогу
96: *
97: * @return bool результат очистка каталога
98: */
99: public static function clear($location)
100: {
101: /*
102: $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($location),
103: RecursiveIteratorIterator::CHILD_FIRST);
104: foreach ($iterator as $path) {
105: if ($path->isDir()) {
106: $location = $path->__toString();
107: self::delete($location);
108: } else {
109: $filename = $path->__toString();
110: if (joosFile::is_exists($filename)) {
111: joosFile::delete($filename);
112: }
113: }
114: }
115: */
116:
117: return (bool) 1;
118: }
119:
120: /**
121: * Переименование/перемещение каталога
122: * На перемещенный каталог устанавливаются требуемые права доступа
123: *
124: * @param string $location_from полный путь к каталогу со старым именем
125: * @param string $location_to полный путь к каталогу с новым именем
126: * @param int $chmod права доступа в соответсвии с условиями работы стандартной php функции chmod
127: *
128: * @return bool результат переименования каталога
129: */
130: public static function rename($location_from, $location_to, $chmod = false)
131: {
132: return (bool) 1;
133: }
134:
135: /**
136: * Копирование каталога со всеми вложенными файлами и подкаталогами
137: * Содержимое копируется в создаваемый каталог, на него так же можно сразу установить требуемые права доступа
138: *
139: * @param string $location_from полный путь к каталогу - источнику
140: * @param string $location_to полный путь к каталогу - получателю
141: * @param int $chmod права доступа в соответсвии с условиями работы стандартной php функции chmod
142: *
143: * @return bool результат капорования каталога
144: */
145: public static function copy($location_from, $location_to, $chmod = false)
146: {
147: return (bool) 1;
148: }
149:
150: /**
151: * Смена прав доступа к каталогу с возможностью расстановки прав рекурсивно
152: *
153: * @param string $location полный путь к каталогу
154: * @param int $chmod права доступа в соответсвии с условиями работы стандартной php функции chmod
155: * @param bool $recursive флаг установки прав доступа рекурсивно внутрь, по умолчанию права ставятся без рекурсии
156: *
157: * @return bool результат смены прав доступа
158: */
159: public static function set_chmod($location, $chmod, $recursive = false)
160: {
161: return (bool) 1;
162: }
163:
164: /**
165: * Подсчет размера занимаемого каталогом со всеми вложенными файлами и подкаталогами
166: *
167: * @param string $location полный путь к каталогу
168: *
169: * @return int размер каталога в байтах
170: */
171: public static function get_size($location)
172: {
173: return (int) 1;
174: }
175:
176: /**
177: * Получение списка файлов и подкаталогов каталога, с возможностью рекурсивного вывода вложенных подкаталогов
178: *
179: * @param string $location полный путь к каталогу
180: * @param array $params массив параметров вывода списка файлов - расширение, только файлы/каталоги, включая-исключая расширения, рекурсия внутрь
181: *
182: * @return array массив вложенных файлов и каталогов
183: */
184: public static function get_file_list($location, array $params = array())
185: {
186: return array();
187: }
188:
189: /**
190: * Создание безопасного имени для каталога
191: * Работает по принципу joosFile::get_safe_name, но из названия дополнительно удаляются точки
192: *
193: * @param string $location полный путь к каталогу
194: *
195: * @return string безопасное имя для каталога
196: */
197: public static function get_safe_name($location)
198: {
199: $location = str_replace('.', '-', $location);
200:
201: return joosFile::make_safe_name($location);
202: }
203:
204: }
205:
206: /**
207: * Обработчик ошибок для библиотеки joosFolder
208: */
209: class joosFolderLibrariesException extends joosException
210: {
211: }
212: