m18/profitbase

M18 profitbase export parser

1.1.6 2021-03-09 10:20 UTC

This package is auto-updated.

Last update: 2024-11-09 18:48:54 UTC


README

Build Status

Инструмент преобразовывает xml-выгрузку из profitbase в объект для последующей обработки.

Установка

Последняя версия инструмента доступна для установки через Composer:

composer require m18/profitbase

Генерация объекта

Обработка фида

Для создания объекта нужно расширить абстрактный класс M18\Profitbase\Handlers\XML:

<?php
namespace M18\Tools\Data\Profitbase;

use M18\Profitbase\Handlers\XML;
use M18\Profitbase\Models\Result\Data as ResultData;

final class Handler extends XML
{
	public function getData($resultModel = null, bool $get_values = true): ResultData
	{
		$resultModel = parent::getData($resultModel, $get_values);

		return $resultModel;
	}
}

При необходимости можно добавить дополнительную обработку объекта в этом классе. Для того, чтобы составить объект из нескольких фидов нужно передавать объект $resultModel в метод Handler::getData().

Ссылка

Ссылка на XML-фид Profitbase имеет следуюший вид: https://pbXXXX.profitbase.ru/export/profitbase_xml/{hash}.

Handler::$URL = 'https://pbXXXX.profitbase.ru/export/profitbase_xml/{hash}';

Объединение нескольких фидов в один объект

$handler = new Handler();
$url_list = $config->url_list;

$profitbase = null;

foreach ($url_list as $import_url)
{
	try {
		Handler::$URL = $import_url;
		$profitbase = $handler->getData($profitbase);
	}
	catch (Exception $exception)
	{
		die($exception->getMessage());
	}
}

Поля для помещений

Для объекта помещения есть возможность указывать список получаемых полей. Например, если нужны не все узлы фида или использованы дополнительные элементы.

За поля помещения отвечает класс \M18\Profitbase\Models\Utils\RoomFields. Объект Room будет иметь следующий набор полей по умолчанию:

  • is_new
  • price
  • area
  • price-meter
  • balcony-count
  • loggia-count
  • separated-bathroom-unit
  • combined-bathroom-unit
  • window-view
  • studio
  • rooms
  • floor
  • building-section
  • description

Для добавления дополнительного набора полей нужно использовать метод \M18\Profitbase\Models\Utils\RoomFields::set(array $fieldset). $fieldset представляет собой массив вида array({название узла} => {тип поля})

Для сброса текущего набора полей нужно использовать метод \M18\Profitbase\Models\Utils\RoomFields::clear().

Пример:

\M18\Profitbase\Models\Utils\RoomFields::set(array('kitchen-space' => 'float', 'living-space' => 'float'));
\M18\Profitbase\Models\Utils\RoomFields::set(array('floor' => 'string'));

Кастомные поля

В профитбейзе существуют так называемые Custom Fields. Названия этих узлов закодированы подобным образом: pbcf_5b03c2b13a104. Для того, чтобы повысить читаемость полей можно устанавливать алиасы для кастомных полей перед обработкой объекта.

use M18\Profitbase\Models\Utils\CustomFields;

CustomFields::setAlias(array(
	'pbcf_5b03c2b13a104' => 'bti_number',
	'pbcf_5b03c2b141cc6' => 'bti_area',
	'pbcf_5b03c2b146165' => 'area_wo_balcony',
	'pbcf_5b03c2b149d47' => 'area_hallway',
));