Same filename and directory in other branches
- 8.9.x core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
- 9 core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
Namespace
Drupal\Core\Plugin
File
core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php
View source
<?php
namespace Drupal\Core\Plugin;
use Drupal\Core\Extension\Exception\UnknownExtensionException;
use Drupal\Core\Extension\ModuleExtensionList;
use Drupal\Core\StringTranslation\StringTranslationTrait;
trait CategorizingPluginManagerTrait {
use StringTranslationTrait;
protected function processDefinitionCategory(&$definition) {
if (empty($definition['category'])) {
$definition['category'] = $this
->getProviderName($definition['provider']);
}
}
protected function getProviderName($provider) {
try {
return $this
->getModuleExtensionList()
->getName($provider);
} catch (UnknownExtensionException $e) {
return $provider;
}
}
public function getModuleHandler() {
@trigger_error(__METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:12.0.0. There is no replacement. See https://www.drupal.org/node/3310017', E_USER_DEPRECATED);
if (isset($this->moduleHandler)) {
return $this->moduleHandler;
}
return \Drupal::moduleHandler();
}
protected function getModuleExtensionList() : ModuleExtensionList {
if (isset($this->moduleExtensionList)) {
return $this->moduleExtensionList;
}
return \Drupal::service('extension.list.module');
}
public function getCategories() {
$categories = array_unique(array_values(array_map(function ($definition) {
return $definition['category'];
}, $this
->getDefinitions())));
natcasesort($categories);
return $categories;
}
public function getSortedDefinitions(array $definitions = NULL, $label_key = 'label') {
$definitions = $definitions ?? $this
->getDefinitions();
uasort($definitions, function ($a, $b) use ($label_key) {
if ((string) $a['category'] != (string) $b['category']) {
return strnatcasecmp($a['category'], $b['category']);
}
return strnatcasecmp($a[$label_key], $b[$label_key]);
});
return $definitions;
}
public function getGroupedDefinitions(array $definitions = NULL, $label_key = 'label') {
$definitions = $this
->getSortedDefinitions($definitions ?? $this
->getDefinitions(), $label_key);
$grouped_definitions = [];
foreach ($definitions as $id => $definition) {
$grouped_definitions[(string) $definition['category']][$id] = $definition;
}
return $grouped_definitions;
}
}
Traits