fix borked quicksearch setting
authordemeritcowboy <demeritcowboy@hotmail.com>
Wed, 14 Dec 2022 14:36:15 +0000 (09:36 -0500)
committerdemeritcowboy <demeritcowboy@hotmail.com>
Wed, 14 Dec 2022 15:23:48 +0000 (10:23 -0500)
CRM/Upgrade/Incremental/php/FiveFiftySeven.php
settings/Search.setting.php

index 7dd42cf0d1d160812a3ff95e36c7c67f6a844e17..06977c0000a49d667d855dcec6c69b0bfb95a9b3 100644 (file)
@@ -48,4 +48,49 @@ class CRM_Upgrade_Incremental_php_FiveFiftySeven extends CRM_Upgrade_Incremental
     return TRUE;
   }
 
+  /**
+   * Upgrade step; adds tasks including 'runSql'.
+   *
+   * @param string $rev
+   *   The version number matching this function name
+   */
+  public function upgrade_5_57_beta1($rev): void {
+    $this->addTask('Fix broken quicksearch options', 'fixQuicksearchOptions');
+  }
+
+  public static function fixQuicksearchOptions($ctx): bool {
+    $default_options = [
+      0 => 'sort_name',
+      1 => 'contact_id',
+      2 => 'external_identifier',
+      3 => 'first_name',
+      4 => 'last_name',
+      5 => 'email',
+      6 => 'phone_numeric',
+      7 => 'street_address',
+      8 => 'city',
+      9 => 'postal_code',
+      10 => 'job_title',
+    ];
+
+    $opts = \Civi::settings()->get('quicksearch_options');
+    if ($opts === NULL) {
+      // Super-borked => just reset to defaults
+      $opts = \Civi::settings()->set('quicksearch_options', $default_options);
+    }
+    elseif (is_string($opts)) {
+      // Has the desired values but we need to put back in array format
+      $opts = trim($opts, CRM_Core_DAO::VALUE_SEPARATOR);
+      $opts = explode(CRM_Core_DAO::VALUE_SEPARATOR, $opts);
+      if (empty($opts)) {
+        // hmm, just reset to defaults
+        \Civi::settings()->set('quicksearch_options', $default_options);
+      }
+      else {
+        \Civi::settings()->set('quicksearch_options', $opts);
+      }
+    }
+    return TRUE;
+  }
+
 }
index 5949be97afcb581f66112ad62f9d18fec5dca8f2..bac3e56fc3fccddce4717c56a174bc517da15729 100644 (file)
@@ -213,8 +213,7 @@ return [
     'group_name' => 'Search Preferences',
     'group' => 'Search Preferences',
     'name' => 'quicksearch_options',
-    'type' => 'String',
-    'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
+    'type' => 'Array',
     'html_type' => 'checkboxes',
     'sortable' => TRUE,
     'pseudoconstant' => [