403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/sale/lib/paysystem/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/sale/lib/paysystem/paymentavailablespaysystems.php
<?php

namespace Bitrix\Sale\PaySystem;

use Bitrix\Main\Error;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Result;
use Bitrix\Sale\Internals\PaymentPaySystemAvailableTable;
use Bitrix\Sale\Internals\PaymentTable;
use Bitrix\Sale\Internals\PaySystemActionTable;

Loc::loadMessages(__FILE__);

/**
 * A service for working with linking specific pay systems to payments.
 * 
 * Binding allows you to limit the client to the selected list of pay systems that he can use for payment.
 */
class PaymentAvailablesPaySystems
{
	/**
	 * Clearing bindings
	 *
	 * @param int $paymentId
	 * @return Result
	 */
	public static function clearBindings(int $paymentId)
	{
		return self::setBindings($paymentId, []);
	}
	
	/**
	 * Set available pay systems for payment.
	 * 
	 * Bindings added to this payment earlier will be deleted. 
	 *
	 * @param int $paymentId
	 * @param int[] $paySystemIds if the array is empty, the bindings will be cleared
	 * @return Result
	 */
	public static function setBindings(int $paymentId, array $paySystemIds)
	{
		$result = new Result();
		
		// check existing payment
		$existPayment = PaymentTable::getCount([
			'=ID' => $paymentId,
		]) > 0;
		if (!$existPayment)
		{
			$result->addError(
				new Error(Loc::getMessage('SALE_PS_PAYMENT_AVAILABLES_PAYSYSTEMS_NOT_FOUND_PAYMENT'))
			);
			return $result;
		}
		
		// grouping existing items by added & deleted
		$existPaySystemIds = [];
		$existRows = PaymentPaySystemAvailableTable::getList([
			'select' => [
				'ID',
				'PAY_SYSTEM_ID',
			],
			'filter' => [
				'=PAYMENT_ID' => $paymentId,
			],
		]);
		
		$deletedIds = [];
		$paySystemIds = array_map('intval', $paySystemIds);
		foreach ($existRows as $row)
		{
			$rowPaySystemId = (int)$row['PAY_SYSTEM_ID'];
			if (in_array($rowPaySystemId, $paySystemIds, true))
			{
				$existPaySystemIds[] = $rowPaySystemId;
			}
			else
			{
				$deletedIds[] = (int)$row['ID'];
			}
		}
		$addedPaySystemIds = array_diff($paySystemIds, $existPaySystemIds);
		
		// delete old pay systems
		foreach ($deletedIds as $deleteId)
		{
			$deleteResult = PaymentPaySystemAvailableTable::delete($deleteId);
			foreach ($deleteResult->getErrors() as $err)
			{
				$result->addError($err);
			}
		}
		
		// add new exist pay systems
		$paySystems = PaySystemActionTable::getList([
			'select' => [
				'ID',
			],
			'filter' => [
				'=ID' => $addedPaySystemIds,
			],
		]);
		foreach ($paySystems as $item)
		{
			$addResult = PaymentPaySystemAvailableTable::add([
				'PAYMENT_ID' => $paymentId,
				'PAY_SYSTEM_ID' => (int)$item['ID'],
			]);
			foreach ($addResult->getErrors() as $err)
			{
				$result->addError($err);
			}
		}
		
		return $result;
	}
	
	/**
	 * Pay systems available for payment
	 *
	 * @param int $paymentId
	 * @return int[] pay system ids
	 */
	public static function getAvailablePaySystemIdsByPaymentId(int $paymentId)
	{
		$ret = [];
		
		$rows = PaymentPaySystemAvailableTable::getList([
			'select' => [
				'PAY_SYSTEM_ID',
			],
			'filter' => [
				'=PAYMENT_ID' => $paymentId,
			],
		]);
		foreach ($rows as $row)
		{
			$ret[] = (int)$row['PAY_SYSTEM_ID'];
		}
		
		return $ret;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit