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(); } }