remove reshares and the mapping in the federated_reshares table on unshare from self

This commit is contained in:
Björn Schießle 2016-05-19 17:22:12 +02:00
parent bc8f659d06
commit 20852fd8c0
No known key found for this signature in database
GPG Key ID: 2378A753E2BF04F6
1 changed files with 34 additions and 1 deletions

View File

@ -325,6 +325,10 @@ class Manager {
}
public function removeShare($mountPoint) {
$mountPointObj = $this->mountManager->find($mountPoint);
$id = $mountPointObj->getStorage()->getCache()->getId();
$mountPoint = $this->stripPath($mountPoint);
$hash = md5($mountPoint);
@ -345,7 +349,36 @@ class Manager {
WHERE `mountpoint_hash` = ?
AND `user` = ?
');
return (bool)$query->execute(array($hash, $this->uid));
$result = (bool)$query->execute(array($hash, $this->uid));
if($result) {
$this->removeReShares($id);
}
return $result;
}
/**
* remove re-shares from share table and mapping in the federated_reshares table
*
* @param $mountPointId
*/
protected function removeReShares($mountPointId) {
$selectQuery = $this->connection->getQueryBuilder();
$query = $this->connection->getQueryBuilder();
$selectQuery->select('id')->from('share')
->where($selectQuery->expr()->eq('file_source', $query->createNamedParameter($mountPointId)));
$select = $selectQuery->getSQL();
$query->delete('federated_reshares')
->where($query->expr()->in('share_id', $query->createFunction('(' . $select . ')')));
$query->execute();
$deleteReShares = $this->connection->getQueryBuilder();
$deleteReShares->delete('share')
->where($deleteReShares->expr()->eq('file_source', $deleteReShares->createNamedParameter($mountPointId)));
$deleteReShares->execute();
}
/**