123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\Status;
- /**
- * Service model for managing statuses information. Statuses are just records with code, message and any
- * additional data. The model helps to keep track and manipulate statuses, that different modules want to set
- * to owner object of this model.
- *
- * @author Magento Core Team <core@magentocommerce.com>
- */
- class ListStatus
- {
- /**
- * Status information entities
- *
- * @var array
- */
- protected $_items = [];
- /**
- * Adds status information to the list of items.
- *
- * @param string|null $origin Usually a name of module, that adds this status
- * @param int|null $code Code of status, unique for origin, that sets it
- * @param string|null $message Status message
- * @param \Magento\Framework\DataObject|null $additionalData Any additional data, that caller would like to store
- * @return $this
- */
- public function addItem($origin = null, $code = null, $message = null, $additionalData = null)
- {
- $this->_items[] = [
- 'origin' => $origin,
- 'code' => $code,
- 'message' => $message,
- 'additionalData' => $additionalData,
- ];
- return $this;
- }
- /**
- * Retrieves all items
- *
- * @return array
- */
- public function getItems()
- {
- return $this->_items;
- }
- /**
- * Removes items, that have parameters equal to passed in $params.
- * Returns items removed.
- * $params can have following keys (if not set - then any item is good for this key):
- * 'origin', 'code', 'message'
- *
- * @param array $params
- * @return array
- */
- public function removeItemsByParams($params)
- {
- $items = $this->getItems();
- if (!$items) {
- return [];
- }
- $indexes = [];
- $paramKeys = ['origin', 'code', 'message'];
- foreach ($items as $index => $item) {
- $remove = true;
- foreach ($paramKeys as $key) {
- if (!isset($params[$key])) {
- continue;
- }
- if ($params[$key] != $item[$key]) {
- $remove = false;
- break;
- }
- }
- if ($remove) {
- $indexes[] = $index;
- }
- }
- return $this->removeItems($indexes);
- }
- /**
- * Removes items at mentioned index/indexes.
- * Returns items removed.
- *
- * @param int|array $indexes
- * @return array
- */
- public function removeItems($indexes)
- {
- if (![$indexes]) {
- $indexes = [$indexes];
- }
- if (!$indexes) {
- return [];
- }
- $items = $this->getItems();
- if (!$items) {
- return [];
- }
- $newItems = [];
- $removedItems = [];
- foreach ($items as $indexNow => $item) {
- if (in_array($indexNow, $indexes)) {
- $removedItems[] = $item;
- } else {
- $newItems[] = $item;
- }
- }
- $this->_items = $newItems;
- return $removedItems;
- }
- /**
- * Clears list from all items
- *
- * @return $this
- */
- public function clear()
- {
- $this->_items = [];
- return $this;
- }
- }
|