From f68838ca6b0edfb9f6274d0de96680fa0f0c63db Mon Sep 17 00:00:00 2001
From: Kevin Cristiano <kcristiano@kcristiano.com>
Date: Sat, 4 Mar 2023 09:06:53 -0500
Subject: [PATCH] civicrm release-5.59.1

---
 civicrm.php                                   |  4 +-
 civicrm/CRM/Contact/Tokens.php                |  4 +-
 civicrm/CRM/Core/DAO/AllCoreTables.data.php   |  2 +-
 civicrm/CRM/Core/DAO/Worldregion.php          |  8 ++--
 civicrm/CRM/Core/EntityTokens.php             | 11 ++++-
 civicrm/CRM/Member/BAO/Membership.php         |  3 ++
 civicrm/CRM/Upgrade/Incremental/Base.php      |  7 ++++
 civicrm/Civi/Api4/WorldRegion.php             | 24 +++++++++++
 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/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/release-notes.md                      |  9 ++++
 civicrm/release-notes/5.59.1.md               | 41 +++++++++++++++++++
 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/schema/Core/Worldregion.xml       |  1 +
 civicrm/xml/version.xml                       |  2 +-
 42 files changed, 147 insertions(+), 53 deletions(-)
 create mode 100644 civicrm/Civi/Api4/WorldRegion.php
 create mode 100644 civicrm/release-notes/5.59.1.md

