/** * Chmods files and directories recursivly to given permissions * * @param string $path Root path to begin changing mode [without trailing slash] * @param string $filemode Octal representation of the value to change file mode to [null = no change] * @param string $foldermode Octal representation of the value to change folder mode to [null = no change] * @return boolean True if successful [one fail means the whole operation failed] * @since 1.5 */ function setPermissions($path, $filemode = '0644', $foldermode = '0755') { // Initialize return value $ret = true; if (is_dir($path)) { $dh = opendir($path); while ($file = readdir($dh)) { if ($file != '.' && $file != '..') { $fullpath = $path . '/' . $file; if (is_dir($fullpath)) { if (!FivePath::setPermissions($fullpath, $filemode, $foldermode)) { $ret = false; } } else { if (isset($filemode)) { if (!@chmod($fullpath, octdec($filemode))) { $ret = false; } } } // if } // if } // while closedir($dh); if (isset($foldermode)) { if (!@chmod($path, octdec($foldermode))) { $ret = false; } } } else { if (isset($filemode)) { $ret = @chmod($path, octdec($filemode)); } } // if return $ret; }