Skip to content
Snippets Groups Projects
Commit 5bbfdc35 authored by Björn Schießle's avatar Björn Schießle Committed by Robin Appelman
Browse files

make sure that we remove all shares refering to the same parent

parent 86d7371d
No related branches found
No related tags found
No related merge requests found
......@@ -166,27 +166,6 @@ class Helper extends \OC\Share\Constants {
// Reset parents array, only go through loop again if items are found
$parents = array();
while ($item = $result->fetchRow()) {
// Search for a duplicate parent share, this occurs when an
// item is shared to the same user through a group and user or the
// same item is shared by different users
$userAndGroups = array_merge(array($item['uid_owner']), \OC_Group::getUserGroups($item['uid_owner']));
$query = \OC_DB::prepare('SELECT `id`, `permissions` FROM `*PREFIX*share`'
.' WHERE `item_type` = ?'
.' AND `item_target` = ?'
.' AND `share_type` IN (?,?,?)'
.' AND `share_with` IN (\''.implode('\',\'', $userAndGroups).'\')'
.' AND `uid_owner` != ? AND `id` != ?');
$duplicateParent = $query->execute(array($item['item_type'], $item['item_target'],
self::SHARE_TYPE_USER, self::SHARE_TYPE_GROUP, self::$shareTypeGroupUserUnique,
$item['uid_owner'], $item['parent']))->fetchRow();
if ($duplicateParent) {
// Change the parent to the other item id if share permission is granted
if ($duplicateParent['permissions'] & \OCP\PERMISSION_SHARE) {
$query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `parent` = ? WHERE `id` = ?');
$query->execute(array($duplicateParent['id'], $item['id']));
continue;
}
}
$ids[] = $item['id'];
$parents[] = $item['id'];
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment