New : dol_move_dir
This commit is contained in:
parent
39258bc7c0
commit
bc77a26976
@ -964,6 +964,69 @@ function dol_move($srcfile, $destfile, $newmask = 0, $overwriteifexists = 1, $te
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move a directory into another name.
|
||||
*
|
||||
* @param string $srcdir Source directory
|
||||
* @param string $destdir Destination directory
|
||||
* @param int $overwriteifexists Overwrite directory if exists (1 by default)
|
||||
* @param int $indexdatabase Index new file into database.
|
||||
* @param int $renamedircontent Rename contents inside srcdir.
|
||||
*
|
||||
* @return boolean True if OK, false if KO
|
||||
*/
|
||||
function dol_move_dir($srcdir, $destdir, $overwriteifexists = 1, $indexdatabase = 1, $renamedircontent = 1)
|
||||
{
|
||||
|
||||
global $user, $db, $conf;
|
||||
$result = false;
|
||||
|
||||
dol_syslog("files.lib.php::dol_dir_move srcdir=".$srcdir." destdir=".$destdir." overwritifexists=".$overwriteifexists);
|
||||
$srcexists = dol_is_dir($srcdir);
|
||||
$srcbasename = basename($srcdir);
|
||||
$destexists = dol_is_dir($destdir);
|
||||
|
||||
if (!$srcexists) {
|
||||
dol_syslog("files.lib.php::dol_dir_move srcdir does not exists. we ignore the move request.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($overwriteifexists || !$destexists) {
|
||||
$newpathofsrcdir = dol_osencode($srcdir);
|
||||
$newpathofdestdir = dol_osencode($destdir);
|
||||
|
||||
$result = @rename($newpathofsrcdir, $newpathofdestdir);
|
||||
|
||||
if ($result && $renamedircontent) {
|
||||
if (file_exists($newpathofdestdir)) {
|
||||
$destbasename = basename($newpathofdestdir);
|
||||
$files = dol_dir_list($newpathofdestdir);
|
||||
if (!empty($files) && is_array($files)) {
|
||||
foreach ($files as $key => $file) {
|
||||
if (!file_exists($file["fullname"])) continue;
|
||||
$oldpath = $file["fullname"];
|
||||
|
||||
$newpath = str_replace($srcbasename, $destbasename, $oldpath);
|
||||
if (!empty($newpath)) {
|
||||
if (dol_is_dir($oldpath)) {
|
||||
$res = dol_move_dir($oldpath, $newpath, $overwriteifexists, $indexdatabase, $renamedircontent);
|
||||
} else {
|
||||
$res = dol_move($oldpath, $newpath);
|
||||
}
|
||||
if (!$res) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
}
|
||||
$result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unescape a file submitted by upload.
|
||||
* PHP escape char " (%22) or char ' (%27) into $FILES.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user