From 2042981e601aa44a0ad46b0d6535f95e9670625f Mon Sep 17 00:00:00 2001
From: Martin Anderson-Clutz <46883-mandclu@users.noreply.drupalcode.org>
Date: Sat, 23 Mar 2024 16:52:18 +0000
Subject: [PATCH] Issue #3374428: system_time_zones() is deprecated in
 drupal:10.1.0

---
 src/Plugin/Field/FieldType/SmartDateItem.php       |  2 +-
 .../Field/FieldWidget/SmartDateTimezoneWidget.php  | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/Plugin/Field/FieldType/SmartDateItem.php b/src/Plugin/Field/FieldType/SmartDateItem.php
index 171a3d12..96a213e2 100644
--- a/src/Plugin/Field/FieldType/SmartDateItem.php
+++ b/src/Plugin/Field/FieldType/SmartDateItem.php
@@ -76,7 +76,7 @@ class SmartDateItem extends TimestampItem {
       ->setRequired(FALSE)
       // @todo: Define this via an options provider once
       // https://www.drupal.org/node/2329937 is completed.
-      ->addConstraint('AllowedValues', array_keys(system_time_zones(TRUE, FALSE)));
+      ->addConstraint('AllowedValues', \DateTimeZone::listIdentifiers());
 
     return $properties;
   }
diff --git a/src/Plugin/Field/FieldWidget/SmartDateTimezoneWidget.php b/src/Plugin/Field/FieldWidget/SmartDateTimezoneWidget.php
index a21b7b67..70ca9985 100644
--- a/src/Plugin/Field/FieldWidget/SmartDateTimezoneWidget.php
+++ b/src/Plugin/Field/FieldWidget/SmartDateTimezoneWidget.php
@@ -2,6 +2,8 @@
 
 namespace Drupal\smart_date\Plugin\Field\FieldWidget;
 
+use Drupal\Component\Utility\DeprecationHelper;
+use Drupal\Core\Datetime\TimeZoneFormHelper;
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
@@ -162,7 +164,17 @@ class SmartDateTimezoneWidget extends SmartDateInlineWidget implements Container
    * Helper function to retrieve available timezones.
    */
   public function getTimezones($grouped = TRUE) {
-    return system_time_zones(FALSE, $grouped);
+    if (!class_exists(DeprecationHelper::class)) {
+      return system_time_zones(FALSE, $grouped);
+    }
+    return DeprecationHelper::backwardsCompatibleCall(
+      \Drupal::VERSION,
+      '10.1',
+      static function () use ($grouped) {
+        return $grouped ? TimeZoneFormHelper::getOptionsListByRegion() : TimeZoneFormHelper::getOptionsList();
+      },
+      static fn () => system_time_zones(FALSE, $grouped)
+    );
   }
 
   /**
-- 
GitLab