diff --git a/civicrm.php b/civicrm.php
index 0a7fc76351..ccec35030a 100644
--- a/civicrm.php
+++ b/civicrm.php
@@ -2,7 +2,7 @@
 /**
  * Plugin Name: CiviCRM
  * Description: CiviCRM - Growing and Sustaining Relationships
- * Version: 5.59.0
+ * Version: 5.59.1
  * 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.59.0');
+define('CIVICRM_PLUGIN_VERSION', '5.59.1');
 
 // Store reference to this file.
 if (!defined('CIVICRM_PLUGIN_FILE')) {
diff --git a/civicrm/CRM/Contact/Tokens.php b/civicrm/CRM/Contact/Tokens.php
index bed30b86f7..01c1e358a3 100644
--- a/civicrm/CRM/Contact/Tokens.php
+++ b/civicrm/CRM/Contact/Tokens.php
@@ -415,7 +415,7 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens {
     // Manually add in the abbreviated state province as that maps to
     // what has traditionally been delivered.
     $tokensMetadata['address_primary.state_province_id:abbr'] = $tokensMetadata['address_primary.state_province_id:label'];
-    $tokensMetadata['address_primary.state_province_id:abbr']['name'] = 'state_province_id:abbr';
+    $tokensMetadata['address_primary.state_province_id:abbr']['name'] = 'address_primary.state_province_id:abbr';
     $tokensMetadata['address_primary.state_province_id:abbr']['audience'] = 'user';
     // Hide the label for now because we are not sure if there are paths
     // where legacy token resolution is in play where this could not be resolved.
@@ -654,7 +654,7 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens {
       ],
       'address_primary.country_id.region_id:name' => [
         'title' => ts('World Region'),
-        'name' => 'country_id.region_id.name',
+        'name' => 'address_primary.country_id.region_id:name',
         'type' => 'mapped',
         'api_v3' => 'world_region',
         'options' => NULL,
diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.data.php b/civicrm/CRM/Core/DAO/AllCoreTables.data.php
index 456041dd3f..e043d1c0cb 100644
--- a/civicrm/CRM/Core/DAO/AllCoreTables.data.php
+++ b/civicrm/CRM/Core/DAO/AllCoreTables.data.php
@@ -53,7 +53,7 @@ return [
     'table' => 'civicrm_translation',
   ],
   'CRM_Core_DAO_Worldregion' => [
-    'name' => 'Worldregion',
+    'name' => 'WorldRegion',
     'class' => 'CRM_Core_DAO_Worldregion',
     'table' => 'civicrm_worldregion',
   ],
diff --git a/civicrm/CRM/Core/DAO/Worldregion.php b/civicrm/CRM/Core/DAO/Worldregion.php
index 3131b0e940..375beb1d00 100644
--- a/civicrm/CRM/Core/DAO/Worldregion.php
+++ b/civicrm/CRM/Core/DAO/Worldregion.php
@@ -6,11 +6,11 @@
  *
  * Generated from xml/schema/CRM/Core/Worldregion.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9f82f7db4b9ea76b609244a81635d1f1)
+ * (GenCodeChecksum:2604f3d61e573a996ee6f5d7bf4d04dc)
  */
 
 /**
- * Database access object for the Worldregion entity.
+ * Database access object for the WorldRegion entity.
  */
 class CRM_Core_DAO_Worldregion extends CRM_Core_DAO {
   const EXT = 'civicrm';
@@ -82,7 +82,7 @@ class CRM_Core_DAO_Worldregion extends CRM_Core_DAO {
           'required' => TRUE,
           'where' => 'civicrm_worldregion.id',
           'table_name' => 'civicrm_worldregion',
-          'entity' => 'Worldregion',
+          'entity' => 'WorldRegion',
           'bao' => 'CRM_Core_DAO_Worldregion',
           'localizable' => 0,
           'html' => [
@@ -101,7 +101,7 @@ class CRM_Core_DAO_Worldregion extends CRM_Core_DAO {
           'where' => 'civicrm_worldregion.name',
           'export' => TRUE,
           'table_name' => 'civicrm_worldregion',
-          'entity' => 'Worldregion',
+          'entity' => 'WorldRegion',
           'bao' => 'CRM_Core_DAO_Worldregion',
           'localizable' => 0,
           'add' => '1.8',
diff --git a/civicrm/CRM/Core/EntityTokens.php b/civicrm/CRM/Core/EntityTokens.php
index 9672f08c14..9d33cf1359 100644
--- a/civicrm/CRM/Core/EntityTokens.php
+++ b/civicrm/CRM/Core/EntityTokens.php
@@ -290,10 +290,19 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber {
   protected function getPseudoValue(string $realField, string $pseudoKey, $fieldValue): string {
     $bao = CRM_Core_DAO_AllCoreTables::getFullName($this->getMetadataForField($realField)['entity']);
     if ($pseudoKey === 'name') {
+      // There is a theoretical possibility fieldValue could be an array but
+      // specifically for preferred communication type - but real world usage
+      // hitting this is unlikely & the unexpectation is unclear so commenting,
+      // rather than adding handling.
       $fieldValue = (string) CRM_Core_PseudoConstant::getName($bao, $realField, $fieldValue);
     }
     if ($pseudoKey === 'label') {
-      $fieldValue = (string) CRM_Core_PseudoConstant::getLabel($bao, $realField, $fieldValue);
+      $newValue = [];
+      // Preferred communication method is an array that would resolve to (e.g) 'Phone, Email'
+      foreach ((array) $fieldValue as $individualValue) {
+        $newValue[] = CRM_Core_PseudoConstant::getLabel($bao, $realField, $individualValue);
+      }
+      $fieldValue = implode(', ', $newValue);
     }
     if ($pseudoKey === 'abbr' && $realField === 'state_province_id') {
       // hack alert - currently only supported for state.
diff --git a/civicrm/CRM/Member/BAO/Membership.php b/civicrm/CRM/Member/BAO/Membership.php
index e6742c74dd..15ef6231bb 100644
--- a/civicrm/CRM/Member/BAO/Membership.php
+++ b/civicrm/CRM/Member/BAO/Membership.php
@@ -2366,6 +2366,9 @@ WHERE {$whereClause}";
    * @return array
    */
   public static function getAllContactMembership($contactID, $isTest = FALSE, $onlyLifeTime = FALSE) : array {
+    if (!\CRM_Core_Component::isEnabled('CiviMember')) {
+      return [];
+    }
     $contactMembershipType = [];
     if (!$contactID) {
       return $contactMembershipType;
diff --git a/civicrm/CRM/Upgrade/Incremental/Base.php b/civicrm/CRM/Upgrade/Incremental/Base.php
index 7e6f85142a..4171e4b5dc 100644
--- a/civicrm/CRM/Upgrade/Incremental/Base.php
+++ b/civicrm/CRM/Upgrade/Incremental/Base.php
@@ -527,6 +527,10 @@ class CRM_Upgrade_Incremental_Base {
     if ($schema->isEnabled()) {
       $schema->fixSchemaDifferencesFor($table);
     }
+    $locales = CRM_Core_I18n::getMultilingual();
+    if ($locales) {
+      CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, NULL, TRUE);
+    }
     return TRUE;
   }
 
@@ -613,6 +617,9 @@ class CRM_Upgrade_Incremental_Base {
     if ($schema->isEnabled()) {
       $schema->fixSchemaDifferencesFor($table);
     }
+    if ($locales) {
+      CRM_Core_I18n_Schema::rebuildMultilingualSchema($locales, NULL, TRUE);
+    }
     return TRUE;
   }
 
diff --git a/civicrm/Civi/Api4/WorldRegion.php b/civicrm/Civi/Api4/WorldRegion.php
new file mode 100644
index 0000000000..a62c1c94ab
--- /dev/null
+++ b/civicrm/Civi/Api4/WorldRegion.php
@@ -0,0 +1,24 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+/**
+ * WordRegion entity.
+ *
+ * This entity stores world regions.
+ *
+ * @searchable none
+ * @since 5.59
+ * @package Civi\Api4
+ */
+class WorldRegion extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php
index 267c2f601d..de969090a8 100644
--- a/civicrm/civicrm-version.php
+++ b/civicrm/civicrm-version.php
@@ -1,7 +1,7 @@
 <?php
 /** @deprecated */
 function civicrmVersion( ) {
-  return array( 'version'  => '5.59.0',
+  return array( 'version'  => '5.59.1',
                 'cms'      => 'Wordpress',
                 'revision' => '' );
 }
diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml
index c955e059ae..b90700da8d 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>beta</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml
index 911a5c2ca5..86c44c4491 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>beta</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml
index b7e69137a9..64ad632267 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml
index d5b72b3e9b..2cdc9aba78 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.59.0</version>
+  <version>5.59.1</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml
index 719c6db45d..9b4f950dcc 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml
index 146355f1b9..781457f014 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml
index 50ce0dfab8..04f1ab4284 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml
index 738f4d42f2..2c87c03792 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml
index 2a11e41e64..e75188ace5 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml
index c904bde8c5..9345847b1a 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml
index a7c4d58b17..cceecc5b58 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml
index 3ae214b40c..12fc10ac30 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.59.0</version>
+  <version>5.59.1</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml
index 018d361be8..78fb7b9a6d 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.59.0</version>
+  <version>5.59.1</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml
index e7cabc600d..d9c52aaa17 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml
index a14303b45e..584c182735 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.59.0</version>
+  <version>5.59.1</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 797c445b05..db451a6419 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.59.0</version>
+  <version>5.59.1</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml
index 0c470b23ef..6f4be1ecc9 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.59.0</version>
+  <version>5.59.1</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 69526d69e1..a6903c1360 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>alpha</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml
index ebfd165c5b..93e27e554a 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml
index 4a19f7b521..b1365b6850 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <compatibility>
     <ver>5.59</ver>
diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml
index 1baa71c04a..1bc0194e9d 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.59.0</version>
+  <version>5.59.1</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml
index d415d743f9..d2ee7a5ef2 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.59.0</version>
+  <version>5.59.1</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:required</tag>
diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml
index fdf8650dd8..8b53a1b992 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.59.0</version>
+  <version>5.59.1</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md
index 060b9b5def..6b0f9d38bf 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.59.1
+
+Released March 3, 2023
+
+- **[Synopsis](release-notes/5.59.1.md#synopsis)**
+- **[Bugs resolved](release-notes/5.59.1.md#bugs)**
+- **[Credits](release-notes/5.59.1.md#credits)**
+- **[Feedback](release-notes/5.59.1.md#feedback)**
+
 ## CiviCRM 5.59.0
 
 Released March 1, 2023
diff --git a/civicrm/release-notes/5.59.1.md b/civicrm/release-notes/5.59.1.md
new file mode 100644
index 0000000000..e66582b65e
--- /dev/null
+++ b/civicrm/release-notes/5.59.1.md
@@ -0,0 +1,41 @@
+# CiviCRM 5.59.1
+
+Released March 3, 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?** | **yes**  |
+| Introduce features?                                             | no       |
+| **Fix bugs?**                                                   | **yes**  |
+| Fix security vulnerabilities?                                   | no       |
+
+## <a name="bugs"></a>Bugs resolved
+
+* **_CiviContribute_: Contribution pages crash if CiviMember is disabled ([#25729](https://github.com/civicrm/civicrm-core/pull/25729))**
+* **_Tokens_: Abbreviated state/province does not display ([dev/core#4147](https://lab.civicrm.org/dev/core/-/issues/4147): [#25704](https://github.com/civicrm/civicrm-core/pull/25704))**
+* **_Multilingual_: Site reports `DB Error: -32` after running upgrade ([dev/core#4155](https://lab.civicrm.org/dev/core/-/issues/4155): [#25733](https://github.com/civicrm/civicrm-core/pull/25733))**
+
+  If you previously ran the 5.59.0 upgrade on a multilingual site and have a persistent fatal error, then you may wish to (a) consult the Gitlab discussion for resolution steps or (b) rollback to the original DB and upgrade to 5.59.1 instead.
+
+## <a name="credits"></a>Credits
+
+This release was developed by the following authors and reviewers:
+
+Wikimedia Foundation - Eileen McNaughton; 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 deb4e34dbd..13aa16af73 100644
--- a/civicrm/sql/civicrm_data.mysql
+++ b/civicrm/sql/civicrm_data.mysql
@@ -23678,4 +23678,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.59.0';
+UPDATE civicrm_domain SET version = '5.59.1';
diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql
index ef7c1f5916..1f5d80eae5 100644
--- a/civicrm/sql/civicrm_generated.mysql
+++ b/civicrm/sql/civicrm_generated.mysql
@@ -3055,7 +3055,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.59.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.59.1',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 7144bbec26..3d3377e6ab 100644
--- a/civicrm/vendor/autoload.php
+++ b/civicrm/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b::getLoader();
+return ComposerAutoloaderInit6d70272d0a18598efc2ecef4c5a0f39a::getLoader();
diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php
index 60113964dd..e11de19129 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 ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b
+class ComposerAutoloaderInit6d70272d0a18598efc2ecef4c5a0f39a
 {
     private static $loader;
 
@@ -24,9 +24,9 @@ class ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b
 
         require __DIR__ . '/platform_check.php';
 
-        spl_autoload_register(array('ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInit6d70272d0a18598efc2ecef4c5a0f39a', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
-        spl_autoload_unregister(array('ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInit6d70272d0a18598efc2ecef4c5a0f39a', 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
@@ -36,7 +36,7 @@ class ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b
         if ($useStaticLoader) {
             require __DIR__ . '/autoload_static.php';
 
-            call_user_func(\Composer\Autoload\ComposerStaticInita11f3c801d10986919ada9cfdd14997b::getInitializer($loader));
+            call_user_func(\Composer\Autoload\ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::getInitializer($loader));
         } else {
             $map = require __DIR__ . '/autoload_namespaces.php';
             foreach ($map as $namespace => $path) {
@@ -57,12 +57,12 @@ class ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b
         $loader->register(true);
 
         if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInita11f3c801d10986919ada9cfdd14997b::$files;
+            $includeFiles = Composer\Autoload\ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::$files;
         } else {
             $includeFiles = require __DIR__ . '/autoload_files.php';
         }
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequirea11f3c801d10986919ada9cfdd14997b($fileIdentifier, $file);
+            composerRequire6d70272d0a18598efc2ecef4c5a0f39a($fileIdentifier, $file);
         }
 
         return $loader;
@@ -74,7 +74,7 @@ class ComposerAutoloaderInita11f3c801d10986919ada9cfdd14997b
  * @param string $file
  * @return void
  */
-function composerRequirea11f3c801d10986919ada9cfdd14997b($fileIdentifier, $file)
+function composerRequire6d70272d0a18598efc2ecef4c5a0f39a($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 cefd59297e..ab61225545 100644
--- a/civicrm/vendor/composer/autoload_static.php
+++ b/civicrm/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInita11f3c801d10986919ada9cfdd14997b
+class ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a
 {
     public static $files = array (
         'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@@ -744,11 +744,11 @@ class ComposerStaticInita11f3c801d10986919ada9cfdd14997b
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInita11f3c801d10986919ada9cfdd14997b::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInita11f3c801d10986919ada9cfdd14997b::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInita11f3c801d10986919ada9cfdd14997b::$prefixesPsr0;
-            $loader->fallbackDirsPsr0 = ComposerStaticInita11f3c801d10986919ada9cfdd14997b::$fallbackDirsPsr0;
-            $loader->classMap = ComposerStaticInita11f3c801d10986919ada9cfdd14997b::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::$prefixesPsr0;
+            $loader->fallbackDirsPsr0 = ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::$fallbackDirsPsr0;
+            $loader->classMap = ComposerStaticInit6d70272d0a18598efc2ecef4c5a0f39a::$classMap;
 
         }, null, ClassLoader::class);
     }
diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php
index b989a299ce..c0efc052c6 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' => '26d58531c1abf047ac91b5b6d9e67a799f385642',
+        'reference' => '6e3ac779204df17644db8b11968aeb3bddcf505d',
         'name' => 'civicrm/civicrm-core',
         'dev' => true,
     ),
@@ -61,7 +61,7 @@
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => '26d58531c1abf047ac91b5b6d9e67a799f385642',
+            'reference' => '6e3ac779204df17644db8b11968aeb3bddcf505d',
             'dev_requirement' => false,
         ),
         'civicrm/civicrm-cxn-rpc' => array(
diff --git a/civicrm/xml/schema/Core/Worldregion.xml b/civicrm/xml/schema/Core/Worldregion.xml
index 9e2b2a9b29..f24a8cc026 100644
--- a/civicrm/xml/schema/Core/Worldregion.xml
+++ b/civicrm/xml/schema/Core/Worldregion.xml
@@ -4,6 +4,7 @@
   <base>CRM/Core</base>
   <class>Worldregion</class>
   <name>civicrm_worldregion</name>
+  <entity>WorldRegion</entity>
   <add>1.8</add>
   <field>
     <name>id</name>
diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml
index ac8640fe07..75129e2368 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.59.0</version_no>
+  <version_no>5.59.1</version_no>
 </version>
-- 
GitLab