/**
  * {@inheritdoc}
  */
 public static function getSubscribedEvents()
 {
     // Register this listener for every event that is used by a reaction rule.
     $events = [];
     $callback = ['onRulesEvent', 100];
     // If there is no state service there is nothing we can do here. This static
     // method could be called early when the container is built, so the state
     // service might no always be available.
     if (!\Drupal::hasService('state')) {
         return [];
     }
     // Since we cannot access the reaction rule config storage here we have to
     // use the state system to provide registered Rules events. The Reaction
     // Rule storage is responsible for keeping the registered events up to date
     // in the state system.
     // @see \Drupal\rules\Entity\ReactionRuleStorage
     $state = \Drupal::state();
     $registered_event_names = $state->get('rules.registered_events');
     if (!empty($registered_event_names)) {
         foreach ($registered_event_names as $event_name) {
             $events[$event_name][] = $callback;
         }
     }
     return $events;
 }
 /**
  * Tests with multiple modules enabled.
  */
 public function testMultiple()
 {
     $this->assertTrue(\Drupal::hasService('service_container_symfony_test_yolo'));
     $this->assertFalse(\Drupal::hasService('service_container_symfony_test_yolo1'));
     $this->assertTrue(\Drupal::hasService('service_container_symfony_subtest_yolo'));
     $this->assertFalse(\Drupal::hasService('service_container_symfony_subtest_yolo1'));
 }
 /**
  * Returns the number of plurals supported by a given language.
  *
  * See the \Drupal\locale\PluralFormulaInterface::getNumberOfPlurals()
  * documentation for details.
  *
  * @see \Drupal\locale\PluralFormulaInterface::getNumberOfPlurals()
  */
 protected function getNumberOfPlurals($langcode = NULL)
 {
     if (\Drupal::hasService('locale.plural.formula')) {
         return \Drupal::service('locale.plural.formula')->getNumberOfPlurals($langcode);
     }
     // We assume 2 plurals if Locale's services are not available.
     return 2;
 }
 /**
  * Tests that module service providers get registered to the DIC.
  *
  * Also tests that services provided by module service providers get
  * registered to the DIC.
  */
 public function testServiceProviderRegistrationIntegration()
 {
     $this->assertTrue(\Drupal::hasService('service_provider_test_class'), 'The service_provider_test_class service has been registered to the DIC');
     // The event subscriber method in the test class calls drupal_set_message()
     // with a message saying it has fired. This will fire on every page request
     // so it should show up on the front page.
     $this->drupalGet('');
     $this->assertText(t('The service_provider_test event subscriber fired!'), 'The service_provider_test event subscriber fired');
 }
Beispiel #5
0
 /**
  * Tests that the DIC keeps up with module enable/disable in the same request.
  */
 function testServiceProviderRegistrationDynamic()
 {
     // Uninstall the module and ensure the service provider's service is not registered.
     \Drupal::service('module_installer')->uninstall(array('service_provider_test'));
     $this->assertFalse(\Drupal::hasService('service_provider_test_class'), 'The service_provider_test_class service does not exist in the DIC.');
     // Install the module and ensure the service provider's service is registered.
     \Drupal::service('module_installer')->install(array('service_provider_test'));
     $this->assertTrue(\Drupal::hasService('service_provider_test_class'), 'The service_provider_test_class service exists in the DIC.');
 }
