APIv4 - Fix unserialize settings
authorColeman Watts <coleman@civicrm.org>
Tue, 13 Apr 2021 15:43:12 +0000 (11:43 -0400)
committerColeman Watts <coleman@civicrm.org>
Tue, 13 Apr 2021 15:43:12 +0000 (11:43 -0400)
Civi/Api4/Action/Setting/Get.php
tests/phpunit/api/v4/Entity/SettingTest.php

index 9a6539de665fbdb292ea97d93f149a9922b6d380..6ce7b39b8e0b96659c4e47564cb75ed2e6136b42 100644 (file)
@@ -55,9 +55,9 @@ class Get extends AbstractSettingAction {
         ];
       }
     }
-    foreach ($result as $name => &$setting) {
-      if (isset($setting['value']) && !empty($meta[$name]['serialize'])) {
-        $setting['value'] = \CRM_Core_DAO::unSerializeField($setting['value'], $meta[$name]['serialize']);
+    foreach ($result as &$setting) {
+      if (isset($setting['value']) && !empty($meta[$setting['name']]['serialize'])) {
+        $setting['value'] = \CRM_Core_DAO::unSerializeField($setting['value'], $meta[$setting['name']]['serialize']);
       }
     }
   }
index a19ef53c07b1b8a6fed2d888377b4606bc39c562..0a3657028902fe00ee7087b2ae2d28fa48b52ac6 100644 (file)
@@ -50,4 +50,11 @@ class SettingTest extends UnitTestCase {
     $this->assertContains('setting', $message);
   }
 
+  public function testSerailizedSetting() {
+    $settings = \Civi\Api4\Setting::get(FALSE)
+      ->addSelect('contact_edit_options')
+      ->execute();
+    $this->assertTrue(is_array($settings[0]['value']));
+  }
+
 }