Skip to content

Commit

Permalink
Merge pull request #21583 from mattwire/propertybagsimplebits
Browse files Browse the repository at this point in the history
Add billingStateProvince and standardized property names
  • Loading branch information
mattwire authored Jan 20, 2022
2 parents b92fc46 + f7519c3 commit d8781c8
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 7 deletions.
42 changes: 39 additions & 3 deletions Civi/Payment/PropertyBag.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,23 @@ class PropertyBag implements \ArrayAccess {

protected static $propMap = [
'amount' => TRUE,
'total_amount' => 'amount',
'billingStreetAddress' => TRUE,
'billing_street_address' => 'billingStreetAddress',
'street_address' => 'billingStreetAddress',
'billingSupplementalAddress1' => TRUE,
'billingSupplementalAddress2' => TRUE,
'billingSupplementalAddress3' => TRUE,
'billingCity' => TRUE,
'billing_city' => 'billingCity',
'city' => 'billingCity',
'billingPostalCode' => TRUE,
'billing_postal_code' => 'billingPostalCode',
'postal_code' => 'billingPostalCode',
'billingCounty' => TRUE,
'billingStateProvince' => TRUE,
'billing_state_province' => 'billingStateProvince',
'state_province' => 'billingStateProvince',
'billingCountry' => TRUE,
'contactID' => TRUE,
'contact_id' => 'contactID',
Expand Down Expand Up @@ -258,13 +268,18 @@ protected function handleLegacyPropNames($prop, $silent = FALSE) {
if ($newName === NULL && substr($prop, -2) === '-' . \CRM_Core_BAO_LocationType::getBilling()
&& isset(static::$propMap[substr($prop, 0, -2)])
) {
$newName = substr($prop, 0, -2);
$billingAddressProp = substr($prop, 0, -2);
$newName = static::$propMap[$billingAddressProp] ?? NULL;
if ($newName === TRUE) {
// Good, modern name.
return $billingAddressProp;
}
}

if ($newName === NULL) {
if ($silent) {
// Only for use by offsetExists
return;
return NULL;
}
throw new \InvalidArgumentException("Unknown property '$prop'.");
}
Expand Down Expand Up @@ -300,7 +315,7 @@ protected function get($prop, $label) {
*
* @return PropertyBag $this object so you can chain set setters.
*/
protected function set($prop, $label, $value) {
protected function set($prop, $label = 'default', $value) {
$this->props[$label][$prop] = $value;
return $this;
}
Expand Down Expand Up @@ -591,6 +606,27 @@ public function setBillingCounty($input, $label = 'default') {
return $this->set('billingCounty', $label, (string) $input);
}

/**
* BillingStateProvince getter.
*
* @return string
*/
public function getBillingStateProvince($label = 'default') {
return $this->get('billingStateProvince', $label);
}

/**
* BillingStateProvince setter.
*
* Nb. we can't validate this unless we have the country ID too, so we don't.
*
* @param string $input
* @param string $label e.g. 'default'
*/
public function setBillingStateProvince($input, $label = 'default') {
return $this->set('billingStateProvince', $label, (string) $input);
}

/**
* BillingCountry getter.
*
Expand Down
10 changes: 6 additions & 4 deletions tests/phpunit/Civi/Payment/PropertyBagTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -409,9 +409,10 @@ public function testEmpty() {
}

/**
*
* Data provider for testOtherParams
* $prop, $legacy_names, $valid_values, $invalid_values
*
* return array
*/
public function otherParamsDataProvider() {
$valid_bools = [['0' , FALSE], ['', FALSE], [0, FALSE], [FALSE, FALSE], [TRUE, TRUE], [1, TRUE], ['1', TRUE]];
Expand All @@ -420,13 +421,14 @@ public function otherParamsDataProvider() {
$valid_ints = [[123, 123], ['123', 123]];
$invalid_ints = [-1, 0, NULL, ''];
return [
['billingStreetAddress', [], $valid_strings_inc_null, []],
['billingStreetAddress', ['billing_street_address', 'street_address', 'billing_street_address-5'], $valid_strings_inc_null, []],
['billingSupplementalAddress1', [], $valid_strings_inc_null, []],
['billingSupplementalAddress2', [], $valid_strings_inc_null, []],
['billingSupplementalAddress3', [], $valid_strings_inc_null, []],
['billingCity', [], $valid_strings_inc_null, []],
['billingPostalCode', [], $valid_strings_inc_null, []],
['billingCity', ['billing_city', 'city', 'billing_city-5'], $valid_strings_inc_null, []],
['billingPostalCode', ['billing_postal_code', 'postal_code', 'billing_postal_code-5'], $valid_strings_inc_null, []],
['billingCounty', [], $valid_strings_inc_null, []],
['billingStateProvince', ['billing_state_province', 'state_province', 'billing_state_province-5'], $valid_strings_inc_null, []],
['billingCountry', [], [['GB', 'GB'], ['NZ', 'NZ']], ['XX', '', NULL, 0]],
['contributionID', ['contribution_id'], $valid_ints, $invalid_ints],
['contributionRecurID', ['contribution_recur_id'], $valid_ints, $invalid_ints],
Expand Down

0 comments on commit d8781c8

Please sign in to comment.