From 15ce7745b85e7812c41cf009963ce0c8ba9281ef Mon Sep 17 00:00:00 2001 From: Jared Whiklo Date: Wed, 7 Sep 2016 14:52:35 -0500 Subject: [PATCH] Code review --- includes/admin.form.inc | 7 ++++++- includes/breadcrumb.inc | 3 ++- islandora.api.php | 14 +++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/includes/admin.form.inc b/includes/admin.form.inc index 257f039f..3293c343 100644 --- a/includes/admin.form.inc +++ b/includes/admin.form.inc @@ -27,6 +27,11 @@ function islandora_repository_admin(array $form, array &$form_state) { $map_to_title = function ($backend) { return $backend['title']; }; + // In case the selected breadcrumb backend is no longer available. + $breadcrumb_backend = variable_get('islandora_breadcrumbs_backends', ISLANDORA_BREADCRUMB_LEGACY_BACKEND); + if (!isset($breadcrumb_backend_options[$breadcrumb_backend])) { + $breadcrumb_backend = ISLANDORA_BREADCRUMB_LEGACY_BACKEND; + } $form = array( 'islandora_tabs' => array( @@ -107,7 +112,7 @@ function islandora_repository_admin(array $form, array &$form_state) { '#type' => 'radios', '#title' => t('Breadcrumb generation'), '#description' => t('How breadcrumbs for Islandora objects are generated for display.'), - '#default_value' => variable_get('islandora_breadcrumbs_backends', ISLANDORA_BREADCRUMB_LEGACY_BACKEND), + '#default_value' => $breadcrumb_backend, '#options' => array_map($map_to_title, $breadcrumb_backend_options), '#states' => array( 'visible' => array( diff --git a/includes/breadcrumb.inc b/includes/breadcrumb.inc index aa0472aa..7e5ee8b5 100644 --- a/includes/breadcrumb.inc +++ b/includes/breadcrumb.inc @@ -25,11 +25,13 @@ * drupal_set_breadcrumb(). */ function islandora_get_breadcrumbs(AbstractObject $object) { + $breadcrumbs = array(); if (variable_get('islandora_render_drupal_breadcrumbs', TRUE)) { $backend = variable_get('islandora_breadcrumbs_backends', ISLANDORA_BREADCRUMB_LEGACY_BACKEND); $backends = module_invoke_all('islandora_breadcrumbs_backends'); if ($backend === ISLANDORA_BREADCRUMB_LEGACY_BACKEND || !isset($backends[$backend])) { $breadcrumbs = islandora_get_breadcrumbs_recursive($object->id, $object->repository); + array_pop($breadcrumbs); } else { if (isset($backends[$backend]['file'])) { @@ -37,7 +39,6 @@ function islandora_get_breadcrumbs(AbstractObject $object) { } $breadcrumbs = call_user_func($backends[$backend]['callable'], $object); } - array_pop($breadcrumbs); $context = 'islandora'; drupal_alter('islandora_breadcrumbs', $breadcrumbs, $context, $object); } diff --git a/islandora.api.php b/islandora.api.php index e505b90a..4937b8c0 100644 --- a/islandora.api.php +++ b/islandora.api.php @@ -911,7 +911,7 @@ function hook_islandora_repository_connection_construction_alter(RepositoryConne /** * Allow a overridable backend for generating breadcrumbs. * - * Stolen shamelessly from @adam-vessey + * Stolen shamelessly from @adam-vessey. * * @return array * Should return an associative array mapping unique (module-prefixed, @@ -922,25 +922,21 @@ function hook_islandora_repository_connection_construction_alter(RepositoryConne * - file: An optional file to load before attempting to call the callable. */ function hook_islandora_breadcrumbs_backends() { - $a_callable = function ($object) { - // Do something to get an array of breadcrumb links for $object, root first. - return array($root_link, $collection_link, $object_link); - }; return array( 'awesome_backend' => array( 'title' => t('Awesome Backend'), - 'callable' => $a_callable, + 'callable' => callback_islandora_breadcrumbs_backends($object), ), ); } /** - * Generate an array of links for breadcrumbs leading to $object, root level first. + * Generate an array of links for breadcrumbs leading to $object, root first. * - * Stolen shamelessly from @adam-vessey + * Stolen shamelessly from @adam-vessey. * * @param AbstractObject $object - * The object to generate breadcrumbs for + * The object to generate breadcrumbs for. * * @return array * Array of links from root to $object.