mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Make FileCache upgrade more robust, fixes #2650
This commit is contained in:
parent
e13e4c412f
commit
2fa34d6772
2 changed files with 22 additions and 6 deletions
24
lib/files/cache/legacy.php
vendored
24
lib/files/cache/legacy.php
vendored
|
|
@ -80,7 +80,7 @@ class Legacy {
|
|||
}
|
||||
$result = $query->execute(array($path));
|
||||
$data = $result->fetchRow();
|
||||
$data['etag'] = $this->getEtag($data['path']);
|
||||
$data['etag'] = $this->getEtag($data['path'], $data['user']);
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
|
@ -90,12 +90,24 @@ class Legacy {
|
|||
* @param type $path
|
||||
* @return string
|
||||
*/
|
||||
function getEtag($path) {
|
||||
function getEtag($path, $user = null) {
|
||||
static $query = null;
|
||||
list(, $user, , $relativePath) = explode('/', $path, 4);
|
||||
if (is_null($relativePath)) {
|
||||
$relativePath = '';
|
||||
|
||||
$pathDetails = explode('/', $path, 4);
|
||||
if((!$user) && !isset($pathDetails[1])) {
|
||||
//no user!? Too odd, return empty string.
|
||||
return '';
|
||||
} else if(!$user) {
|
||||
//guess user from path, if no user passed.
|
||||
$user = $pathDetails[1];
|
||||
}
|
||||
|
||||
if(!isset($pathDetails[3]) || is_null($pathDetails[3])) {
|
||||
$relativePath = '';
|
||||
} else {
|
||||
$relativePath = $pathDetails[3];
|
||||
}
|
||||
|
||||
if(is_null($query)){
|
||||
$query = \OC_DB::prepare('SELECT `propertyvalue` FROM `*PREFIX*properties` WHERE `userid` = ? AND `propertypath` = ? AND `propertyname` = \'{DAV:}getetag\'');
|
||||
}
|
||||
|
|
@ -118,7 +130,7 @@ class Legacy {
|
|||
$result = $query->execute(array($id));
|
||||
$data = $result->fetchAll();
|
||||
foreach ($data as $i => $item) {
|
||||
$data[$i]['etag'] = $this->getEtag($item['path']);
|
||||
$data[$i]['etag'] = $this->getEtag($item['path'], $item['user']);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
|
|
|||
4
lib/files/cache/upgrade.php
vendored
4
lib/files/cache/upgrade.php
vendored
|
|
@ -127,6 +127,10 @@ class Upgrade {
|
|||
* @return array
|
||||
*/
|
||||
function getNewData($data) {
|
||||
//Make sure there is a path, otherwise we can do nothing.
|
||||
if(!isset($data['path'])) {
|
||||
return false;
|
||||
}
|
||||
$newData = $data;
|
||||
/**
|
||||
* @var \OC\Files\Storage\Storage $storage
|
||||
|
|
|
|||
Loading…
Reference in a new issue