/** * Create or update a price_field_value * * @param array $params Associative array of property * name/value pairs to insert in new 'price_field_value' * @example PriceFieldValueCreate.php Std Create example * * @return array api result array * {@getfields price_field_value_create} * @access public */ function civicrm_api3_price_field_value_create($params) { $ids = array(); if (!empty($params['id'])) { $ids['id'] = $params['id']; } $bao = CRM_Price_BAO_FieldValue::create($params, $ids); $values = array(); _civicrm_api3_object_to_array($bao, $values[$bao->id]); return civicrm_api3_create_success($values, $params, 'price_field_value', 'create', $bao); }
/** * Process the form * * @param null * * @return void * @access public */ public function postProcess() { if ($this->_action == CRM_Core_Action::DELETE) { $fieldValues = array('price_field_id' => $this->_fid); $wt = CRM_Utils_Weight::delWeight('CRM_Price_DAO_FieldValue', $this->_oid, $fieldValues); $label = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_FieldValue', $this->_oid, 'label', 'id'); if (CRM_Price_BAO_FieldValue::del($this->_oid)) { CRM_Core_Session::setStatus(ts('%1 option has been deleted.', array(1 => $label))); } return; } else { $params = $ids = array(); $params = $this->controller->exportValues('Option'); $fieldLabel = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_Field', $this->_fid, 'label'); $params['amount'] = CRM_Utils_Rule::cleanMoney(trim($params['amount'])); $params['price_field_id'] = $this->_fid; $params['is_default'] = CRM_Utils_Array::value('is_default', $params, FALSE); $ids = array(); if ($this->_oid) { $ids['id'] = $this->_oid; } $optionValue = CRM_Price_BAO_FieldValue::create($params, $ids); CRM_Core_Session::setStatus(ts('The option \'%1\' has been saved.', array(1 => $params['label']))); } }
/** * takes an associative array and creates a price field object * * This function is invoked from within the web form layer and also from the api layer * * @param array $params (reference) an assoc array of name/value pairs * * @return object CRM_Price_DAO_Field object * @access public * @static */ static function create(&$params) { $transaction = new CRM_Core_Transaction(); $priceField = self::add($params); if (is_a($priceField, 'CRM_Core_Error')) { $transaction->rollback(); return $priceField; } $options = $optionsIds = array(); $maxIndex = CRM_Price_Form_Field::NUM_OPTION; if ($priceField->html_type == 'Text') { $maxIndex = 1; $fieldValue = new CRM_Price_DAO_FieldValue(); $fieldValue->price_field_id = $priceField->id; // update previous field values( if any ) if ($fieldValue->find(TRUE)) { $optionsIds['id'] = $fieldValue->id; } } $defaultArray = array(); if ($params['html_type'] == 'CheckBox' && isset($params['default_checkbox_option'])) { $tempArray = array_keys($params['default_checkbox_option']); foreach ($tempArray as $v) { if ($params['option_amount'][$v]) { $defaultArray[$v] = 1; } } } else { if (CRM_Utils_Array::value('default_option', $params)) { $defaultArray[$params['default_option']] = 1; } } for ($index = 1; $index <= $maxIndex; $index++) { if (array_key_exists('option_amount', $params) && array_key_exists($index, $params['option_amount']) && (CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_label', $params)) || CRM_Utils_Array::value('is_quick_config', $params)) && !CRM_Utils_System::isNull($params['option_amount'][$index])) { $options = array('price_field_id' => $priceField->id, 'label' => trim($params['option_label'][$index]), 'name' => CRM_Utils_String::munge($params['option_label'][$index], '_', 64), 'amount' => CRM_Utils_Rule::cleanMoney(trim($params['option_amount'][$index])), 'count' => CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_count', $params), NULL), 'max_value' => CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_max_value', $params), NULL), 'description' => CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_description', $params), NULL), 'membership_type_id' => CRM_Utils_Array::value($index, CRM_Utils_Array::value('membership_type_id', $params), NULL), 'weight' => $params['option_weight'][$index], 'is_active' => 1, 'is_default' => CRM_Utils_Array::value($params['option_weight'][$index], $defaultArray) ? $defaultArray[$params['option_weight'][$index]] : 0); if ($opIds = CRM_Utils_Array::value('option_id', $params)) { if ($opId = CRM_Utils_Array::value($index, $opIds)) { $optionsIds['id'] = $opId; } else { $optionsIds['id'] = NULL; } } CRM_Price_BAO_FieldValue::create($options, $optionsIds); } } $transaction->commit(); return $priceField; }