Exemple #1
0
 /**
  * Set default values.
  *
  * @param bool $freeze
  *
  * @return array
  */
 public function setDefaultValues($freeze = TRUE)
 {
     $freezeGroup = array();
     // FIXME: generalizing form field naming conventions would reduce
     // Lots of lines below.
     foreach ($this->_columns as $tableName => $table) {
         if (array_key_exists('fields', $table)) {
             foreach ($table['fields'] as $fieldName => $field) {
                 if (empty($field['no_display'])) {
                     if (isset($field['required'])) {
                         // set default
                         $this->_defaults['fields'][$fieldName] = 1;
                         if ($freeze) {
                             // find element object, so that we could use quickform's freeze method
                             // for required elements
                             $obj = $this->getElementFromGroup("fields", $fieldName);
                             if ($obj) {
                                 $freezeGroup[] = $obj;
                             }
                         }
                     } elseif (isset($field['default'])) {
                         $this->_defaults['fields'][$fieldName] = $field['default'];
                     }
                 }
             }
         }
         if (array_key_exists('group_bys', $table)) {
             foreach ($table['group_bys'] as $fieldName => $field) {
                 if (isset($field['default'])) {
                     if (!empty($field['frequency'])) {
                         $this->_defaults['group_bys_freq'][$fieldName] = 'MONTH';
                     }
                     $this->_defaults['group_bys'][$fieldName] = $field['default'];
                 }
             }
         }
         if (array_key_exists('filters', $table)) {
             foreach ($table['filters'] as $fieldName => $field) {
                 if (isset($field['default'])) {
                     if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) {
                         if (is_array($field['default'])) {
                             $this->_defaults["{$fieldName}_from"] = CRM_Utils_Array::value('from', $field['default']);
                             $this->_defaults["{$fieldName}_to"] = CRM_Utils_Array::value('to', $field['default']);
                             $this->_defaults["{$fieldName}_relative"] = 0;
                         } else {
                             $this->_defaults["{$fieldName}_relative"] = $field['default'];
                         }
                     } else {
                         if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_INT && is_array($field['default'])) {
                             $this->_defaults["{$fieldName}_min"] = CRM_Utils_Array::value('min', $field['default']);
                             $this->_defaults["{$fieldName}_max"] = CRM_Utils_Array::value('max', $field['default']);
                         }
                         $this->_defaults["{$fieldName}_value"] = $field['default'];
                     }
                 }
                 //assign default value as "in" for multiselect
                 //operator, To freeze the select element
                 if (CRM_Utils_Array::value('operatorType', $field) == CRM_Report_Form::OP_MULTISELECT) {
                     $this->_defaults["{$fieldName}_op"] = 'in';
                 }
                 if (CRM_Utils_Array::value('operatorType', $field) == CRM_Report_Form::OP_ENTITYREF) {
                     $this->_defaults["{$fieldName}_op"] = 'in';
                 } elseif (CRM_Utils_Array::value('operatorType', $field) == CRM_Report_Form::OP_MULTISELECT_SEPARATOR) {
                     $this->_defaults["{$fieldName}_op"] = 'mhas';
                 } elseif ($op = CRM_Utils_Array::value('default_op', $field)) {
                     $this->_defaults["{$fieldName}_op"] = $op;
                 }
             }
         }
         if (empty($this->_formValues['order_bys']) && (array_key_exists('order_bys', $table) && is_array($table['order_bys']))) {
             if (!array_key_exists('order_bys', $this->_defaults)) {
                 $this->_defaults['order_bys'] = array();
             }
             foreach ($table['order_bys'] as $fieldName => $field) {
                 if (!empty($field['default']) || !empty($field['default_order']) || CRM_Utils_Array::value('default_is_section', $field) || !empty($field['default_weight'])) {
                     $order_by = array('column' => $fieldName, 'order' => CRM_Utils_Array::value('default_order', $field, 'ASC'), 'section' => CRM_Utils_Array::value('default_is_section', $field, 0));
                     if (!empty($field['default_weight'])) {
                         $this->_defaults['order_bys'][(int) $field['default_weight']] = $order_by;
                     } else {
                         array_unshift($this->_defaults['order_bys'], $order_by);
                     }
                 }
             }
         }
         foreach ($this->_options as $fieldName => $field) {
             if (isset($field['default'])) {
                 $this->_defaults['options'][$fieldName] = $field['default'];
             }
         }
     }
     if (!empty($this->_submitValues)) {
         $this->preProcessOrderBy($this->_submitValues);
     } else {
         $this->preProcessOrderBy($this->_defaults);
     }
     // lets finish freezing task here itself
     if (!empty($freezeGroup)) {
         foreach ($freezeGroup as $elem) {
             $elem->freeze();
         }
     }
     if ($this->_formValues) {
         $this->_defaults = array_merge($this->_defaults, $this->_formValues);
     }
     if ($this->_instanceValues) {
         $this->_defaults = array_merge($this->_defaults, $this->_instanceValues);
     }
     CRM_Report_Form_Instance::setDefaultValues($this, $this->_defaults);
     return $this->_defaults;
 }
