Merge pull request #5129 from owncloud/remove_deleted_shares_from_db
remove deleted files from oc_share
This commit is contained in:
commit
981608cf6b
|
@ -68,11 +68,21 @@ if (version_compare($installedVersion, '0.3', '<')) {
|
|||
// $query = OCP\DB::prepare('DROP TABLE `*PREFIX*sharing`');
|
||||
// $query->execute();
|
||||
}
|
||||
if (version_compare($installedVersion, '0.3.3', '<')) {
|
||||
OC_User::useBackend(new OC_User_Database());
|
||||
OC_App::loadApps(array('authentication'));
|
||||
$users = OC_User::getUsers();
|
||||
foreach ($users as $user) {
|
||||
// OC_FileCache::delete('Shared', '/'.$user.'/files/');
|
||||
|
||||
// clean up oc_share table from files which are no longer exists
|
||||
if (version_compare($installedVersion, '0.3.4', '<')) {
|
||||
|
||||
// get all shares where the original file no longer exists
|
||||
$findShares = \OC_DB::prepare('SELECT `file_source` FROM `*PREFIX*share` LEFT JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*filecache`.`fileid` IS NULL');
|
||||
$sharesFound = $findShares->execute(array())->fetchAll();
|
||||
|
||||
// delete those shares from the oc_share table
|
||||
if (is_array($sharesFound) && !empty($sharesFound)) {
|
||||
$delArray = array();
|
||||
foreach ($sharesFound as $share) {
|
||||
$delArray[] = $share['file_source'];
|
||||
}
|
||||
$removeShares = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_source` IN (?)');
|
||||
$result = $removeShares->execute(array(implode(',', $delArray)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.3.3
|
||||
0.3.4
|
|
@ -57,6 +57,23 @@ class Shared_Updater {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief remove all shares for a given file if the file was deleted
|
||||
*
|
||||
* @param string $path
|
||||
*/
|
||||
private static function removeShare($path) {
|
||||
$fileInfo = \OC\Files\Filesystem::getFileInfo($path);
|
||||
$fileSource = $fileInfo['fileid'];
|
||||
|
||||
$query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_source`=?');
|
||||
try {
|
||||
\OC_DB::executeAudited($query, array($fileSource));
|
||||
} catch (\Exception $e) {
|
||||
\OCP\Util::writeLog('files_sharing', "can't remove share: " . $e->getMessage(), \OCP\Util::WARN);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $params
|
||||
*/
|
||||
|
@ -77,8 +94,10 @@ class Shared_Updater {
|
|||
*/
|
||||
static public function deleteHook($params) {
|
||||
self::correctFolders($params['path']);
|
||||
self::removeShare($params['path']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $params
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue