plus-8.x-4.x-dev/src/Plugin/Theme/ThemeInterface.php

src/Plugin/Theme/ThemeInterface.php
<?php

namespace Drupal\plus\Plugin\Theme;

use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\plus\Events\ThemeEventSubscriberInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;

/**
 * Interface ThemeInterface.
 */
interface ThemeInterface extends ContainerAwareInterface, ContainerFactoryPluginInterface, ThemeEventSubscriberInterface {

  /**
   * Adds a callback to an array.
   *
   * @param array $callbacks
   *   An array of callbacks to add the callback to, passed by reference.
   * @param array|string $callback
   *   The callback to add.
   * @param array|string $replace
   *   If specified, the callback will instead replace the specified value
   *   instead of being appended to the $callbacks array.
   * @param string $placement
   *   Flag that determines how to add the callback to the array.
   *
   * @return bool
   *   TRUE if the callback was added, FALSE if $replace was specified but its
   *   callback could be found in the list of callbacks.
   *
   * @throws \InvalidArgumentException
   *   If the $placement is not a valid type.
   */
  public function addCallback(array &$callbacks, $callback, $replace = NULL, $placement = 'append');

  /**
   * Returns the autoload fix include path.
   *
   * This method assists class based callbacks that normally do not work.
   *
   * If you notice that your class based callback is never invoked, you may try
   * using this helper method as an "include" or "file" for your callback, if
   * the callback metadata supports such an option.
   *
   * Depending on when or where a callback is invoked during a request, such as
   * an ajax or batch request, the theme handler may not yet be fully
   * initialized.
   *
   * Typically there is little that can be done about this "issue" from core.
   * It must balance the appropriate level that should be bootstrapped along
   * with common functionality. Cross-request class based callbacks are not
   * common in themes.
   *
   * When this file is included, it will attempt to jump start this process.
   *
   * Please keep in mind, that it is merely an attempt and does not guarantee
   * that it will actually work. If it does not appear to work, do not use it.
   *
   * @see \Drupal\Core\Extension\ThemeHandler::listInfo
   * @see \Drupal\Core\Extension\ThemeHandler::systemThemeList
   * @see system_list
   * @see system_register()
   * @see drupal_classloader_register()
   *
   * @return string
   *   The autoload fix include path, relative to Drupal root.
   */
  public function autoloadFixInclude();

  /**
   * Retrieves the documentation URL, if any.
   *
   * @param bool $search
   *   Flag indicating whether or not to retrieve the documentation URL used
   *   for searching/querying.
   *
   * @return string
   *   The documentation URL.
   */
  public function documentationUrl($search = FALSE);

  /**
   * Provides additional default variables to be used in elements and templates.
   *
   * @return array
   *   An associative array containing key/default value pairs.
   */
  public function defaultVariables();

  /**
   * Logs and displays a warning about a deprecated function/method being used.
   */
  public function deprecated();

  /**
   * Manages theme alter hooks as classes and allows sub-themes to sub-class.
   *
   * @param string $function
   *   The procedural function name of the alter (e.g. __FUNCTION__).
   * @param mixed $data
   *   The variable that was passed to the hook_TYPE_alter() implementation to
   *   be altered. The type of this variable depends on the value of the $type
   *   argument. For example, when altering a 'form', $data will be a structured
   *   array. When altering a 'profile', $data will be an object.
   * @param mixed $context1
   *   (optional) An additional variable that is passed by reference.
   * @param mixed $context2
   *   (optional) An additional variable that is passed by reference. If more
   *   context needs to be provided to implementations, then this should be an
   *   associative array as described above.
   */
  public function doAlter($function, &$data, &$context1 = NULL, &$context2 = NULL);

  /**
   * Retrieves the theme's settings array appropriate for drupalSettings.
   *
   * @return array
   *   The theme settings for drupalSettings.
   */
  public function drupalSettings();

