У меня есть массив файлов, который выглядит так:
Array
(
[0] => Array
(
[type] => folder
[path] => RootFolder
)
[1] => Array
(
[type] => file
[path] => RootFolder\error.log
)
[2] => Array
(
[type] => folder
[path] => RootFolder\test
)
[3] => Array
(
[type] => file
[path] => RootFolder\test\asd.txt
)
[4] => Array
(
[type] => folder
[path] => RootFolder\test\sd
)
[5] => Array
(
[type] => file
[path] => RootFolder\test\sd\testing.txt
)
)
Я анализирую этот массив и создаю древовидное представление на основе глубины файлов ('/' count). Это выглядит так:
RootFolder
- error.log
- test
- asd.txt
- sd
- testing.txt
Теперь у меня есть массив путей к файлам, которые пользователь может просматривать. Мне нужно принять этот массив во внимание при построении дерева выше. Этот массив выглядит так:
Array
(
[0] => Array
(
[filePath] => RootFolder\test\sd
)
[1] => Array
(
[filePath] => RootFolder\error.log
)
)
Было бы легко сделать if in_array($path, $allowed)
, но это не даст мне дерево. Просто список файлов ...
Другая часть, на которую я поставлен в тупик, - это требование: если у пользователя есть доступ для просмотра папки test
, он получает доступ ко всем дочерним элементам этой папки.
Моя идея состояла в том, чтобы просто разобрать пути к файлам. Например, я бы подтвердил, что RootFolder\test\sd
был каталогом, а затем создал бы дерево на основе счетчика '/'. Как я делал раньше. Затем, поскольку это каталог, я извлекаю все файлы в этом каталоге и показываю их пользователю. Однако у меня возникли проблемы с преобразованием этого в рабочий код ...
Есть идеи?