CRM-16373 - Config - Migrate dateInputFormat, timeInputFormat
authorTim Otten <totten@civicrm.org>
Tue, 18 Aug 2015 00:41:55 +0000 (17:41 -0700)
committerTim Otten <totten@civicrm.org>
Tue, 18 Aug 2015 01:55:49 +0000 (18:55 -0700)
CRM/Admin/Form/Setting.php
CRM/Admin/Form/Setting/Date.php
CRM/Core/BAO/PreferencesDate.php
settings/Localization.setting.php

index 6486759e5dc87ca2ac41f21a25166558c0434a1f..0948c65b1a009c96c88e024a89c21cce9df98dfd 100644 (file)
@@ -234,18 +234,6 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form {
       );
     }
 
-    // update time for date formats when global time is changed
-    if (!empty($params['timeInputFormat'])) {
-      $query = "
-UPDATE civicrm_preferences_date
-SET    time_format = %1
-WHERE  time_format IS NOT NULL
-AND    time_format <> ''
-";
-      $sqlParams = array(1 => array($params['timeInputFormat'], 'String'));
-      CRM_Core_DAO::executeQuery($query, $sqlParams);
-    }
-
     // verify ssl peer option
     if (isset($params['verifySSL'])) {
       CRM_Core_BAO_Setting::setItem($params['verifySSL'],
index b13958e5f9d9be0fc032a4f719e38af6afb47262..e43136ca69ae0f3cc3f1c21f6859d79cae4d988b 100644 (file)
@@ -41,6 +41,8 @@ class CRM_Admin_Form_Setting_Date extends CRM_Admin_Form_Setting {
 
   public $_settings = array(
     'weekBegins' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
+    'dateInputFormat' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
+    'timeInputFormat' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
   );
 
   /**
@@ -56,12 +58,6 @@ class CRM_Admin_Form_Setting_Date extends CRM_Admin_Form_Setting {
     $this->addElement('text', 'dateformatPartial', ts('Month and Year'));
     $this->addElement('text', 'dateformatYear', ts('Year Only'));
     $this->addElement('text', 'dateformatTime', ts('Time Only'));
-    $this->add('select', 'dateInputFormat', ts('Complete Date'),
-      CRM_Core_SelectValues::getDatePluginInputFormats()
-    );
-    $this->add('select', 'timeInputFormat', ts('Time'),
-      CRM_Core_SelectValues::getTimeFormats()
-    );
 
     $this->add('date', 'fiscalYearStart', ts('Fiscal Year Start'),
       CRM_Core_SelectValues::date(NULL, 'M d')
index 3e519d79ab3e7ef25f26057b5b914bfdb1a421d0..86c544b8e2a3ef63c776bd7732fe0d88e40e8055 100644 (file)
@@ -93,4 +93,30 @@ class CRM_Core_BAO_PreferencesDate extends CRM_Core_DAO_PreferencesDate {
     CRM_Core_Error::fatal();
   }
 
+  /**
+   * (Setting Callback - On Change)
+   * Respond to changes in the "timeInputFormat" setting.
+   *
+   * @param array $oldValue
+   *   List of component names.
+   * @param array $newValue
+   *   List of component names.
+   * @param array $metadata
+   *   Specification of the setting (per *.settings.php).
+   */
+  public static function onChangeSetting($oldValue, $newValue, $metadata) {
+    if ($oldValue == $newValue) {
+      return;
+    }
+
+    $query = "
+UPDATE civicrm_preferences_date
+SET    time_format = %1
+WHERE  time_format IS NOT NULL
+AND    time_format <> ''
+";
+    $sqlParams = array(1 => array($newValue, 'String'));
+    CRM_Core_DAO::executeQuery($query, $sqlParams);
+  }
+
 }
index dfd760bdfde5ed2b111e727dde99fad396d83129..d0f96b099d94817c2600958ebbd27a07cd3f182c 100644 (file)
@@ -322,6 +322,25 @@ return array(
     'title' => 'Date Format: Year Only',
     'description' => '',
   ),
+  'dateInputFormat' => array(
+    'add' => '4.7',
+    'prefetch' => 1,
+    'help_text' => NULL,
+    'is_domain' => 1,
+    'is_contact' => 0,
+    'group_name' => 'Localization Preferences',
+    'group' => 'localization',
+    'name' => 'dateInputFormat',
+    'type' => 'String',
+    'quick_form_type' => 'Select',
+    'html_type' => 'Select',
+    'pseudoconstant' => array(
+      'callback' => 'CRM_Core_SelectValues::getDatePluginInputFormats',
+    ),
+    'default' => 'mm/dd/yy',
+    'title' => 'Date Input Format',
+    'description' => '',
+  ),
   'fieldSeparator' => array(
     'add' => '4.7',
     'prefetch' => 1,
@@ -381,6 +400,28 @@ return array(
     'title' => 'Legacy Encoding',
     'description' => 'If import files are NOT encoded as UTF-8, specify an alternate character encoding for these files. The default of Windows-1252 will work for Excel-created .CSV files on many computers.',
   ),
+  'timeInputFormat' => array(
+    'add' => '4.7',
+    'prefetch' => 1,
+    'help_text' => NULL,
+    'is_domain' => 1,
+    'is_contact' => 0,
+    'group_name' => 'Localization Preferences',
+    'group' => 'localization',
+    'name' => 'timeInputFormat',
+    'type' => 'String',
+    'quick_form_type' => 'Select',
+    'html_type' => 'Select',
+    'pseudoconstant' => array(
+      'callback' => 'CRM_Core_SelectValues::getTimeFormats',
+    ),
+    'default' => '1',
+    'title' => 'Time Input Format',
+    'description' => '',
+    'on_change' => array(
+      'CRM_Core_BAO_PreferencesDate::onChangeSetting',
+    ),
+  ),
   'weekBegins' => array(
     'group_name' => 'Localization Preferences',
     'group' => 'localization',