UserProtectionPluginCollection.php in User protect 8
File
src/Plugin/UserProtection/UserProtectionPluginCollection.php
View source
<?php
namespace Drupal\userprotect\Plugin\UserProtection;
use Drupal\Component\Utility\NestedArray;
use Drupal\Core\Plugin\DefaultLazyPluginCollection;
class UserProtectionPluginCollection extends DefaultLazyPluginCollection {
protected $definitions;
public function getAll() {
if (!$this->definitions) {
$this->definitions = $this->manager
->getDefinitions();
}
foreach ($this->definitions as $plugin_id => $definition) {
if (!isset($this->pluginInstances[$plugin_id])) {
$this
->initializePlugin($plugin_id);
}
}
uasort($this->pluginInstances, [
$this,
'pluginInstancesSort',
]);
return $this->pluginInstances;
}
public function getEnabledPlugins() {
$instances = $this
->getAll();
$enabled = [];
foreach ($this->configurations as $instance_id => $configuration) {
if ($configuration['status']) {
$enabled[] = $instances[$instance_id];
}
}
uasort($enabled, [
$this,
'pluginInstancesSort',
]);
return $enabled;
}
protected function initializePlugin($instance_id) {
$configuration = $this->manager
->getDefinition($instance_id);
if (isset($this->configurations[$instance_id])) {
$configuration = NestedArray::mergeDeep($configuration, $this->configurations[$instance_id]);
}
$this->configurations[$instance_id] = $configuration;
parent::initializePlugin($instance_id);
}
public function pluginInstancesSort(UserProtectionInterface $a, UserProtectionInterface $b) {
if ($a
->getWeight() != $b
->getWeight()) {
return $a
->getWeight() < $b
->getWeight() ? -1 : 1;
}
if ($a
->label() != $b
->label()) {
return strnatcasecmp($a
->label(), $b
->label());
}
if ($a->provider != $b->provider) {
return strnatcasecmp($a->provider, $b->provider);
}
return strnatcasecmp($a
->getPluginId(), $b
->getPluginId());
}
public function getConfiguration() {
$configuration = parent::getConfiguration();
foreach ($configuration as $instance_id => $instance_config) {
if (empty($instance_config['status'])) {
unset($configuration[$instance_id]);
}
}
return $configuration;
}
}