# Тип импорта

## <mark style="background-color:green;">Путь</mark>

Загружает файл импорта по внешней или внутренней ссылке

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FkvKRHmHxvKlJpNT2SoQU%2Fimage.png?alt=media&#x26;token=279fcd05-82d3-4250-9838-a422551ead60" alt=""><figcaption><p>Настройки пути</p></figcaption></figure></div>

* ***URL или путь на сервере*** *- url адрес к файлу (например внешний сайт* `https://site.ru/file.csv` *или файл на вашем же сервере* `/upload/file.csv`*)*

## <mark style="background-color:yellow;">Почта</mark>

Загружает файл импорта из почты по IMAP

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FJtU87WcWut3Q6giGWmBR%2Fimage.png?alt=media&#x26;token=335e6bad-0130-4ba0-bd64-b2f2364c81b9" alt=""><figcaption><p>Настройки почты</p></figcaption></figure></div>

* ***Адрес сервера*** *- адрес серера почты (например для Яндекс* `imap.yandex.ru`*)*
* ***IMAP порт** - порт соединения (например для Яндекс* `993`*)*
* ***Имя пользователя** - имя пользователя почты (например для Яндекс* `price@mysite.ru`*)*
* ***Пароль** - пароль пользвателя почты (например пароль от почты или пароль приложения)*
* ***Email отправителя*** - почта отправителя, по которой будет отбор писем
* ***Имя папки в почте*** - название  папки почты откуда брать письма (по умолчанию это корень), для скорости загрузки, прайсы лучше складывать каждый в свою папку поставщика

## <mark style="background-color:red;">FTP</mark>

Загружает файл импорта по FTP

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Ffr4bdRv1d5bMGZQPtxBn%2Fimage.png?alt=media&#x26;token=efba2c69-b6e8-440d-85a1-b56be6501c8a" alt=""><figcaption><p>Настройки FTP</p></figcaption></figure></div>

* ***Имя хоста*** *- адрес хоста (IP или домен без протокола)*
* ***Порт** - порт соединения (например* `21`*)*
* ***Имя пользователя** - логин для авторизации*
* ***Пароль** - пароль для авторизации*
* ***Имя папки*** - название папки соединения (по умолчанию это корень)
* ***Имя файла*** - название файла для скачивания

## <mark style="background-color:blue;">API</mark>

Пользовательская загрузка файла импорта через Ваш обработчик (для API не используются настройки типа файла)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FsI0bsZcXiUbK9c2W5VLk%2Fimage.png?alt=media&#x26;token=181e2c9a-c20c-44e5-9579-001341e3a397" alt=""><figcaption><p>Настройки API</p></figcaption></figure></div>

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php

class ASMP_MegaImport_Handler7 extends ASMP_MegaImport_Controller
{
	public function getItems()
	{
	    // указываем какие поля обновляем
	    $this->updateFields = array(
		0 => array(
			'name' => 1, // обновляем всегда
			'image' => 2, // обновляем если не заполнено
			'props' => 1, // обновляем всегда
		)
	    );
	
	    // тут ваша логика получения данных из сервиса
	    $oCore_Http = Core_Http::instance()
		->url($this->path)
		->method('GET')
		->timeout(10)
		->execute();
		
	    $data = json_decode($oCore_Http->getDecompressedBody());
	
	    if(is_object($data) && isset($data->products))
	    {
		 foreach ($data->products as $product)
		 {
		      $oObject = new StdClass();
		      $oObject->marking = $product->code;
		      $oObject->name = $product->name;
		      $oObject->producer = 'Samsung';
		      
		      // добавление доп. свойства
		      $oParam = new StdClass();
		      $oParam->id = 123; // или $oParam->name = "Цвет";
		      $oParam->value = $product->color;
		
		      $oObject->props[] = $oParam;
	              
		      // добавление изображения
		      $oObject->image[] = $product->image;
		      
		      // import
		      $oShop_Item = $this->_importItem($oObject, $product);

		      if($oShop_Item === FALSE)
			   return $this;
			
		      !is_null($oShop_Item) && $this->total++;
			
		      if($this->debug && $this->total >= $this->_debugLimit)
			   break;
		 }
	    }
	
	    $message = sprintf('%s: total %d', __FUNCTION__, $this->total);

	    ASMP_MegaImport_Log_Controller::instance()
		->status(ASMP_MegaImport_Log_Controller::$MESSAGE)
		->entity($this->ASMP_MegaImport_Log)
		->write($message);

	    return FALSE;
	}
}
```

{% endcode %}
