mc-cms-namelessmc/core/classes/Collections/Collection.php

59 lines
1.1 KiB
PHP
Raw Permalink Normal View History

2021-11-02 23:37:19 -07:00
<?php
/**
* Base Collection class.
2021-11-02 23:37:19 -07:00
*
* @package NamelessMC\Collections
* @author Samerton
* @version 2.0.0-pr13
* @license MIT
2021-11-02 23:37:19 -07:00
*/
class Collection
{
/** @var CollectionItemBase[] */
2021-11-02 23:37:19 -07:00
private array $_items;
public function __construct()
{
2021-11-02 23:37:19 -07:00
$this->_items = [];
}
public function addItem(CollectionItemBase $item): void
{
2021-11-02 23:37:19 -07:00
$this->_items[] = $item;
}
2022-03-30 21:15:17 -07:00
/**
* @return CollectionItemBase[]
*/
public function getEnabledItems(): array
{
2021-11-02 23:37:19 -07:00
$items = [];
foreach ($this->_items as $item) {
if ($item->isEnabled()) {
$items[] = $item;
}
}
2022-03-30 21:15:17 -07:00
uasort($items, static function (CollectionItemBase $a, CollectionItemBase $b) {
2021-11-02 23:37:19 -07:00
return $a->getOrder() - $b->getOrder();
});
return $items;
}
2022-03-30 21:15:17 -07:00
/**
* @return CollectionItemBase[]
*/
public function getAllItems(): array
{
2021-11-02 23:37:19 -07:00
$items = $this->_items;
2022-03-30 21:15:17 -07:00
uasort($items, static function (CollectionItemBase $a, CollectionItemBase $b) {
2021-11-02 23:37:19 -07:00
return $a->getOrder() - $b->getOrder();
});
return $items;
}
}