Fix webdav destination header when overwriting folders
The trailing slash is needed when talking to Apache's mod_dav server
This commit is contained in:
parent
a76498f245
commit
6f346b4b1f
|
@ -506,13 +506,18 @@ class DAV extends Common {
|
|||
$path1 = $this->cleanPath($path1);
|
||||
$path2 = $this->cleanPath($path2);
|
||||
try {
|
||||
// overwrite directory ?
|
||||
if ($this->is_dir($path2)) {
|
||||
// needs trailing slash in destination
|
||||
$path2 = rtrim($path2, '/') . '/';
|
||||
}
|
||||
$this->client->request(
|
||||
'MOVE',
|
||||
$this->encodePath($path1),
|
||||
null,
|
||||
array(
|
||||
'Destination' => $this->createBaseUri() . $this->encodePath($path2)
|
||||
)
|
||||
[
|
||||
'Destination' => $this->createBaseUri() . $this->encodePath($path2),
|
||||
]
|
||||
);
|
||||
$this->statCache->clear($path1 . '/');
|
||||
$this->statCache->clear($path2 . '/');
|
||||
|
@ -530,10 +535,22 @@ class DAV extends Common {
|
|||
/** {@inheritdoc} */
|
||||
public function copy($path1, $path2) {
|
||||
$this->init();
|
||||
$path1 = $this->encodePath($this->cleanPath($path1));
|
||||
$path2 = $this->createBaseUri() . $this->encodePath($this->cleanPath($path2));
|
||||
$path1 = $this->cleanPath($path1);
|
||||
$path2 = $this->cleanPath($path2);
|
||||
try {
|
||||
$this->client->request('COPY', $path1, null, array('Destination' => $path2));
|
||||
// overwrite directory ?
|
||||
if ($this->is_dir($path2)) {
|
||||
// needs trailing slash in destination
|
||||
$path2 = rtrim($path2, '/') . '/';
|
||||
}
|
||||
$this->client->request(
|
||||
'COPY',
|
||||
$this->encodePath($path1),
|
||||
null,
|
||||
[
|
||||
'Destination' => $this->createBaseUri() . $this->encodePath($path2),
|
||||
]
|
||||
);
|
||||
$this->statCache->clear($path2 . '/');
|
||||
$this->statCache->set($path2, true);
|
||||
$this->removeCachedFile($path2);
|
||||
|
|
Loading…
Reference in New Issue