|
|
|
@ -34,6 +34,7 @@ |
|
|
|
|
*/ |
|
|
|
|
require_once("../inc/lib_base.php"); |
|
|
|
|
oc_require_once("lib_log.php"); |
|
|
|
|
oc_require_once("lib_filesystem.php"); |
|
|
|
|
oc_require_once("HTTP/WebDAV/Server.php"); |
|
|
|
|
oc_require_once("System.php"); |
|
|
|
|
|
|
|
|
@ -176,7 +177,7 @@ |
|
|
|
|
// plain file (WebDAV resource) |
|
|
|
|
$info["props"][] = $this->mkprop("resourcetype", ""); |
|
|
|
|
if ( OC_FILESYSTEM::is_readable($fspath)) { |
|
|
|
|
$info["props"][] = $this->mkprop("getcontenttype", $this->_mimetype($fspath)); |
|
|
|
|
$info["props"][] = $this->mkprop("getcontenttype", OC_FILESYSTEM::getMimetype($fspath)); |
|
|
|
|
} else { |
|
|
|
|
$info["props"][] = $this->mkprop("getcontenttype", "application/x-non-readable"); |
|
|
|
|
} |
|
|
|
@ -191,63 +192,6 @@ |
|
|
|
|
return $info; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* detect if a given program is found in the search PATH |
|
|
|
|
* |
|
|
|
|
* helper function used by _mimetype() to detect if the |
|
|
|
|
* external 'file' utility is available |
|
|
|
|
* |
|
|
|
|
* @param string program name |
|
|
|
|
* @param string optional search path, defaults to $PATH |
|
|
|
|
* @return bool true if executable program found in path |
|
|
|
|
*/ |
|
|
|
|
function _can_execute($name, $path = false) |
|
|
|
|
{ |
|
|
|
|
// path defaults to PATH from environment if not set |
|
|
|
|
if ($path === false) { |
|
|
|
|
$path = getenv("PATH"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// check method depends on operating system |
|
|
|
|
if (!strncmp(PHP_OS, "WIN", 3)) { |
|
|
|
|
// on Windows an appropriate COM or EXE file needs to exist |
|
|
|
|
$exts = array(".exe", ".com"); |
|
|
|
|
$check_fn = "file_exists"; |
|
|
|
|
} else { |
|
|
|
|
// anywhere else we look for an executable file of that name |
|
|
|
|
$exts = array(""); |
|
|
|
|
$check_fn = "is_executable"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// now check the directories in the path for the program |
|
|
|
|
foreach (explode(PATH_SEPARATOR, $path) as $dir) { |
|
|
|
|
// skip invalid path entries |
|
|
|
|
if (!file_exists($dir)) continue; |
|
|
|
|
if (!is_dir($dir)) continue; |
|
|
|
|
|
|
|
|
|
// and now look for the file |
|
|
|
|
foreach ($exts as $ext) { |
|
|
|
|
if ($check_fn("$dir/$name".$ext)) return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* try to detect the mime type of a file |
|
|
|
|
* |
|
|
|
|
* @param string file path |
|
|
|
|
* @return string guessed mime type |
|
|
|
|
*/ |
|
|
|
|
function _mimetype($fspath) |
|
|
|
|
{ |
|
|
|
|
return OC_FILESYSTEM::getMimeType($fspath); |
|
|
|
|
|
|
|
|
|
return $mime_type; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* HEAD method handler |
|
|
|
|
* |
|
|
|
@ -263,7 +207,7 @@ |
|
|
|
|
if (! OC_FILESYSTEM::file_exists($fspath)) return false; |
|
|
|
|
|
|
|
|
|
// detect resource type |
|
|
|
|
$options['mimetype'] = $this->_mimetype($fspath); |
|
|
|
|
$options['mimetype'] = OC_FILESYSTEM::getMimetype($fspath); |
|
|
|
|
|
|
|
|
|
// detect modification time |
|
|
|
|
// see rfc2518, section 13.7 |
|
|
|
|