$gateways * * @return array */ public function __invoke(array $gateways, int $formId): array { if (!array_key_exists(OfflineGateway::id(), $gateways)) { return $gateways; } $form = DonationForm::find($formId); $paymentGatewaysBlock = $form->blocks->findByName('givewp/payment-gateways'); if (!$paymentGatewaysBlock) { throw new RuntimeException('Payment gateways block not found'); } if (!$paymentGatewaysBlock->hasAttribute('offlineEnabled')) { return $gateways; } ['offlineEnabled' => $enabled] = $paymentGatewaysBlock->getAttributes(); if (!$enabled) { unset($gateways[OfflineGateway::id()]); } return $gateways; } }