Beispiel #6
0
 /**
  * Returns the base path for public://.
  *
  * If we have a setting for the public:// scheme's path, we use that.
  * Otherwise we build a reasonable default based on the site.path service if
  * it's available, or a default behavior based on the request.
  *
  * The site path is injectable from the site.path service:
  * @code
  * $base_path = PublicStream::basePath(\Drupal::service('site.path'));
  * @endcode
  *
  * @param \SplString $site_path
  *   (optional) The site.path service parameter, which is typically the path
  *   to sites/ in a Drupal installation. This allows you to inject the site
  *   path using services from the caller. If omitted, this method will use the
  *   global service container or the kernel's default behavior to determine
  *   the site path.
  *
  * @return string
  *   The base path for public:// typically sites/default/files.
  */
 public static function basePath(\SplString $site_path = NULL)
 {
     if ($site_path === NULL) {
         // Find the site path. Kernel service is not always available at this
         // point, but is preferred, when available.
         if (\Drupal::hasService('kernel')) {
             $site_path = \Drupal::service('site.path');
         } else {
             // If there is no kernel available yet, we call the static
             // findSitePath().
             $site_path = DrupalKernel::findSitePath(Request::createFromGlobals());
         }
     }
     return Settings::get('file_public_path', $site_path . '/files');
 }
 public function testRequestStack()
 {
     $container = $this->getDrupalContainer();
     $this->assertTrue($container->has('request_stack'));
     $this->assertTrue(\Drupal::hasService('request_stack'));
     /* @var $requestFromThis RequestStack */
     $requestFromThis = $container->get('request_stack');
     $requestFromThat = \Drupal::service('request_stack');
     $requestFromWhat = \Drupal::getContainer()->get('request_stack');
     $this->assertSame($requestFromThat, $requestFromThis);
     $this->assertSame($requestFromThat, $requestFromWhat);
     $current = $requestFromThis->getCurrentRequest();
     $master = $requestFromThis->getMasterRequest();
     // We are NOT in a subrequest
     $this->assertSame($current, $master);
 }
Beispiel #8
0
 function conf_path($require_settings = TRUE, $reset = FALSE, Request $request = NULL)
 {
     if (!isset($request)) {
         if (\Drupal::hasRequest()) {
             $request = \Drupal::request();
         } else {
             $request = Request::createFromGlobals();
         }
     }
     if (\Drupal::hasService('kernel')) {
         $site_path = \Drupal::service('kernel')->getSitePath();
     }
     if (!isset($site_path) || empty($site_path)) {
         $site_path = DrupalKernel::findSitePath($request, $require_settings);
     }
     return $site_path;
 }
Beispiel #9
0
 /**
  * Creates node type with several text fields with different cardinality.
  *
  * Internally it calls TMGMTEntityTestCaseUtility::attachFields() to create
  * and attach fields to newly created bundle. You can than use
  * $this->field_names['node']['YOUR_BUNDLE_NAME'] to access them.
  *
  * @param string $machine_name
  *   Machine name of the node type.
  * @param string $human_name
  *   Human readable name of the node type.
  * @param bool $translation
  *   TRUE if translation for this enitty type should be enabled.
  * pparam bool $attach_fields
  *   (optional) If fields with the same translatability should automatically
  *   be attached to the node type.
  */
 function createNodeType($machine_name, $human_name, $translation = FALSE, $attach_fields = TRUE)
 {
     $type = $this->drupalCreateContentType(array('type' => $machine_name, 'name' => $human_name));
     // Push in also the body field.
     $this->field_names['node'][$machine_name][] = 'body';
     if (\Drupal::hasService('content_translation.manager') && $translation) {
         $content_translation_manager = \Drupal::service('content_translation.manager');
         $content_translation_manager->setEnabled('node', $machine_name, TRUE);
     }
     $this->applySchemaUpdates();
     if ($attach_fields) {
         $this->attachFields('node', $machine_name, $translation);
     } else {
         // Change body field to be translatable.
         $body = FieldConfig::loadByName('node', $machine_name, 'body');
         $body->setTranslatable(TRUE);
         $body->save();
     }
 }
 /**
  * Tests that drupal_get_filename() works when the file is not in database.
  */
 function testDrupalGetFilename()
 {
     // drupal_get_profile() is using obtaining the profile from state if the
     // install_state global is not set.
     global $install_state;
     $install_state['parameters']['profile'] = 'testing';
     // Assert that the test is meaningful by making sure the keyvalue service
     // does not exist.
     $this->assertFalse(\Drupal::hasService('keyvalue'), 'The container has no keyvalue service.');
     // Retrieving the location of a module.
     $this->assertIdentical(drupal_get_filename('module', 'system'), 'core/modules/system/system.info.yml');
     // Retrieving the location of a theme.
     $this->assertIdentical(drupal_get_filename('theme', 'stark'), 'core/themes/stark/stark.info.yml');
     // Retrieving the location of a theme engine.
     $this->assertIdentical(drupal_get_filename('theme_engine', 'phptemplate'), 'core/themes/engines/phptemplate/phptemplate.info.yml');
     // Retrieving the location of a profile. Profiles are a special case with
     // a fixed location and naming.
     $this->assertIdentical(drupal_get_filename('profile', 'standard'), 'core/profiles/standard/standard.info.yml');
     // Searching for an item that does not exist returns NULL.
     $this->assertNull(drupal_get_filename('module', uniqid("", TRUE)), 'Searching for an item that does not exist returns NULL.');
 }
