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/acrit.import/lib/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/acrit.import/lib/importadsapi.php
<?php

namespace Acrit\Import;

use Bitrix\Main\Loader,
	Bitrix\Main\Localization\Loc;

class ImportAdsapi extends Import
{
	private $source_login;
	private $source_token;

	const API_URI = 'https://ads-api.ru/main/';

	public static function getProfileParams() {
		$arParams = parent::getProfileParams();
		$arParams['SOURCE_LOGIN']['name'] = GetMessage("ACRIT_IMPORT_ADSAPI_FIELDS_SOURCE_LOGIN_NAME");
		$arParams['SOURCE_KEY']['name'] = GetMessage("ACRIT_IMPORT_ADSAPI_FIELDS_SOURCE_KEY_NAME");
		$arParams['SOURCE']['default'] = self::API_URI;
		$arParams['SOURCE']['display'] = false;
		$arParams['ENCODING']['default'] = 'UTF-8';
		$arParams['ENCODING']['display'] = false;
		return $arParams;
	}

	protected function fillProfile($profile_id=0) {
		parent::fillProfile($profile_id);
		// Set default category
		$this->arProfile['SOURCE_PARAM_1'] = $this->arProfile['SOURCE_PARAM_1'] ? (int)$this->arProfile['SOURCE_PARAM_1'] : 1;
	}

	protected function setSource() {
		parent::setSource();
		// Check connection
		$query = $this->getRequestUri('apigetparams') . "&category_id=1";
		$str = file_get_contents($query);
		$arResp = json_decode($str, true);
		if ($arResp['error']) {
			throw new \Exception($arResp['error']);
		}
	}

	public function getRequestUri($method='api') {
		$query = self::API_URI . $method . "?user=" . urlencode($this->arProfile['SOURCE_LOGIN']) .
			"&token=" . urlencode($this->arProfile['SOURCE_KEY']);
		return $query;
	}

