You are here

protected function Migration::progressMessage in Migrate 7.2

Same name and namespace in other branches
  1. 6.2 includes/migration.inc \Migration::progressMessage()

Outputs a progress message, reflecting the current status of a migration process.

Parameters

int $result: Status of the process, represented by one of the Migration::RESULT_* constants.

3 calls to Migration::progressMessage()
Migration::checkStatus in includes/migration.inc
Standard top-of-loop stuff, common between rollback and import - check for exceptional conditions, and display feedback.
Migration::import in includes/migration.inc
Perform an import operation - migrate items from source to destination.
Migration::rollback in includes/migration.inc
Perform a rollback operation - remove migrated items from the destination.

File

includes/migration.inc, line 1156
Defines the base class for import/rollback processes.

Class

Migration
The base class for all import objects. This is where most of the smarts of the migrate module resides. Migrations are created by deriving from this class, and in the constructor (after calling parent::__construct()) initializing at a minimum the name,…

Code

protected function progressMessage($result) {
  $time = microtime(TRUE) - $this->lastfeedback;
  if ($time > 0) {
    $perminute = round(60 * $this->processed_since_feedback / $time);
    $time = round($time, 1);
  }
  else {
    $perminute = '?';
  }
  if ($this->status == Migration::STATUS_IMPORTING) {
    switch ($result) {
      case Migration::RESULT_COMPLETED:
        $basetext = "Processed !numitems (!created created, !updated updated, !failed failed, !ignored ignored) in !time sec (!perminute/min) - done with '!name'";
        $type = 'completed';
        break;
      case Migration::RESULT_FAILED:
        $basetext = "Processed !numitems (!created created, !updated updated, !failed failed, !ignored ignored) in !time sec (!perminute/min) - failure with '!name'";
        $type = 'failed';
        break;
      case Migration::RESULT_INCOMPLETE:
        $basetext = "Processed !numitems (!created created, !updated updated, !failed failed, !ignored ignored) in !time sec (!perminute/min) - continuing with '!name'";
        $type = 'status';
        break;
      case Migration::RESULT_STOPPED:
        $basetext = "Processed !numitems (!created created, !updated updated, !failed failed, !ignored ignored) in !time sec (!perminute/min) - stopped '!name'";
        $type = 'warning';
        break;
    }
  }
  else {
    switch ($result) {
      case Migration::RESULT_COMPLETED:
        $basetext = "Rolled back !numitems in !time sec (!perminute/min) - done with '!name'";
        $type = 'completed';
        break;
      case Migration::RESULT_FAILED:
        $basetext = "Rolled back !numitems in !time sec (!perminute/min) - failure with '!name'";
        $type = 'failed';
        break;
      case Migration::RESULT_INCOMPLETE:
        $basetext = "Rolled back !numitems in !time sec (!perminute/min) - continuing with '!name'";
        $type = 'status';
        break;
      case Migration::RESULT_STOPPED:
        $basetext = "Rolled back !numitems in !time sec (!perminute/min) - stopped '!name'";
        $type = 'warning';
        break;
    }
  }
  $numitems = $this->processed_since_feedback + $this->source
    ->getIgnored();
  $message = t($basetext, array(
    '!numitems' => $numitems,
    '!successes' => $this->successes_since_feedback,
    '!failed' => $this->processed_since_feedback - $this->successes_since_feedback,
    '!created' => $this->destination
      ->getCreated(),
    '!updated' => $this->destination
      ->getUpdated(),
    '!ignored' => $this->source
      ->getIgnored(),
    '!time' => $time,
    '!perminute' => $perminute,
    '!name' => $this->machineName,
  ));
  self::displayMessage($message, $type);

  // Report on lookup_cache hit rate. Only visible at 'debug' level.
  if ($result != Migration::RESULT_INCOMPLETE && !empty($this->counts['lookup_cache'])) {
    foreach ($this->counts['lookup_cache'] as $name => $tallies) {
      $tallies += array(
        'hit' => 0,
        'miss_hit' => 0,
        'miss_miss' => 0,
      );

      // Set defaults to avoid NOTICE.
      $sum = $tallies['hit'] + $tallies['miss_hit'] + $tallies['miss_miss'];
      self::displayMessage(t('Lookup cache: !mn SM=!name !hit hit, !miss_hit miss_hit, !miss_miss miss_miss (!total total).', array(
        '!mn' => $this->machineName,
        '!name' => $name,
        '!hit' => round(100 * $tallies['hit'] / $sum) . '%',
        '!miss_hit' => round(100 * $tallies['miss_hit'] / $sum) . '%',
        '!miss_miss' => round(100 * $tallies['miss_miss'] / $sum) . '%',
        '!total' => $sum,
      )), 'debug');
    }
    $this->counts['lookup_cache'] = array();
  }
  if ($result == Migration::RESULT_INCOMPLETE) {
    $this->lastfeedback = time();
    $this->processed_since_feedback = $this->successes_since_feedback = 0;
    $this->source
      ->resetStats();
    $this->destination
      ->resetStats();
  }
}