API generated Webhook causes internal error

Xon

Well-known member
Affected version
2.3.6
XF\Api\Result\EntityResult::castToFinalValue's calls XF\Mvc\Entity\AbstractCollection::toWebhookResults with completely the wrong arguments.

Code:
TypeError: XF\Mvc\Entity\AbstractCollection::toWebhookResults(): Argument #1 ($options) must be of type array, int given, called in /var/www/src/XF/Api/Result/EntityResult.php on line 226 in src/XF/Mvc/Entity/AbstractCollection.php at line 72

    XF\Mvc\Entity\AbstractCollection->toWebhookResults() in src/XF/Api/Result/EntityResult.php at line 226
    XF\Api\Result\EntityResult->castToFinalValue() in src/XF/Api/Result/EntityResult.php at line 174
    XF\Api\Result\EntityResult->render() in src/XF/Repository/WebhookRepository.php at line 113
    XF\Repository\WebhookRepository->queueWebhook() in src/XF/Behavior/Webhook.php at line 38
    XF\Behavior\Webhook->postSave() in src/XF/Mvc/Entity/Entity.php at line 1327
    XF\Mvc\Entity\Entity->save() in src/XF/Service/Post/EditorService.php at line 194
    XF\Service\Post\EditorService->_save() in src/XF/Service/ValidateAndSavableTrait.php at line 42
    XF\Service\Post\EditorService->save() in src/XF/Pub/Controller/PostController.php at line 175
    XF\Pub\Controller\PostController->actionEdit() in src/XF/Mvc/Dispatcher.php at line 362
    XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 265
    XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 121
    XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 63
    XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2813
    XF\App->run() in src/XF.php at line 802
    XF::runApp() in index.php at line 23



PHP:
protected function castToFinalValue($value, $verbosity = Entity::VERBOSITY_NORMAL, array $options = [])
{
...
    else if ($value instanceof AbstractCollection)
    {
        if ($this->getResultType() === self::TYPE_API)
        {
...
        }
        else
        {
            $value = $value->toWebhookResults($verbosity, $options);
        }
    }
...
public function toWebhookResults(array $options = [], $maintainKeys = false): EntityResults

This should be $value->toWebhookResults($options); AbstractCollection::toWebhookResults should probably accept the `$verbosity argument too
 
Back
Top Bottom