You are here

function taxonomy_requirements in Drupal 8

Implements hook_requirements().

File

core/modules/taxonomy/taxonomy.install, line 15
Install, update and uninstall functions for the taxonomy module.

Code

function taxonomy_requirements($phase) {
  $requirements = [];
  if ($phase === 'update') {

    // Check for invalid data before making terms revisionable.

    /** @var \Drupal\Core\Update\UpdateRegistry $registry */
    $registry = \Drupal::service('update.post_update_registry');
    $update_name = 'taxonomy_post_update_make_taxonomy_term_revisionable';
    if (in_array($update_name, $registry
      ->getPendingUpdateFunctions(), TRUE)) {

      // The 'name' field is non-NULL - if we get a NULL value that indicates a
      // failure to join on taxonomy_term_field_data.
      $is_broken = \Drupal::entityQuery('taxonomy_term')
        ->condition('name', NULL, 'IS NULL')
        ->range(0, 1)
        ->accessCheck(FALSE)
        ->execute();
      if ($is_broken) {
        $requirements[$update_name] = [
          'title' => t('Taxonomy term data'),
          'value' => t('Integrity issues detected'),
          'description' => t('The make_taxonomy_term_revisionable database update cannot be run until the data has been fixed. See the <a href=":change_record">change record</a> for more information.', [
            ':change_record' => 'https://www.drupal.org/node/3117753',
          ]),
          'severity' => REQUIREMENT_ERROR,
        ];
      }
    }
  }
  return $requirements;
}