From 72618f9b72443625b8dfe2a021a97d6ceb7d1d8a Mon Sep 17 00:00:00 2001
From: Kevin Cristiano <kcristiano@kcristiano.com>
Date: Fri, 1 Sep 2023 08:30:22 -0400
Subject: [PATCH] civicrm release-5.64.3

---
 civicrm.php                                   |  4 +-
 .../WorkflowMessage/ParticipantTrait.php      | 67 ++++++++++---------
 civicrm/Civi/Test/EventTestTrait.php          |  2 +-
 civicrm/Civi/Token/TokenCompatSubscriber.php  |  7 +-
 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/civi_campaign/info.xml            |  2 +-
 civicrm/ext/civi_case/info.xml                |  2 +-
 civicrm/ext/civi_contribute/info.xml          |  2 +-
 civicrm/ext/civi_event/info.xml               |  2 +-
 civicrm/ext/civi_mail/info.xml                |  2 +-
 civicrm/ext/civi_member/info.xml              |  2 +-
 civicrm/ext/civi_pledge/info.xml              |  2 +-
 civicrm/ext/civi_report/info.xml              |  2 +-
 civicrm/ext/civicrm_admin_ui/info.xml         |  2 +-
 civicrm/ext/civigrant/info.xml                |  2 +-
 civicrm/ext/civiimport/info.xml               |  2 +-
 civicrm/ext/ckeditor4/info.xml                |  2 +-
 .../ext/contributioncancelactions/info.xml    |  2 +-
 civicrm/ext/elavon/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/ext/standaloneusers/info.xml          |  2 +-
 civicrm/release-notes.md                      |  9 +++
 civicrm/release-notes/5.64.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/vendor/composer/installed.php         |  4 +-
 civicrm/xml/version.xml                       |  2 +-
 46 files changed, 147 insertions(+), 86 deletions(-)
 create mode 100644 civicrm/release-notes/5.64.3.md

diff --git a/civicrm.php b/civicrm.php
index e08434cb7c..320eb10808 100644
--- a/civicrm.php
+++ b/civicrm.php
@@ -2,7 +2,7 @@
 /**
  * Plugin Name: CiviCRM
  * Description: CiviCRM - Growing and Sustaining Relationships
- * Version: 5.64.2
+ * Version: 5.64.3
  * Requires at least: 4.9
  * Requires PHP:      7.3
  * 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.64.2');
+define('CIVICRM_PLUGIN_VERSION', '5.64.3');
 
 // Store reference to this file.
 if (!defined('CIVICRM_PLUGIN_FILE')) {
diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
index 9ccb56884e..a739ba1680 100644
--- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
+++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
@@ -67,6 +67,10 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    */
   protected $participantContacts;
 
