Owncloud postCreate/post_create 挂钩未在共享文件夹上为其他用户执行

Owncloud postCreate/post_create hooks not executing for other users on shared folders

我们正在开发一个 OwnCloud 应用程序,我们试图跟踪将文件上传到特定文件夹的用户。挂钩正在为管理员工作,但当另一个用户上传到共享文件夹时挂钩没有执行。这是权限问题吗?

我们的挂钩注册码。我们尝试了两种挂钩系统,但结果相同。

public function register() {

        \OCP\Util::connectHook('OC_Filesystem', 'post_create', 'OCA\FileActivities\Controller\UserHooks', 'onFileCreate');
                
        $reference = $this;

        $callback = function (Node $node) use($reference) {
            $reference->onPostCreate($node);
        };

       
        $this->fileManager->listen('\OC\Files', 'postCreate', $callback);

    }

好的,对于任何搜索相同答案的人来说,我明白了。如下

在你的app.php

namespace OCA\xxxxxxxxxx\AppInfo;

$app = new Application();
$app->registerFilesActivity();

在你的 lib/AppInfo/

namespace OCA\XXXXXXXXXXXX\AppInfo;

use \OCP\AppFramework\App;
use \OCA\XXXXXXXXXXXX\Controller\UserHooks;
use OCP\IContainer;
use OCP\Util;

class Application extends App {
    public function __construct(array $urlParams=array()){
        parent::__construct('viewfinance', $urlParams);

        $container = $this->getContainer();                
        $container->registerService('UserHooks', function($c) {
                     
            return new UserHooks(
                $c->query('AppName'),
                $c->query('Request'),
                $c->query('UserSession'),
                $c->query('ServerContainer')->getRootFolder()
            );
        });

        $container->registerService('UserSession', function($c) {
            return $c->query('ServerContainer')->getUserSession();
        });
    }

    /**
     * Register the hooks for filesystem operations
     */
    public function registerFilesActivity() {
        
        Util::connectHook('OC_Filesystem', 'post_create', 'OCA\FileActivities\Controller\UserHooks', 'onFileCreate');
        
    }
}

这个文档说的不是很清楚,查了几个其他类似功能的app,才弄明白。