presto-8.x-2.2/src/Mixins/WeightedPluginManagerTrait.php
src/Mixins/WeightedPluginManagerTrait.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php namespace Drupal\presto\Mixins; /** * Adds definition sorting (by weight) to plugin managers. * * @package Drupal\presto\Mixins */ trait WeightedPluginManagerTrait { /** * Sorts plugins by weight. * * @param array $definitions * List of plugin definitions, each MUST have a 'weight' key. * * @return array * Sorted definitions. */ protected function sortByWeight( array $definitions ) { // Sort definitions by weight before returning. uasort( $definitions , function ( $first , $second ) { if ( $first [ 'weight' ] === $second [ 'weight' ]) { return 0; } return ( $first [ 'weight' ] < $second [ 'weight' ]) ? -1 : 1; }); return $definitions ; } } |