Exemplo n.º 1
0
 /**
  * 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_PriceField object
  * @access public
  * @static
  */
 static function create(&$params)
 {
     if (empty($params['id']) && empty($params['name'])) {
         $params['name'] = strtolower(CRM_Utils_String::munge($params['label'], '_', 242));
     }
     $transaction = new CRM_Core_Transaction();
     $priceField = self::add($params);
     if (is_a($priceField, 'CRM_Core_Error')) {
         $transaction->rollback();
         return $priceField;
     }
     $optionsIds = array();
     $maxIndex = CRM_Price_Form_Field::NUM_OPTION;
     if ($priceField->html_type == 'Text') {
         $maxIndex = 1;
         $fieldValue = new CRM_Price_DAO_PriceFieldValue();
         $fieldValue->price_field_id = $priceField->id;
         // update previous field values( if any )
         if ($fieldValue->find(TRUE)) {
             $optionsIds['id'] = $fieldValue->id;
         }
     }
     $defaultArray = array();
     //html type would be empty in update scenario not sure what would happen ...
     if (!empty($params['html_type']) && $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 (!empty($params['default_option'])) {
             $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)) || !empty($params['is_quick_config'])) && !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, 'membership_num_terms' => NULL);
             if ($options['membership_type_id']) {
                 $options['membership_num_terms'] = CRM_Utils_Array::value($index, CRM_Utils_Array::value('membership_num_terms', $params), 1);
             }
             if (CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_financial_type_id', $params))) {
                 $options['financial_type_id'] = $params['option_financial_type_id'][$index];
             } elseif (!empty($params['financial_type_id'])) {
                 $options['financial_type_id'] = $params['financial_type_id'];
             }
             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_PriceFieldValue::create($options, $optionsIds);
         }
     }
     $transaction->commit();
     return $priceField;
 }
 /**
  * Retrive the all values for given field id
  *
  * @param int $fieldId price_field_id
  * @param array $values (reference ) to hold the values
  * @param string $orderBy for order by, default weight
  * @param int $isActive is_active, default false
  *
  * @return array $values
  *
  * @access public
  * @static
  */
 static function getValues($fieldId, &$values, $orderBy = 'weight', $isActive = FALSE)
 {
     $fieldValueDAO = new CRM_Price_DAO_PriceFieldValue();
     $fieldValueDAO->price_field_id = $fieldId;
     $fieldValueDAO->orderBy($orderBy, 'label');
     if ($isActive) {
         $fieldValueDAO->is_active = 1;
     }
     $fieldValueDAO->find();
     while ($fieldValueDAO->fetch()) {
         CRM_Core_DAO::storeValues($fieldValueDAO, $values[$fieldValueDAO->id]);
     }
     return $values;
 }
Exemplo n.º 3
0
 /**
  * Find a price_set_id associated with the given option value or  field ID.
  *
  * @param array $params
  *   (reference) an assoc array of name/value pairs.
  *                      array may contain either option id or
  *                      price field id
  *
  * @return int|NULL
  *   price set id on success, null  otherwise
  */
 public static function getSetId(&$params)
 {
     $fid = NULL;
     if ($oid = CRM_Utils_Array::value('oid', $params)) {
         $fieldValue = new CRM_Price_DAO_PriceFieldValue();
         $fieldValue->id = $oid;
         if ($fieldValue->find(TRUE)) {
             $fid = $fieldValue->price_field_id;
         }
     } else {
         $fid = CRM_Utils_Array::value('fid', $params);
     }
     if (isset($fid)) {
         return CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceField', $fid, 'price_set_id');
     }
     return NULL;
 }
Exemplo n.º 4
0
 /**
  * Retrive the all values for given field id.
  *
  * @param int $fieldId
  *   Price_field_id.
  * @param array $values
  *   (reference ) to hold the values.
  * @param string $orderBy
  *   For order by, default weight.
  * @param bool|int $isActive is_active, default false
  *
  * @return array
  *
  */
 public static function getValues($fieldId, &$values, $orderBy = 'weight', $isActive = FALSE)
 {
     $sql = "SELECT cs.id FROM civicrm_price_set cs INNER JOIN civicrm_price_field cp ON cp.price_set_id = cs.id \n              WHERE cs.name IN ('default_contribution_amount', 'default_membership_type_amount') AND cp.id = {$fieldId} ";
     $setId = CRM_Core_DAO::singleValueQuery($sql);
     $fieldValueDAO = new CRM_Price_DAO_PriceFieldValue();
     $fieldValueDAO->price_field_id = $fieldId;
     if (!$setId) {
         CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes);
         $addWhere = "financial_type_id IN (0)";
         if (!empty($financialTypes)) {
             $addWhere = "financial_type_id IN (" . implode(',', array_keys($financialTypes)) . ")";
         }
         $fieldValueDAO->whereAdd($addWhere);
     }
     $fieldValueDAO->orderBy($orderBy, 'label');
     if ($isActive) {
         $fieldValueDAO->is_active = 1;
     }
     $fieldValueDAO->find();
     while ($fieldValueDAO->fetch()) {
         CRM_Core_DAO::storeValues($fieldValueDAO, $values[$fieldValueDAO->id]);
     }
     return $values;
 }