【问题标题】:Owncloud postCreate/post_create hooks not executing for other users on shared foldersOwncloud postCreate/post_create 挂钩未为共享文件夹上的其他用户执行
【发布时间】:2021-01-15 00:49:37
【问题描述】:

我们正在开发一个 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);

    }

【问题讨论】:

    标签: php hook owncloud nextcloud


    【解决方案1】:

    好的,任何寻找相同答案的人,我都明白了。如下。

    在你的 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后,我想通了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多