protected function wf_crm_webform_base::matchLocationTypes in Webform CiviCRM Integration 7.4
Same name and namespace in other branches
- 7.5 includes/wf_crm_webform_base.inc \wf_crm_webform_base::matchLocationTypes()
Organize values according to location types
Parameters
integer $c:
string $ent:
array $values:
Return value
array $reorderedArray
1 call to wf_crm_webform_base::matchLocationTypes()
- wf_crm_webform_base::reorderByLocationType in includes/
wf_crm_webform_base.inc - Reorder returned results according to settings chosen in wf_civicrm backend
File
- includes/
wf_crm_webform_base.inc, line 366
Class
- wf_crm_webform_base
- Class wf_crm_webform_base
Code
protected function matchLocationTypes($c, $ent, &$values) {
// create temporary settings array to include 'user-select' fields
// on the right place in array
$settingsArray = $this
->add_user_select_field_placeholder($ent, $this->settings['data']['contact'][$c]);
$userSelectIndex = 0;
// Go through the array and match up locations by type
// Put placeholder 'user-select' where location_type_id is empty for second pass
foreach ($settingsArray[$ent] as $setting) {
$valueFound = false;
foreach ($values as $key => $value) {
if (in_array($ent, array(
'address',
'email',
)) && $value['location_type_id'] == $setting['location_type_id'] || $value['location_type_id'] == $setting['location_type_id'] && (!isset($setting[$ent . '_type_id']) || $value[$ent . '_type_id'] == $setting[$ent . '_type_id'])) {
$reorderedArray[$key] = $value;
$valueFound = true;
unset($values[$key]);
break;
}
else {
if (empty($setting['location_type_id'])) {
$valueFound = true;
$reorderedArray['us' . $userSelectIndex] = 'user-select';
$userSelectIndex++;
break;
}
}
}
// always keep number of returned values equal to chosen settings
// if value is not found then set an empty array
if (!$valueFound) {
$reorderedArray[] = array();
}
}
return $reorderedArray;
}