From 289b99030ac5d5f0f92240fd5538691e839f762c Mon Sep 17 00:00:00 2001
From: Kevin Cristiano <kcristiano@kcristiano.com>
Date: Fri, 17 Jun 2022 15:24:34 -0400
Subject: [PATCH] civicrm release-5.50.3

---
 civicrm.php                                   |  4 +-
 .../CRM/Contribute/Form/ContributionBase.php  | 11 ++++-
 .../Contribute/Form/UpdateSubscription.php    | 14 ++++---
 civicrm/Civi/Token/TokenProcessor.php         |  3 ++
 civicrm/civicrm-version.php                   |  2 +-
 civicrm/ext/afform/admin/info.xml             |  2 +-
 civicrm/ext/afform/core/info.xml              |  2 +-
 civicrm/ext/afform/html/info.xml              |  2 +-
 civicrm/ext/afform/mock/info.xml              |  2 +-
 civicrm/ext/authx/info.xml                    |  2 +-
 civicrm/ext/civicrm_admin_ui/info.xml         |  2 +-
 civicrm/ext/civigrant/info.xml                |  2 +-
 civicrm/ext/ckeditor4/info.xml                |  2 +-
 .../ext/contributioncancelactions/info.xml    |  2 +-
 civicrm/ext/eventcart/info.xml                |  2 +-
 civicrm/ext/ewaysingle/info.xml               |  2 +-
 civicrm/ext/financialacls/info.xml            |  2 +-
 civicrm/ext/flexmailer/info.xml               |  2 +-
 civicrm/ext/greenwich/info.xml                |  2 +-
 civicrm/ext/legacycustomsearches/info.xml     |  2 +-
 civicrm/ext/message_admin/info.xml            |  2 +-
 civicrm/ext/oauth-client/info.xml             |  2 +-
 civicrm/ext/payflowpro/info.xml               |  2 +-
 civicrm/ext/recaptcha/info.xml                |  2 +-
 civicrm/ext/search_kit/info.xml               |  2 +-
 civicrm/ext/sequentialcreditnotes/info.xml    |  2 +-
 civicrm/release-notes.md                      |  9 +++++
 civicrm/release-notes/5.50.2.md               |  2 +-
 civicrm/release-notes/5.50.3.md               | 40 +++++++++++++++++++
 civicrm/sql/civicrm_data.mysql                |  2 +-
 civicrm/sql/civicrm_generated.mysql           |  2 +-
 civicrm/vendor/autoload.php                   |  2 +-
 civicrm/vendor/composer/autoload_real.php     | 14 +++----
 civicrm/vendor/composer/autoload_static.php   | 12 +++---
 civicrm/xml/version.xml                       |  2 +-
 35 files changed, 113 insertions(+), 48 deletions(-)
 create mode 100644 civicrm/release-notes/5.50.3.md

