Stripe 6.10.1 causes fatal error due to unset MOTO setting
Overview In Stripe 6.10.1, a fatal error is thrown when visiting a front end payment page while the user is logged in. This error is triggered because the 'Enable Mail Order Telephone Order' setting is not set (the code expects an array), so either the upgrade should set a value for this setting or the code should handle this value being empty.
Replication Steps
- Upgrade Stripe to 6.10.1.
- Visit a front end page where the payment widget is present (i.e. contribution page) while logged in
- Note that this does not happen if you go to the same page on a private/incognito browser, i.e. while not logged in.
- Encounter the following TypeError
TypeError: in_array(): Argument #2 ($haystack) must be of type array, bool given in in_array() (line 471 of /var/www/mysite.org/web/sites/all/civicrm-custom/extensions/stripe/CRM/Core/Payment/Stripe.php)
#0 /var/www/mysite.org/web/sites/all/civicrm-custom/extensions/stripe/CRM/Core/Payment/Stripe.php(471): in_array()
#1 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Payment/Form.php(216): CRM_Core_Payment_Stripe->buildForm()
#2 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Payment/ProcessorForm.php(141): CRM_Core_Payment_Form::buildPaymentForm()
#3 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Contribute/Form/Contribution/Main.php(298): CRM_Core_Payment_ProcessorForm::buildQuickForm()
#4 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Form.php(730): CRM_Contribute_Form_Contribution_Main->buildQuickForm()
#5 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/QuickForm/Action/Display.php(76): CRM_Core_Form->buildForm()
#6 /var/www/mysite.org/vendor/civicrm/civicrm-packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Display->perform()
#7 /var/www/mysite.org/vendor/civicrm/civicrm-packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle()
#8 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle()
#9 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(322): CRM_Core_Controller->run()
#10 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem()
#11 /var/www/mysite.org/vendor/civicrm/civicrm-core/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke()
#12 /var/www/mysite.org/web/modules/contrib/civicrm/src/Civicrm.php(88): CRM_Core_Invoke::invoke()
#13 /var/www/mysite.org/web/modules/contrib/civicrm/src/Controller/CivicrmController.php(83): Drupal\civicrm\Civicrm->invoke()
#14 [internal function]: Drupal\civicrm\Controller\CivicrmController->main()
#15 /var/www/mysite.org/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array()
#16 /var/www/mysite.org/web/core/lib/Drupal/Core/Render/Renderer.php(580): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#17 /var/www/mysite.org/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext()
#18 /var/www/mysite.org/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext()
#19 /var/www/mysite.org/vendor/symfony/http-kernel/HttpKernel.php(169): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}()
#20 /var/www/mysite.org/vendor/symfony/http-kernel/HttpKernel.php(81): Symfony\Component\HttpKernel\HttpKernel->handleRaw()
#21 /var/www/mysite.org/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle()
#22 /var/www/mysite.org/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle()
#23 /var/www/mysite.org/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle()
#24 /var/www/mysite.org/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass()
#25 /var/www/mysite.org/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle()
#26 /var/www/mysite.org/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle()
#27 /var/www/mysite.org/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle()
#28 /var/www/mysite.org/web/core/lib/Drupal/Core/DrupalKernel.php(718): Stack\StackedHttpKernel->handle()
#29 /var/www/mysite.org/web/index.php(19): Drupal\Core\DrupalKernel->handle()
#30 {main}