private function getColumnValuesMerged($operation, $thisColumnValue, $columnToSumValue, $thisRow, $rowToSum)
{
switch ($operation) {
case 'skip':
$newValue = null;
break;
case 'max':
$newValue = max($thisColumnValue, $columnToSumValue);
break;
case 'min':
if (!$thisColumnValue) {
$newValue = $columnToSumValue;
} elseif (!$columnToSumValue) {
$newValue = $thisColumnValue;
} else {
$newValue = min($thisColumnValue, $columnToSumValue);
}
break;
case 'sum':
$newValue = $this->sumRowArray($thisColumnValue, $columnToSumValue);
break;
case 'uniquearraymerge':
if (is_array($thisColumnValue) && is_array($columnToSumValue)) {
foreach ($columnToSumValue as $columnSum) {
if (!in_array($columnSum, $thisColumnValue)) {
$thisColumnValue[] = $columnSum;
}
}
} elseif (!is_array($thisColumnValue) && is_array($columnToSumValue)) {
$thisColumnValue = $columnToSumValue;
}
$newValue = $thisColumnValue;
break;
default:
if (is_callable($operation)) {
return call_user_func($operation, $thisColumnValue, $columnToSumValue, $thisRow, $rowToSum);
}
throw new Exception("Unknown operation '{$operation}'.");
}
return $newValue;
}