#php #hook #owncloud #nextcloud
#php #перехват #owncloud #nextcloud
Вопрос:
Мы разрабатываем приложение ownCloud, в котором мы пытаемся отслеживать пользователя, который загружает файл в определенную папку. перехваты работают для администратора, но перехват не выполняется, когда другой пользователь загружает в общую папку. это проблема с разрешениями?
наш код регистрации перехвата. мы пробуем обе системы перехватов, но результат тот же.
public function register() {
OCPUtil::connectHook('OC_Filesystem', 'post_create', 'OCAFileActivitiesControllerUserHooks', 'onFileCreate');
$reference = $this;
$callback = function (Node $node) use($reference) {
$reference->onPostCreate($node);
};
$this->fileManager->listen('OCFiles', 'postCreate', $callback);
}
Ответ №1:
Хорошо, если кто-то ищет ответ на тот же вопрос, я понял это. как следует.
в вашем app.php
namespace OCAxxxxxxxxxxAppInfo;
$app = new Application();
$app->registerFilesActivity();
и в вашей библиотеке / AppInfo/
namespace OCAXXXXXXXXXXXXAppInfo;
use OCPAppFrameworkApp;
use OCAXXXXXXXXXXXXControllerUserHooks;
use OCPIContainer;
use OCPUtil;
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', 'OCAFileActivitiesControllerUserHooks', 'onFileCreate');
}
}
В документации не очень понятно, после проверки нескольких других приложений с аналогичными функциями я понял это.