Mercurial > hg > cmmr2012-drupal-site
diff core/modules/field_ui/src/FieldUI.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/field_ui/src/FieldUI.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,83 @@ +<?php + +namespace Drupal\field_ui; + +use Drupal\Component\Utility\UrlHelper; +use Drupal\Core\Entity\EntityTypeInterface; +use Drupal\Core\Url; + +/** + * Static service container wrapper for Field UI. + */ +class FieldUI { + + /** + * Returns the route info for the field overview of a given entity bundle. + * + * @param string $entity_type_id + * An entity type. + * @param string $bundle + * The entity bundle. + * + * @return \Drupal\Core\Url + * A URL object. + */ + public static function getOverviewRouteInfo($entity_type_id, $bundle) { + $entity_type = \Drupal::entityManager()->getDefinition($entity_type_id); + if ($entity_type->get('field_ui_base_route')) { + return new Url("entity.{$entity_type_id}.field_ui_fields", static::getRouteBundleParameter($entity_type, $bundle)); + } + } + + /** + * Returns the next redirect path in a multipage sequence. + * + * @param array $destinations + * An array of destinations to redirect to. + * + * @return \Drupal\Core\Url|null + * The next destination to redirect to. + */ + public static function getNextDestination(array $destinations) { + // If there are no valid destinations left, return here. + if (empty($destinations)) { + return NULL; + } + + $next_destination = array_shift($destinations); + if (is_array($next_destination)) { + $next_destination['options']['query']['destinations'] = $destinations; + $next_destination += [ + 'route_parameters' => [], + ]; + $next_destination = Url::fromRoute($next_destination['route_name'], $next_destination['route_parameters'], $next_destination['options']); + } + else { + $options = UrlHelper::parse($next_destination); + if ($destinations) { + $options['query']['destinations'] = $destinations; + } + // Redirect to any given path within the same domain. + // @todo Revisit this in https://www.drupal.org/node/2418219. + $next_destination = Url::fromUserInput('/' . $options['path'], $options); + } + return $next_destination; + } + + /** + * Gets the route parameter that should be used for Field UI routes. + * + * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type + * The actual entity type, not the bundle (e.g. the content entity type). + * @param string $bundle + * The bundle name. + * + * @return array + * An array that can be used a route parameter. + */ + public static function getRouteBundleParameter(EntityTypeInterface $entity_type, $bundle) { + $bundle_parameter_key = $entity_type->getBundleEntityType() ?: 'bundle'; + return [$bundle_parameter_key => $bundle]; + } + +}