%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/forum/lib/internals/error/ |
Current File : /home/bitrix/www/bitrix/modules/forum/lib/internals/error/errorcollection.php |
<?php namespace Bitrix\Forum\Internals\Error; use Bitrix\Main\ArgumentTypeException; use Bitrix\Main\Entity\Result; use Bitrix\Main\Type\Dictionary; final class ErrorCollection extends Dictionary { /** * Constructor ErrorCollection. * @param array $values Errors which need to add in collection. * @throws ArgumentTypeException */ public function __construct(array $values = null) { if($values) { foreach($values as $value) { $this->checkType($value); } } unset($value); parent::__construct($values); } /** * Adds array of errors to collection. * @param Error[] $errors Array of errors. * @return void */ public function add(array $errors) { foreach ($errors as $error) { $this[] = $error; } unset($error); } /** * Adds one error to collection. * @param Error $error Error object. * @return void */ public function addOne(Error $error) { $this[] = $error; } /** * Adds errors from Main\Entity\Result. * @param Result $result Result after action in Entity. * @return void */ public function addFromResult(Result $result) { $errors = array(); foreach ($result->getErrorMessages() as $message) { $errors[] = new Error($message); } unset($message); $this->add($errors); } /** * Returns true if collection has errors. * @return bool */ public function hasErrors() { return (bool)count($this); } /** * Getting array of errors with the necessary code. * @param string $code Code of error. * @return Error[] */ public function getErrorsByCode($code) { $needle = array(); foreach($this->values as $error) { /** @var Error $error */ if($error->getCode() == $code) { $needle[] = $error; } } unset($error); return $needle; } /** * Getting once error with the necessary code. * @param string $code Code of error. * @return Error[] */ public function getErrorByCode($code) { foreach($this->values as $error) { /** @var Error $error */ if($error->getCode() == $code) { return $error; } } unset($error); return null; } /** * Offset to set error. * @param Error $offset Offset. * @param string|int $value Error. * @throws ArgumentTypeException * @return void */ public function offsetSet($offset, $value) { $this->checkType($value); parent::offsetSet($offset, $value); } /** * @param $value * @throws ArgumentTypeException */ private function checkType($value) { if(!$value instanceof Error) { throw new ArgumentTypeException('Could not push in ErrorCollection non Error.'); } } }