Beispiel #11
0
 /**
  * Discovers available extensions of a given type.
  *
  * Finds all extensions (modules, themes, etc) that exist on the site. It
  * searches in several locations. For instance, to discover all available
  * modules:
  * @code
  * $listing = new ExtensionDiscovery(\Drupal::root());
  * $modules = $listing->scan('module');
  * @endcode
  *
  * The following directories will be searched (in the order stated):
  * - the core directory; i.e., /core
  * - the installation profile directory; e.g., /core/profiles/standard
  * - the legacy site-wide directory; i.e., /sites/all
  * - the site-wide directory; i.e., /
  * - the site-specific directory; e.g., /sites/example.com
  *
  * The information is returned in an associative array, keyed by the extension
  * name (without .info.yml extension). Extensions found later in the search
  * will take precedence over extensions found earlier - unless they are not
  * compatible with the current version of Drupal core.
  *
  * @param string $type
  *   The extension type to search for. One of 'profile', 'module', 'theme', or
  *   'theme_engine'.
  * @param bool $include_tests
  *   (optional) Whether to explicitly include or exclude test extensions. By
  *   default, test extensions are only discovered when in a test environment.
  *
  * @return \Drupal\Core\Extension\Extension[]
  *   An associative array of Extension objects, keyed by extension name.
  */
 public function scan($type, $include_tests = NULL)
 {
     // Determine the installation profile directories to scan for extensions,
     // unless explicit profile directories have been set. Exclude profiles as we
     // cannot have profiles within profiles.
     if (!isset($this->profileDirectories) && $type != 'profile') {
         $this->setProfileDirectoriesFromSettings();
     }
     // Search the core directory.
     $searchdirs[static::ORIGIN_CORE] = 'core';
     // Search the legacy sites/all directory.
     $searchdirs[static::ORIGIN_SITES_ALL] = 'sites/all';
     // Search for contributed and custom extensions in top-level directories.
     // The scan uses a whitelist to limit recursion to the expected extension
     // type specific directory names only.
     $searchdirs[static::ORIGIN_ROOT] = '';
     // Simpletest uses the regular built-in multi-site functionality of Drupal
     // for running web tests. As a consequence, extensions of the parent site
     // located in a different site-specific directory are not discovered in a
     // test site environment, because the site directories are not the same.
     // Therefore, add the site directory of the parent site to the search paths,
     // so that contained extensions are still discovered.
     // @see \Drupal\simpletest\WebTestBase::setUp()
     if ($parent_site = Settings::get('test_parent_site')) {
         $searchdirs[static::ORIGIN_PARENT_SITE] = $parent_site;
     }
     // Find the site-specific directory to search. Since we are using this
     // method to discover extensions including profiles, we might be doing this
     // at install time. Therefore Kernel service is not always available, but is
     // preferred.
     if (\Drupal::hasService('kernel')) {
         $searchdirs[static::ORIGIN_SITE] = \Drupal::service('site.path');
     } else {
         $searchdirs[static::ORIGIN_SITE] = $this->sitePath ?: DrupalKernel::findSitePath(Request::createFromGlobals());
     }
     // Unless an explicit value has been passed, manually check whether we are
     // in a test environment, in which case test extensions must be included.
     // Test extensions can also be included for debugging purposes by setting a
     // variable in settings.php.
     if (!isset($include_tests)) {
         $include_tests = Settings::get('extension_discovery_scan_tests') || drupal_valid_test_ua();
     }
     $files = array();
     foreach ($searchdirs as $dir) {
         // Discover all extensions in the directory, unless we did already.
         if (!isset(static::$files[$dir][$include_tests])) {
             static::$files[$dir][$include_tests] = $this->scanDirectory($dir, $include_tests);
         }
         // Only return extensions of the requested type.
         if (isset(static::$files[$dir][$include_tests][$type])) {
             $files += static::$files[$dir][$include_tests][$type];
         }
     }
     // If applicable, filter out extensions that do not belong to the current
     // installation profiles.
     $files = $this->filterByProfileDirectories($files);
     // Sort the discovered extensions by their originating directories.
     $origin_weights = array_flip($searchdirs);
     $files = $this->sort($files, $origin_weights);
     // Process and return the list of extensions keyed by extension name.
     return $this->process($files);
 }
 /**
  * Tests that classes, interfaces, functions, etc. still exist.
  *
  * At the time of the first release of this book, Drupal 8 was still in
  * flux. This tests for the existence of Drupal 8 classes, interfaces,
  * functions, etc. mentioned in the book. If their names change or they
  * vanish, this test will fail and the book can be corrected.
  */
 function testExistence()
 {
     $interfaces = array('\\Drupal\\Core\\Ajax\\CommandInterface', '\\Drupal\\Core\\Block\\BlockPluginInterface', '\\Drupal\\Core\\Cache\\CacheBackendInterface', '\\Drupal\\Core\\Config\\Entity\\ConfigEntityInterface', '\\Drupal\\Core\\Datetime\\DateFormatInterface', '\\Drupal\\Core\\DependencyInjection\\ServiceModifierInterface', '\\Drupal\\Core\\Entity\\ContentEntityInterface', '\\Drupal\\Core\\Entity\\EntityInterface', '\\Drupal\\Core\\Entity\\EntityManagerInterface', '\\Drupal\\Core\\Entity\\EntityStorageInterface', '\\Drupal\\Core\\Entity\\EntityTypeInterface', '\\Drupal\\Core\\Entity\\Query\\QueryInterface', '\\Drupal\\Core\\Entity\\Query\\QueryAggregateInterface', '\\Drupal\\Core\\Entity\\EntityStorageInterface', '\\Drupal\\Core\\Extension\\ModuleHandlerInterface', '\\Drupal\\Core\\Field\\FieldItemInterface', '\\Drupal\\Core\\Field\\FieldItemListInterface', '\\Drupal\\Core\\Field\\FieldStorageDefinitionInterface', '\\Drupal\\Core\\Field\\FormatterInterface', '\\Drupal\\Core\\Field\\WidgetInterface', '\\Drupal\\Core\\Form\\FormStateInterface', '\\Drupal\\Core\\Language\\LanguageInterface', '\\Drupal\\Core\\Render\\Element\\FormElementInterface', '\\Drupal\\Core\\Render\\Element\\ElementInterface', '\\Drupal\\Core\\Routing\\RouteMatchInterface', '\\Drupal\\Core\\Session\\AccountInterface', '\\Drupal\\Core\\Session\\AccountProxyInterface', '\\Drupal\\Core\\State\\StateInterface', '\\Symfony\\Component\\DependencyInjection\\ContainerInterface', '\\Symfony\\Component\\EventDispatcher\\EventSubscriberInterface');
     foreach ($interfaces as $interface) {
         $this->assertTrue(interface_exists($interface), "Interface {$interface} exists");
     }
     $classes = array('\\Drupal', '\\Drupal\\Component\\Datetime\\DateTimePlus', '\\Drupal\\Component\\Utility\\Unicode', '\\Drupal\\Core\\Access\\AccessResult', '\\Drupal\\Core\\Ajax\\AjaxResponse', '\\Drupal\\Core\\Annotation\\Translation', '\\Drupal\\Core\\Block\\Annotation\\Block', '\\Drupal\\Core\\Block\\BlockBase', '\\Drupal\\Core\\Block\\BlockManager', '\\Drupal\\Core\\Cache\\Cache', '\\Drupal\\Core\\Config\\Config', '\\Drupal\\Core\\Entity\\Annotation\\ConfigEntityType', '\\Drupal\\Core\\Entity\\EntityForm', '\\Drupal\\Core\\Config\\Entity\\ConfigEntityBase', '\\Drupal\\Core\\Config\\Entity\\ConfigEntityListBuilder', '\\Drupal\\Core\\Controller\\ControllerBase', '\\Drupal\\Core\\Database\\Connection', '\\Drupal\\Core\\Database\\Query\\PagerSelectExtender', '\\Drupal\\Core\\Datetime\\Entity\\DateFormat', '\\Drupal\\Core\\Entity\\Annotation\\ContentEntityType', '\\Drupal\\Core\\Entity\\ContentEntityBase', '\\Drupal\\Core\\Entity\\ContentEntityConfirmFormBase', '\\Drupal\\Core\\Entity\\ContentEntityForm', '\\Drupal\\Core\\Field\\FieldItemBase', '\\Drupal\\Core\\Field\\FormatterBase', '\\Drupal\\Core\\Field\\WidgetBase', '\\Drupal\\Core\\Field\\Annotation\\FieldType', '\\Drupal\\Core\\Field\\Annotation\\FieldFormatter', '\\Drupal\\Core\\Field\\Annotation\\FieldWidget', '\\Drupal\\Core\\Form\\ConfigFormBase', '\\Drupal\\Core\\Form\\FormBase', '\\Drupal\\Core\\Language\\Language', '\\Drupal\\Core\\Path\\AliasManager', '\\Drupal\\Core\\Plugin\\DefaultPluginManager', '\\Drupal\\Core\\Render\\Annotation\\FormElement', '\\Drupal\\Core\\Render\\Annotation\\RenderElement', '\\Drupal\\Core\\Render\\Element', '\\Drupal\\Core\\Routing\\RouteSubscriberBase', '\\Drupal\\Core\\Url', '\\Drupal\\Component\\Utility\\SafeMarkup', '\\Drupal\\Tests\\UnitTestCase', '\\Drupal\\block_content\\Plugin\\Block\\BlockContentBlock', '\\Drupal\\migrate\\MigrateExecutable', '\\Drupal\\node\\Form\\NodeTypeDeleteConfirm', '\\Drupal\\simpletest\\WebTestBase', '\\Drupal\\simpletest\\KernelTestBase', '\\Drupal\\system\\DateFormatListBuilder', '\\Drupal\\system\\Form\\DateFormatEditForm', '\\Drupal\\system\\Form\\DateFormatDeleteForm', '\\Drupal\\block\\Controller\\CategoryAutocompleteController', '\\Drupal\\views\\Plugin\\views\\field\\FieldPluginBase', '\\Drupal\\views\\Annotation\\ViewsArgument', '\\Drupal\\views\\Annotation\\ViewsField', '\\Drupal\\views\\Annotation\\ViewsRow', '\\Drupal\\views\\Annotation\\ViewsStyle', '\\Drupal\\views\\Plugin\\views\\field\\FieldPluginBase', '\\Drupal\\views\\Plugin\\views\\row\\RowPluginBase', '\\Drupal\\views\\Plugin\\views\\style\\StylePluginBase', '\\Drupal\\views\\ViewExecutable', '\\Drupal\\views\\Views', '\\Symfony\\Component\\DependencyInjection\\Container', '\\Symfony\\Component\\EventDispatcher\\Event', '\\Symfony\\Component\\HttpFoundation\\Request', '\\Symfony\\Component\\HttpFoundation\\Response', '\\Symfony\\Component\\Routing\\Route', '\\Symfony\\Component\\Routing\\RouteCollection', '\\Symfony\\Component\\Validator\\Constraint');
     foreach ($classes as $class) {
         $this->assertTrue(class_exists($class), "Class {$class} exists");
     }
     $traits = array('\\Drupal\\Core\\StringTranslation\\StringTranslationTrait');
     foreach ($traits as $trait) {
         $this->assertTrue(trait_exists($trait), "Trait {$trait} exists");
     }
     $methods = array('\\Drupal' => array('config', 'currentUser', 'formBuilder', 'getContainer', 'service', 'l'), '\\Drupal\\Core\\Ajax\\AjaxResponse' => 'addCommand', '\\Drupal\\Core\\Block\\BlockBase' => array('access', 'build'), '\\Drupal\\Core\\Block\\BlockManager' => array('clearCachedDefinitions', 'getSortedDefinitions'), '\\Drupal\\Core\\Cache\\CacheBackendInterface' => array('get', 'invalidate', 'set'), '\\Drupal\\Core\\Config\\Config' => array('get', 'save', 'set'), '\\Drupal\\Core\\Database\\Connection' => 'select', '\\Drupal\\Core\\DependencyInjection\\ServiceModifierInterface' => 'alter', '\\Drupal\\Core\\DrupalKernel' => 'discoverServiceProviders', '\\Drupal\\Core\\Entity\\ContentEntityForm' => array('buildEntity', 'form', 'save', 'validateForm'), '\\Drupal\\Core\\Entity\\ContentEntityInterface' => 'baseFieldDefinitions', '\\Drupal\\Core\\Entity\\Entity' => 'access', '\\Drupal\\Core\\Entity\\EntityForm' => array('form', 'save', 'validateForm'), '\\Drupal\\Core\\Entity\\Query\\QueryInterface' => 'condition', '\\Drupal\\Core\\Field\\FieldItemInterface' => array('propertyDefinitions', 'schema'), '\\Drupal\\Core\\Field\\FormatterInterface' => 'viewElements', '\\Drupal\\Core\\Field\\WidgetInterface' => 'formElement', '\\Drupal\\Core\\Form\\FormBase' => 't', '\\Drupal\\Core\\Form\\FormBuilderInterface' => 'getForm', '\\Drupal\\Core\\Form\\FormStateInterface' => array('get', 'getValues', 'set', 'setErrorByName', 'setRebuild'), '\\Drupal\\Core\\Render\\Element\\ElementInterface' => 'getInfo', '\\Drupal\\Core\\Session\\AccountProxyInterface' => 'hasPermission', '\\Drupal\\block\\BlockListBuilder' => array('buildForm', 'createInstance'), '\\Drupal\\block\\BlockViewBuilder' => 'viewMultiple', '\\Drupal\\block\\Controller\\CategoryAutocompleteController' => 'autocomplete', '\\Symfony\\Component\\DependencyInjection\\ContainerInterface' => 'get', '\\Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => 'dispatch', '\\Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => 'getSubscribedEvents');
     foreach ($methods as $class => $methods) {
         if (!is_array($methods)) {
             $methods = array($methods);
         }
         foreach ($methods as $method) {
             $this->assertTrue(method_exists($class, $method), "Method {$class}::{$method} exists");
         }
     }
     $functions = array('check_markup', 'check_url', 'db_add_field', 'db_change_field', 'db_create_table', 'db_query', 'db_select', 'drupal_flush_all_caches', 'drupal_render', 't');
     foreach ($functions as $function) {
         $this->assertTrue(function_exists($function), "Function {$function}() exists");
     }
     $services = array('cache.default', 'current_user', 'database', 'entity.query', 'entity.manager', 'event_dispatcher', 'path.alias_manager', 'plugin.manager.block', 'string_translation');
     foreach ($services as $service) {
         $this->assertTrue(\Drupal::hasService($service), "Service {$service} exists");
     }
     $files = array('core/config/schema/core.data_types.schema.yml', 'core/core.services.yml', 'core/includes/database.inc', 'core/lib/Drupal/Component/Datetime/DateTimePlus.php', 'core/lib/Drupal/Core/Ajax', 'core/modules', 'core/modules/block/block.services.yml', 'core/modules/block/block.routing.yml', 'core/modules/block/block.links.contextual.yml', 'core/modules/filter/filter.permissions.yml', 'core/modules/filter/src/FilterPermissions.php', 'core/modules/system/system.routing.yml', 'core/modules/system/config/schema/system.schema.yml', 'core/modules/taxonomy/taxonomy.routing.yml', 'core/modules/user/user.routing.yml', 'core/modules/user/user.links.action.yml', 'core/modules/user/user.links.task.yml', 'core/modules/views/src/Plugin/views', 'core/modules/views/src/Plugin/views/argument', 'core/modules/views/src/Plugin/views/field', 'core/modules/views/src/Plugin/views/row', 'core/modules/views/src/Plugin/views/style', 'vendor/symfony/dependency-injection/Container.php');
     foreach ($files as $file) {
         $this->assertTrue(file_exists(DRUPAL_ROOT . '/' . $file), "File {$file} exists");
     }
 }
