%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/sale/lib/helpers/order/builder/ |
| Current File : //home/bitrix/www/bitrix/modules/sale/lib/helpers/order/builder/settingscontainer.php |
<?
namespace Bitrix\Sale\Helpers\Order\Builder;
use Bitrix\Main\ArgumentOutOfRangeException;
use Bitrix\Main\SystemException;
final class SettingsContainer
{
const DISALLOW_NEW_USER_CREATION = 0;
const ALLOW_NEW_USER_CREATION = 1;
const SET_ANONYMOUS_USER = 2;
private $settings = [
//Allow creation new user if it doesn't exist yet.
'createUserIfNeed' => self::ALLOW_NEW_USER_CREATION,
//Do we need update the price of just added products.
//Now it is used only after the buyerId was changed.
'needUpdateNewProductPrice' => false,
//Refresh all products data.
//Now it is used only during order recalculation
'isRefreshData' => false,
//For performance purposes
'cacheProductProviderData' => true,
//Other errors will be ignored.
//We need this mostly during order creation
//empty means - all acceptable
'acceptableErrorCodes' => [],
//We need this if some of order properties upload files.
'propsFiles' => []
];
public function __construct (array $settings)
{
$diff = array_diff(array_keys($settings), $this->getAvailableItems());
if(!empty($diff))
{
throw new ArgumentOutOfRangeException('Unknown settings: "'.implode('",', $diff).'"');
}
$this->settings = array_merge($this->settings, $settings);
}
public function getItemValue($name)
{
if(!isset($this->settings[$name]))
{
throw new SystemException('Unknown setting: "'.$name.'"');
}
return $this->settings[$name];
}
private function getAvailableItems()
{
return array_keys($this->settings);
}
}