Skip to content

Commit

Permalink
Update islandora_mirador.install
Browse files Browse the repository at this point in the history
  • Loading branch information
Natkeeran authored Nov 17, 2023
1 parent 9416496 commit 529554b
Showing 1 changed file with 62 additions and 17 deletions.
79 changes: 62 additions & 17 deletions islandora_mirador.install
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,75 @@ use Drupal\taxonomy\Entity\Term;
/**
* Implements hook_install().
*/
function islandora_mirador_install() {
_get_or_create_tag();
function islandora_mirador_install($is_syncing) {
if (!_islandora_mirador_term_exists()) {
$callable = $is_syncing ? [\Drupal::messenger(), 'addStatus'] : [\Drupal::messenger(), 'addWarning'];
$callable(t('A term in the taxonomy @vid with the URI @uri does not appear to exist. The @migration_id migration can be executed to create it.', [
'@vid' => 'islandora_display',
'@uri' => 'https://projectmirador.org',
'@migration_id' => 'islandora_mirador_tags',
]));
}
}

/**
* Implements hook_update().
* Implements hook_requirements().
*/
function islandora_mirador_update_8001() {
// _get_or_create_tag();
function islandora_mirador_requirements($phase) : array {
$requirements = [];

if ($phase == 'runtime') {
$term_exists = _islandora_mirador_term_exists();
$requirements['islandora_mirador_term_exists'] = [
'title' => t('Mirador Term Exists'),
'value' => $term_exists ? t('Exists') : t('Does not exist'),
'description' => t('Whether or not a term with the URI targeted by default Mirador viewer configuration exists. If viewer configurations were made to target another URI, this can probably be ignored.'),
'severity' => $term_exists ? REQUIREMENT_OK : REQUIREMENT_WARNING
];
}

return $requirements;
}

/**
* Looks up or creates Mirador term.
* Implements hook_update_last_removed.
*/
function _get_or_create_tag() {
$term_name = 'Mirador';
$test_terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties(['name' => $term_name]);
if (!$test_terms) {
Term::create([
'parent' => [],
'name' => $term_name,
'vid' => 'islandora_display',
'description' => 'Display using the Mirador viewer',
'field_external_uri' => ['uri' => 'https://projectmirador.org'],
])->save();
function islandora_mirador_update_last_removed() {
return 8001;
}

/**
* Set a default config value for mirador_library_installation_type
* @return void
*/
function islandora_mirador_update_20001() {
$config = \Drupal::configFactory()->getEditable('islandora_mirador.settings');
$config->set('mirador_library_installation_type', 'remote');
$config->save();
}

/**
* 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_mirador_term_exists() {
$table_exists = \Drupal::database()->schema()->tableExists('taxonomy_term__field_external_uri');
if (!$table_exists) {
// XXX: If the table does not exist, then avoid attempting to make a query
// making use of the non-existent table.
return FALSE;
}

$query = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->getQuery()
->condition('vid', 'islandora_display')
->condition('field_external_uri.uri', 'https://projectmirador.org')
->accessCheck(FALSE)
->count();
$count = $query->execute();
return $count > 0;
}

0 comments on commit 529554b

Please sign in to comment.