You are here

function ultimate_cron_background_process_shutdown in Ultimate Cron 7.2

Same name and namespace in other branches
  1. 8 ultimate_cron.module \ultimate_cron_background_process_shutdown()
  2. 6 ultimate_cron.module \ultimate_cron_background_process_shutdown()
  3. 7 ultimate_cron.module \ultimate_cron_background_process_shutdown()

Implements hook_background_process_shutdown().

File

./ultimate_cron.background_process.inc, line 10
Hooks for legacy handling of Background Process 1.x.

Code

function ultimate_cron_background_process_shutdown($process = NULL, $msg = NULL) {

  // Some sanity checking.
  if (!$process || !is_object($process) || empty($process->callback)) {
    return;
  }

  // We only handle the legacy callback here.
  if (!is_array($process->callback) || $process->callback[0] !== 'UltimateCronBackgroundProcessLegacyLauncher' || $process->callback[1] !== 'job_callback') {
    return;
  }

  // Close the Ultimate Cron log entry.
  list($name, $lock_id) = $process->args;

  // If someone has set the dont log signal, it means that they
  // are handling the shutdown of the log.
  $job = _ultimate_cron_job_load($name);
  if (!$job) {
    return;
  }
  if ($job
    ->getSignal('background_process_legacy_dont_log')) {

    // Resend within this request, just in case.
    $job
      ->sendSignal('background_process_legacy_dont_log');
    return;
  }
  $log_entry = $job
    ->resumeLog($lock_id);

  // Rewrite message to conform with Ultimate Cron style, if this is
  // a manual unlock.
  global $user;
  $username = !empty($user->uid) ? $user->name : '';
  if ($msg == t('Manually unlocked by !name', array(
    '!name' => $username,
  ))) {
    $username = !empty($user->uid) ? $user->name : t('anonymous');
    $msg = t('@name manually unlocked by user @username (@uid)', array(
      '@name' => $name,
      '@username' => $username,
      '@uid' => !empty($user->uid) ? $user->uid : 0,
    ));
  }
  $log_entry
    ->log('bgpl_launcher', $msg, array(), WATCHDOG_NOTICE);
  $log_entry
    ->finish();
}