/** * 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; }
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; }