Created
March 14, 2017 22:26
-
-
Save Yetangitu/5623e6d35450ea5c1200d8f8b5b4a693 to your computer and use it in GitHub Desktop.
Possible implementation of \OC\Files preDelete and \OC\User preDelete hook listeners in Owncloud and Nextcloud
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @author Frank de Lange | |
* @copyright 2017 Frank de Lange | |
* | |
* This file is licensed under the Affero General Public License version 3 or | |
* later. | |
* See the COPYING-README file. | |
*/ | |
namespace OCA\Files_Reader; | |
use OCP\IDBConnection; | |
use OCP\Files\Node; | |
use OCP\IUser; | |
use \OC\User\User as User; | |
class Hooks { | |
public static function register() { | |
\OC::$server->getRootFolder()->listen('\OC\Files', 'preDelete', function (Node $node) { | |
$fileId = $node->getId(); | |
$connection = \OC::$server->getDatabaseConnection(); | |
self::deleteFile($connection, $fileId); | |
}); | |
\OC::$server->getUserManager()->listen('\OC\User', 'preDelete', function (User $user) { | |
$userId = $user->getUID(); | |
$connection = \OC::$server->getDatabaseConnection(); | |
self::deleteUser($connection, $userId); | |
}); | |
} | |
protected static function deleteFile(IDBConnection $connection, $fileId) { | |
$queryBuilder = $connection->getQueryBuilder(); | |
$queryBuilder->delete('reader_bookmarks','b')->where('b.file_id = :file_id')->setParameter(':file_id', $fileId); | |
$queryBuilder->execute(); | |
$queryBuilder = $connection->getQueryBuilder(); | |
$queryBuilder->delete('reader_preferences','p')->where('p.file_id = :file_id')->setParameter(':file_id', $fileId); | |
$queryBuilder->execute(); | |
} | |
protected static function deleteUser(IDBConnection $connection, $userId) { | |
$queryBuilder = $connection->getQueryBuilder(); | |
$queryBuilder->delete('reader_bookmarks','b')->where('b.user_id = :user_id')->setParameter(':user_id', $userId); | |
$queryBuilder->execute(); | |
$queryBuilder = $connection->getQueryBuilder(); | |
$queryBuilder->delete('reader_preferences','p')->where('p.user_id = :user_id')->setParameter(':user_id', $userId); | |
$queryBuilder->execute(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment