01.
<?php
02.
function
dir_copy(
$srcdir
,
$dstdir
,
$offset
=
''
,
$verbose
= false)
03.
{
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
if
(!isset(
$offset
))
$offset
=0;
21.
$num
= 0;
22.
$fail
= 0;
23.
$sizetotal
= 0;
24.
$fifail
=
''
;
25.
if
(!
is_dir
(
$dstdir
))
mkdir
(
$dstdir
);
26.
if
(
$curdir
= opendir(
$srcdir
)) {
27.
while
(
$file
= readdir(
$curdir
)) {
28.
if
(
$file
!=
'.'
&&
$file
!=
'..'
) {
29.
30.
31.
$srcfile
=
$srcdir
.
'/'
.
$file
; # added by marajax
32.
$dstfile
=
$dstdir
.
'/'
.
$file
; # added by marajax
33.
if
(
is_file
(
$srcfile
)) {
34.
if
(
is_file
(
$dstfile
))
$ow
=
filemtime
(
$srcfile
) -
filemtime
(
$dstfile
);
else
$ow
= 1;
35.
if
(
$ow
> 0) {
36.
if
(
$verbose
)
echo
"Copying '$srcfile' to '$dstfile'...<br />"
;
37.
if
(
copy
(
$srcfile
,
$dstfile
)) {
38.
touch(
$dstfile
,
filemtime
(
$srcfile
));
$num
++;
39.
chmod
(
$dstfile
, 0777); # added by marajax
40.
$sizetotal
= (
$sizetotal
+
filesize
(
$dstfile
));
41.
if
(
$verbose
)
echo
"OK\n"
;
42.
}
43.
else
{
44.
echo
"Error: File '$srcfile' could not be copied!<br />\n"
;
45.
$fail
++;
46.
$fifail
=
$fifail
.
$srcfile
.
'|'
;
47.
}
48.
}
49.
}
50.
else
if
(
is_dir
(
$srcfile
)) {
51.
$res
=
explode
(
','
,
$ret
);
52.
53.
$ret
= dir_copy(
$srcfile
,
$dstfile
,
$verbose
); # added by patrick
54.
$mod
=
explode
(
','
,
$ret
);
55.
$imp
=
array
(
$res
[0] +
$mod
[0],
$mod
[1] +
$res
[1],
$mod
[2] +
$res
[2],
$mod
[3].
$res
[3]);
56.
$ret
= implode(
','
,
$imp
);
57.
}
58.
}
59.
}
60.
closedir
(
$curdir
);
61.
}
62.
$red
=
explode
(
','
,
$ret
);
63.
$ret
= (
$num
+
$red
[0]).
','
.((
$fail
-
$offset
) +
$red
[1]).
','
.(
$sizetotal
+
$red
[2]).
','
.
$fifail
.
$red
[3];
64.
return
$ret
;
65.
}
66.
67.
?>