Merge pull request #12868 from mattwire/updatesubscription_datepicker
[civicrm-core.git] / CRM / Admin / Form / Setting.php
index f10182b864a54df53a51ca9b8ec3ca0ed92405d0..09c0b03842295585430788d12b4d72eed2d71d3f 100644 (file)
@@ -40,6 +40,8 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form {
 
   protected $_settings = array();
 
+  protected $includesReadOnlyFields;
+
   /**
    * Set default values for the form.
    *
@@ -95,71 +97,11 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form {
       )
     );
 
-    $descriptions = array();
-    $settingMetaData = $this->getSettingsMetaData();
-    foreach ($settingMetaData as $setting => $props) {
-      if (isset($props['quick_form_type'])) {
-        if (isset($props['pseudoconstant'])) {
-          $options = civicrm_api3('Setting', 'getoptions', array(
-            'field' => $setting,
-          ));
-        }
-        else {
-          $options = NULL;
-        }
-        //Load input as readonly whose values are overridden in civicrm.settings.php.
-        if (Civi::settings()->getMandatory($setting)) {
-          $props['html_attributes']['readonly'] = TRUE;
-          $setStatus = TRUE;
-        }
-
-        $add = 'add' . $props['quick_form_type'];
-        if ($add == 'addElement') {
-          $this->$add(
-            $props['html_type'],
-            $setting,
-            ts($props['title']),
-            ($options !== NULL) ? $options['values'] : CRM_Utils_Array::value('html_attributes', $props, array()),
-            ($options !== NULL) ? CRM_Utils_Array::value('html_attributes', $props, array()) : NULL
-          );
-        }
-        elseif ($add == 'addSelect') {
-          $this->addElement('select', $setting, ts($props['title']), $options['values'], CRM_Utils_Array::value('html_attributes', $props));
-        }
-        elseif ($add == 'addCheckBox') {
-          $this->addCheckBox($setting, ts($props['title']), $options['values'], NULL, CRM_Utils_Array::value('html_attributes', $props), NULL, NULL, array('  '));
-        }
-        elseif ($add == 'addChainSelect') {
-          $this->addChainSelect($setting, array(
-            'label' => ts($props['title']),
-          ));
-        }
-        elseif ($add == 'addMonthDay') {
-          $this->add('date', $setting, ts($props['title']), CRM_Core_SelectValues::date(NULL, 'M d'));
-        }
-        else {
-          $this->$add($setting, ts($props['title']));
-        }
-        // Migrate to using an array as easier in smart...
-        $descriptions[$setting] = ts($props['description']);
-        $this->assign("{$setting}_description", ts($props['description']));
-        if ($setting == 'max_attachments') {
-          //temp hack @todo fix to get from metadata
-          $this->addRule('max_attachments', ts('Value should be a positive number'), 'positiveInteger');
-        }
-        if ($setting == 'maxFileSize') {
-          //temp hack
-          $this->addRule('maxFileSize', ts('Value should be a positive number'), 'positiveInteger');
-        }
+    $this->addFieldsDefinedInSettingsMetadata();
 
-      }
-    }
-    if (!empty($setStatus)) {
+    if ($this->includesReadOnlyFields) {
       CRM_Core_Session::setStatus(ts("Some fields are loaded as 'readonly' as they have been set (overridden) in civicrm.settings.php."), '', 'info', array('expires' => 0));
     }
-    // setting_description should be deprecated - see Mail.tpl for metadata based tpl.
-    $this->assign('setting_descriptions', $descriptions);
-    $this->assign('settings_fields', $settingMetaData);
   }
 
   /**