/** * * create price sets */ public static function createPriceSet($daoName, $addTo, $options = array()) { $query = "SELECT title FROM {$addTo[0]} where id =%1"; $setParams['title'] = CRM_Core_DAO::singleValueQuery($query, array(1 => array($addTo[2], 'Integer'))); $pageTitle = strtolower(CRM_Utils_String::munge($setParams['title'], '_', 245)); // an event or contrib page has been deleted but left the option group behind - (this may be fixed in later versions?) // we should probably delete the option group - but at least early exit here as the code following it does not fatal // CRM-10298 if (empty($pageTitle)) { return; } $optionValue = array(); if (!empty($options['optionGroup'])) { CRM_Core_OptionGroup::getAssoc($options['optionGroup'], $optionValue); if (empty($optionValue)) { return; } } elseif (empty($options['otherAmount']) && empty($options['membership'])) { //CRM-12273 //if options group, otherAmount, membersip is empty then return, contribution should be default price set return; } if (!CRM_Core_DAO::getFieldValue('CRM_Upgrade_Snapshot_V4p2_Price_BAO_Set', $pageTitle, 'id', 'name', TRUE)) { $setParams['name'] = $pageTitle; } else { $timeSec = explode(".", microtime(TRUE)); $setParams['name'] = $pageTitle . '_' . date('is', $timeSec[0]) . $timeSec[1]; } $setParams['extends'] = $daoName[$addTo[0]][1]; $setParams['is_quick_config'] = 1; $priceSet = CRM_Upgrade_Snapshot_V4p2_Price_BAO_Set::create($setParams); CRM_Upgrade_Snapshot_V4p2_Price_BAO_Set::addTo($addTo[0], $addTo[2], $priceSet->id, 1); $fieldParams['price_set_id'] = $priceSet->id; if (!empty($options['optionGroup'])) { $fieldParams['html_type'] = 'Radio'; $fieldParams['is_required'] = 1; if ($addTo[0] == 'civicrm_event') { $query = "SELECT fee_label FROM civicrm_event where id =%1"; $fieldParams['name'] = $fieldParams['label'] = CRM_Core_DAO::singleValueQuery($query, array(1 => array($addTo[2], 'Integer'))); $defaultAmountColumn = 'default_fee_id'; } else { $options['membership'] = 1; $fieldParams['name'] = strtolower(CRM_Utils_String::munge("Contribution Amount", '_', 245)); $fieldParams['label'] = "Contribution Amount"; $defaultAmountColumn = 'default_amount_id'; $options['otherAmount'] = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionPage', $addTo[2], 'is_allow_other_amount'); if (!empty($options['otherAmount'])) { $fieldParams['is_required'] = 0; } } $fieldParams['option_label'] = $optionValue['label']; $fieldParams['option_amount'] = $optionValue['value']; $fieldParams['option_weight'] = $optionValue['weight']; $fieldParams['is_quick_config'] = $setParams['is_quick_config']; if ($defaultAmount = CRM_Core_DAO::getFieldValue($daoName[$addTo[0]][0], $addTo[2], $defaultAmountColumn)) { $fieldParams['default_option'] = array_search($defaultAmount, $optionValue['amount_id']); } $priceField = CRM_Upgrade_Snapshot_V4p2_Price_BAO_Field::create($fieldParams); } if (!empty($options['membership'])) { $dao = new CRM_Member_DAO_MembershipBlock(); $dao->entity_table = 'civicrm_contribution_page'; $dao->entity_id = $addTo[2]; if ($dao->find(TRUE)) { if ($dao->membership_types) { $fieldParams = array('name' => strtolower(CRM_Utils_String::munge("Membership Amount", '_', 245)), 'label' => "Membership Amount", 'is_required' => $dao->is_required, 'is_display_amounts' => $dao->display_min_fee, 'is_active' => $dao->is_active, 'price_set_id' => $priceSet->id, 'html_type' => 'Radio', 'weight' => 1); $membershipTypes = unserialize($dao->membership_types); $rowcount = 0; foreach ($membershipTypes as $membershipType => $autoRenew) { $membershipTypeDetail = CRM_Member_BAO_MembershipType::getMembershipTypeDetails($membershipType); $rowcount++; $fieldParams['option_label'][$rowcount] = $membershipTypeDetail['name']; $fieldParams['option_amount'][$rowcount] = $membershipTypeDetail['minimum_fee']; $fieldParams['option_weight'][$rowcount] = $rowcount; $fieldParams['membership_type_id'][$rowcount] = $membershipType; if ($membershipType == $dao->membership_type_default) { $fieldParams['default_option'] = $rowcount; } } $priceField = CRM_Upgrade_Snapshot_V4p2_Price_BAO_Field::create($fieldParams); $setParams = array('id' => $priceSet->id, 'extends' => CRM_Core_Component::getComponentID('CiviMember'), 'contribution_type_id' => CRM_Core_DAO::getFieldValue($daoName[$addTo[0]][0], $addTo[2], 'contribution_type_id')); CRM_Upgrade_Snapshot_V4p2_Price_BAO_Set::create($setParams); } } } if (!empty($options['otherAmount'])) { $fieldParams = array('name' => strtolower(CRM_Utils_String::munge("Other Amount", '_', 245)), 'label' => "Other Amount", 'is_required' => 0, 'is_display_amounts' => 0, 'is_active' => 1, 'price_set_id' => $priceSet->id, 'html_type' => 'Text', 'weight' => 3); $fieldParams['option_label'][1] = "Other Amount"; $fieldParams['option_amount'][1] = 1; $fieldParams['option_weight'][1] = 1; $priceField = CRM_Upgrade_Snapshot_V4p2_Price_BAO_Field::create($fieldParams); } }