You are here

public function StatusSystem::calculateScore in Site Audit 8.3

.

Overrides SiteAuditCheckBase::calculateScore

File

src/Plugin/SiteAuditCheck/StatusSystem.php, line 114

Class

StatusSystem
Provides the StatusSystem Check.

Namespace

Drupal\site_audit\Plugin\SiteAuditCheck

Code

public function calculateScore() {

  // See system/system.admin.inc function system_status().
  // Load .install files.
  include_once DRUPAL_ROOT . '/core/includes/install.inc';
  drupal_load_updates();

  // Check run-time requirements and status information.
  $this->registry->requirements = \Drupal::moduleHandler()
    ->invokeAll('requirements', [
    'runtime',
  ]);
  usort($this->registry->requirements, function ($a, $b) {
    if (!isset($a['weight'])) {
      if (!isset($b['weight'])) {
        return strcmp($a['title'], $b['title']);
      }
      return -$b['weight'];
    }
    return isset($b['weight']) ? $a['weight'] - $b['weight'] : $a['weight'];
  });
  $this->percentOverride = 0;
  $requirements_with_severity = [];
  foreach ($this->registry->requirements as $key => $value) {
    if (isset($value['severity'])) {
      $requirements_with_severity[$key] = $value;
    }
  }
  $score_each = 100 / count($requirements_with_severity);
  $worst_severity = REQUIREMENT_INFO;
  foreach ($this->registry->requirements as $requirement) {
    if (isset($requirement['severity'])) {
      if ($requirement['severity'] > $worst_severity) {
        $worst_severity = $requirement['severity'];
      }
      if ($requirement['severity'] == REQUIREMENT_WARNING) {
        $this->percentOverride += $score_each / 2;
      }
      elseif ($requirement['severity'] != REQUIREMENT_ERROR) {
        $this->percentOverride += $score_each;
      }
    }
  }
  $this->percentOverride = round($this->percentOverride);
  if ($this->percentOverride > 80) {
    return SiteAuditCheckBase::AUDIT_CHECK_SCORE_PASS;
  }
  elseif ($this->percentOverride > 60) {
    return SiteAuditCheckBase::AUDIT_CHECK_SCORE_WARN;
  }
  return SiteAuditCheckBase::AUDIT_CHECK_SCORE_FAIL;
}