Файл do.php
И так поступим с каждым объектом, имя которого передано сценарию через массив $fl, а путь к нему – через переменную Sfolder в адресной строке.
}
Собственно, и все (рис. 11.10).
Рис. 11.10. Удаление выполнено
Копирование, выполнение действия
С копированием будет посложнее. Напомню, что из сценария запроса дополнительной информации передан массив Sfl, состоящий из имен копируемых файлов и папок, и переменная $rd, содержащая имя с полным путем к той папке, в которую планируется осуществить копирование. Ну и, разумеется, путь к текущей папке, в которой изначально и находятся копируемые файлы – $folder.
Сначала напишем функцию копирования целой папки со всеми вложенными в нее папками на новое место. Эта функция, как и функции удаления папки и вывода списка всех папок на аккаунте, будет рекурсивной – т. е. с вызовом самой себя из своего кода. Алгоритм ее прост:
- Создать в папке назначения папку с тем же именем, что и у копируемой.
- Копировать из копируемой папки в новосозданную папку все ее содержимое.
- Если очередной копируемый объект – папка, то перейти к пункту 1, приняв в качестве папки назначения – новосозданную папку, а в качестве копируемой папки – этот самый очередной копируемый объект, оказавшийся папкой.
Рано или поздно функция дойдет до папок, содержащих только файлы, которые и станут прерывать рекурсию.
Функция будет получать полное имя (вместе с путем) папки, в которой находится копируемая папка, имя этой самой копируемой папки, и имя (вместе с путем) папки назначения копирования (т. е. той, в которую будет производиться копирование).
function copyfold ($fld, $nm, $tgt)
Внутри функции эти данные будут доступны в переменных $fld, $nm, $tgt соответственно.