You are here

acsf_sj.install in Acquia Cloud Site Factory Connector 8

Same filename and directory in other branches
  1. 8.2 acsf_sj/acsf_sj.install

Provides requirements for installing the ACSF Scheduled Jobs module.

File

acsf_sj/acsf_sj.install
View source
<?php

/**
 * @file
 * Provides requirements for installing the ACSF Scheduled Jobs module.
 */
use Symfony\Component\Process\Process;

/**
 * Implements hook_requirements().
 */
function acsf_sj_requirements($phase) {
  $requirements = [];
  if ($phase == 'install' || $phase == 'runtime') {
    $binary_path = _acsf_sj_install_get_sjadd_path();
    if ($binary_path == NULL) {
      $requirements['acsf_sj_sjadd'] = [
        'title' => 'ACSF SJ binary',
        'severity' => REQUIREMENT_WARNING,
        'description' => 'The installation path for the ACSF SJ binary cannot be determined.',
      ];
    }
    elseif (!is_executable($binary_path)) {
      $requirements['acsf_sj_sjadd'] = [
        'title' => 'ACSF SJ binary validation',
        'severity' => REQUIREMENT_WARNING,
        'description' => "{$binary_path} is not executable.",
      ];
    }
    else {
      $process = new Process($binary_path);
      $success = FALSE;
      $message = '';
      try {
        $process
          ->run();
        $stdout = $process
          ->getOutput();
        $stderr = $process
          ->getErrorOutput();
        if (strpos($stderr, "Usage: {$binary_path}") !== FALSE) {
          $success = TRUE;
        }
        else {
          $message = 'exit code: ' . $process
            ->getExitCode() . "\nstdout: {$stdout}\nstderr: {$stderr}";
        }
      } catch (\Exception $e) {
        $message = $e
          ->getMessage();
        $success = FALSE;
      }
      if (!$success) {
        $requirements['acsf_sj_sjadd_execution'] = [
          'title' => 'ACSF SJ sjadd execution',
          'severity' => REQUIREMENT_WARNING,
          'description' => 'The binary "sjadd" cannot be executed: ' . $message,
        ];
      }
    }
  }
  return $requirements;
}

/**
 * Returns the path to the sjadd binary.
 *
 * @return string|null
 *   Returns sjadd path if $HOME exists, NULL otherwise.
 */
function _acsf_sj_install_get_sjadd_path() {
  return isset($_ENV['HOME']) ? $_ENV['HOME'] . '/acquia_sj/sjadd' : NULL;
}

Functions

Namesort descending Description
acsf_sj_requirements Implements hook_requirements().
_acsf_sj_install_get_sjadd_path Returns the path to the sjadd binary.