939 lines
29 KiB
PHP
939 lines
29 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* This contains deprecated functions that will be removed in a future release.
|
|
*/
|
|
|
|
use Drupal\bootstrap\Bootstrap;
|
|
use Drupal\bootstrap\Plugin\ProviderManager;
|
|
use Drupal\bootstrap\Utility\Element;
|
|
use Drupal\bootstrap\Utility\Unicode;
|
|
use Drupal\Component\Utility\NestedArray;
|
|
|
|
/**
|
|
* The base file system path for CDN providers.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* echo BOOTSTRAP_CDN_PROVIDER_PATH;
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Plugin\ProviderManager;
|
|
* echo ProviderManager::FILE_PATH;
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Plugin\ProviderManager::FILE_PATH
|
|
*/
|
|
define('BOOTSTRAP_CDN_PROVIDER_PATH', ProviderManager::FILE_PATH);
|
|
|
|
/**
|
|
* The current supported Bootstrap framework major version number.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* echo BOOTSTRAP_VERSION_MAJOR;
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* echo substr(Bootstrap::FRAMEWORK_VERSION, 0, 1);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::FRAMEWORK_VERSION
|
|
*/
|
|
define('BOOTSTRAP_VERSION_MAJOR', substr(Bootstrap::FRAMEWORK_VERSION, 0, 1));
|
|
|
|
/**
|
|
* The current supported Bootstrap framework minor version number.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* echo BOOTSTRAP_VERSION_MINOR;
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* echo substr(Bootstrap::FRAMEWORK_VERSION, 2, 1);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::FRAMEWORK_VERSION
|
|
*/
|
|
define('BOOTSTRAP_VERSION_MINOR', substr(Bootstrap::FRAMEWORK_VERSION, 2, 1));
|
|
|
|
/**
|
|
* The current supported Bootstrap framework patch version number.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* echo BOOTSTRAP_VERSION_PATCH;
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* echo substr(Bootstrap::FRAMEWORK_VERSION, 4, 1);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::FRAMEWORK_VERSION
|
|
*/
|
|
define('BOOTSTRAP_VERSION_PATCH', substr(Bootstrap::FRAMEWORK_VERSION, 4, 1));
|
|
|
|
/**
|
|
* The current supported Bootstrap framework version.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* echo BOOTSTRAP_VERSION;
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* echo Bootstrap::FRAMEWORK_VERSION;
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::FRAMEWORK_VERSION
|
|
*/
|
|
define('BOOTSTRAP_VERSION', Bootstrap::FRAMEWORK_VERSION);
|
|
|
|
/**
|
|
* Adds a class to an element's render array.
|
|
*
|
|
* @param string|array $class
|
|
* An individual class or an array of classes to add.
|
|
* @param array $element
|
|
* The individual renderable array element. It is possible to also pass the
|
|
* $variables parameter in [pre]process functions and it will logically
|
|
* determine the correct path to that particular theme hook's classes array.
|
|
* Passed by reference.
|
|
* @param string $property
|
|
* Determines which attributes array to retrieve. By default, this is the
|
|
* element's normal "attributes", but it could also be one of the following:
|
|
* - "content_attributes"
|
|
* - "input_group_attributes"
|
|
* - "title_attributes"
|
|
* - "wrapper_attributes".
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* _bootstrap_add_class('my-class', $element);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* Element::create($element)->addClass('my-class');
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::addClass()
|
|
*/
|
|
function _bootstrap_add_class($class, array &$element, $property = 'attributes') {
|
|
Bootstrap::deprecated();
|
|
Element::create($element)->addClass($class, $property);
|
|
}
|
|
|
|
/**
|
|
* Adds a specific Bootstrap class to color a button based on its text value.
|
|
*
|
|
* @param array $element
|
|
* The form element, passed by reference.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* _bootstrap_colorize_button($element);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* Element::create($element)->colorize();
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::colorize()
|
|
* */
|
|
function _bootstrap_colorize_button(array &$element) {
|
|
Bootstrap::deprecated();
|
|
Element::create($element)->colorize();
|
|
}
|
|
|
|
/**
|
|
* Matches a Bootstrap class based on a string value.
|
|
*
|
|
* @param string $string
|
|
* The string to match classes against.
|
|
* @param string $default
|
|
* The default class to return if no match is found.
|
|
*
|
|
* @return string
|
|
* The Bootstrap class matched against the value of $haystack or $default if
|
|
* no match could be made.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $class = _bootstrap_colorize_text($string, $default);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $class = Bootstrap::cssClassFromString($string, $default);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::cssClassFromString()
|
|
*/
|
|
function _bootstrap_colorize_text($string, $default = '') {
|
|
Bootstrap::deprecated();
|
|
return Bootstrap::cssClassFromString($string, $default);
|
|
}
|
|
|
|
/**
|
|
* Wrapper for the core file_scan_directory() function.
|
|
*
|
|
* Finds all files that match a given mask in a given directory and then caches
|
|
* the results. A general site cache clear will force new scans to be initiated
|
|
* for already cached directories.
|
|
*
|
|
* @param string $dir
|
|
* The base directory or URI to scan, without trailing slash.
|
|
* @param string $mask
|
|
* The preg_match() regular expression of the files to find.
|
|
* @param array $options
|
|
* Additional options to pass to file_scan_directory().
|
|
*
|
|
* @return array
|
|
* An associative array (keyed on the chosen key) of objects with 'uri',
|
|
* 'filename', and 'name' members corresponding to the matching files.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $files = _bootstrap_file_scan_directory($theme_path . '/js', '/\.js$/');
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $files = Bootstrap::getTheme()->fileScan('/\.js$/', 'js');
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Theme::fileScan()
|
|
* @see file_scan_directory()
|
|
*/
|
|
function _bootstrap_file_scan_directory($dir, $mask, array $options = []) {
|
|
Bootstrap::deprecated();
|
|
$theme = Bootstrap::getTheme();
|
|
$dir = preg_replace('/^' . preg_quote($theme->getPath()) . '\//', '', $dir);
|
|
return $theme->fileScan($mask, $dir, $options);
|
|
}
|
|
|
|
/**
|
|
* Retrieves an element's "attributes" array.
|
|
*
|
|
* @param array $element
|
|
* The individual renderable array element, passed by reference.
|
|
* @param string $property
|
|
* Determines which attributes array to retrieve. By default, this is the
|
|
* element's normal "attributes", but it could also be one of the following:
|
|
* - "content_attributes"
|
|
* - "input_group_attributes"
|
|
* - "title_attributes"
|
|
* - "wrapper_attributes".
|
|
*
|
|
* @return array
|
|
* The attributes array.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $attributes = &_bootstrap_get_attributes($element);
|
|
* $attributes['class'][] = 'my-class';
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* $attributes = &Element::create($element)->getAttributes();
|
|
* $attributes['class'][] = 'my-class';
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::getAttributes()
|
|
*/
|
|
function &_bootstrap_get_attributes(array &$element, $property = 'attributes') {
|
|
Bootstrap::deprecated();
|
|
return Element::create($element)->getAttributes($property);
|
|
}
|
|
|
|
/**
|
|
* Returns a list of base themes for active or provided theme.
|
|
*
|
|
* @param string $theme_key
|
|
* The machine name of the theme to check, if not set the active theme name
|
|
* will be used.
|
|
* @param bool $include_theme_key
|
|
* Whether to append the returned list with $theme_key.
|
|
*
|
|
* @return array
|
|
* An indexed array of base themes.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before (including active theme).
|
|
* $base_themes = _bootstrap_get_base_themes(NULL, TRUE);
|
|
*
|
|
* // Before (excluding active theme).
|
|
* $base_themes = _bootstrap_get_base_themes('my_subtheme');
|
|
*
|
|
* // After (including active theme).
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $theme = Bootstrap::getTheme();
|
|
* $base_themes = array_keys($theme->getAncestry());
|
|
*
|
|
* // After (excluding active theme).
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $my_subtheme = Bootstrap::getTheme('my_subtheme');
|
|
* $base_themes = array_keys($my_subtheme->getAncestry());
|
|
* array_pop($base_themes);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Theme::getAncestry()
|
|
*/
|
|
function _bootstrap_get_base_themes($theme_key = NULL, $include_theme_key = FALSE) {
|
|
Bootstrap::deprecated();
|
|
$themes = array_keys(Bootstrap::getTheme($theme_key)->getAncestry());
|
|
if (!$include_theme_key) {
|
|
array_pop($themes);
|
|
}
|
|
return $themes;
|
|
}
|
|
|
|
/**
|
|
* Retrieves an element's "class" attribute array.
|
|
*
|
|
* @param array $element
|
|
* The individual renderable array element, passed by reference.
|
|
* @param string $property
|
|
* Determines which attributes array to retrieve. By default, this is the
|
|
* element's normal "attributes", but it could also be one of the following:
|
|
* - "content_attributes"
|
|
* - "input_group_attributes"
|
|
* - "title_attributes"
|
|
* - "wrapper_attributes".
|
|
*
|
|
* @return array
|
|
* The classes array.
|
|
*
|
|
* @deprecated Will be removed in a future release. There is no replacement.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $classes = &_bootstrap_get_classes($element);
|
|
* $classes[] = 'my-class';
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* $classes = &Element::create($element)->getClasses();
|
|
* $classes[] = 'my-class';
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::getClasses()
|
|
*/
|
|
function &_bootstrap_get_classes(array &$element, $property = 'attributes') {
|
|
Bootstrap::deprecated();
|
|
return Element::create($element)->getClasses($property);
|
|
}
|
|
|
|
/**
|
|
* Returns a specific Bootstrap Glyphicon as a render array.
|
|
*
|
|
* Note: This function was added in 7.x-3.17 to keep BC with the former
|
|
* _bootstrap_icon() implementation since it didn't return a render array. It
|
|
* is basically a backport of 8.x-3.x code so the added $attributes parameter
|
|
* can be more easily dealt with.
|
|
*
|
|
* @param string $name
|
|
* The icon name, minus the "glyphicon-" prefix.
|
|
* @param array|string $default
|
|
* (Optional) The default render array to use if $name is not available.
|
|
* @param array $attributes
|
|
* (Optional) Additional attributes to merge onto the icon.
|
|
*
|
|
* @return array
|
|
* The render containing the icon defined by $name, $default value if
|
|
* icon does not exist or returns NULL if no icon could be rendered.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $icon = _bootstrap_glyphicon($name, $default, $attributes);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* $icon = Bootstrap::glyphicon($name, ['#markup' => $default]);
|
|
* $icon_attributes = isset($icon['#attributes']) ? $icon['#attributes'] : [];
|
|
* unset($icon['#attributes']);
|
|
* $icon = Element::createStandalone($icon)->setAttributes($attributes)->setAttributes($icon_attributes)->getArray();
|
|
* @endcode
|
|
*
|
|
* @see https://www.drupal.org/project/bootstrap/issues/2844885
|
|
* @see \Drupal\bootstrap\Bootstrap::glyphicon()
|
|
* @see \Drupal\bootstrap\Utility\Element::createStandalone()
|
|
*/
|
|
function _bootstrap_glyphicon($name, $default = [], array $attributes = []) {
|
|
Bootstrap::deprecated();
|
|
$icon = Bootstrap::glyphicon($name, ['#markup' => $default]);
|
|
$icon_attributes = isset($icon['#attributes']) ? $icon['#attributes'] : [];
|
|
unset($icon['#attributes']);
|
|
return Element::createStandalone($icon)->setAttributes($attributes)->setAttributes($icon_attributes)->getArray();
|
|
}
|
|
|
|
/**
|
|
* Returns a list of available Bootstrap Glyphicons.
|
|
*
|
|
* @param string $version
|
|
* The specific version of glyphicons to return. If not set, the latest
|
|
* BOOTSTRAP_VERSION will be used.
|
|
*
|
|
* @return array
|
|
* An associative array of icons keyed by their classes.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $glyphicons = _bootstrap_glyphicons($version);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $glyphicons = Bootstrap::glyphicons($version);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::glyphicons()
|
|
*/
|
|
function _bootstrap_glyphicons($version = NULL) {
|
|
Bootstrap::deprecated();
|
|
return Bootstrap::glyphicons($version);
|
|
}
|
|
|
|
/**
|
|
* Determine whether or not Bootstrap Glyphicons can be used.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $supported = _bootstrap_glyphicons_supported();
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $theme = Bootstrap::getTheme();
|
|
* $supported = $theme->hasGlyphicons();
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Theme::hasGlyphicons()
|
|
*/
|
|
function _bootstrap_glyphicons_supported() {
|
|
Bootstrap::deprecated();
|
|
return Bootstrap::getTheme()->hasGlyphicons();
|
|
}
|
|
|
|
/**
|
|
* Returns a specific Bootstrap Glyphicon as rendered HTML markup.
|
|
*
|
|
* @param string $name
|
|
* The icon name, minus the "glyphicon-" prefix.
|
|
* @param string $default
|
|
* (Optional) The default value to return.
|
|
* @param array $attributes
|
|
* (Optional) Additional attributes to merge onto the icon.
|
|
*
|
|
* @return string
|
|
* The HTML markup containing the icon defined by $name, $default value if
|
|
* icon does not exist or returns empty output for whatever reason.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $icon = _bootstrap_icon($name, $default, $attributes);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* $icon = Bootstrap::glyphicon($name, ['#markup' => $default]);
|
|
* $icon_attributes = isset($icon['#attributes']) ? $icon['#attributes'] : [];
|
|
* unset($icon['#attributes']);
|
|
* $icon = (string) Element::createStandalone($icon)->setAttributes($attributes)->setAttributes($icon_attributes)->renderPlain();
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::glyphicon()
|
|
* @see \Drupal\bootstrap\Utility\Element::createStandalone()
|
|
*/
|
|
function _bootstrap_icon($name, $default = NULL, array $attributes = []) {
|
|
Bootstrap::deprecated();
|
|
$icon = Bootstrap::glyphicon($name, ['#markup' => $default]);
|
|
$icon_attributes = isset($icon['#attributes']) ? $icon['#attributes'] : [];
|
|
unset($icon['#attributes']);
|
|
return (string) Element::createStandalone($icon)->setAttributes($attributes)->setAttributes($icon_attributes)->renderPlain();
|
|
}
|
|
|
|
/**
|
|
* Adds an icon to button element based on its text value.
|
|
*
|
|
* @param array $element
|
|
* The form element, passed by reference.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* _bootstrap_iconize_button($element);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* Element::create($element)->setIcon();
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::setIcon()
|
|
*/
|
|
function _bootstrap_iconize_button(array &$element) {
|
|
Bootstrap::deprecated();
|
|
Element::create($element)->setIcon();
|
|
}
|
|
|
|
/**
|
|
* Matches a Bootstrap Glyphicon based on a string value.
|
|
*
|
|
* @param string $string
|
|
* The string to match classes against.
|
|
* @param string $default
|
|
* The default icon to return if no match is found.
|
|
*
|
|
* @return string
|
|
* The Bootstrap icon matched against the value of $haystack or $default if
|
|
* no match could be made.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $icon = _bootstrap_iconize_text($string, $default);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $icon = Bootstrap::glyphiconFromString($string, ['#markup' => $default]);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Bootstrap::glyphiconFromString()
|
|
*/
|
|
function _bootstrap_iconize_text($string, $default = '') {
|
|
Bootstrap::deprecated();
|
|
return Bootstrap::glyphiconFromString($string, ['#markup' => $default]);
|
|
}
|
|
|
|
/**
|
|
* Determines if an element is a button.
|
|
*
|
|
* @param array $element
|
|
* A render array element.
|
|
*
|
|
* @return bool
|
|
* TRUE or FALSE.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $button = _bootstrap_is_button($element);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* $button = Element::create($element)->isButton();
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::isButton()
|
|
*/
|
|
function _bootstrap_is_button(array $element) {
|
|
Bootstrap::deprecated();
|
|
return Element::create($element)->isButton();
|
|
}
|
|
|
|
/**
|
|
* Determines if a string of text is considered "simple".
|
|
*
|
|
* @param string $string
|
|
* The string of text to check "simple" criteria on.
|
|
* @param int|false $length
|
|
* The length of characters used to determine whether or not $string is
|
|
* considered "simple". Set explicitly to FALSE to disable this criteria.
|
|
* @param array|false $allowed_tags
|
|
* An array of allowed tag elements. Set explicitly to FALSE to disable this
|
|
* criteria.
|
|
* @param bool $html
|
|
* A variable, passed by reference, that indicates whether or not the
|
|
* string contains HTML.
|
|
*
|
|
* @return bool
|
|
* Returns TRUE if the $string is considered "simple", FALSE otherwise.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $simple = _bootstrap_is_simple_string($string, $length, $allowed_tags, $html);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Unicode;
|
|
* $simple = Unicode::isSimple($string, $length, $allowed_tags, $html);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Unicode::isSimple()
|
|
*/
|
|
function _bootstrap_is_simple_string($string, $length = 250, $allowed_tags = NULL, &$html = FALSE) {
|
|
Bootstrap::deprecated();
|
|
return Unicode::isSimple($string, $length, $allowed_tags, $html);
|
|
}
|
|
|
|
/**
|
|
* Removes a class from an element's attributes array.
|
|
*
|
|
* @param string|array $class
|
|
* An individual class or an array of classes to remove.
|
|
* @param array $element
|
|
* The individual renderable array element.
|
|
* @param string $property
|
|
* Determines which attributes array to retrieve. By default, this is the
|
|
* element's normal "attributes", but it could also be one of the following:
|
|
* - "content_attributes"
|
|
* - "input_group_attributes"
|
|
* - "title_attributes"
|
|
* - "wrapper_attributes".
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* _bootstrap_remove_class('my-class', $element);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* Element::create($element)->removeClass('my-class');
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::removeClass()
|
|
*/
|
|
function _bootstrap_remove_class($class, array &$element, $property = 'attributes') {
|
|
Bootstrap::deprecated();
|
|
Element::create($element)->removeClass($class, $property);
|
|
}
|
|
|
|
/**
|
|
* Retrieves a list of available CDN providers for the Bootstrap framework.
|
|
*
|
|
* @param string $provider
|
|
* A specific provider data to return.
|
|
* @param bool $reset
|
|
* Toggle determining whether or not to reset the database cache.
|
|
*
|
|
* @return array|false
|
|
* An associative array of CDN providers, keyed by their machine name if
|
|
* $provider is not set. If $provider is set and exists, it's individual
|
|
* data array will be returned. If $provider is set and the data does not
|
|
* exist then FALSE will be returned.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $providers = bootstrap_cdn_provider();
|
|
* $jsdelivr = bootstrap_cdn_provider('jsdelivr');
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* use Drupal\bootstrap\Plugin\ProviderManager;
|
|
*
|
|
* $theme = Bootstrap::getTheme();
|
|
*
|
|
* // Get provider definitions, the "equivalent" for bootstrap_cdn_provider().
|
|
* $provider_manager = new ProviderManager($theme);
|
|
* $providers = $provider_manager->getDefinitions();
|
|
* $jsdelivr = $provider_manager->getDefinition('jsdelivr');
|
|
*
|
|
* // You should, however, use the the fully initialized classes made
|
|
* // available through a theme instance.
|
|
* $providers = $theme->getProviders();
|
|
* $jsdelivr = $theme->getProvider('jsdelivr');
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Plugin\ProviderManager
|
|
* @see \Drupal\bootstrap\Theme::getCdnProviders()
|
|
* @see \Drupal\bootstrap\Theme::getCdnProvider()
|
|
*/
|
|
function bootstrap_cdn_provider($provider = NULL, $reset = FALSE) {
|
|
Bootstrap::deprecated();
|
|
$provider_manager = new ProviderManager(Bootstrap::getTheme());
|
|
if ($reset) {
|
|
$provider_manager->clearCachedDefinitions();
|
|
}
|
|
if (isset($provider)) {
|
|
if ($provider_manager->hasDefinition($provider)) {
|
|
return $provider_manager->getDefinition($provider);
|
|
}
|
|
return FALSE;
|
|
}
|
|
return $provider_manager->getDefinitions();
|
|
}
|
|
|
|
/**
|
|
* Converts an element description into a tooltip based on certain criteria.
|
|
*
|
|
* @param array $element
|
|
* An element render array, passed by reference.
|
|
* @param array $target
|
|
* The target element render array the tooltip is to be attached to, passed
|
|
* by reference. If not set, it will default to the $element passed.
|
|
* @param bool $input_only
|
|
* Toggle determining whether or not to only convert input elements.
|
|
* @param int $length
|
|
* The length of characters to determine if description is "simple".
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* bootstrap_element_smart_description($element, $target, $input_only, $length);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Utility\Element;
|
|
* Element::create($element)->smartDescription($target, $input_only, $length);
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Utility\Element::smartDescription()
|
|
*/
|
|
function bootstrap_element_smart_description(array &$element, array &$target = NULL, $input_only = TRUE, $length = NULL) {
|
|
Bootstrap::deprecated();
|
|
Element::create($element)->smartDescription($target, $input_only, $length);
|
|
}
|
|
|
|
/**
|
|
* Retrieves CDN assets for the active provider, if any.
|
|
*
|
|
* @param string|array $type
|
|
* The type of asset to retrieve: "css" or "js", defaults to an array
|
|
* array containing both if not set.
|
|
* @param string $provider
|
|
* The name of a specific CDN provider to use, defaults to the active provider
|
|
* set in the theme settings.
|
|
* @param string $theme
|
|
* The name of a specific theme the settings should be retrieved from,
|
|
* defaults to the active theme.
|
|
*
|
|
* @return array
|
|
* If $type is a string or an array with only one (1) item in it, the assets
|
|
* are returned as an indexed array of files. Otherwise, an associative array
|
|
* is returned keyed by the type.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* $assets = bootstrap_get_cdn_assets($type, $provider, $theme);
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Plugin\ProviderManager;
|
|
* $original_type = $type;
|
|
* $config = \Drupal::config('system.performance');
|
|
* $cdnAssets = ProviderManager::load($theme, $provider)->getCdnAssets();
|
|
* $data = [];
|
|
* $types = !isset($type) ? ['css', 'js'] : (array) $type;
|
|
* foreach ($types as $type) {
|
|
* if ($config->get("$type.preprocess") && !empty($cdnAssets['min'][$type])) {
|
|
* $data[$type] = $cdnAssets['min'][$type];
|
|
* }
|
|
* elseif (!empty($data[$type])) {
|
|
* $data[$type] = $cdnAssets[$type];
|
|
* }
|
|
* }
|
|
* $assets = is_string($original_type) ? $data[$original_type] : $data;
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Plugin\Provider\Custom::getAssets()
|
|
* @see \Drupal\bootstrap\Plugin\Provider\JsDelivr::getAssets()
|
|
* @see \Drupal\bootstrap\Plugin\Provider\ProviderBase::getAssets()
|
|
* @see \Drupal\bootstrap\Plugin\Provider\ProviderInterface::getAssets()
|
|
* @see \Drupal\bootstrap\Plugin\ProviderManager::load()
|
|
*/
|
|
function bootstrap_get_cdn_assets($type = NULL, $provider = NULL, $theme = NULL) {
|
|
Bootstrap::deprecated();
|
|
$original_type = $type;
|
|
$return = [];
|
|
$config = \Drupal::config('system.performance');
|
|
$assets = ProviderManager::load($theme, $provider)->getCdnAssets();
|
|
$types = !isset($type) ? ['css', 'js'] : (array) $type;
|
|
foreach ($types as $type) {
|
|
$return[$type] = $assets->get($type, $config->get("$type.preprocess"));
|
|
}
|
|
return is_string($original_type) ? $return[$original_type] : $return;
|
|
}
|
|
|
|
/**
|
|
* Return information from the .info file of a theme (and possible base themes).
|
|
*
|
|
* @param string $theme_key
|
|
* The machine name of the theme.
|
|
* @param string $key
|
|
* The key name of the item to return from the .info file. This value can
|
|
* include "][" to automatically attempt to traverse any arrays.
|
|
* @param bool $base_themes
|
|
* Recursively search base themes, defaults to TRUE.
|
|
*
|
|
* @return string|array|false
|
|
* A string or array depending on the type of value and if a base theme also
|
|
* contains the same $key, FALSE if no $key is found.
|
|
*
|
|
* @deprecated Will be removed in a future release. There is no replacement.
|
|
*/
|
|
function bootstrap_get_theme_info($theme_key = NULL, $key = NULL, $base_themes = TRUE) {
|
|
Bootstrap::deprecated();
|
|
// If no $theme_key is given, use the current theme if we can determine it.
|
|
if (!isset($theme_key)) {
|
|
$theme_key = !empty($GLOBALS['theme_key']) ? $GLOBALS['theme_key'] : FALSE;
|
|
}
|
|
if ($theme_key) {
|
|
$themes = \Drupal::service('theme_handler')->listInfo();
|
|
if (!empty($themes[$theme_key])) {
|
|
$theme = $themes[$theme_key];
|
|
// If a key name was specified, return just that array.
|
|
if ($key) {
|
|
$value = FALSE;
|
|
// Recursively add base theme values.
|
|
if ($base_themes && isset($theme->base_themes)) {
|
|
foreach (array_keys($theme->base_themes) as $base_theme) {
|
|
$value = bootstrap_get_theme_info($base_theme, $key);
|
|
}
|
|
}
|
|
if (!empty($themes[$theme_key])) {
|
|
$info = $themes[$theme_key]->info;
|
|
// Allow array traversal.
|
|
$keys = explode('][', $key);
|
|
foreach ($keys as $parent) {
|
|
if (isset($info[$parent])) {
|
|
$info = $info[$parent];
|
|
}
|
|
else {
|
|
$info = FALSE;
|
|
}
|
|
}
|
|
if (is_array($value)) {
|
|
if (!empty($info)) {
|
|
if (!is_array($info)) {
|
|
$info = [$info];
|
|
}
|
|
$value = NestedArray::mergeDeep($value, $info);
|
|
}
|
|
}
|
|
else {
|
|
if (!empty($info)) {
|
|
if (empty($value)) {
|
|
$value = $info;
|
|
}
|
|
else {
|
|
if (!is_array($value)) {
|
|
$value = [$value];
|
|
}
|
|
if (!is_array($info)) {
|
|
$info = [$info];
|
|
}
|
|
$value = NestedArray::mergeDeep($value, $info);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $value;
|
|
}
|
|
// If no info $key was specified, just return the entire info array.
|
|
return $theme->info;
|
|
}
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
* Includes a file from a theme.
|
|
*
|
|
* @param string $theme
|
|
* Name of the theme to use for base path.
|
|
* @param string $path
|
|
* Path relative to $theme.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before.
|
|
* bootstrap_include('my_subtheme', 'includes/file.inc');
|
|
* bootstrap_include('my_subtheme', 'some/other/path/file.inc');
|
|
*
|
|
* // After.
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $my_subtheme = Bootstrap::getTheme('my_subtheme');
|
|
* $my_subtheme->includeOnce('file.inc');
|
|
* $my_subtheme->includeOnce('file.inc', 'some/other/path');
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Theme::includeOnce()
|
|
* @see \Drupal\bootstrap\Bootstrap::getTheme()
|
|
*/
|
|
function bootstrap_include($theme, $path) {
|
|
Bootstrap::deprecated();
|
|
$theme = Bootstrap::getTheme($theme);
|
|
$parts = explode('/', $path);
|
|
$file = array_pop($parts);
|
|
$dir = implode('/', $parts);
|
|
$theme->includeOnce($file, $dir);
|
|
}
|
|
|
|
/**
|
|
* Retrieves a setting for the current theme or for a given theme.
|
|
*
|
|
* @param string $name
|
|
* The name of the setting to be retrieved.
|
|
* @param string $theme
|
|
* The name of a given theme; defaults to the currently active theme.
|
|
* @param string $prefix
|
|
* The prefix used on the $name of the setting, this will be appended with
|
|
* "_" automatically if set.
|
|
* @param mixed $default
|
|
* The default value to return if setting doesn't exist or is not set.
|
|
*
|
|
* @return mixed
|
|
* The value of the requested setting, NULL if the setting does not exist.
|
|
*
|
|
* @deprecated Will be removed in a future release.
|
|
*
|
|
* @code
|
|
* // Before ("button_colorize" and "my_subtheme_custom_option").
|
|
* $colorize = bootstrap_setting('button_colorize', 'my_subtheme');
|
|
* $custom_option = bootstrap_setting('custom_option', 'my_subtheme', 'my_subtheme');
|
|
*
|
|
* // After ("button_colorize" and "my_subtheme_custom_option").
|
|
* use Drupal\bootstrap\Bootstrap;
|
|
* $my_subtheme = Bootstrap::getTheme('my_subtheme');
|
|
* $my_subtheme->getSetting('button_colorize');
|
|
* $my_subtheme->getSetting('my_subtheme_custom_option');
|
|
* @endcode
|
|
*
|
|
* @see \Drupal\bootstrap\Theme::getSetting()
|
|
* @see \Drupal\bootstrap\Bootstrap::getTheme()
|
|
*/
|
|
function bootstrap_setting($name, $theme = NULL, $prefix = 'bootstrap', $default = NULL) {
|
|
Bootstrap::deprecated();
|
|
$theme = Bootstrap::getTheme($theme);
|
|
$prefix = $prefix !== 'bootstrap' && !empty($prefix) ? $prefix . '_' : '';
|
|
return $theme->getSetting($prefix . $name, $default);
|
|
}
|