	public function fillAuthData() {
		// Check auth data
		if (!$this->arProfile['SOURCE_LOGIN'] || !$this->arProfile['SOURCE_KEY']) {
			throw new \Exception(GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_EMPTY"));
		}
		// Fill data
		$this->source_login = $this->arProfile['SOURCE_LOGIN'];
		$this->source_token = $this->arProfile['SOURCE_KEY'];
	}

	public function fieldsPreParams() {
		$arFieldsParams = array(
			'title' => GetMessage("ACRIT_IMPORT_ADSAPI_PARAMS_TITLE")
		);
		$arFieldsParams['fields']['section'] = array(
			'DB_FIELD' => 'PARAM_1',
			'TYPE' => 'list',
			'LIST' => $this->fieldsPreParamsCategs(),
			'DEFAULT' => '1',
			'LABEL' => GetMessage("ACRIT_IMPORT_ADSAPI_PARAMS_PARAM_1"),
			'PLACEHOLDER' => '',
			'HINT' => '',
		);
		$arFieldsParams['fields']['limit'] = array(
			'DB_FIELD' => 'PARAM_2',
			'TYPE' => 'number',
			'DEFAULT' => '0',
			'LABEL' => GetMessage("ACRIT_IMPORT_ADSAPI_PARAMS_PARAM_2"),
			'PLACEHOLDER' => '',
			'HINT' => '',
		);
		$arFieldsParams['fields']['filter'] = array(
			'DB_FIELD' => 'PARAM_3',
			'TYPE' => 'custom',
			'HTML' => $this->fieldsPreParamsFilter(),
			'LABEL' => '',
			'PLACEHOLDER' => '',
			'HINT' => '',
		);
		return $arFieldsParams;
	}

	public function fieldsPreParamsCategs() {
		$categs = [
			[
				'1' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_1"),
				'2' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_2"),
				'3' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_3"),
				'4' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_4"),
				'5' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_5"),
				'6' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_6"),
				'7' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_7"),
				'8' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_8"),
			],
			[
				'9' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_9"),
				'10' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_10"),
			],
			[
				'12' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_12"),
				'13' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_13"),
				'14' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_14"),
			],
			[
				'21' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_21"),
				'22' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_22"),
				'23' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_23"),
				'24' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_24"),
				'25' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_25"),
			],
			[
				'27' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_27"),
				'28' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_28"),
				'29' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_29"),
				'30' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_30"),
				'31' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_31"),
				'32' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_32"),
				'33' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_33"),
			],
			[
				'34' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_34"),
				'35' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_35"),
				'36' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_36"),
				'37' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_37"),
				'38' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_38"),
				'39' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_39"),
				'40' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_40"),
				'41' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_41"),
				'42' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_42"),
				'43' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_43"),
			],
			[
				'44' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_44"),
				'45' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_45"),
				'46' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_46"),
				'47' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_47"),
				'48' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_48"),
				'49' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_49"),
				'50' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_50"),
				'51' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_51"),
			],
			[
				'52' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_52"),
				'53' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_53"),
				'54' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_54"),
				'55' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_55"),
				'56' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_56"),
				'57' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_57"),
				'58' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_58"),
			],
			[
				'59' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_59"),
				'60' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_60"),
				'61' => GetMessage("ACRIT_IMPORT_ADSAPI_CATEGS_61"),
			],
		];
		return $categs;
	}

	public function fieldsPreParamsFilter() {
		\Bitrix\Main\Page\Asset::getInstance()->addString("<style>
#adsapi_filter_form { width: 100%; background-color: #d7e3e7; margin: 5px 0; padding: 10px; }
#adsapi_filter_form td { width: 33.3%; padding: 0 10px 10px 0; vertical-align: top; }
#adsapi_filter_form label { display: block; margin-bottom: 3px; }
#adsapi_filter_form input { width: 40%; }
</style>");
		ob_start();
		?>
<tr>
	<td colspan="2">
		<table id="adsapi_filter_form">
			<tr>
                <td>
                    <div class="form-group">
                        <label for="filter_nedvigimost_type"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_NEDVIGIMOST_TYPE_LABEL");?></label>
	                    <?=Forms::getElement(Forms::ELEMENT_TYPE_SELECT, 'PROFILE[SOURCE_PARAM_3][nedvigimost_type]', $this->arProfile['SOURCE_PARAM_3']['nedvigimost_type'], [
		                    'id' => 'filter_nedvigimost_type',
	                    ], [
                            ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_NEDVIGIMOST_TYPE_LIST_0"), 'value' => ''],
                            ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_NEDVIGIMOST_TYPE_LIST_1"), 'value' => '1'],
                            ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_NEDVIGIMOST_TYPE_LIST_2"), 'value' => '2'],
                            ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_NEDVIGIMOST_TYPE_LIST_3"), 'value' => '3'],
                            ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_NEDVIGIMOST_TYPE_LIST_4"), 'value' => '4'],
                        ]);?>
                    </div>
                </td>
                <td>
                    <div class="form-group">
                        <label for="filter_q"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_Q_LABEL");?></label>
                        <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][q]', $this->arProfile['SOURCE_PARAM_3']['q'], [
	                        'id' => 'filter_q',
	                        'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_Q_PLACEHOLDER"),
	                        'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_Q_TITLE"),
                        ]);?>
                    </div>
                </td>
                <td>
                    <div class="form-group">
                        <label for="filter_price1"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PRICE_LABEL");?></label>
	                    <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][price1]', $this->arProfile['SOURCE_PARAM_3']['price1'], [
		                    'id' => 'filter_price1',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PRICE1_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PRICE1_TITLE"),
	                    ]);?>
	                    <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][price2]', $this->arProfile['SOURCE_PARAM_3']['price2'], [
		                    'id' => 'filter_price2',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PRICE2_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PRICE2_TITLE"),
	                    ]);?>
                    </div>
                </td>
			</tr>
			<tr>
                <td>
                    <div class="form-group">
                        <label for="filter_date1"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_DATE_LABEL");?></label>
                        <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][date1]', $this->arProfile['SOURCE_PARAM_3']['date1'], [
		                    'id' => 'filter_date1',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_DATE1_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_DATE1_TITLE"),
	                    ]);?>
                        <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][date2]', $this->arProfile['SOURCE_PARAM_3']['date2'], [
		                    'id' => 'filter_date2',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_DATE2_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_DATE2_TITLE"),
	                    ]);?>
                    </div>
                </td>
                <td>
                    <div class="form-group">
                        <label for="filter_person_type"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PERSON_TYPE_LABEL");?></label>
	                    <?=Forms::getElement(Forms::ELEMENT_TYPE_SELECT, 'PROFILE[SOURCE_PARAM_3][person_type]', $this->arProfile['SOURCE_PARAM_3']['person_type'], [
		                    'id' => 'filter_person_type',
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PERSON_TYPE_TITLE"),
	                    ], [
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PERSON_TYPE_LIST_0"), 'value' => ''],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PERSON_TYPE_LIST_1"), 'value' => '1'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PERSON_TYPE_LIST_2"), 'value' => '2'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PERSON_TYPE_LIST_3"), 'value' => '3'],
	                    ]);?>
                    </div>
                </td>
                <td>
                    <div class="form-group">
                        <label for="filter_city"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_CITY_LABEL");?></label>
                        <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][city]', $this->arProfile['SOURCE_PARAM_3']['city'], [
		                    'id' => 'filter_city',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_CITY_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_CITY_TITLE"),
	                    ]);?>
                    </div>
                </td>
			</tr>
			<tr>
                <td>
                    <div class="form-group">
                        <label for="filter_metro"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_METRO_LABEL");?></label>
	                    <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][metro]', $this->arProfile['SOURCE_PARAM_3']['metro'], [
		                    'id' => 'filter_metro',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_METRO_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_METRO_TITLE"),
	                    ]);?>
                    </div>
                </td>
                <td>
                    <div class="form-group">
                        <label for="filter_phone"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PHONE_LABEL");?></label>
                        <?=Forms::getElement(Forms::ELEMENT_TYPE_TEXT, 'PROFILE[SOURCE_PARAM_3][phone]', $this->arProfile['SOURCE_PARAM_3']['phone'], [
		                    'id' => 'filter_phone',
		                    'placeholder' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PHONE_PLACEHOLDER"),
		                    'title' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_PHONE_TITLE"),
	                    ]);?>
                    </div>
                </td>
                <td>
                    <div class="form-group">
                        <label for="filter_source"><?=GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LABEL");?></label>
	                    <?=Forms::getElement(Forms::ELEMENT_TYPE_SELECT, 'PROFILE[SOURCE_PARAM_3][source]', $this->arProfile['SOURCE_PARAM_3']['source'], [
		                    'id' => 'filter_source',
	                    ], [
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_0"), 'value' => ''],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_1"), 'value' => '1'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_2"), 'value' => '2'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_3"), 'value' => '3'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_4"), 'value' => '4'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_5"), 'value' => '5'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_6"), 'value' => '6'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_7"), 'value' => '7'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_8"), 'value' => '8'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_9"), 'value' => '9'],
		                    ['name' => GetMessage("ACRIT_IMPORT_ADSAPI_FILTER_SOURCE_LIST_10"), 'value' => '10'],
	                    ]);?>
                    </div>
                </td>
			</tr>
		</table>
	</td>
