You are here

class ContentFieldInstances in Site Audit 8.3

Provides the ContentFieldInstances Check.

Plugin annotation


@SiteAuditCheck(
 id = "content_field_instances",
 name = @Translation("Field instance counts"),
 description = @Translation("For each bundle, entity and instance, get the count of populated fields."),
 report = "content"
)

Hierarchy

Expanded class hierarchy of ContentFieldInstances

File

src/Plugin/SiteAuditCheck/ContentFieldInstances.php, line 17

Namespace

Drupal\site_audit\Plugin\SiteAuditCheck
View source
class ContentFieldInstances extends SiteAuditCheckBase {

  /**
   * {@inheritdoc}.
   */
  public function getResultFail() {
  }

  /**
   * {@inheritdoc}.
   */
  public function getResultInfo() {
    $table_rows = [];
    foreach ($this->registry->field_instance_counts as $bundle_name => $entity_types) {
      foreach ($entity_types as $entity_type => $fields) {
        foreach ($fields as $field_name => $count) {
          $table_rows[] = [
            $entity_type,
            $field_name,
            $bundle_name,
            $count,
          ];
        }
      }
    }
    $header = [
      $this
        ->t('Entity Type'),
      $this
        ->t('Field Name'),
      $this
        ->t('Bundle Name'),
      $this
        ->t('Count'),
    ];
    return [
      '#theme' => 'table',
      '#class' => 'table-condensed',
      '#header' => $header,
      '#rows' => $table_rows,
    ];
  }

  /**
   * {@inheritdoc}.
   */
  public function getResultPass() {
  }

  /**
   * {@inheritdoc}.
   */
  public function getResultWarn() {
  }

  /**
   * {@inheritdoc}.
   */
  public function getAction() {
  }

  /**
   * {@inheritdoc}.
   */
  public function calculateScore() {
    if (!isset($this->registry->fields)) {

      // We need to calculate, so call the class that does it.
      $this
        ->checkInvokeCalculateScore('content_field_count');
    }
    $map = \Drupal::service('entity_field.manager')
      ->getFieldMap();
    $this->registry->field_instance_counts = [];
    foreach ($map as $entity => $fields) {
      $bundle_column_name = \Drupal::service('entity_type.manager')
        ->getDefinition($entity)
        ->getKey('bundle');
      foreach ($fields as $field => $description) {
        if (!in_array($field, array_keys($this->registry->fields))) {
          continue;
        }
        foreach ($description['bundles'] as $bundle) {
          if ($description['type'] == 'address') {

            // Directly query tables for Address fields.
            $database = \Drupal\Core\Database\Database::getConnection();
            $table = $entity . '__' . $field;
            $query = $database
              ->select($table);

            // Address fields are configured by country code.
            $query
              ->condition($field . '_country_code', NULL, 'IS NOT NULL')
              ->condition('bundle', $bundle);
            $field_count = $query
              ->countQuery()
              ->execute()
              ->fetchField();
          }
          else {
            $query = \Drupal::entityQuery($entity);
            if (!empty($bundle_column_name)) {
              $query
                ->condition($bundle_column_name, $bundle);
            }
            $query
              ->exists($field)
              ->count();
            $field_count = $query
              ->execute();
          }
          $this->registry->field_instance_counts[$bundle][$entity][$field] = $field_count;
        }
      }
    }
    return SiteAuditCheckBase::AUDIT_CHECK_SCORE_INFO;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ContentFieldInstances::calculateScore public function . Overrides SiteAuditCheckBase::calculateScore
ContentFieldInstances::getAction public function . Overrides SiteAuditCheckBase::getAction
ContentFieldInstances::getResultFail public function . Overrides SiteAuditCheckBase::getResultFail
ContentFieldInstances::getResultInfo public function . Overrides SiteAuditCheckBase::getResultInfo
ContentFieldInstances::getResultPass public function . Overrides SiteAuditCheckBase::getResultPass
ContentFieldInstances::getResultWarn public function . Overrides SiteAuditCheckBase::getResultWarn
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
SiteAuditCheckBase::$abort protected property Names of checks that should not run as a result of this check.
SiteAuditCheckBase::$options protected property Options passed in for reports and checks.
SiteAuditCheckBase::$optOut protected property User has opted out of this check in configuration.
SiteAuditCheckBase::$percentOverride protected property If set, will override the Report's percentage.
SiteAuditCheckBase::$registry protected property Use for passing data between checks within a report.
SiteAuditCheckBase::$score protected property Quantifiable number associated with result on a scale of 0 to 2.
SiteAuditCheckBase::$static protected property Are we in a static context.
SiteAuditCheckBase::AUDIT_CHECK_SCORE_FAIL constant
SiteAuditCheckBase::AUDIT_CHECK_SCORE_INFO constant
SiteAuditCheckBase::AUDIT_CHECK_SCORE_PASS constant
SiteAuditCheckBase::AUDIT_CHECK_SCORE_WARN constant
SiteAuditCheckBase::checkInvokeCalculateScore protected function Invoke another check's calculateScore() method if it is needed.
SiteAuditCheckBase::getDescription public function Get a more verbose description of what is being checked.
SiteAuditCheckBase::getId public function Get the ID or machine name for the check.
SiteAuditCheckBase::getLabel public function Get the label for the check that describes, high level what is happening.
SiteAuditCheckBase::getPercentOverride public function Get the report percent override, if any.
SiteAuditCheckBase::getRegistry public function Get the check registry.
SiteAuditCheckBase::getResult public function Determine the result message based on the score.
SiteAuditCheckBase::getScore public function Get a quantifiable number representing a check result; lazy initialization.
SiteAuditCheckBase::getScoreLabel public function Get a human readable label for a score.
SiteAuditCheckBase::renderAction public function Display action items for a user to perform.
SiteAuditCheckBase::shouldAbort public function Determine whether the check failed so badly that the report must stop.
SiteAuditCheckBase::__construct public function Constructor. Overrides PluginBase::__construct
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.