Version 3.2.3
This commit is contained in:
1 parent
ae5c01cc78
commit
78706903a2
2641 files changed
+228363
-201264
No files matched your search
@@ -0,0 +1,124 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Sabre_DAV_Tree_Filesystem
|
||||
*
|
||||
* @package Sabre
|
||||
* @subpackage DAV
|
||||
* @copyright Copyright (C) 2007-2010 Rooftop Solutions. All rights reserved.
|
||||
* @author Evert Pot (http://www.rooftopsolutions.nl/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class Sabre_DAV_Tree_Filesystem extends Sabre_DAV_Tree {
|
||||
|
||||
/**
|
||||
* Base url on the filesystem.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $basePath;
|
||||
|
||||
/**
|
||||
* Creates this tree
|
||||
*
|
||||
* Supply the path you'd like to share.
|
||||
*
|
||||
* @param string $basePath
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($basePath) {
|
||||
|
||||
$this->basePath = $basePath;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new node for the given path
|
||||
*
|
||||
* @param string $path
|
||||
* @return void
|
||||
*/
|
||||
public function getNodeForPath($path) {
|
||||
|
||||
$realPath = $this->getRealPath($path);
|
||||
if (!file_exists($realPath)) throw new Sabre_DAV_Exception_FileNotFound('File at location ' . $realPath . ' not found');
|
||||
if (is_dir($realPath)) {
|
||||
return new Sabre_DAV_FS_Directory($path);
|
||||
} else {
|
||||
return new Sabre_DAV_FS_File($path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the real filesystem path for a webdav url.
|
||||
*
|
||||
* @param string $publicPath
|
||||
* @return string
|
||||
*/
|
||||
protected function getRealPath($publicPath) {
|
||||
|
||||
return rtrim($this->basePath,'/') . '/' . trim($publicPath,'/');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a file or directory.
|
||||
*
|
||||
* This method must work recursively and delete the destination
|
||||
* if it exists
|
||||
*
|
||||
* @param string $source
|
||||
* @param string $destination
|
||||
* @return void
|
||||
*/
|
||||
public function copy($source,$destination) {
|
||||
|
||||
$source = $this->getRealPath($source);
|
||||
$destination = $this->getRealPath($destination);
|
||||
$this->realCopy($source,$destination);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by self::copy
|
||||
*
|
||||
* @param string $source
|
||||
* @param string $destination
|
||||
* @return void
|
||||
*/
|
||||
protected function realCopy($source,$destination) {
|
||||
|
||||
if (is_file($source)) {
|
||||
copy($source,$destination);
|
||||
} else {
|
||||
mkdir($destination);
|
||||
foreach(scandir($source) as $subnode) {
|
||||
|
||||
if ($subnode=='.' || $subnode=='..') continue;
|
||||
$this->realCopy($source.'/'.$subnode,$destination.'/'.$subnode);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves a file or directory recursively.
|
||||
*
|
||||
* If the destination exists, delete it first.
|
||||
*
|
||||
* @param string $source
|
||||
* @param string $destination
|
||||
* @return void
|
||||
*/
|
||||
public function move($source,$destination) {
|
||||
|
||||
$source = $this->getRealPath($source);
|
||||
$destination = $this->getRealPath($destination);
|
||||
rename($source,$destination);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user