Beispiel #13
0
 /**
  * Gets the current active user.
  *
  * @return \Drupal\Core\Session\AccountInterface
  */
 protected function currentUser()
 {
     if (!$this->currentUser && \Drupal::hasService('current_user')) {
         $this->currentUser = \Drupal::currentUser();
     }
     return $this->currentUser;
 }
Beispiel #14
0
 /**
  * Gets the current active user.
  *
  * @return \Drupal\Core\Session\AccountInterface
  */
 protected function currentUser()
 {
     if (!$this->currentUser) {
         if (\Drupal::hasService('current_user')) {
             $this->currentUser = \Drupal::currentUser();
         } else {
             global $user;
             $this->currentUser = $user;
         }
     }
     return $this->currentUser;
 }
 /**
  * Gets the plural index through the gettext formula.
  *
  * @return int
  */
 protected function getPluralIndex()
 {
     // We have to test both if the function and the service exist since in
     // certain situations it is possible that locale code might be loaded but
     // the service does not exist. For example, where the parent test site has
     // locale installed but the child site does not.
     // @todo Refactor in https://www.drupal.org/node/2660338 so this code does
     // not depend on knowing that the Locale module exists.
     if (function_exists('locale_get_plural') && \Drupal::hasService('locale.plural.formula')) {
         return locale_get_plural($this->count, $this->getOption('langcode'));
     }
     return -1;
 }
