fix find_folder_hash_by_path() which was not safe against multiple attach structures with the same filename but in different directories
This commit is contained in:
parent
1c1d1f1185
commit
e54ba7ecbc
@ -314,7 +314,13 @@ class Browser extends DAV\Browser\Plugin {
|
|||||||
$quota['desc'] = $quotaDesc;
|
$quota['desc'] = $quotaDesc;
|
||||||
$quota['warning'] = ((($limit) && ((round($used / $limit, 1) * 100) >= 90)) ? t('WARNING:') : ''); // 10485760 bytes = 100MB
|
$quota['warning'] = ((($limit) && ((round($used / $limit, 1) * 100) >= 90)) ? t('WARNING:') : ''); // 10485760 bytes = 100MB
|
||||||
|
|
||||||
$path = trim(str_replace('cloud/' . $this->auth->owner_nick, '', $path), '/');
|
// strip 'cloud/nickname', but only at the beginning of the path
|
||||||
|
|
||||||
|
$special = 'cloud/' . $this->auth->owner_nick;
|
||||||
|
$count = strlen($special);
|
||||||
|
|
||||||
|
if(strpos($path,$special) === 0)
|
||||||
|
$path = trim(substr($path,$count),'/');
|
||||||
|
|
||||||
$output .= replace_macros(get_markup_template('cloud_actionspanel.tpl'), array(
|
$output .= replace_macros(get_markup_template('cloud_actionspanel.tpl'), array(
|
||||||
'$folder_header' => t('Create new folder'),
|
'$folder_header' => t('Create new folder'),
|
||||||
|
@ -1477,20 +1477,34 @@ function find_folder_hash_by_attach_hash($channel_id, $attachHash, $recurse = fa
|
|||||||
|
|
||||||
function find_folder_hash_by_path($channel_id, $path) {
|
function find_folder_hash_by_path($channel_id, $path) {
|
||||||
|
|
||||||
$filename = end(explode('/', $path));
|
if(! $path)
|
||||||
|
return '';
|
||||||
|
|
||||||
if($filename) {
|
$comps = explode('/',$path);
|
||||||
$r = q("SELECT hash FROM attach WHERE uid = %d AND filename = '%s' LIMIT 1",
|
$errors = false;
|
||||||
|
$parent_hash = '';
|
||||||
|
|
||||||
|
for($x = 0; $x < count($comps); $x ++) {
|
||||||
|
$element = $comps[$x];
|
||||||
|
$r = q("SELECT hash FROM attach WHERE uid = %d AND filename = '%s' AND folder = '%s' LIMIT 1",
|
||||||
intval($channel_id),
|
intval($channel_id),
|
||||||
dbesc($filename)
|
dbesc($element),
|
||||||
|
dbesc($parent_hash)
|
||||||
);
|
);
|
||||||
|
if($r) {
|
||||||
|
$parent_hash = $r[0]['hash'];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$errors ++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash = '';
|
if($errors)
|
||||||
if($r && $r[0]['hash']) {
|
return '';
|
||||||
$hash = $r[0]['hash'];
|
|
||||||
}
|
return $parent_hash;
|
||||||
return $hash;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user