  /**
   * Wrapper for the core file_scan_directory() function.
   *
   * Finds all files that match a given mask in the given directories and then
   * caches the results. A general site cache clear will force new scans to be
   * initiated for already cached directories.
   *
   * @param string $mask
   *   The preg_match() regular expression of the files to find.
   * @param string $subdir
   *   Sub-directory in the theme to start the scan, without trailing slash. If
   *   not set, the base path of the current theme will be used.
   * @param array $options
   *   Options to pass, see file_scan_directory() for addition options:
   *   - ignore_flags: (int|FALSE) A bitmask to indicate which directories (if
   *     any) should be skipped during the scan. Must also not contain a
   *     "nomask" property in $options. Value can be any of the following:
   *     - \Drupal\plus::IGNORE_CORE
   *     - \Drupal\plus::IGNORE_ASSETS
   *     - \Drupal\plus::IGNORE_DOCS
   *     - \Drupal\plus::IGNORE_DEV
   *     - \Drupal\plus::IGNORE_THEME
   *     Pass FALSE to iterate over all directories in $dir.
   *
   * @return array
   *   An associative array (keyed on the chosen key) of objects with 'uri',
   *   'filename', and 'name' members corresponding to the matching files.
   *
   * @see file_scan_directory()
   */
  public function fileScan($mask, $subdir = NULL, array $options = []);

  /**
   * Retrieves the alter plugin manager for the theme.
   *
   * @return \Drupal\plus\AlterManager
   *   The alter plugin manager.
   */
  public function getAlterManager();

  /**
   * Retrieves the full base/sub-theme ancestry of a theme.
   *
   * @param bool $reverse
   *   Whether or not to return the array of themes in reverse order, where the
   *   active theme is the first entry.
   *
   * @return \Drupal\plus\Plugin\Theme\ThemeInterface[]
   *   An associative array of theme plugin instances, keyed by machine name.
   */
  public function getAncestry($reverse = FALSE);

  /**
   * Retrieves an individual item from a theme's cache in the database.
   *
   * @param string $name
   *   The name of the item to retrieve from the theme cache.
   * @param array $context
   *   Optional. An array of additional context to use for retrieving the
   *   cached storage.
   * @param mixed $default
   *   Optional. The default value to use if $name does not exist.
   *
   * @return mixed|\Drupal\plus\Utility\StorageItem
   *   The cached value for $name.
   */
  public function getCache($name, array $context = [], $default = []);

  /**
   * Retrieves the class to use for constructing new Element instances.
   *
   * @return string
   *   The class name.
   */
  public function getElementClass();

  /**
   * The Extension object for this theme.
   *
   * @return \Drupal\Core\Extension\Extension
   */
  public function getExtension();

  /**
   * Retrieves the theme info.
   *
   * @param string $property
   *   A specific property entry from the theme's info array to return.
   * @param mixed $default
   *   The default value to return if not set.
   *
   * @return array
   *   The entire theme info or a specific item if $property was passed.
   */
  public function getInfo($property = NULL, $default = NULL);

  /**
   * Returns the machine name of the theme.
   *
   * @return string
   *   The machine name of the theme.
   */
  public function getName();

  /**
   * Returns the relative path of the theme.
   *
   * @return string
   *   The relative path of the theme.
   */
  public function getPath();

  /**
   * Retrieves pending updates for the theme.
   *
   * @return \Drupal\plus\Plugin\Update\UpdateInterface[]
   *   An array of update plugin objects.
   */
  public function getPendingUpdates();

  /**
   * Retrieves a theme setting.
   *
   * @param string $name
   *   The name of the setting to be retrieved.
   * @param mixed $default
   *   A default value to provide if the setting is not found or if the plugin
   *   does not have a "defaultValue" annotation key/value pair. Typically,
   *   you will likely never need to use this unless in rare circumstances
   *   where the setting plugin exists but needs a default value not able to
   *   be set by conventional means (e.g. empty array).
   *
   * @return mixed
   *   The value of the requested setting, NULL if the setting does not exist
   *   and no $default value was provided.
   *
   * @see theme_get_setting()
   */
  public function getSetting($name, $default = NULL);

  /**
   * Retrieves the setting plugin manager for the theme.
   *
   * @return \Drupal\plus\SettingPluginManager
   *   The setting plugin manager.
   */
  public function getSettingManager();