Beispiel #16
0
 /**
  * Create an object instance for an export.
  *
  * @param string $object_type
  *   The object type to look up. See openlayers_object_types() for a list of
  *   available object types.
  * @param array|string|object $export
  *   The exported object.
  *
  * @return ObjectInterface|Error
  *   Returns the instance of the requested object or an instance of
  *   Error on error.
  */
 public static function load($object_type = NULL, $export)
 {
     /** @var \Drupal\openlayers\Types\ObjectInterface $object */
     $object = NULL;
     $configuration = array();
     $object_type = drupal_ucfirst(drupal_strtolower(check_plain($object_type)));
     if (is_array($export)) {
         $configuration = $export;
     }
     if (is_object($export) && $export instanceof \StdClass) {
         $array_object = new \ArrayObject($export);
         $configuration = $array_object->getArrayCopy();
     }
     if (is_object($export) && $export instanceof ObjectInterface) {
         return $export;
     }
     if (is_string($export)) {
         $configuration = (array) Openlayers::loadExportable($object_type, $export);
     }
     if (is_array($configuration) && isset($configuration['factory_service'])) {
         // Bail out if the base service can't be found - likely due a registry
         // rebuild.
         if (!\Drupal::hasService('openlayers.Types')) {
             return NULL;
         }
         list($plugin_manager_id, $plugin_id) = explode(':', $configuration['factory_service'], 2);
         if (\Drupal::hasService($plugin_manager_id)) {
             $plugin_manager = \Drupal::service($plugin_manager_id);
             if ($plugin_manager->hasDefinition($plugin_id)) {
                 $object = $plugin_manager->createInstance($plugin_id, $configuration);
             } else {
                 $configuration += array('type' => $object_type, 'errorMessage' => 'Unable to load @type @machine_name');
                 $object = \Drupal::service('openlayers.Types')->createInstance('Error', $configuration);
             }
         } else {
             $configuration += array('type' => $object_type, 'errorMessage' => 'Service <em>@service</em> doesn\'t exists, unable to load @type @machine_name');
             $object = \Drupal::service('openlayers.Types')->createInstance('Error', $configuration);
         }
     } else {
         $configuration += array('type' => $object_type, 'name' => 'Error', 'description' => 'Error', 'factory_service' => '', 'machine_name' => $export, 'errorMessage' => 'Unable to load CTools exportable @type @machine_name.');
         $object = \Drupal::service('openlayers.Types')->createInstance('Error', $configuration);
     }
     if (isset($configuration['disabled']) && (bool) $configuration['disabled'] == 1) {
         $object->disabled = 1;
     }
     return $object->init();
 }
 /**
  * Tests some basic
  */
 public function testInit()
 {
     $this->assertTrue(\Drupal::hasService('service_container'));
     $this->assertTrue(\Drupal::hasService('module_handler'));
     $this->assertTrue(\Drupal::hasService('module_installer'));
 }