[REF] Fix error where entryURL does not contain id of the contribution page when...
authorSeamus Lee <seamuslee001@gmail.com>
Fri, 26 Mar 2021 08:44:37 +0000 (19:44 +1100)
committerSeamus Lee <seamuslee001@gmail.com>
Mon, 12 Apr 2021 08:44:02 +0000 (18:44 +1000)
Add in comment and expand fix to cover event registratons as well

CRM/Core/Controller.php

index 68c653185855e6a0c726458358ef90da6addef69..0a5f6482e8d55de2a45cfeb42d9cebbe9e697994 100644 (file)
@@ -241,6 +241,11 @@ class CRM_Core_Controller extends HTML_QuickForm_Controller {
       // in this case we'll also cache the url as a hidden form variable, this allows us to
       // redirect in case the session has disappeared on us
       $this->_entryURL = CRM_Utils_System::makeURL(NULL, TRUE, FALSE, NULL, TRUE);
+      // In WordPress Shortcodes the standard entryURL generated via makeURL doesn't generally have id=x&reset=1 included so we add them here
+      // This prevents infinite loops caused when the session has timed out.
+      if (stripos($this->_entryURL, 'id') === FALSE && (stripos($this->_entryURL, 'transact') !== FALSE || stripos($this->_entryURL, 'register') !== FALSE)) {
+        $this->_entryURL .= '&id=' . CRM_Utils_Request::retrieveValue('id', 'Positive') . '&reset=1';
+      }
       $this->set('entryURL', $this->_entryURL);
     }