  /**
   * Retrieves a theme's setting plugin instance(s).
   *
   * @param string $name
   *   Optional. The name of a specific setting plugin instance to return.
   *
   * @return \Drupal\plus\Plugin\Setting\SettingInterface|\Drupal\plus\Plugin\Setting\SettingInterface[]|NULL
   *   If $name was provided, it will either return a specific setting plugin
   *   instance or NULL if not set. If $name was omitted it will return an array
   *   of setting plugin instances, keyed by their name.
   */
  public function getSettingPlugin($name = NULL);

  /**
   * Retrieves the theme's cache from the database.
   *
   * @return \Drupal\plus\Utility\Storage
   *   The cache object.
   */
  public function getStorage();

  /**
   * Retrieves the template plugin manager for the theme.
   *
   * @return \Drupal\plus\Plugin\Theme\Template\ProviderPluginManager
   *   The template plugin manager.
   */
  public function getTemplateManager();

  /**
   * Returns any the theme hook definition information.
   *
   * @param array $existing
   *   The existing theme hook registry info.
   * @param $type
   *   The extension type.
   * @param $theme
   *   The extension machine name.
   * @param $path
   *   The extension file system path.
   *
   * @return array
   *   An associative array that mimics hook_theme().
   *
   * @see \Drupal\plus\Plugin\Alter\ThemeRegistry::alter()
   * @see plus_theme_registry_alter()
   * @see plus_theme()
   * @see hook_theme()
   */
  public function getThemeHooks($existing, $type, $theme, $path);

  /**
   * Retrieves the human-readable title of the theme.
   *
   * @return string
   *   The theme title or machine name as a fallback.
   */
  public function getTitle();

  /**
   * Retrieves the update plugin manager for the theme.
   *
   * @return \Drupal\plus\UpdateManagerProvider
   *   The update plugin manager.
   */
  public function getUpdateManager();

  /**
   * Includes a file from the theme.
   *
   * @param string $file
   *   The file name, including the extension.
   * @param string $subdir
   *   A subdirectory inside the theme. Defaults to: "includes". Set to FALSE
   *   or and empty string if the file resides in the theme's root directory.
   *
   * @return bool
   *   TRUE if the file exists and is included successfully, FALSE otherwise.
   */
  public function includeOnce($file, $subdir = 'includes');

  /**
   * Initializes the theme.
   */
  public function initialize();

  /**
   * Installs a theme.
   */
  public function install();

  /**
   * Indicates whether this theme is an Plus based theme.
   *
   * @return bool
   *   TRUE or FALSE
   */
  public function isPlus();

  /**
   * Indicates whether the theme is in "development mode".
   *
   * @return bool
   *   TRUE or FALSE
   *
   * @see \Drupal\plus\Theme::dev
   */
  public function isDev();

  /**
   * Returns the livereload URL set, if any.
   *
   * @return string
   *
   * @see \Drupal\plus\Theme::livereload
   */
  public function livereloadUrl();

  /**
   * Provides additional variables to be used in templates.
   *
   * @return array
   *   An associative array containing key/default value pairs.
   */
  public function preprocessVariables();

  /**
   * Removes a theme setting.
   *
   * @param string $name
   *   Name of the theme setting to remove.
   */
  public function removeSetting($name);

  /**
   * Sets a value for a theme setting.
   *
   * @param string $name
   *   Name of the theme setting.
   * @param mixed $value
   *   Value to associate with the theme setting.
   */
  public function setSetting($name, $value);

  /**
   * Retrieves the theme settings instance.
   *
   * @return \Drupal\plus\ThemeSettings
   *   All settings.
   */
  public function settings();

  /**
   * Determines whether or not a theme is a sub-theme of another.
   *
   * @param string|\Drupal\plus\Plugin\Theme\ThemeInterface $theme
   *   The name or theme Extension object to check.
   *
   * @return bool
   *   TRUE or FALSE
   */
  public function subthemeOf($theme);

  /**
   * Uninstalls a theme.
   */
  public function uninstall();

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc