diff --git a/core/modules/system/core.api.php b/core/modules/system/core.api.php index 778cdb34840333c339d5dad08fd8a42640397476..14c894aa991809bf912cafb66e305475db76f5e6 100644 --- a/core/modules/system/core.api.php +++ b/core/modules/system/core.api.php @@ -1865,6 +1865,112 @@ function hook_display_variant_plugin_alter(array &$definitions) { $definitions['full_page']['admin_label'] = t('Block layout'); } +/** + * Flush all persistent and static caches. + * + * This hook asks your module to clear all of its static caches, + * in order to ensure a clean environment for subsequently + * invoked data rebuilds. + * + * Do NOT use this hook for rebuilding information. Only use it to flush custom + * caches. + * + * Static caches using drupal_static() do not need to be reset manually. + * However, all other static variables that do not use drupal_static() must be + * manually reset. + * + * This hook is invoked by drupal_flush_all_caches(). It runs before module data + * is updated and before hook_rebuild(). + * + * @see drupal_flush_all_caches() + * @see hook_rebuild() + */ +function hook_cache_flush() { + if (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update') { + _update_cache_clear(); + } +} + +/** + * Rebuild data based upon refreshed caches. + * + * This hook allows your module to rebuild its data based on the latest/current + * module data. It runs after hook_cache_flush() and after all module data has + * been updated. + * + * This hook is only invoked after the system has been completely cleared; + * i.e., all previously cached data is known to be gone and every API in the + * system is known to return current information, so your module can safely rely + * on all available data to rebuild its own. + * + * @see hook_cache_flush() + * @see drupal_flush_all_caches() + */ +function hook_rebuild() { + $themes = \Drupal::service('theme_handler')->listInfo(); + foreach ($themes as $theme) { + _block_rehash($theme->getName()); + } +} + +/** + * Alter the configuration synchronization steps. + * + * @param array $sync_steps + * A one-dimensional array of \Drupal\Core\Config\ConfigImporter method names + * or callables that are invoked to complete the import, in the order that + * they will be processed. Each callable item defined in $sync_steps should + * either be a global function or a public static method. The callable should + * accept a $context array by reference. For example: + * <code> + * function _additional_configuration_step(&$context) { + * // Do stuff. + * // If finished set $context['finished'] = 1. + * } + * </code> + * For more information on creating batches, see the + * @link batch Batch operations @endlink documentation. + * + * @see callback_batch_operation() + * @see \Drupal\Core\Config\ConfigImporter::initialize() + */ +function hook_config_import_steps_alter(&$sync_steps, \Drupal\Core\Config\ConfigImporter $config_importer) { + $deletes = $config_importer->getUnprocessedConfiguration('delete'); + if (isset($deletes['field.storage.node.body'])) { + $sync_steps[] = '_additional_configuration_step'; + } +} + +/** + * Alter config typed data definitions. + * + * For example you can alter the typed data types representing each + * configuration schema type to change default labels or form element renderers + * used for configuration translation. + * + * If implementations of this hook add or remove configuration schema a + * ConfigSchemaAlterException will be thrown. Keep in mind that there are tools + * that may use the configuration schema for static analysis of configuration + * files, like the string extractor for the localization system. Such systems + * won't work with dynamically defined configuration schemas. + * + * For adding new data types use configuration schema YAML files instead. + * + * @param $definitions + * Associative array of configuration type definitions keyed by schema type + * names. The elements are themselves array with information about the type. + * + * @see \Drupal\Core\Config\TypedConfigManager + * @see \Drupal\Core\Config\Schema\ConfigSchemaAlterException + */ +function hook_config_schema_info_alter(&$definitions) { + // Enhance the text and date type definitions with classes to generate proper + // form elements in ConfigTranslationFormBase. Other translatable types will + // appear as a one line textfield. + $definitions['text']['form_element_class'] = '\Drupal\config_translation\FormElement\Textarea'; + $definitions['date_format']['form_element_class'] = '\Drupal\config_translation\FormElement\DateFormat'; +} + /** * @} End of "addtogroup hooks". */ diff --git a/core/modules/system/menu.api.php b/core/modules/system/menu.api.php index f30f7088dfe35ac7a0e648ec033d13e0e4151157..cb04c594c655d191c3bf21423715ffd5028d8415 100644 --- a/core/modules/system/menu.api.php +++ b/core/modules/system/menu.api.php @@ -554,6 +554,50 @@ function hook_system_breadcrumb_alter(array &$breadcrumb, \Drupal\Core\Routing\R $breadcrumb[] = Drupal::l(t('Text'), 'example_route_name'); } +/** + * Alter the parameters for links. + * + * @param array $variables + * An associative array of variables defining a link. The link may be either a + * "route link" using \Drupal\Core\Utility\LinkGenerator::link(), which is + * exposed as the 'link_generator' service or a link generated by _l(). If the + * link is a "route link", 'route_name' will be set, otherwise 'path' will be + * set. The following keys can be altered: + * - text: The link text for the anchor tag as a translated string. + * - url_is_active: Whether or not the link points to the currently active + * URL. + * - url: The \Drupal\Core\Url object. + * - options: An associative array of additional options that will be passed + * to either \Drupal\Core\Routing\UrlGenerator::generateFromPath() or + * \Drupal\Core\Routing\UrlGenerator::generateFromRoute() to generate the + * href attribute for this link, and also used when generating the link. + * Defaults to an empty array. It may contain the following elements: + * - 'query': An array of query key/value-pairs (without any URL-encoding) to + * append to the URL. + * - absolute: Whether to force the output to be an absolute link (beginning + * with http:). Useful for links that will be displayed outside the site, + * such as in an RSS feed. Defaults to FALSE. + * - language: An optional language object. May affect the rendering of + * the anchor tag, such as by adding a language prefix to the path. + * - attributes: An associative array of HTML attributes to apply to the + * anchor tag. If element 'class' is included, it must be an array; 'title' + * must be a string; other elements are more flexible, as they just need + * to work as an argument for the constructor of the class + * Drupal\Core\Template\Attribute($options['attributes']). + * - html: Whether or not HTML should be allowed as the link text. If FALSE, + * the text will be run through + * \Drupal\Component\Utility\SafeMarkup::checkPlain() before being output. + * + * @see \Drupal\Core\Routing\UrlGenerator::generateFromPath() + * @see \Drupal\Core\Routing\UrlGenerator::generateFromRoute() + */ +function hook_link_alter(&$variables) { + // Add a warning to the end of route links to the admin section. + if (isset($variables['route_name']) && strpos($variables['route_name'], 'admin') !== FALSE) { + $variables['text'] .= ' (Warning!)'; + } +} + /** * @} End of "addtogroup hooks". */ diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php index 34fb4a8a245ee2389a27ed7ec9b77a6085fc473e..b1a868fd751935d2b440d16d1a68ee3e6fd991f4 100644 --- a/core/modules/system/system.api.php +++ b/core/modules/system/system.api.php @@ -15,54 +15,6 @@ * @{ */ -/** - * Flush all persistent and static caches. - * - * This hook asks your module to clear all of its static caches, - * in order to ensure a clean environment for subsequently - * invoked data rebuilds. - * - * Do NOT use this hook for rebuilding information. Only use it to flush custom - * caches. - * - * Static caches using drupal_static() do not need to be reset manually. - * However, all other static variables that do not use drupal_static() must be - * manually reset. - * - * This hook is invoked by drupal_flush_all_caches(). It runs before module data - * is updated and before hook_rebuild(). - * - * @see drupal_flush_all_caches() - * @see hook_rebuild() - */ -function hook_cache_flush() { - if (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update') { - _update_cache_clear(); - } -} - -/** - * Rebuild data based upon refreshed caches. - * - * This hook allows your module to rebuild its data based on the latest/current - * module data. It runs after hook_cache_flush() and after all module data has - * been updated. - * - * This hook is only invoked after the system has been completely cleared; - * i.e., all previously cached data is known to be gone and every API in the - * system is known to return current information, so your module can safely rely - * on all available data to rebuild its own. - * - * @see hook_cache_flush() - * @see drupal_flush_all_caches() - */ -function hook_rebuild() { - $themes = \Drupal::service('theme_handler')->listInfo(); - foreach ($themes as $theme) { - _block_rehash($theme->getName()); - } -} - /** * Alters theme operation links. * @@ -327,108 +279,6 @@ function hook_token_info_alter(&$data) { ); } -/** - * Alter the parameters for links. - * - * @param array $variables - * An associative array of variables defining a link. The link may be either a - * "route link" using \Drupal\Core\Utility\LinkGenerator::link(), which is - * exposed as the 'link_generator' service or a link generated by _l(). If the - * link is a "route link", 'route_name' will be set, otherwise 'path' will be - * set. The following keys can be altered: - * - text: The link text for the anchor tag as a translated string. - * - url_is_active: Whether or not the link points to the currently active - * URL. - * - url: The \Drupal\Core\Url object. - * - options: An associative array of additional options that will be passed - * to either \Drupal\Core\Routing\UrlGenerator::generateFromPath() or - * \Drupal\Core\Routing\UrlGenerator::generateFromRoute() to generate the - * href attribute for this link, and also used when generating the link. - * Defaults to an empty array. It may contain the following elements: - * - 'query': An array of query key/value-pairs (without any URL-encoding) to - * append to the URL. - * - absolute: Whether to force the output to be an absolute link (beginning - * with http:). Useful for links that will be displayed outside the site, - * such as in an RSS feed. Defaults to FALSE. - * - language: An optional language object. May affect the rendering of - * the anchor tag, such as by adding a language prefix to the path. - * - attributes: An associative array of HTML attributes to apply to the - * anchor tag. If element 'class' is included, it must be an array; 'title' - * must be a string; other elements are more flexible, as they just need - * to work as an argument for the constructor of the class - * Drupal\Core\Template\Attribute($options['attributes']). - * - html: Whether or not HTML should be allowed as the link text. If FALSE, - * the text will be run through - * \Drupal\Component\Utility\SafeMarkup::checkPlain() before being output. - * - * @see \Drupal\Core\Routing\UrlGenerator::generateFromPath() - * @see \Drupal\Core\Routing\UrlGenerator::generateFromRoute() - */ -function hook_link_alter(&$variables) { - // Add a warning to the end of route links to the admin section. - if (isset($variables['route_name']) && strpos($variables['route_name'], 'admin') !== FALSE) { - $variables['text'] .= ' (Warning!)'; - } -} - -/** - * Alter the configuration synchronization steps. - * - * @param array $sync_steps - * A one-dimensional array of \Drupal\Core\Config\ConfigImporter method names - * or callables that are invoked to complete the import, in the order that - * they will be processed. Each callable item defined in $sync_steps should - * either be a global function or a public static method. The callable should - * accept a $context array by reference. For example: - * <code> - * function _additional_configuration_step(&$context) { - * // Do stuff. - * // If finished set $context['finished'] = 1. - * } - * </code> - * For more information on creating batches, see the - * @link batch Batch operations @endlink documentation. - * - * @see callback_batch_operation() - * @see \Drupal\Core\Config\ConfigImporter::initialize() - */ -function hook_config_import_steps_alter(&$sync_steps, \Drupal\Core\Config\ConfigImporter $config_importer) { - $deletes = $config_importer->getUnprocessedConfiguration('delete'); - if (isset($deletes['field.storage.node.body'])) { - $sync_steps[] = '_additional_configuration_step'; - } -} - -/** - * Alter config typed data definitions. - * - * For example you can alter the typed data types representing each - * configuration schema type to change default labels or form element renderers - * used for configuration translation. - * - * If implementations of this hook add or remove configuration schema a - * ConfigSchemaAlterException will be thrown. Keep in mind that there are tools - * that may use the configuration schema for static analysis of configuration - * files, like the string extractor for the localization system. Such systems - * won't work with dynamically defined configuration schemas. - * - * For adding new data types use configuration schema YAML files instead. - * - * @param $definitions - * Associative array of configuration type definitions keyed by schema type - * names. The elements are themselves array with information about the type. - * - * @see \Drupal\Core\Config\TypedConfigManager - * @see \Drupal\Core\Config\Schema\ConfigSchemaAlterException - */ -function hook_config_schema_info_alter(&$definitions) { - // Enhance the text and date type definitions with classes to generate proper - // form elements in ConfigTranslationFormBase. Other translatable types will - // appear as a one line textfield. - $definitions['text']['form_element_class'] = '\Drupal\config_translation\FormElement\Textarea'; - $definitions['date_format']['form_element_class'] = '\Drupal\config_translation\FormElement\DateFormat'; -} - /** * @} End of "addtogroup hooks". */