You are here

public function DatabaseCollation::calculateScore in Site Audit 8.3

.

Overrides SiteAuditCheckBase::calculateScore

File

src/Plugin/SiteAuditCheck/DatabaseCollation.php, line 88

Class

DatabaseCollation
Provides the CronLast Check.

Namespace

Drupal\site_audit\Plugin\SiteAuditCheck

Code

public function calculateScore() {
  $connection = Database::getConnection();
  $query = \Drupal::database()
    ->select('information_schema.TABLES', 'ist');
  $query
    ->addField('ist', 'TABLE_NAME', 'name');
  $query
    ->addField('ist', 'TABLE_COLLATION', 'collation');
  $query
    ->condition('ist.TABLE_COLLATION', [
    'utf8_general_ci',
    'utf8_unicode_ci',
    'utf8_bin',
    'utf8mb4_general_ci',
  ], 'NOT IN');
  $query
    ->condition('ist.table_schema', $connection
    ->getConnectionOptions()['database']);
  $result = $query
    ->execute();
  $count = 0;
  $warn = FALSE;
  while ($row = $result
    ->fetchAssoc()) {
    $count++;
    $this->registry->collation_tables[$row['name']] = $row['collation'];

    // Special case for old imports.
    if ($row['collation'] == 'latin1_swedish_ci') {
      $warn = TRUE;
    }
  }
  if ($count === 0) {
    return SiteAuditCheckBase::AUDIT_CHECK_SCORE_PASS;
  }
  if ($warn) {
    return SiteAuditCheckBase::AUDIT_CHECK_SCORE_WARN;
  }
  return SiteAuditCheckBase::AUDIT_CHECK_SCORE_INFO;
}