'islandora_media_use', '@uri' => 'https://projects.iq.harvard.edu/fits', '@migration_id' => 'islandora_fits_tags', ])); } // Add xml extension if it doesn't already exist. $field = FieldConfig::load("media.file.field_media_file"); if ($field) { $fieldSettings = $field->getSettings(); $extensions = $fieldSettings['file_extensions']; if (!strpos($extensions, 'xml')) { $fieldSettings['file_extensions'] .= ' xml'; $field->set('settings', $fieldSettings); $field->save(); } } } /** * Implements hook_requirements(). */ function islandora_fits_requirements($phase) : array { $requirements = []; if ($phase == 'runtime') { $term_exists = _islandora_fits_term_exists(); $requirements['islandora_fits_term_exists'] = [ 'title' => t('FITS Term Exists'), 'value' => $term_exists ? t('Exists') : t('Does not exist'), 'description' => t('Whether or not a term with the URI targeted by default FITS derivative configuration exists. If derivative configurations were made to target another URI, this can probably be ignored.'), 'severity' => $term_exists ? REQUIREMENT_OK : REQUIREMENT_WARNING ]; } return $requirements; } /** * Helper; determine if a term with the target URI exists. * * @return bool * TRUE if a term (at least one) with the target URI exists; otherwise, FALSE. * * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException */ function _islandora_fits_term_exists() { $query = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->getQuery() ->condition('vid', 'islandora_media_use') ->condition('field_external_uri.uri', 'https://projects.iq.harvard.edu/fits') ->count(); $count = $query->execute(); return $count > 0; }