diff options
Diffstat (limited to 'lib/private/Command/ClosureJob.php')
-rw-r--r-- | lib/private/Command/ClosureJob.php | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/private/Command/ClosureJob.php b/lib/private/Command/ClosureJob.php new file mode 100644 index 00000000000..58fe9696437 --- /dev/null +++ b/lib/private/Command/ClosureJob.php @@ -0,0 +1,23 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OC\Command; + +use Laravel\SerializableClosure\SerializableClosure as LaravelClosure; +use OCP\BackgroundJob\QueuedJob; + +class ClosureJob extends QueuedJob { + protected function run($argument) { + $callable = unserialize($argument, [LaravelClosure::class]); + $callable = $callable->getClosure(); + if (is_callable($callable)) { + $callable(); + } else { + throw new \InvalidArgumentException('Invalid serialized callable'); + } + } +} |