Skip to content

Commit

Permalink
Merge pull request #18739 from eileenmcnaughton/ef
Browse files Browse the repository at this point in the history
[Ref] Minor code extraction
  • Loading branch information
eileenmcnaughton authored Oct 19, 2020
2 parents 137e207 + e944858 commit 413d1d8
Showing 1 changed file with 55 additions and 50 deletions.
105 changes: 55 additions & 50 deletions CRM/Price/BAO/PriceSet.php
Original file line number Diff line number Diff line change
Expand Up @@ -673,7 +673,7 @@ public static function processAmount($fields, &$params, &$lineItem, $priceSetID
continue;
}

list($params, $lineItem) = self::getLine($params, $lineItem, $priceSetID, $field, $id);
[$params, $lineItem] = self::getLine($params, $lineItem, $priceSetID, $field, $id);
}

$amount_level = [];
Expand Down Expand Up @@ -884,55 +884,7 @@ public static function buildPriceSet(&$form) {
// Call the buildAmount hook.
CRM_Utils_Hook::buildAmount($component, $form, $feeBlock);

// CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions
$adminFieldVisible = FALSE;
if (CRM_Core_Permission::check('administer CiviCRM')) {
$adminFieldVisible = TRUE;
}

$hideAdminValues = TRUE;
if (CRM_Core_Permission::check('edit contributions')) {
$hideAdminValues = FALSE;
}

foreach ($feeBlock as $id => $field) {
if (CRM_Utils_Array::value('visibility', $field) == 'public' ||
(CRM_Utils_Array::value('visibility', $field) == 'admin' && $adminFieldVisible == TRUE) ||
!$validFieldsOnly
) {
$options = $field['options'] ?? NULL;
if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') {
$userid = $form->getVar('_membershipContactID');
$checklifetime = self::checkCurrentMembership($options, $userid);
if ($checklifetime) {
$form->assign('ispricelifetime', TRUE);
}
}

$formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership'];

if (!is_array($options) || !in_array($id, $validPriceFieldIds)) {
continue;
}
elseif ($hideAdminValues && !in_array($className, $formClasses)) {
foreach ($options as $key => $currentOption) {
if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) {
unset($options[$key]);
}
}
}
if (!empty($options)) {
CRM_Price_BAO_PriceField::addQuickFormElement($form,
'price_' . $field['id'],
$field['id'],
FALSE,
CRM_Utils_Array::value('is_required', $field, FALSE),
NULL,
$options
);
}
}
}
self::addPriceFieldsToForm($form, $feeBlock, $validFieldsOnly, $className, $validPriceFieldIds);
}

/**
Expand Down Expand Up @@ -1771,4 +1723,57 @@ public static function getLine(&$params, &$lineItem, $priceSetID, $field, $id):
return [$params, $lineItem];
}

/**
* Add the relevant price fields to the form.
*
* @param \CRM_Core_Form $form
* @param array $feeBlock
* @param bool $validFieldsOnly
* @param string $className
* @param array $validPriceFieldIds
*/
protected static function addPriceFieldsToForm(CRM_Core_Form $form, $feeBlock, bool $validFieldsOnly, string $className, array $validPriceFieldIds) {
$hideAdminValues = !CRM_Core_Permission::check('edit contributions');
// CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions
$adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM');
foreach ($feeBlock as $id => $field) {
if (CRM_Utils_Array::value('visibility', $field) == 'public' ||
(CRM_Utils_Array::value('visibility', $field) == 'admin' && $adminFieldVisible == TRUE) ||
!$validFieldsOnly
) {
$options = $field['options'] ?? NULL;
if ($className == 'CRM_Contribute_Form_Contribution_Main' && $component = 'membership') {
$userid = $form->getVar('_membershipContactID');
$checklifetime = self::checkCurrentMembership($options, $userid);
if ($checklifetime) {
$form->assign('ispricelifetime', TRUE);
}
}

$formClasses = ['CRM_Contribute_Form_Contribution', 'CRM_Member_Form_Membership'];

if (!is_array($options) || !in_array($id, $validPriceFieldIds)) {
continue;
}
elseif ($hideAdminValues && !in_array($className, $formClasses)) {
foreach ($options as $key => $currentOption) {
if ($currentOption['visibility_id'] == CRM_Price_BAO_PriceField::getVisibilityOptionID('admin')) {
unset($options[$key]);
}
}
}
if (!empty($options)) {
CRM_Price_BAO_PriceField::addQuickFormElement($form,
'price_' . $field['id'],
$field['id'],
FALSE,
CRM_Utils_Array::value('is_required', $field, FALSE),
NULL,
$options
);
}
}
}
}

}

0 comments on commit 413d1d8

Please sign in to comment.