icingaweb2-module-businessp.../library/Businessprocess/Modification/NodeApplyManualOrderAction.php
Johannes Meyer 52c150c56b Use the new Sort trait where applicable
Moves the entire order processing to the renderers as that's
where it's mostly relevant. The only cases where nodes are
still ordered outside the rendering is where changes are
applied based on user input, which happened based on what's
been previously rendered.
2023-08-03 15:19:28 +02:00

35 lines
889 B
PHP

<?php
namespace Icinga\Module\Businessprocess\Modification;
use Icinga\Module\Businessprocess\BpConfig;
use Icinga\Module\Businessprocess\Common\Sort;
class NodeApplyManualOrderAction extends NodeAction
{
use Sort;
public function appliesTo(BpConfig $config)
{
return $config->getMetadata()->get('ManualOrder') !== 'yes';
}
public function applyTo(BpConfig $config)
{
$i = 0;
foreach ($config->getBpNodes() as $name => $node) {
if ($node->getDisplay() > 0) {
$node->setDisplay(++$i);
}
if ($node->hasChildren()) {
$node->setChildNames(array_keys(
$this->setSort('display_name asc')
->sort($node->getChildren())
));
}
}
$config->getMetadata()->set('ManualOrder', 'yes');
}
}