Almost fix Shared scanner...

This commit is contained in:
Michael Gapczynski 2013-01-07 20:52:51 -05:00
parent 8f8a5bbfb7
commit e8b195bf10
6 changed files with 30 additions and 10 deletions

View file

@ -136,6 +136,19 @@ class Shared_Cache extends Cache {
return -1;
}
/**
* check if a file is available in the cache
*
* @param string $file
* @return bool
*/
public function inCache($file) {
if ($file == '') {
return true;
}
return parent::inCache($file);
}
/**
* remove a file or folder from the cache
*

View file

@ -33,7 +33,7 @@ class Shared_Permissions extends Permissions {
if ($fileId == -1) {
return \OCP\PERMISSION_READ;
}
$source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
$source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE, null, true);
if ($source) {
return $source['permissions'];
} else {

View file

@ -117,6 +117,9 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
}
public static function getSource($target) {
if ($target == '') {
return false;
}
$target = '/'.$target;
$target = rtrim($target, '/');
$pos = strpos($target, '/', 1);

View file

@ -24,6 +24,13 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
public function getChildren($itemSource) {
$children = array();
$parents = array($itemSource);
$query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
$result = $query->execute(array('httpd/unix-directory'));
if ($row = $result->fetchRow()) {
$mimetype = $row['id'];
} else {
$mimetype = -1;
}
while (!empty($parents)) {
$parents = "'".implode("','", $parents)."'";
$query = OC_DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache` WHERE `parent` IN ('.$parents.')');
@ -32,8 +39,8 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share
while ($file = $result->fetchRow()) {
$children[] = array('source' => $file['fileid'], 'file_path' => $file['name']);
// If a child folder is found look inside it
if ($file['mimetype'] == 'httpd/unix-directory') {
$parents[] = $file['id'];
if ($file['mimetype'] == $mimetype) {
$parents[] = $file['fileid'];
}
}
}

View file

@ -408,12 +408,6 @@ class Shared extends \OC\Files\Storage\Common {
}
public function getScanner($path = '') {
if ($path != '' && ($source = $this->getSourcePath($path))) {
list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
if ($storage) {
return $storage->getScanner($internalPath);
}
}
return new \OC\Files\Cache\Scanner($this);
}

View file

@ -756,7 +756,7 @@ class Share {
$collectionItems = array();
foreach ($items as &$row) {
// Return only the item instead of a 2-dimensional array
if ($limit == 1 && $row['item_type'] == $itemType && $row[$column] == $item) {
if ($limit == 1 && $row[$column] == $item && ($row['item_type'] == $itemType || $itemType == 'file')) {
if ($format == self::FORMAT_NONE) {
return $row;
} else {
@ -823,6 +823,9 @@ class Share {
if (!empty($collectionItems)) {
$items = array_merge($items, $collectionItems);
}
if (empty($items) && $limit == 1) {
return false;
}
if ($format == self::FORMAT_NONE) {
return $items;
} else if ($format == self::FORMAT_STATUSES) {