[#14] implementing individual prefix mapping

This commit is contained in:
B. Endres 2020-01-31 13:11:32 +01:00
parent 48116e5c98
commit 24801bb6bc
4 changed files with 75 additions and 7 deletions

View file

@ -90,6 +90,14 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form {
*/
protected static $_genderOptions = NULL;
/**
* @var array
*
* A static cache of retrieved prefixes found within
* static::getGenderOptions().
*/
protected static $_prefixOptions = NULL;
/**
* @var array
*
@ -267,6 +275,28 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form {
TRUE
);
$this->add(
'select',
'prefix_male',
E::ts('Prefix option for submitted value "male"'),
static::getPrefixOptions(),
FALSE
);
$this->add(
'select',
'prefix_female',
E::ts('Prefix option for submitted value "female"'),
static::getPrefixOptions(),
FALSE
);
$this->add(
'select',
'prefix_other',
E::ts('Prefix option for submitted value "other"'),
static::getPrefixOptions(),
FALSE
);
$payment_instruments = CRM_Twingle_Profile::paymentInstruments();
$this->assign('payment_instruments', $payment_instruments);
foreach ($payment_instruments as $pi_name => $pi_label) {
@ -593,7 +623,7 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form {
}
/**
* Retrieves campaigns present within the system as options for select form
* Retrieves genders present within the system as options for select form
* elements.
*
* @return array
@ -619,6 +649,33 @@ class CRM_Twingle_Form_Profile extends CRM_Core_Form {
return static::$_genderOptions;
}
/**
* Retrieves prefixes present within the system as options for select form
* elements.
*
* @return array
*
* @throws \CiviCRM_API3_Exception
*/
public static function getPrefixOptions() {
if (!isset(static::$_prefixOptions)) {
static::$_prefixOptions = array('' => E::ts('none'));
$query = civicrm_api3('OptionValue', 'get', array(
'option.limit' => 0,
'option_group_id' => 'individual_prefix',
'is_active' => 1,
'return' => array(
'value',
'label',
),
));
foreach ($query['values'] as $prefix) {
static::$_prefixOptions[$prefix['value']] = $prefix['label'];
}
}
return static::$_prefixOptions;
}
/**
* Retrieves CiviSEPA creditors as options for select form elements.
*

View file

@ -208,6 +208,9 @@ class CRM_Twingle_Profile {
'gender_male',
'gender_female',
'gender_other',
'prefix_male',
'prefix_female',
'prefix_other',
'newsletter_groups',
'postinfo_groups',
'donation_receipt_groups',

View file

@ -384,6 +384,14 @@ function civicrm_api3_twingle_donation_Submit($params) {
}
}
// Get the prefix ID defined within the profile
if (!empty($params['user_gender'])) {
$prefix_id = (int) $profile->getAttribute('prefix_' . $params['user_gender']);
if ($prefix_id) {
$contact_data['prefix_id'] = $prefix_id;
}
}
// Add custom field values.
if (!empty($custom_fields['Contact'])) {
$contact_data += $custom_fields['Contact'];

View file

@ -165,16 +165,16 @@
{/if}
<tr class="crm-section">
<td class="label">{$form.gender_male.label}</td>
<td class="content">{$form.gender_male.html}</td>
<td class="label">{ts domain="de.systopia.twingle"}Gender/Prefix for value 'male'{/ts}</td>
<td class="content">{$form.gender_male.html} / {$form.prefix_male.html}</td>
</tr>
<tr class="crm-section">
<td class="label">{$form.gender_female.label}</td>
<td class="content">{$form.gender_female.html}</td>
<td class="label">{ts domain="de.systopia.twingle"}Gender/Prefix for value 'female'{/ts}</td>
<td class="content">{$form.gender_female.html} / {$form.prefix_female.html}</td>
</tr>
<tr class="crm-section">
<td class="label">{$form.gender_other.label}</td>
<td class="content">{$form.gender_other.html}</td>
<td class="label">{ts domain="de.systopia.twingle"}Gender/Prefix for value 'other'{/ts}</td>
<td class="content">{$form.gender_other.html} / {$form.prefix_other.html}</td>
</tr>
</table>