|
|
|
@ -35,7 +35,7 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
|
|
|
|
public function mkdir($path) { |
|
|
|
return @mkdir($this->datadir . $path, 0777, true); |
|
|
|
return @mkdir($this->getSourcePath($path), 0777, true); |
|
|
|
} |
|
|
|
|
|
|
|
public function rmdir($path) { |
|
|
|
@ -44,7 +44,7 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
try { |
|
|
|
$it = new \RecursiveIteratorIterator( |
|
|
|
new \RecursiveDirectoryIterator($this->datadir . $path), |
|
|
|
new \RecursiveDirectoryIterator($this->getSourcePath($path)), |
|
|
|
\RecursiveIteratorIterator::CHILD_FIRST |
|
|
|
); |
|
|
|
/** |
|
|
|
@ -68,30 +68,30 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
$it->next(); |
|
|
|
} |
|
|
|
return rmdir($this->datadir . $path); |
|
|
|
return rmdir($this->getSourcePath($path)); |
|
|
|
} catch (\UnexpectedValueException $e) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public function opendir($path) { |
|
|
|
return opendir($this->datadir . $path); |
|
|
|
return opendir($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function is_dir($path) { |
|
|
|
if (substr($path, -1) == '/') { |
|
|
|
$path = substr($path, 0, -1); |
|
|
|
} |
|
|
|
return is_dir($this->datadir . $path); |
|
|
|
return is_dir($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function is_file($path) { |
|
|
|
return is_file($this->datadir . $path); |
|
|
|
return is_file($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function stat($path) { |
|
|
|
clearstatcache(); |
|
|
|
$fullPath = $this->datadir . $path; |
|
|
|
$fullPath = $this->getSourcePath($path); |
|
|
|
$statResult = stat($fullPath); |
|
|
|
if (PHP_INT_SIZE === 4 && !$this->is_dir($path)) { |
|
|
|
$filesize = $this->filesize($path); |
|
|
|
@ -102,9 +102,9 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
|
|
|
|
public function filetype($path) { |
|
|
|
$filetype = filetype($this->datadir . $path); |
|
|
|
$filetype = filetype($this->getSourcePath($path)); |
|
|
|
if ($filetype == 'link') { |
|
|
|
$filetype = filetype(realpath($this->datadir . $path)); |
|
|
|
$filetype = filetype(realpath($this->getSourcePath($path))); |
|
|
|
} |
|
|
|
return $filetype; |
|
|
|
} |
|
|
|
@ -113,7 +113,7 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
if ($this->is_dir($path)) { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
$fullPath = $this->datadir . $path; |
|
|
|
$fullPath = $this->getSourcePath($path); |
|
|
|
if (PHP_INT_SIZE === 4) { |
|
|
|
$helper = new \OC\LargeFileHelper; |
|
|
|
return $helper->getFilesize($fullPath); |
|
|
|
@ -122,19 +122,19 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
|
|
|
|
public function isReadable($path) { |
|
|
|
return is_readable($this->datadir . $path); |
|
|
|
return is_readable($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function isUpdatable($path) { |
|
|
|
return is_writable($this->datadir . $path); |
|
|
|
return is_writable($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function file_exists($path) { |
|
|
|
return file_exists($this->datadir . $path); |
|
|
|
return file_exists($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function filemtime($path) { |
|
|
|
return filemtime($this->datadir . $path); |
|
|
|
return filemtime($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function touch($path, $mtime = null) { |
|
|
|
@ -145,30 +145,30 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (!is_null($mtime)) { |
|
|
|
$result = touch($this->datadir . $path, $mtime); |
|
|
|
$result = touch($this->getSourcePath($path), $mtime); |
|
|
|
} else { |
|
|
|
$result = touch($this->datadir . $path); |
|
|
|
$result = touch($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
if ($result) { |
|
|
|
clearstatcache(true, $this->datadir . $path); |
|
|
|
clearstatcache(true, $this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
return $result; |
|
|
|
} |
|
|
|
|
|
|
|
public function file_get_contents($path) { |
|
|
|
return file_get_contents($this->datadir . $path); |
|
|
|
return file_get_contents($this->getSourcePath($path)); |
|
|
|
} |
|
|
|
|
|
|
|
public function file_put_contents($path, $data) { //trigger_error("$path = ".var_export($path, 1));
|
|
|
|
return file_put_contents($this->datadir . $path, $data); |
|
|
|
public function file_put_contents($path, $data) { |
|
|
|
return file_put_contents($this->getSourcePath($path), $data); |
|
|
|
} |
|
|
|
|
|
|
|
public function unlink($path) { |
|
|
|
if ($this->is_dir($path)) { |
|
|
|
return $this->rmdir($path); |
|
|
|
} else if ($this->is_file($path)) { |
|
|
|
return unlink($this->datadir . $path); |
|
|
|
return unlink($this->getSourcePath($path)); |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
@ -200,27 +200,27 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
$this->unlink($path2); |
|
|
|
} |
|
|
|
|
|
|
|
return rename($this->datadir . $path1, $this->datadir . $path2); |
|
|
|
return rename($this->getSourcePath($path1), $this->getSourcePath($path2)); |
|
|
|
} |
|
|
|
|
|
|
|
public function copy($path1, $path2) { |
|
|
|
if ($this->is_dir($path1)) { |
|
|
|
return parent::copy($path1, $path2); |
|
|
|
} else { |
|
|
|
return copy($this->datadir . $path1, $this->datadir . $path2); |
|
|
|
return copy($this->getSourcePath($path1), $this->getSourcePath($path2)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public function fopen($path, $mode) { |
|
|
|
return fopen($this->datadir . $path, $mode); |
|
|
|
return fopen($this->getSourcePath($path), $mode); |
|
|
|
} |
|
|
|
|
|
|
|
public function hash($type, $path, $raw = false) { |
|
|
|
return hash_file($type, $this->datadir . $path, $raw); |
|
|
|
return hash_file($type, $this->getSourcePath($path), $raw); |
|
|
|
} |
|
|
|
|
|
|
|
public function free_space($path) { |
|
|
|
$space = @disk_free_space($this->datadir . $path); |
|
|
|
$space = @disk_free_space($this->getSourcePath($path)); |
|
|
|
if ($space === false || is_null($space)) { |
|
|
|
return \OCP\Files\FileInfo::SPACE_UNKNOWN; |
|
|
|
} |
|
|
|
@ -232,11 +232,11 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
|
|
|
|
public function getLocalFile($path) { |
|
|
|
return $this->datadir . $path; |
|
|
|
return $this->getSourcePath($path); |
|
|
|
} |
|
|
|
|
|
|
|
public function getLocalFolder($path) { |
|
|
|
return $this->datadir . $path; |
|
|
|
return $this->getSourcePath($path); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ -244,12 +244,16 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
*/ |
|
|
|
protected function searchInDir($query, $dir = '') { |
|
|
|
$files = array(); |
|
|
|
foreach (scandir($this->datadir . $dir) as $item) { |
|
|
|
if ($item == '.' || $item == '..') continue; |
|
|
|
$physicalDir = $this->getSourcePath($dir); |
|
|
|
foreach (scandir($physicalDir) as $item) { |
|
|
|
if ($item == '.' || $item == '..') |
|
|
|
continue; |
|
|
|
$physicalItem = $physicalDir . '/' . $item; |
|
|
|
|
|
|
|
if (strstr(strtolower($item), strtolower($query)) !== false) { |
|
|
|
$files[] = $dir . '/' . $item; |
|
|
|
} |
|
|
|
if (is_dir($this->datadir . $dir . '/' . $item)) { |
|
|
|
if (is_dir($physicalItem)) { |
|
|
|
$files = array_merge($files, $this->searchInDir($query, $dir . '/' . $item)); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -271,6 +275,17 @@ if (\OC_Util::runningOnWindows()) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Get the source path (on disk) of a given path |
|
|
|
* |
|
|
|
* @param string $path |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
protected function getSourcePath($path) { |
|
|
|
$fullPath = $this->datadir . $path; |
|
|
|
return $fullPath; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* {@inheritdoc} |
|
|
|
*/ |
|
|
|
|