}
if (isset($fv['merge_same_address'])) {
- $this->mergeSameAddress($rows);
+ self::mergeSameAddress($rows);
$individualFormat = TRUE;
}
/**
* @param array $rows
*/
- public function mergeSameAddress(&$rows) {
+ static public function mergeSameAddress(&$rows) {
$uniqueAddress = array();
foreach (array_keys($rows) as $rowID) {
// load complete address as array key
return $tokenFields;
}
- /**
- * Merge contacts with the Same address to get one shared label
- * @param unknown_type $rows
- */
- public function mergeSameAddress(&$rows) {
- $uniqueAddress = array();
- foreach (array_keys($rows) as $rowID) {
- // load complete address as array key
- $address =
- trim($rows[$rowID]['street_address']) . trim($rows[$rowID]['city']) . trim($rows[$rowID]['state_province']) . trim($rows[$rowID]['postal_code']) . trim($rows[$rowID]['country']);
- if (isset($rows[$rowID]['last_name'])) {
- $name = $rows[$rowID]['last_name'];
- }
- else {
- $name = $rows[$rowID]['display_name'];
- }
- $formatted = array(
- 'first_name' => $rows[$rowID]['first_name'],
- 'individual_prefix' => $rows[$rowID]['individual_prefix']
- );
- $format = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, 'display_name_format');
- $firstNameWithPrefix = CRM_Utils_Address::format($formatted, $format, FALSE, FALSE, TRUE);
- $firstNameWithPrefix = trim($firstNameWithPrefix);
-
- // fill uniqueAddress array with last/first name tree
- if (isset($uniqueAddress[$address])) {
- $uniqueAddress[$address]['names'][$name][$firstNameWithPrefix]['first_name'] = $rows[$rowID]['first_name'];
- $uniqueAddress[$address]['names'][$name][$firstNameWithPrefix]['addressee_display'] = $rows[$rowID]['addressee_display'];
- // drop unnecessary rows
- unset($rows[$rowID]);
- // this is the first listing at this address
- }
- else {
- $uniqueAddress[$address]['ID'] = $rowID;
- $uniqueAddress[$address]['names'][$name][$firstNameWithPrefix]['first_name'] = $rows[$rowID]['first_name'];
- $uniqueAddress[$address]['names'][$name][$firstNameWithPrefix]['addressee_display'] = $rows[$rowID]['addressee_display'];
- }
- }
- foreach ($uniqueAddress as $address => $data) {
- // copy data back to $rows
- $count = 0;
- // one last name list per row
- foreach ($data['names'] as $last_name => $first_names) {
- // too many to list
- if ($count > 2) {
- break;
- }
- if(count($first_names) == 1) {
- $family = $first_names[current(array_keys($first_names))]['addressee_display'];
- }
- else {
- // collapse the tree to summarize
- $family = trim(implode(" & ", $first_names) . " " . $last_name);
- }
- if ($count) {
- $processedNames .= "\n" . $family;
- }
- else {
- // build display_name string
- $processedNames = $family;
- }
- $count++;
- }
- $rows[$data['ID']]['addressee'] = $rows[$data['ID']]['addressee_display'] = $rows[$data['ID']]['display_name'] = $processedNames;
- }
- }
/**
* @param $rows