You are here

protected function wf_crm_webform_base::matchLocationTypes in Webform CiviCRM Integration 7.4

Same name and namespace in other branches
  1. 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;
}