You are here

protected function wf_crm_webform_base::matchWebsiteTypes 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::matchWebsiteTypes()

Organize values according to website types

Parameters

integer $c:

string $ent:

array $values:

Return value

array $reorderedArray

1 call to wf_crm_webform_base::matchWebsiteTypes()
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 413

Class

wf_crm_webform_base
Class wf_crm_webform_base

Code

protected function matchWebsiteTypes($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 ($value[$ent . '_type_id'] == $setting[$ent . '_type_id']) {
        $reorderedArray[$key] = $value;
        $valueFound = TRUE;
        unset($values[$key]);
        break;
      }
      else {
        if (empty($setting['website_type_id'])) {

          // for 'user-select' fields
          $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;
}