Exemple #2
0
 function setDefaultValues($freeze = true)
 {
     $freezeGroup = array();
     // FIXME: generalizing form field naming conventions would reduce
     // lots of lines below.
     foreach ($this->_columns as $tableName => $table) {
         if (array_key_exists('fields', $table)) {
             foreach ($table['fields'] as $fieldName => $field) {
                 if (!array_key_exists('no_display', $field)) {
                     if (isset($field['required'])) {
                         // set default
                         $this->_defaults['fields'][$fieldName] = 1;
                         if ($freeze) {
                             // find element object, so that we could use quickform's freeze method
                             // for required elements
                             $obj = $this->getElementFromGroup("fields", $fieldName);
                             if ($obj) {
                                 $freezeGroup[] = $obj;
                             }
                         }
                     } else {
                         if (isset($field['default'])) {
                             $this->_defaults['fields'][$fieldName] = $field['default'];
                         }
                     }
                 }
             }
         }
         if (array_key_exists('group_bys', $table)) {
             foreach ($table['group_bys'] as $fieldName => $field) {
                 if (isset($field['default'])) {
                     if (CRM_Utils_Array::value('frequency', $field)) {
                         $this->_defaults['group_bys_freq'][$fieldName] = 'MONTH';
                     }
                     $this->_defaults['group_bys'][$fieldName] = $field['default'];
                 }
             }
         }
         if (array_key_exists('filters', $table)) {
             foreach ($table['filters'] as $fieldName => $field) {
                 if (isset($field['default'])) {
                     if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) {
                         $this->_defaults["{$fieldName}_relative"] = $field['default'];
                     } else {
                         $this->_defaults["{$fieldName}_value"] = $field['default'];
                     }
                 }
                 //assign default value as "in" for multiselect
                 //operator, To freeze the select element
                 if (CRM_Utils_Array::value('operatorType', $field) == CRM_Report_FORM::OP_MULTISELECT) {
                     $this->_defaults["{$fieldName}_op"] = 'in';
                 } elseif (CRM_Utils_Array::value('operatorType', $field) == CRM_Report_FORM::OP_MULTISELECT_SEPARATOR) {
                     $this->_defaults["{$fieldName}_op"] = 'mhas';
                 } else {
                     if ($op = CRM_Utils_Array::value('default_op', $field)) {
                         $this->_defaults["{$fieldName}_op"] = $op;
                     }
                 }
             }
         }
         foreach ($this->_options as $fieldName => $field) {
             if (isset($field['default'])) {
                 $this->_defaults['options'][$fieldName] = $field['default'];
             }
         }
     }
     // lets finish freezing task here itself
     if (!empty($freezeGroup)) {
         foreach ($freezeGroup as $elem) {
             $elem->freeze();
         }
     }
     if ($this->_formValues) {
         $this->_defaults = array_merge($this->_defaults, $this->_formValues);
     }
     if ($this->_instanceValues) {
         $this->_defaults = array_merge($this->_defaults, $this->_instanceValues);
     }
     require_once 'CRM/Report/Form/Instance.php';
     CRM_Report_Form_Instance::setDefaultValues($this, $this->_defaults);
     return $this->_defaults;
 }