4 * Contains \Drupal\bootstrap\Plugin\SettingManager.
7 namespace Drupal\bootstrap\Plugin;
9 use Drupal\bootstrap\Theme;
10 use Drupal\Component\Utility\SortArray;
13 * Manages discovery and instantiation of Bootstrap theme settings.
15 * @ingroup plugins_setting
17 class SettingManager extends PluginManager {
20 * Constructs a new \Drupal\bootstrap\Plugin\SettingManager object.
22 * @param \Drupal\bootstrap\Theme $theme
23 * The theme to use for discovery.
25 public function __construct(Theme $theme) {
26 parent::__construct($theme, 'Plugin/Setting', 'Drupal\bootstrap\Plugin\Setting\SettingInterface', 'Drupal\bootstrap\Annotation\BootstrapSetting');
27 $this->setCacheBackend(\Drupal::cache('discovery'), 'theme:' . $theme->getName() . ':setting', $this->getCacheTags());
33 public function getDefinitions($sorted = TRUE) {
34 $definitions = parent::getDefinitions(FALSE);
37 foreach ($definitions as $plugin_id => $definition) {
38 $key = !empty($definition['groups']) ? implode(':', array_keys($definition['groups'])) : '_default';
39 $groups[$key][$plugin_id] = $definition;
43 foreach ($groups as $settings) {
44 uasort($settings, [$this, 'sort']);
45 $definitions = array_merge($definitions, $settings);
53 * Sorts a structured array by either a set 'weight' property or by the ID.
56 * First item for comparison.
58 * Second item for comparison.
61 * The comparison result for uasort().
63 public static function sort(array $a, array $b) {
64 if (isset($a['weight']) || isset($b['weight'])) {
65 return SortArray::sortByWeightElement($a, $b);
68 return SortArray::sortByKeyString($a, $b, 'id');