You are here

public function MigrateDestinationCRMCoreActivity::import in CRM Core 7

Import a single activity.

Parameters

$activity: Activity object to build. Prefilled with any fields mapped in the Migration.

$row: Raw source data object - passed through to prepare/complete handlers.

Return value

array Array of key fields (activity_id only in this case) of the activity that was saved if successful. FALSE on failure.

Overrides MigrateDestination::import

File

modules/crm_core_activity/includes/crm_core_activity.migrate.inc, line 75

Class

MigrateDestinationCRMCoreActivity

Code

public function import(stdClass $activity, stdClass $row) {
  $migration = Migration::currentMigration();
  if (isset($row->migrate_map_destid1)) {

    // This is an update to an existing contact.
    if (isset($activity->activity_id)) {
      if ($activity->activity_id != $row->migrate_map_destid1) {
        $string = "Incoming activity_id !activity_id and map destination activity_id !destid1 don't match";
        $params = array(
          '!activity_id' => $activity->activity_id,
          '!destid1' => $row->migrate_map_destid1,
        );
        throw new MigrateException(t($string), $params);
      }
    }
    else {
      $activity->activity_id = $row->migrate_map_destid1;
    }
  }
  if ($migration
    ->getSystemOfRecord() == Migration::DESTINATION) {
    if (!isset($activity->activity_id)) {
      throw new MigrateException(t('System-of-record is DESTINATION, but no destination activity_id provided'));
    }
    $old_activity = crm_core_activity_load($activity->activity_id);
    if (empty($old_activity)) {
      $string = 'System-of-record is DESTINATION, but activity !activity_id does not exist';
      $params = array(
        '!activity_id' => $activity->activity_id,
      );
      throw new MigrateException(t($string), $params);
    }
  }
  if (!isset($activity->type)) {

    // Default the type to our designated destination bundle (by doing this
    // conditionally, we permit some flexibility in terms of implementing
    // migrations which can affect more than one type).
    $activity->type = $this->bundle;
  }

  // Set default properties.
  if ($migration
    ->getSystemOfRecord() == Migration::SOURCE) {
    if (!isset($activity->created)) {
      $activity->created = REQUEST_TIME;
    }
  }
  $this
    ->prepare($activity, $row);
  if (isset($activity->activity_id)) {
    $updating = TRUE;
  }
  else {
    $updating = FALSE;
  }
  migrate_instrument_start('activity_save');
  crm_core_activity_save($activity);
  migrate_instrument_stop('activity_save');
  if (isset($activity->activity_id)) {
    if ($updating) {
      $this->numUpdated++;
    }
    else {
      $this->numCreated++;
    }
    $return = array(
      $activity->activity_id,
    );
  }
  else {
    $return = FALSE;
  }
  $this
    ->complete($activity, $row);
  return $return;
}