ActivityModel::mergeActivities PHP Method

mergeActivities() public method

public mergeActivities ( $OldActivity, $NewActivity, array $Options = [] ) : array
$OldActivity
$NewActivity
$Options array
return array
    public function mergeActivities($OldActivity, $NewActivity, $Options = [])
    {
        // Group the two activities together.
        $ActivityUserIDs = val('ActivityUserIDs', $OldActivity['Data'], []);
        $ActivityUserCount = val('ActivityUserID_Count', $OldActivity['Data'], 0);
        array_unshift($ActivityUserIDs, $OldActivity['ActivityUserID']);
        if (($i = array_search($NewActivity['ActivityUserID'], $ActivityUserIDs)) !== false) {
            unset($ActivityUserIDs[$i]);
            $ActivityUserIDs = array_values($ActivityUserIDs);
        }
        $ActivityUserIDs = array_unique($ActivityUserIDs);
        if (count($ActivityUserIDs) > self::$MaxMergeCount) {
            array_pop($ActivityUserIDs);
            $ActivityUserCount++;
        }
        $RegardingUserCount = 0;
        if (val('RegardingUserID', $NewActivity)) {
            $RegardingUserIDs = val('RegardingUserIDs', $OldActivity['Data'], []);
            $RegardingUserCount = val('RegardingUserID_Count', $OldActivity['Data'], 0);
            array_unshift($RegardingUserIDs, $OldActivity['RegardingUserID']);
            if (($i = array_search($NewActivity['RegardingUserID'], $RegardingUserIDs)) !== false) {
                unset($RegardingUserIDs[$i]);
                $RegardingUserIDs = array_values($RegardingUserIDs);
            }
            if (count($RegardingUserIDs) > self::$MaxMergeCount) {
                array_pop($RegardingUserIDs);
                $RegardingUserCount++;
            }
        }
        $RecordIDs = [];
        if ($OldActivity['RecordID']) {
            $RecordIDs[] = $OldActivity['RecordID'];
        }
        $RecordIDs = array_unique($RecordIDs);
        $NewActivity = array_merge($OldActivity, $NewActivity);
        if (count($ActivityUserIDs) > 0) {
            $NewActivity['Data']['ActivityUserIDs'] = $ActivityUserIDs;
        }
        if ($ActivityUserCount) {
            $NewActivity['Data']['ActivityUserID_Count'] = $ActivityUserCount;
        }
        if (count($RecordIDs) > 0) {
            $NewActivity['Data']['RecordIDs'] = $RecordIDs;
        }
        if (isset($RegardingUserIDs) && count($RegardingUserIDs) > 0) {
            $NewActivity['Data']['RegardingUserIDs'] = $RegardingUserIDs;
            if ($RegardingUserCount) {
                $NewActivity['Data']['RegardingUserID_Count'] = $RegardingUserCount;
            }
        }
        return $NewActivity;
    }