diff --git a/civicrm.php b/civicrm.php
index f8dd8860b8..87dabc3841 100644
--- a/civicrm.php
+++ b/civicrm.php
@@ -2,7 +2,7 @@
 /**
  * Plugin Name: CiviCRM
  * Description: CiviCRM - Growing and Sustaining Relationships
- * Version: 5.50.2
+ * Version: 5.50.3
  * Requires at least: 4.9
  * Requires PHP:      7.2
  * Author: CiviCRM LLC
@@ -36,7 +36,7 @@ if (!defined('ABSPATH')) {
 }
 
 // Set version here: changing it forces Javascript and CSS to reload.
-define('CIVICRM_PLUGIN_VERSION', '5.50.2');
+define('CIVICRM_PLUGIN_VERSION', '5.50.3');
 
 // Store reference to this file.
 if (!defined('CIVICRM_PLUGIN_FILE')) {
diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php
index e44a816bae..a0ad0372f4 100644
--- a/civicrm/CRM/Contribute/Form/ContributionBase.php
+++ b/civicrm/CRM/Contribute/Form/ContributionBase.php
@@ -1151,10 +1151,13 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
       return;
     }
 
+    // Check if membership the selected membership is automatically opted into auto renew or give user the option.
+    // In the 2nd case we check that the user has in deed opted in (auto renew as at June 22 is the field name for the membership auto renew checkbox)
+    // Also check that the payment Processor used can support recurring contributions.
     $membershipTypes = CRM_Price_BAO_PriceSet::getMembershipTypesFromPriceSet($this->_priceSetId);
     if (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_required'])
       || (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_optional']) &&
-        !empty($this->_params['is_recur']))
+        !empty($this->_params['auto_renew']))
         && !empty($this->_paymentProcessor['is_recur'])
     ) {
       $this->_params['auto_renew'] = TRUE;
@@ -1166,6 +1169,12 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
       $this->_params['frequency_interval'] = $this->_params['frequency_interval'] ?? $this->_values['fee'][$priceFieldId]['options'][$priceFieldValue]['membership_num_terms'];
       $this->_params['frequency_unit'] = $this->_params['frequency_unit'] ?? $membershipTypeDetails['duration_unit'];
     }
+    elseif (!$this->_separateMembershipPayment && (in_array($selectedMembershipTypeID, $membershipTypes['autorenew_required'])
+      || in_array($selectedMembershipTypeID, $membershipTypes['autorenew_optional']))) {
+      // otherwise check if we have a separate membership payment setting as that will allow people to independently opt into recurring contributions and memberships
+      // If we don't have that and the membership type is auto recur or opt into recur set is_recur to 0.
+      $this->_params['is_recur'] = $this->_values['is_recur'] = 0;
+    }
   }
 
   /**
diff --git a/civicrm/CRM/Contribute/Form/UpdateSubscription.php b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
index a5772c74ce..ea02ea7d63 100644
--- a/civicrm/CRM/Contribute/Form/UpdateSubscription.php
+++ b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
@@ -155,13 +155,17 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_Contrib
       TRUE, 'currency', $this->_subscriptionDetails->currency, TRUE
     );
 
+    // https://lab.civicrm.org/dev/financial/-/issues/197 https://github.com/civicrm/civicrm-core/pull/23796
+    // Revert freezing on total_amount field on recurring form - particularly affects IATs
+    // This will need revisiting in the future as updating amount on recur does not work for multiple lineitems.
+    // Also there are "point of truth" issues ie. is the amount on template contribution or recur the current one?
     // The amount on the recurring contribution should not be updated directly. If we update the amount using a template contribution the recurring contribution
     //   will be updated automatically.
-    $paymentProcessorObj = Civi\Payment\System::singleton()->getById(CRM_Contribute_BAO_ContributionRecur::getPaymentProcessorID($this->contributionRecurID));
-    $templateContribution = CRM_Contribute_BAO_ContributionRecur::getTemplateContribution($this->contributionRecurID);
-    if (!empty($templateContribution['id']) && $paymentProcessorObj->supportsEditRecurringContribution()) {
-      $amountField->freeze();
-    }
+    // $paymentProcessorObj = Civi\Payment\System::singleton()->getById(CRM_Contribute_BAO_ContributionRecur::getPaymentProcessorID($this->contributionRecurID));
+    // $templateContribution = CRM_Contribute_BAO_ContributionRecur::getTemplateContribution($this->contributionRecurID);
+    // if (!empty($templateContribution['id']) && $paymentProcessorObj->supportsEditRecurringContribution()) {
+    //   $amountField->freeze();
+    // }
 
     $this->add('text', 'installments', ts('Number of Installments'), ['size' => 20], FALSE);
 
diff --git a/civicrm/Civi/Token/TokenProcessor.php b/civicrm/Civi/Token/TokenProcessor.php
index 7ffdc64ffb..eabab5296f 100644
--- a/civicrm/Civi/Token/TokenProcessor.php
+++ b/civicrm/Civi/Token/TokenProcessor.php
@@ -500,6 +500,9 @@ class TokenProcessor {
           require_once 'CRM/Core/Smarty/plugins/modifier.crmDate.php';
           return \smarty_modifier_crmDate($value->format('Y-m-d H:i:s'), $filter[1] ?? NULL);
         }
+        if ($value === '') {
+          return $value;
+        }
 
       default:
         throw new \CRM_Core_Exception("Invalid token filter: $filter");
diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php
index a27beb137e..cc034ab189 100644
--- a/civicrm/civicrm-version.php
+++ b/civicrm/civicrm-version.php
@@ -1,7 +1,7 @@
 <?php
 /** @deprecated */
 function civicrmVersion( ) {
-  return array( 'version'  => '5.50.2',
+  return array( 'version'  => '5.50.3',
                 'cms'      => 'Wordpress',
                 'revision' => '' );
 }
diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml
index 1bf467e94a..c3b97986cb 100644
--- a/civicrm/ext/afform/admin/info.xml
+++ b/civicrm/ext/afform/admin/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>beta</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml
index 0ead66a0d7..2c712edec1 100644
--- a/civicrm/ext/afform/core/info.xml
+++ b/civicrm/ext/afform/core/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>beta</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml
index 8bce9ad6f9..ca267d8a0d 100644
--- a/civicrm/ext/afform/html/info.xml
+++ b/civicrm/ext/afform/html/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml
index e005da8852..5896ce7602 100644
--- a/civicrm/ext/afform/mock/info.xml
+++ b/civicrm/ext/afform/mock/info.xml
@@ -12,7 +12,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml
index a742ecf4c1..1083238dda 100644
--- a/civicrm/ext/authx/info.xml
+++ b/civicrm/ext/authx/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-02-11</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml
index 78b866d0eb..cafb3495f4 100644
--- a/civicrm/ext/civicrm_admin_ui/info.xml
+++ b/civicrm/ext/civicrm_admin_ui/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2022-01-02</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml
index abd636fd6e..b43ca7cd98 100644
--- a/civicrm/ext/civigrant/info.xml
+++ b/civicrm/ext/civigrant/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-11-11</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml
index a096eff0c5..4bfde5419c 100644
--- a/civicrm/ext/ckeditor4/info.xml
+++ b/civicrm/ext/ckeditor4/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-05-23</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml
index 887752f268..4cf316401c 100644
--- a/civicrm/ext/contributioncancelactions/info.xml
+++ b/civicrm/ext/contributioncancelactions/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-10-12</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml
index fe379ec5ff..e237fda942 100644
--- a/civicrm/ext/eventcart/info.xml
+++ b/civicrm/ext/eventcart/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-08-03</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml
index 1dfeddc2ce..72430b34c4 100644
--- a/civicrm/ext/ewaysingle/info.xml
+++ b/civicrm/ext/ewaysingle/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-10-07</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml
index 1450f772c0..ebf769daa6 100644
--- a/civicrm/ext/financialacls/info.xml
+++ b/civicrm/ext/financialacls/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-08-27</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml
index 3462cd1ab1..c672f9ce6e 100644
--- a/civicrm/ext/flexmailer/info.xml
+++ b/civicrm/ext/flexmailer/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-08-05</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <comments>
     FlexMailer is an email delivery engine which replaces the internal guts
diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml
index 96fe2c903b..6262868aea 100644
--- a/civicrm/ext/greenwich/info.xml
+++ b/civicrm/ext/greenwich/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-07-21</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml
index 3c33952014..3f2f2079e4 100644
--- a/civicrm/ext/legacycustomsearches/info.xml
+++ b/civicrm/ext/legacycustomsearches/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-07-25</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:hidden</tag>
diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml
index 00557ef5e3..3020f56a61 100644
--- a/civicrm/ext/message_admin/info.xml
+++ b/civicrm/ext/message_admin/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-06-12</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml
index ea7ba16696..1d706de081 100644
--- a/civicrm/ext/oauth-client/info.xml
+++ b/civicrm/ext/oauth-client/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-10-23</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml
index d412eb8e35..75b787567b 100644
--- a/civicrm/ext/payflowpro/info.xml
+++ b/civicrm/ext/payflowpro/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-04-13</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml
index ddfd4e83bc..a9287f1114 100644
--- a/civicrm/ext/recaptcha/info.xml
+++ b/civicrm/ext/recaptcha/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-04-03</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml
index 1c035bdcbc..1388be9b90 100644
--- a/civicrm/ext/search_kit/info.xml
+++ b/civicrm/ext/search_kit/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-01-06</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.50</ver>
diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml
index e01ecdd6e7..1d87fd7984 100644
--- a/civicrm/ext/sequentialcreditnotes/info.xml
+++ b/civicrm/ext/sequentialcreditnotes/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-28</releaseDate>
-  <version>5.50.2</version>
+  <version>5.50.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md
index 95be4d1741..d126208265 100644
--- a/civicrm/release-notes.md
+++ b/civicrm/release-notes.md
@@ -15,6 +15,15 @@ Other resources for identifying changes are:
     * https://github.com/civicrm/civicrm-joomla
     * https://github.com/civicrm/civicrm-wordpress
 
+## CiviCRM 5.50.3
+
+Released June 17, 2022
+
+- **[Synopsis](release-notes/5.50.3.md#synopsis)**
+- **[Bugs resolved](release-notes/5.50.3.md#bugs)**
+- **[Credits](release-notes/5.50.3.md#credits)**
+- **[Feedback](release-notes/5.50.3.md#feedback)**
+
 ## CiviCRM 5.50.2
 
 Released June 14, 2022
diff --git a/civicrm/release-notes/5.50.2.md b/civicrm/release-notes/5.50.2.md
index 3406fcef7f..97e9fec589 100644
--- a/civicrm/release-notes/5.50.2.md
+++ b/civicrm/release-notes/5.50.2.md
@@ -24,7 +24,7 @@ Released June 14, 2022
 * **_CiviMember_: Re-enable configuration field "Renewal Message" ([dev/core#3499](https://lab.civicrm.org/dev/core/-/issues/3499): [#23726](https://github.com/civicrm/civicrm-core/pull/23726))**
 * **_Event Dispatcher_: Reduce fatal error to warning ([dev/core#3502](https://lab.civicrm.org/dev/core/-/issues/3502): [#23739](https://github.com/civicrm/civicrm-core/pull/23739))**
 * **_Extensions_: Missing extension leads to bootstrap error for "hook_civicrm_entityTypes"  ([dev/core#3496](https://lab.civicrm.org/dev/core/-/issues/3496): [#23716](https://github.com/civicrm/civicrm-core/pull/23716))**
-* **_Guzzle_: Update to v6.5.6 ([#23748](https://github.com/civicrm/civicrm-core/pull/23748))**
+* **_Guzzle_: Update to v6.5.7 ([#23748](https://github.com/civicrm/civicrm-core/pull/23748))**
 
   This applies a prophylactic security update. It is not believed to impact the security of CiviCRM deployments.
 
diff --git a/civicrm/release-notes/5.50.3.md b/civicrm/release-notes/5.50.3.md
new file mode 100644
index 0000000000..5e282d4a03
--- /dev/null
+++ b/civicrm/release-notes/5.50.3.md
@@ -0,0 +1,40 @@
+# CiviCRM 5.50.3
+
+Released June 17, 2022
+
+- **[Synopsis](#synopsis)**
+- **[Bugs resolved](#bugs)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## <a name="synopsis"></a>Synopsis
+
+| *Does this version...?*                                         |          |
+| --------------------------------------------------------------- | -------- |
+| Change the database schema?                                     | no       |
+| Alter the API?                                                  | no       |
+| Require attention to configuration options?                     | no       |
+| Fix problems installing or upgrading to a previous version?     | no       |
+| Introduce features?                                             | no       |
+| **Fix bugs?**                                                   | **yes**  |
+
+## <a name="bugs"></a>Bugs resolved
+
+* **_CiviContribute_: Re-enable editing for (basic) recurring contributions ([dev/financial#197](https://lab.civicrm.org/dev/financial/-/issues/197): [#23805](https://github.com/civicrm/civicrm-core/pull/23805))**
+* **_CiviMember_: Fix automatic renewal option in Contribution Pages ([#23798](https://github.com/civicrm/civicrm-core/pull/23798))**
+* **_Message Templates_: Handle empty date token gracefully ([#23827](https://github.com/civicrm/civicrm-core/pull/23827))**
+
+## <a name="credits"></a>Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; Semper IT - Karin Gerritsen; MJW Consulting -
+Matthew Wire; Megaphone Technology Consulting - Jon Goldberg; JMA Consulting - Seamus Lee,
+Monish Deb; CiviCRM - Tim Otten; Blackfly Solutions - Alan Dixon; Australian Greens -
+Andrew Cormick-Dockery
+
+## <a name="feedback"></a>Feedback
+
+These release notes are edited by Tim Otten and Andie Hunt.  If you'd like to
+provide feedback on them, please login to https://chat.civicrm.org/civicrm and
+contact `@agh1`.
diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql
index 34ab573a1c..ca0327fbab 100644
--- a/civicrm/sql/civicrm_data.mysql
+++ b/civicrm/sql/civicrm_data.mysql
@@ -23793,4 +23793,4 @@ INSERT INTO `civicrm_report_instance`
     ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`)
 VALUES
     (  @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}');
-UPDATE civicrm_domain SET version = '5.50.2';
+UPDATE civicrm_domain SET version = '5.50.3';
diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql
index 493309f20c..c5110e33ec 100644
--- a/civicrm/sql/civicrm_generated.mysql
+++ b/civicrm/sql/civicrm_generated.mysql
@@ -2938,7 +2938,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_domain` WRITE;
 /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
 INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES
- (1,'Default Domain Name',NULL,'5.50.2',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.50.3',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
 /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
 UNLOCK TABLES;
 
diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php
index fc48045d15..87c14e2a75 100644
--- a/civicrm/vendor/autoload.php
+++ b/civicrm/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca::getLoader();
+return ComposerAutoloaderInit2e4a1a9f566024f586ab8b9b59d17668::getLoader();
diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php
index c26ec2a7a9..d12696aa56 100644
--- a/civicrm/vendor/composer/autoload_real.php
+++ b/civicrm/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca
+class ComposerAutoloaderInit2e4a1a9f566024f586ab8b9b59d17668
 {
     private static $loader;
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca
             return self::$loader;
         }
 
-        spl_autoload_register(array('ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInit2e4a1a9f566024f586ab8b9b59d17668', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        spl_autoload_unregister(array('ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInit2e4a1a9f566024f586ab8b9b59d17668', 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
@@ -31,7 +31,7 @@ class ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca
         if ($useStaticLoader) {
             require_once __DIR__ . '/autoload_static.php';
 
-            call_user_func(\Composer\Autoload\ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::getInitializer($loader));
+            call_user_func(\Composer\Autoload\ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::getInitializer($loader));
         } else {
             $map = require __DIR__ . '/autoload_namespaces.php';
             foreach ($map as $namespace => $path) {
@@ -52,19 +52,19 @@ class ComposerAutoloaderInitd4c716c4ee5d5afc7cf2f8bc4b092fca
         $loader->register(true);
 
         if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::$files;
+            $includeFiles = Composer\Autoload\ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::$files;
         } else {
             $includeFiles = require __DIR__ . '/autoload_files.php';
         }
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequired4c716c4ee5d5afc7cf2f8bc4b092fca($fileIdentifier, $file);
+            composerRequire2e4a1a9f566024f586ab8b9b59d17668($fileIdentifier, $file);
         }
 
         return $loader;
     }
 }
 
-function composerRequired4c716c4ee5d5afc7cf2f8bc4b092fca($fileIdentifier, $file)
+function composerRequire2e4a1a9f566024f586ab8b9b59d17668($fileIdentifier, $file)
 {
     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
         require $file;
diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php
index 0955c06f3f..9398e03085 100644
--- a/civicrm/vendor/composer/autoload_static.php
+++ b/civicrm/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca
+class ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668
 {
     public static $files = array (
         '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
@@ -684,11 +684,11 @@ class ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::$prefixesPsr0;
-            $loader->fallbackDirsPsr0 = ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::$fallbackDirsPsr0;
-            $loader->classMap = ComposerStaticInitd4c716c4ee5d5afc7cf2f8bc4b092fca::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::$prefixesPsr0;
+            $loader->fallbackDirsPsr0 = ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::$fallbackDirsPsr0;
+            $loader->classMap = ComposerStaticInit2e4a1a9f566024f586ab8b9b59d17668::$classMap;
 
         }, null, ClassLoader::class);
     }
diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml
index a35a369400..e6f1c4bc33 100644
--- a/civicrm/xml/version.xml
+++ b/civicrm/xml/version.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="iso-8859-1" ?>
 <version>
-  <version_no>5.50.2</version_no>
+  <version_no>5.50.3</version_no>
 </version>
-- 
GitLab