Skip to content

Instantly share code, notes, and snippets.

@Yetangitu
Created March 14, 2017 22:26
Show Gist options
  • Save Yetangitu/5623e6d35450ea5c1200d8f8b5b4a693 to your computer and use it in GitHub Desktop.
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
<?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