| | 941 | |
| | 942 | /** |
| | 943 | * Recursive CHMOD re-set for files that cannot be handled via FTP because of different owner |
| | 944 | */ |
| | 945 | function rchmod($parent, $dmod, $fmod) |
| | 946 | { |
| | 947 | if (@is_dir($parent)) |
| | 948 | { |
| | 949 | $old = @umask(0000); |
| | 950 | @chmod($parent, $dmod); |
| | 951 | @umask($old); |
| | 952 | if ($handle = @opendir($parent)) |
| | 953 | { |
| | 954 | while (($file = @readdir($handle)) !== false) |
| | 955 | { |
| | 956 | if (($file === '.') || ($file === '..')) |
| | 957 | { |
| | 958 | continue; |
| | 959 | } |
| | 960 | elseif (@is_dir($parent . '/' . $file)) |
| | 961 | { |
| | 962 | $this->rchmod($parent . '/' . $file, $dmod, $fmod); |
| | 963 | } |
| | 964 | else |
| | 965 | { |
| | 966 | $old = @umask(0000); |
| | 967 | @chmod($parent . '/' . $file, $fmod); |
| | 968 | @umask($old); |
| | 969 | } |
| | 970 | } |
| | 971 | @closedir($handle); |
| | 972 | } |
| | 973 | } |
| | 974 | else |
| | 975 | { |
| | 976 | $old = @umask(0000); |
| | 977 | @chmod($parent, $fmod); |
| | 978 | @umask($old); |
| | 979 | } |
| | 980 | } |