remove reshares and the mapping in the federated_reshares table on unshare from self
This commit is contained in:
parent
bc8f659d06
commit
20852fd8c0
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue