From: Joshua Rüsweg Date: Thu, 22 Nov 2018 10:01:43 +0000 (+0100) Subject: Add requiredObjectType option for user content provider X-Git-Tag: 5.2.0_Alpha_1~491 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=2ce1274bc00182d1382d0dfed2baa60ffa23b63d;p=GitHub%2FWoltLab%2FWCF.git Add requiredObjectType option for user content provider See #2716 --- diff --git a/wcfsetup/install/files/lib/system/worker/UserContentRemoveWorker.class.php b/wcfsetup/install/files/lib/system/worker/UserContentRemoveWorker.class.php index 5b6a772f71..32d695acf2 100644 --- a/wcfsetup/install/files/lib/system/worker/UserContentRemoveWorker.class.php +++ b/wcfsetup/install/files/lib/system/worker/UserContentRemoveWorker.class.php @@ -120,6 +120,27 @@ class UserContentRemoveWorker extends AbstractWorker implements IWorker { return 0; }); + // add the required object types for the select content provider + if (is_array($this->contentProvider)) { + foreach ($this->contentProvider as $contentProvider) { + $objectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.content.userContentProvider', $contentProvider); + + if ($objectType->requiredObjectType !== null) { + $objectTypeNames = explode(',', $objectType->requiredObjectType); + + foreach ($objectTypeNames as $objectTypeName) { + $objectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.content.userContentProvider', $objectTypeName); + + if ($objectType === null) { + throw new \RuntimeException('Unknown required object type "' . $objectTypeName . '" for object type "' . $contentProvider . '" given.'); + } + + $this->contentProvider[] = $objectType; + } + } + } + } + foreach ($contentProviders as $contentProvider) { if ($this->contentProvider === null || (is_array($this->contentProvider) && in_array($contentProvider->objectType, $this->contentProvider))) { /** @var IUserContentProvider $processor */