Hello,
I am trying to connect to the post_delete Filesystem hook to cleanup the Audio Player library.
for some reason, the hook is not triggered when I remove a file.
any suggestion?
Hello,
I am trying to connect to the post_delete Filesystem hook to cleanup the Audio Player library.
for some reason, the hook is not triggered when I remove a file.
any suggestion?
Give a try to those:
File is deleted and is going to Trashbin if trashbin app is enabled:
Util::connectHook('OC_Filesystem', 'delete', '', '');
File is restored from the trashbin
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', '', '');
File is deleted from the trashbin
Util::connectHook('\OCP\Trashbin', 'preDelete', '', '');
Also works on the activity app.
Not sure what’s wrong with the post hook thou?
I think it’s postDelete
I really don´t get it.
I am trying all combinations, but my Hook is not called - no entry in log. nothing
\OCP\Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack');
\OCP\Util::connectHook('OC_Filesystem', 'postDelete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack');
\OCP\Util::connectHook('OC_Filesystem', 'delete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack');
\OCP\Util::connectHook('\OCP\Trashbin', 'preDelete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack');
these lines in the app.php
https://github.com/Rello/audioplayer/blob/master/appinfo/app.php
did I miss anything else?
I even restarted php to reset the caches
can’t create branch on your repo
Please check this is working, if you want to compare to your work and see what was going wrong.
Note that I moved few thing from app.php to a method in Application.php and call that method. I find it cleaner this way.
I will check.
thank you! always learning something new about app/application split…
so,
I split all known actions into several functions for debugging
Util::connectHook('OC_Filesystem', 'post_delete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack1');
Util::connectHook('OC_Filesystem', 'postDelete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack2');
Util::connectHook('OC_Filesystem', 'delete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack3');
Util::connectHook('\OCP\Trashbin', 'preDelete', 'OCA\audioplayer\Hooks\FileHooks', 'deleteTrack4');
Util::connectHook('OC_Filesystem', 'delete', '\OCA\audioplayer\Hooks\FileHooks', 'deleteTrack5');
only option 4 - Trashbin preDelete works.
when disabling Trashbin, non of the functions is triggered
this does not really help me because I need the deleted-option from the files app to remove the title from my audioplayer library.
any other idea?
according to the docu, it should be "delete"
https://fossies.org/dox/nextcloud-12.0.0/classOC_1_1Files_1_1Filesystem.html#add515f395dd97c228f32c5e2ecd5c170
My idea is that your path for the class need a \
(backslash)
try this:
Util::connectHook('OC_Filesystem', 'post_delete', '\OCA\audioplayer\Hooks\FileHooks', 'deleteTrack1'); Util::connectHook('OC_Filesystem', 'postDelete', '\OCA\audioplayer\Hooks\FileHooks', 'deleteTrack2'); Util::connectHook('OC_Filesystem', 'delete', '\OCA\audioplayer\Hooks\FileHooks', 'deleteTrack3'); Util::connectHook('\OCP\Trashbin', 'preDelete', '\OCA\audioplayer\Hooks\FileHooks', 'deleteTrack4');
no success
it works for Trashbin without backslash
really clueless. Tried in NC12 and OC9; makes no difference
but you tried my branch ? It looks like it is working there
this dies not seem right in your branch
function inside __construct.
I closed the construct with an }
but I am only getting
Object of class OCA\\audioplayer\\AppInfo\\Application could not be converted to string at \/var\/www\/nextcloud\/lib\/private\/legacy\/app.php#80
oups, lost few lines …
I pushed a fix, and this is what I got in the log when deleting a file or a folder:
thank you for not giving up.
I have no clue and skipping this feature.
I do not get it triggered. I even cloned your whole repo - but nothing on 2 separate test instances.
there needs to be something wrong with the file-hooks. because the user-deletion-hook is still working without issues. Don´t know if its a combination of enabled apps or something. But when I am having the issue, others could also have it.
As this does not seem to be something stable to rely on, I will not implement it.
one question: what is “version 13” in your screenshot?
I have to admit that I am using the master from nextcloud/server (13.0.0)
Anyway, try something before giving up !
<types>
<filesystem />
</types>
./occ app:disable audioplayer
./occ app:enable audioplayer
delete a file and check your log. (you might need to set the loglevel to 1 in config/config.php)
ok, this was the usefull information!!!
the entry in info.xml is required
PLUS
app needs to be re-enabled to have effect
can you tell the background of the xml entry?
in generell the hook is called. unfortunately not via a Node object. just the path.
Now I need myself from that to the file_id…
Yes, I am not an expert, but I would try this:
$view = OC\Files\Filesystem::getView(); $fileInfo = $view->getFileInfo($path);
if it is not working, set $view this way instead:
$view = new \OC\Files\View('/' . \OC::$server->getUserSession()->getUser());
Then, you get whatever you want (\OC\Files\FileInfo
):
$fileInfo->getId();
thank you!
it works!
I flagged your post with the info.xml and the enable/disable as solution because this was the key to make it work