Browse Source

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

tags/v9.1.0beta1
Björn Schießle 8 years ago
parent
commit
20852fd8c0
No account linked to committer's email address
1 changed files with 34 additions and 1 deletions
  1. 34
    1
      apps/files_sharing/lib/external/manager.php

+ 34
- 1
apps/files_sharing/lib/external/manager.php 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();
}

/**

Loading…
Cancel
Save