+  private function isCiviContributeEnabled(): bool {
+    return array_key_exists('Contribution', \Civi::service('action_object_provider')->getEntities());
+  }
+
   /**
    * @param array $participantContacts
    *
@@ -93,7 +97,7 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    */
   public function setParticipantID(int $participantID) {
     $this->participantID = $participantID;
-    if (!$this->getContributionID()) {
+    if (!$this->getContributionID() && $this->isCiviContributeEnabled()) {
       $lineItem = LineItem::get(FALSE)
         ->addWhere('entity_table', '=', 'civicrm_participant')
         ->addWhere('entity_id', '=', $participantID)
@@ -103,13 +107,14 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
         $this->setContributionID($lineItem['contribution_id']);
       }
       else {
-        // no ts() since this should be rare
-        CRM_Core_Session::setStatus('There might be a data problem, contribution id could not be loaded from the line item');
         // It might be bad data on the site - let's do a noisy fall back to participant payment
         // (the relationship between contribution & participant should be in the line item but
         // some integrations might mess this up - if they are not using the order api).
+        // Note that for free events there won't be a participant payment either hence moving the status message into the if statement.
         $participantPayment = civicrm_api3('ParticipantPayment', 'get', ['participant_id' => $participantID])['values'];
         if (!empty($participantPayment)) {
+          // no ts() since this should be rare
+          CRM_Core_Session::setStatus('There might be a data problem, contribution id could not be loaded from the line item');
           $participantPayment = reset($participantPayment);
           $this->setContributionID((int) $participantPayment['contribution_id']);
         }
@@ -185,34 +190,36 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
       }
       // Initiate with the current participant to ensure they are first.
       $participants = [$this->participantID => ['id' => $this->participantID, 'tax_rate_breakdown' => []]];
-      foreach ($this->getLineItems() as $lineItem) {
-        if ($lineItem['entity_table'] === 'civicrm_participant') {
-          $participantID = $lineItem['entity_id'];
-        }
-        else {
-          // It is not clear if this could ever be true - testing the CiviCRM event
-          // form shows all line items assigned to participants but we should
-          // assign to primary if this can occur.
-          $participantID = $this->getPrimaryParticipantID();
-        }
-        $participants[$participantID]['line_items'][] = $lineItem;
-        if (!isset($participants[$participantID]['totals'])) {
-          $participants[$participantID]['totals'] = ['total_amount_exclusive' => 0, 'tax_amount' => 0, 'total_amount_inclusive' => 0];
-        }
-        $participants[$participantID]['totals']['total_amount_exclusive'] += $lineItem['line_total'];
-        $participants[$participantID]['totals']['tax_amount'] += $lineItem['tax_amount'];
-        $participants[$participantID]['totals']['total_amount_inclusive'] += ($lineItem['line_total'] + $lineItem['tax_amount']);
-        if (!isset($participants[$participantID]['tax_rate_breakdown'])) {
-          $participants[$participantID]['tax_rate_breakdown'] = [];
-        }
-        if (!isset($participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']])) {
-          $participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']] = [
-            'amount' => 0,
-            'rate' => $lineItem['tax_rate'],
-            'percentage' => sprintf('%.2f', $lineItem['tax_rate']),
-          ];
+      if ($this->isCiviContributeEnabled()) {
+        foreach ($this->getLineItems() as $lineItem) {
+          if ($lineItem['entity_table'] === 'civicrm_participant') {
+            $participantID = $lineItem['entity_id'];
+          }
+          else {
+            // It is not clear if this could ever be true - testing the CiviCRM event
+            // form shows all line items assigned to participants but we should
+            // assign to primary if this can occur.
+            $participantID = $this->getPrimaryParticipantID();
+          }
+          $participants[$participantID]['line_items'][] = $lineItem;
+          if (!isset($participants[$participantID]['totals'])) {
+            $participants[$participantID]['totals'] = ['total_amount_exclusive' => 0, 'tax_amount' => 0, 'total_amount_inclusive' => 0];
+          }
+          $participants[$participantID]['totals']['total_amount_exclusive'] += $lineItem['line_total'];
+          $participants[$participantID]['totals']['tax_amount'] += $lineItem['tax_amount'];
+          $participants[$participantID]['totals']['total_amount_inclusive'] += ($lineItem['line_total'] + $lineItem['tax_amount']);
+          if (!isset($participants[$participantID]['tax_rate_breakdown'])) {
+            $participants[$participantID]['tax_rate_breakdown'] = [];
+          }
+          if (!isset($participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']])) {
+            $participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']] = [
+              'amount' => 0,
+              'rate' => $lineItem['tax_rate'],
+              'percentage' => sprintf('%.2f', $lineItem['tax_rate']),
+            ];
+          }
+          $participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']]['amount'] += $lineItem['tax_amount'];
         }
-        $participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']]['amount'] += $lineItem['tax_amount'];
       }
 
       $count = 1;
diff --git a/civicrm/Civi/Test/EventTestTrait.php b/civicrm/Civi/Test/EventTestTrait.php
index 93b711faff..73682c12a6 100644
--- a/civicrm/Civi/Test/EventTestTrait.php
+++ b/civicrm/Civi/Test/EventTestTrait.php
@@ -78,7 +78,7 @@ trait EventTestTrait {
   }
 
   /**
-   * Create a paid event.
+   * Create an unpaid event.
    *
    * @param array $eventParameters
    *   Values to
diff --git a/civicrm/Civi/Token/TokenCompatSubscriber.php b/civicrm/Civi/Token/TokenCompatSubscriber.php
index 7aad811eac..2dd0f9e1ef 100644
--- a/civicrm/Civi/Token/TokenCompatSubscriber.php
+++ b/civicrm/Civi/Token/TokenCompatSubscriber.php
@@ -56,7 +56,12 @@ class TokenCompatSubscriber implements EventSubscriberInterface {
    */
   public function onRender(TokenRenderEvent $e): void {
     $useSmarty = !empty($e->context['smarty']);
-    $e->string = $e->getTokenProcessor()->visitTokens($e->string, function() {
+    $e->string = $e->getTokenProcessor()->visitTokens($e->string, function($token = NULL, $entity = NULL, $field = NULL, $filterParams = NULL) {
+      if ($filterParams && $filterParams[0] === 'boolean') {
+        // This token was missed during primary rendering, and it's supposed to be coerced to boolean.
+        // Treat an unknown token as false-y.
+        return 0;
+      }
       // For historical consistency, we filter out unrecognized tokens.
       return '';
     });
diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php
index 1ce7916817..7485f07e69 100644
--- a/civicrm/civicrm-version.php
+++ b/civicrm/civicrm-version.php
@@ -1,7 +1,7 @@
 <?php
 /** @deprecated */
 function civicrmVersion( ) {
-  return array( 'version'  => '5.64.2',
+  return array( 'version'  => '5.64.3',
                 'cms'      => 'Wordpress',
                 'revision' => '' );
 }
diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml
index 23008be19a..7abac3321b 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>beta</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml
index 70f884f855..b66eec8b35 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>beta</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml
index b321d1a913..67123d800e 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml
index 942396caf3..3d193677e8 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.64.2</version>
+  <version>5.64.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml
index 8467d28f78..d1ee2acbb6 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml
index 7d37024166..58ba29fb73 100644
--- a/civicrm/ext/civi_campaign/info.xml
+++ b/civicrm/ext/civi_campaign/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml
index 6fb1aeae57..9c61efd871 100644
--- a/civicrm/ext/civi_case/info.xml
+++ b/civicrm/ext/civi_case/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml
index 9cdf339729..e120dd55de 100644
--- a/civicrm/ext/civi_contribute/info.xml
+++ b/civicrm/ext/civi_contribute/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml
index b73b6d236e..07f187f2f0 100644
--- a/civicrm/ext/civi_event/info.xml
+++ b/civicrm/ext/civi_event/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_mail/info.xml b/civicrm/ext/civi_mail/info.xml
index 6d45b79a31..a9b03d99b1 100644
--- a/civicrm/ext/civi_mail/info.xml
+++ b/civicrm/ext/civi_mail/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml
index 344dd39d68..f8bbd950db 100644
--- a/civicrm/ext/civi_member/info.xml
+++ b/civicrm/ext/civi_member/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml
index 6459766d20..be948d0482 100644
--- a/civicrm/ext/civi_pledge/info.xml
+++ b/civicrm/ext/civi_pledge/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civi_report/info.xml b/civicrm/ext/civi_report/info.xml
index 2c1c1863ae..57590dec8d 100644
--- a/civicrm/ext/civi_report/info.xml
+++ b/civicrm/ext/civi_report/info.xml
@@ -13,7 +13,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2023-04-08</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>component</tag>
diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml
index 0782b61eae..5f5faa819e 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml
index 80d8776ba2..ea02f61a83 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml
index 143f0b456c..ad5676b25d 100644
--- a/civicrm/ext/civiimport/info.xml
+++ b/civicrm/ext/civiimport/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2022-08-11</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml
index 10349f2cdc..49c3907cc1 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml
index d48f4bf469..1205414ff1 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml
index c3ad494b1e..152728fc94 100644
--- a/civicrm/ext/elavon/info.xml
+++ b/civicrm/ext/elavon/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2022-08-05</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml
index 2e14c747b2..7e8237503f 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.64.2</version>
+  <version>5.64.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml
index b1ba3cfa42..109642927d 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.64.2</version>
+  <version>5.64.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml
index c31be30d1d..677953c952 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml
index a5ccecfbfc..bbdb3d7dbe 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.64.2</version>
+  <version>5.64.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 6163a17ca2..6f3bfd6d78 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.64.2</version>
+  <version>5.64.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml
index 8690c26053..e7a36e530e 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml
index 74fe640d79..3824bf8469 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml
index 10d7a99460..72f238ea30 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml
index 4fa0538183..e5c9b49fe4 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml
index 5fbb6d2c57..f4d3d5e2c2 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.64.2</version>
+  <version>5.64.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 434ea5219e..2505b38d7d 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.64.2</version>
+  <version>5.64.3</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:required</tag>
diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml
index 696c3d6b21..cab896e625 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.64.2</version>
+  <version>5.64.3</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml
index 15350b06fc..37ebead927 100644
--- a/civicrm/ext/standaloneusers/info.xml
+++ b/civicrm/ext/standaloneusers/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2022-11-11</releaseDate>
-  <version>5.64.2</version>
+  <version>5.64.3</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.64</ver>
diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md
index 6c17952602..c9a4ea74aa 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.64.3
+
+Released September 1, 2023
+
+- **[Synopsis](release-notes/5.64.3.md#synopsis)**
+- **[Bugs resolved](release-notes/5.64.3.md#bugs)**
+- **[Credits](release-notes/5.64.3.md#credits)**
+- **[Feedback](release-notes/5.64.3.md#feedback)**
+
 ## CiviCRM 5.64.2
 
 Released August 24, 2023
diff --git a/civicrm/release-notes/5.64.3.md b/civicrm/release-notes/5.64.3.md
new file mode 100644
index 0000000000..aec405efcf
--- /dev/null
+++ b/civicrm/release-notes/5.64.3.md
@@ -0,0 +1,40 @@
+# CiviCRM 5.64.3
+
+Released September 1, 2023
+
+- **[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**  |
+| Fix security vulnerabilities?                                   | no       |
+
+## <a name="bugs"></a>Bugs resolved
+
+* **_CiviEvent_: Error when sending registration email (if CiviContribute is disabled) ([dev/core#4537](https://lab.civicrm.org/dev/core/-/issues/4537): [#27237](https://github.com/civicrm/civicrm-core/pull/27237))**
+* **_CiviEvent_: Extraneous warning displayed on free event registrations ([dev/core#4538](https://lab.civicrm.org/dev/core/-/issues/4538): [#27221](https://github.com/civicrm/civicrm-core/pull/27221))**
+
+## <a name="credits"></a>Credits
+
+This release was developed by the following authors and reviewers:
+
+Wildsight - Lars Sander-Green; Wikimedia Foundation - Eileen McNaughton;
+SYSTOPIA Organisationsberatung - Björn Endres; Megaphone Technology
+Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; CiviCRM - Tim Otten;
+Agileware - Justin Freeman
+
+## <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 01a03ed3eb..ae8bc5d0f4 100644
--- a/civicrm/sql/civicrm_data.mysql
+++ b/civicrm/sql/civicrm_data.mysql
@@ -23952,4 +23952,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.64.2';
+UPDATE civicrm_domain SET version = '5.64.3';
diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql
index b71476e51f..622060c753 100644
--- a/civicrm/sql/civicrm_generated.mysql
+++ b/civicrm/sql/civicrm_generated.mysql
@@ -2959,7 +2959,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.64.2',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.64.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 c8c15ffa68..d01bef8136 100644
--- a/civicrm/vendor/autoload.php
+++ b/civicrm/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716::getLoader();
+return ComposerAutoloaderInitca95d99a8bf133bfb974461e36eb7697::getLoader();
diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php
index e8424038d0..63af5dc7a6 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 ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716
+class ComposerAutoloaderInitca95d99a8bf133bfb974461e36eb7697
 {
     private static $loader;
 
@@ -24,9 +24,9 @@ class ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716
 
         require __DIR__ . '/platform_check.php';
 
-        spl_autoload_register(array('ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInitca95d99a8bf133bfb974461e36eb7697', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
-        spl_autoload_unregister(array('ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInitca95d99a8bf133bfb974461e36eb7697', 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
@@ -36,7 +36,7 @@ class ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716
         if ($useStaticLoader) {
             require __DIR__ . '/autoload_static.php';
 
-            call_user_func(\Composer\Autoload\ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::getInitializer($loader));
+            call_user_func(\Composer\Autoload\ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::getInitializer($loader));
         } else {
             $map = require __DIR__ . '/autoload_namespaces.php';
             foreach ($map as $namespace => $path) {
@@ -57,12 +57,12 @@ class ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716
         $loader->register(true);
 
         if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::$files;
+            $includeFiles = Composer\Autoload\ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::$files;
         } else {
             $includeFiles = require __DIR__ . '/autoload_files.php';
         }
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequire6dbe9fe6364d1cb41be78955baeca716($fileIdentifier, $file);
+            composerRequireca95d99a8bf133bfb974461e36eb7697($fileIdentifier, $file);
         }
 
         return $loader;
@@ -74,7 +74,7 @@ class ComposerAutoloaderInit6dbe9fe6364d1cb41be78955baeca716
  * @param string $file
  * @return void
  */
-function composerRequire6dbe9fe6364d1cb41be78955baeca716($fileIdentifier, $file)
+function composerRequireca95d99a8bf133bfb974461e36eb7697($fileIdentifier, $file)
 {
     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
         $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php
index e90795327e..664c3f70a8 100644
--- a/civicrm/vendor/composer/autoload_static.php
+++ b/civicrm/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716
+class ComposerStaticInitca95d99a8bf133bfb974461e36eb7697
 {
     public static $files = array (
         'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@@ -729,11 +729,11 @@ class ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::$prefixesPsr0;
-            $loader->fallbackDirsPsr0 = ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::$fallbackDirsPsr0;
-            $loader->classMap = ComposerStaticInit6dbe9fe6364d1cb41be78955baeca716::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::$prefixesPsr0;
+            $loader->fallbackDirsPsr0 = ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::$fallbackDirsPsr0;
+            $loader->classMap = ComposerStaticInitca95d99a8bf133bfb974461e36eb7697::$classMap;
 
         }, null, ClassLoader::class);
     }
diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php
index b322b78b77..cad2d6a5f4 100644
--- a/civicrm/vendor/composer/installed.php
+++ b/civicrm/vendor/composer/installed.php
@@ -5,7 +5,7 @@
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => '23b392e44f489a56415e9c304fa9bd0309455583',
+        'reference' => '445c6c9c1d4886ba64ea46805ee201f30cbf29ff',
         'name' => 'civicrm/civicrm-core',
         'dev' => true,
     ),
@@ -43,7 +43,7 @@
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => '23b392e44f489a56415e9c304fa9bd0309455583',
+            'reference' => '445c6c9c1d4886ba64ea46805ee201f30cbf29ff',
             'dev_requirement' => false,
         ),
         'civicrm/civicrm-cxn-rpc' => array(
diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml
index 26d3977eec..1651e8bb28 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.64.2</version_no>
+  <version_no>5.64.3</version_no>
 </version>
-- 
GitLab