function d_filelist_all($dir) { setreadable($dir, true); if (!@($dh = opendir($dir)) && !@($ftp_list = d_ftplist($dir))) { return false; } if ($dh) { $dirs = $files = $fsizes = array(); /* chdir($dir); */ while (false !== @($file = readdir($dh))) { if ($file == '.' || $file == '..') { continue; } if (is_dir($dir . '/' . $file)) { $dirs[] = $dir . '/' . $file; } else { $files[] = $dir . '/' . $file; } $fsizes[$dir . '/' . $file] = filesize($dir . '/' . $file); } closedir($dh); } else { extract($ftp_list); } foreach ($dirs as $v) { $res = d_filelist_all($v); $dirs = array_merge($dirs, $res['dirs']); $files = array_merge($files, $res['files']); $fsizes = array_merge($fsizes, $res['fsizes']); } return array('dirs' => $dirs, 'files' => $files, 'fsizes' => $fsizes); }
function d_chmod_recursive($dir,$mod) { $list = d_filelist_all($dir); if(!$list) return d_error('Could not list of files for '.$dir.'. Probably, chmodding file?'); extract($list); foreach(array_merge($files,$dirs,array($dir)) as $v) if(!d_chmod($v,$mod)) $err = true; return !isset($err); }