</tr>
<?
//		$add_fields = $this->fieldsPreParamsFilterAdditional();
		$html = ob_get_contents();
		ob_end_clean();
		return $html;
	}

	public function fieldsPreParamsFilterFields() {
	    $list = [];
	    return $list;
	}

	public function fieldsPreParamsFilterAdditional() {
		$list = [];
		$category_id = (int) $this->arProfile['SOURCE_PARAM_1'];
		if ( ! $category_id) {
            $query = $this->getRequestUri('apigetparams') . '&category_id=' . $category_id;
            $str = file_get_contents($query);
            $resp = json_decode($str, true);
            if ($resp['error']) {
                throw new \Exception($resp['error'] . ' [' . $resp['code'] . ']');
            }
            if ( ! empty($resp['data'])) {
                foreach ($resp['data'] as $item) {
                    $row = $item;
                    $list[] = $row;
                }
            }
        }
		return $list;
	}

    protected function fieldsGetParams($arParams, $arFieldsPath, &$arSourceFields) {
		$l = count($arFieldsPath);
        foreach ($arParams as $arParam) {
			$arFieldsPath[$l] = array(
                'key' => $arParam['param'],
                'title' => $this->convStrEncoding($arParam['title']),
			);
			// Add value into the profile fields array
			$arTitles = array();
			foreach ($arFieldsPath as $arLevel) {
				$arTitles[] = $arLevel['title'];
			}
			$k = $arFieldsPath[$l]['key'];
			$arSourceFields[$k] = array(
				'ID' => $k,
				'NAME' => implode('. ', $arTitles),
				'EXAMPLE' => '',
			);
			// Process all of the sub parameters
            if (is_array($arParam['values'])) {
	            foreach ($arParam['values'] as $arValue) {
		            if ($arValue['subparams']) {
			            $this->fieldsGetParams($arValue['subparams'], $arFieldsPath, $arSourceFields);
		            }
	            }
            }
		}
		return $arFieldsPath;
	}

	public function fields() {
		$arSourceFields = array();
		$this->fillAuthData();
		$category_id = (int)$this->arProfile['SOURCE_PARAM_1'];
		if ($category_id) {
			// List of main parameters
			$arAdsFields = array(
				"id" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_ID"),
				"url" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_URL"),
				"title" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_TITLE"),
				"price" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PRICE"),
				"time" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_TIME"),
				"phone" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PHONE"),
				"phone_operator" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PHONE_OPERATOR"),
				"person" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PERSON"),
				"contactname" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CONTACTNAME"),
				"person_type" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PERSON_TYPE"),
				"person_type_id" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PERSON_TYPE_ID"),
				"city" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CITY"),
				"metro" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_METRO"),
				"address" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_ADDRESS"),
				"description" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_DESCRIPTION"),
				"nedvigimost_type" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_NEDVIGIMOST_TYPE"),
				"nedvigimost_type_id" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_NEDVIGIMOST_TYPE_ID"),
				"avitoid" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_AVITOID"),
				"source" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_SOURCE"),
				"source_id" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_SOURCE_ID"),
				"images" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_IMAGES"),
				"params" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PARAMS"),
				"cat1_id" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CAT1_ID"),
				"cat2_id" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CAT2_ID"),
				"cat1" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CAT1"),
				"cat2" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CAT2"),
				"coords" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_COORDS"),
				"region" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_REGION"),
				"city1" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_CITY1"),
				"param_xxx" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PARAM_XXX"),
				"count_ads_same_phone" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_COUNT_ADS_SAME_PHONE"),
				"phone_protected" => GetMessage("ACRIT_IMPORT_ADSAPI_SOURCE_FIELD_PHONE_PROTECTED"),
			);
			foreach ($arAdsFields as $k => $name) {
				$arSourceFields[$k] = array(
					'ID' => $k,
					'NAME' => $name,
					'EXAMPLE' => '',
				);
			}
			// Get additional parameters
			$str = file_get_contents($this->getRequestUri() . "?user=" . urlencode($this->source_login) .
			                         "&token=" . urlencode($this->source_token) .
			                         "&category_id=" . $category_id);
            $arResp = json_decode($str, true);
			$arFieldsPath = array();
            $this->fieldsGetParams($arResp['data'], $arFieldsPath, $arSourceFields);
		}
		return $arSourceFields;
	}

	public function count() {
		$count = 0;
        $this->fillAuthData();
        $category_id = (int)$this->arProfile['SOURCE_PARAM_1'];
        if ($category_id) {
            $query = $this->getRequestUri() . "?user=" . urlencode($this->source_login) .
                     "&token=" . urlencode($this->source_token) .
                     "&category_id=" . $category_id;
            $str = file_get_contents($query);
            $arResp = json_decode($str, true);
            if ($arResp) {
                $count = count($arResp['data']);
            }
            sleep(5);
        }
		$load_limit = (int)$this->arProfile['SOURCE_PARAM_2'];
		if ($load_limit < $count) {
			$count = $load_limit;
		}
		return $count;
	}

	public function import($type=self::STEP_NO, $limit=0, $next_item=0) {
		$this->initLog();
		$load_limit = (int)$this->arProfile['SOURCE_PARAM_2'];
		if ($load_limit > 50 || $load_limit <= 0) {
			$limit = 50;
		}
		else {
			$limit = $load_limit;
		}
		\CModule::IncludeModule('iblock');
		$this->fillAuthData();
		$category_id = (int)$this->arProfile['SOURCE_PARAM_1'];
		if ($category_id) {
		    // Create query
			$query = $this->getRequestUri() . "?user=" . urlencode($this->source_login) .
			         "&token=" . urlencode($this->source_token) .
			         "&category_id=" . $category_id;
			if (is_array($this->arProfile['SOURCE_PARAM_3']) && !empty($this->arProfile['SOURCE_PARAM_3'])) {
			    $params = $this->arProfile['SOURCE_PARAM_3'];
				$params = array_filter($params);
				$query .= "&" . http_build_query($params);
            }
			if ($next_item) {
				$query .= "&startid=" . $next_item;
			}
			if (($type == self::STEP_BY_COUNT || $type == self::STEP_BY_TYME) && $limit) {
				$query .= "&limit=" . ($limit + 1); // The last item only get for the first ID of the next iteration
			}
			// Get data
			$str = file_get_contents($query);
            $arResp = json_decode($str, true);
			$i = 0;
			if ($arResp['error']) {
				$this->obLog->add(' Error: '.$arResp['error'].' [Code '.$arResp['code'].']', \Acrit\Import\Log::TYPE_ERROR);
			}
			// Import data
			if (!empty($arResp['data'])) {
				foreach ($arResp['data'] as $arItem) {
					$arRow = $arItem;
					foreach ($arRow as $k => $value) {
						if (!in_array($k, ['imgurl', 'coords'])) {
							$arRow[$k] = $this->convStrEncoding($value);
						}
					}
					foreach ($arRow['images'] as $k => $arImage) {
						$arRow['images'][$k] = $arImage['imgurl'];
					}
					$next_item = $arRow['id'];
					if (($type == self::STEP_BY_COUNT || $type == self::STEP_BY_TYME) && $limit && $i >= $limit) {
						break;
					}
					// Send data of item to the iblock
					$this->saveIBData($arRow, $next_item);
					$i++;
				}
			}
			sleep(5);
		}
		return $next_item;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit