ConfigInstallerInterface.php 3.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
<?php

namespace Drupal\Core\Config;

/**
 * Interface for classes that install config.
 */
interface ConfigInstallerInterface {

  /**
   * Installs the default configuration of a given extension.
   *
   * When an extension is installed, it searches all the default configuration
   * directories for all other extensions to locate any configuration with its
   * name prefix. For example, the Node module provides the frontpage view as a
   * default configuration file:
17
   * core/modules/node/config/install/views.view.frontpage.yml
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
   * When the Views module is installed after the Node module is already
   * enabled, the frontpage view will be installed.
   *
   * Additionally, the default configuration directory for the extension being
   * installed is searched to discover if it contains default configuration
   * that is owned by other enabled extensions. So, the frontpage view will also
   * be installed when the Node module is installed after Views.
   *
   * @param string $type
   *   The extension type; e.g., 'module' or 'theme'.
   * @param string $name
   *   The name of the module or theme to install default configuration for.
   *
   * @see \Drupal\Core\Config\ExtensionInstallStorage
   */
  public function installDefaultConfig($type, $name);

35 36 37 38 39 40 41 42 43 44 45 46
  /**
   * Installs optional configuration.
   *
   * Optional configuration is only installed if:
   * - the configuration does not exist already.
   * - it's a configuration entity.
   * - its dependencies can be met.
   *
   * @param \Drupal\Core\Config\StorageInterface
   *   (optional) The configuration storage to search for optional
   *   configuration. If not provided, all enabled extension's optional
   *   configuration directories will be searched.
47 48 49 50 51
   * @param array $dependency
   *   (optional) If set, ensures that the configuration being installed has
   *   this dependency. The format is dependency type as the key ('module',
   *   'theme', or 'config') and the dependency name as the value
   *   ('book', 'bartik', 'views.view.frontpage').
52
   */
53
  public function installOptionalConfig(StorageInterface $storage = NULL, $dependency = []);
54

55 56 57 58 59 60 61 62 63 64 65 66 67
  /**
   * Installs all default configuration in the specified collection.
   *
   * The function is useful if the site needs to respond to an event that has
   * just created another collection and we need to check all the installed
   * extensions for any matching configuration. For example, if a language has
   * just been created.
   *
   * @param string $collection
   *   The configuration collection.
   */
  public function installCollectionDefaultConfig($collection);

68 69 70 71 72
  /**
   * Sets the configuration storage that provides the default configuration.
   *
   * @param \Drupal\Core\Config\StorageInterface $storage
   *
73
   * @return $this
74 75 76 77 78 79 80 81
   */
  public function setSourceStorage(StorageInterface $storage);

  /**
   * Sets the status of the isSyncing flag.
   *
   * @param bool $status
   *   The status of the sync flag.
82 83
   *
   * @return $this
84 85 86 87 88 89 90 91 92 93 94
   */
  public function setSyncing($status);

  /**
   * Gets the syncing state.
   *
   * @return bool
   *   Returns TRUE is syncing flag set.
   */
  public function isSyncing();

95
  /**
96
   * Checks the configuration that will be installed for an extension.
97 98 99 100 101 102
   *
   * @param string $type
   *   Type of extension to install.
   * @param string $name
   *   Name of extension to install.
   *
103 104
   * @throws \Drupal\Core\Config\UnmetDependenciesException
   * @throws \Drupal\Core\Config\PreExistingConfigException
105
   */
106
  public function checkConfigurationToInstall($type, $name);
107

108
}