function del_dir_tree($dir) { $files = array_diff(scandir($dir), array('.', '..')); foreach ($files as $file) { is_dir("{$dir}/{$file}") ? del_dir_tree("{$dir}/{$file}") : unlink("{$dir}/{$file}"); } return rmdir($dir); }
function multiple_upload($source_dir, $repository_id_node_mapping = null, $delete_source_dir = true) { if (!is_dir($source_dir) || !($handler = opendir($source_dir))) { drupal_set_message('multiple_upload(): cannot read source directory.'); throw new Exception('multiple_upload(): cannot read source directory.'); } $archives = array(); while (($file_or_dir = readdir($handler)) !== false) { if ($file_or_dir == '.' || $file_or_dir == '..') { continue; } $repository_id = filename_without_ext($file_or_dir); $node = null; if (!empty($repository_id_node_mapping)) { $nid = $repository_id_node_mapping[$repository_id]; delete_collection_files($nid); //20151217 add, if there are files of this collection, delete them first. $node = node_load($nid); } $archives[] = move_to_archive($source_dir . DIRECTORY_SEPARATOR . $file_or_dir, $node); // if $node is empty, a new node is created in move_to_archive } if ($delete_source_dir) { del_dir_tree($source_dir); } //mylog(print_r($archives, true), 'archives.txt'); bg_mconvert($archives, uniqid()); }