Центр документации
Карта сайта

Создай визитку сам!


Самоучитель по интеграции дизайна и настройке Amiro.CMS на примере демонстрационной версии пакета Визитка »


Выполнение операций вручную

Если у вас возникнет надобность выполнять операции импорта из какого-либо модуля, это можно сделать с помощью кода, приведенного ниже.

Предположим, что настройки нашего драйвера находятся в массиве $aDriverData

// получаем драйвер из ресурсов - драйвер должен быть задекларирован в resourceMapping.60.php
$oDriver = AMI::getResource('import_driver/my_driver');
 
// все базовые классы поддерживают method chaining
$oDriver
     ->setModId($myModId)                        // устанавливаем контекст модуля
     ->setContentEncoding('utf-8')               // устанавливаем кодировку данных
     ->setResourceName('http://mysite.com')      // устанавливаем URL-адрес источника
     ->setResourceId('news')                 // устанавливаем ID ресурса модели
;
 
// добавляем список импортируемых полей в драйвер из настроек
for($i = 0; $i < count($aDriverData['table_fields']); $i++){
    $aField = array(
        'name'  => $aDriverData['import_fields'][$i],
        'mapTo' => $aDriverData['table_fields'][$i],
    );
    $oDriver->addImportField($aField);
}
 
// добавляем опции драйвера
$aSettings = array();
if(!empty($aDriverData['driver_settings'])){
    foreach(explode(',', $aDriverData['driver_settings']) as $fieldName){
        if(isset($aDriverData[$fieldName])){
            $aSettings[$fieldName] = $aDriverData[$fieldName];
        }
    }
}
 
// пытаемся установить соединение
$oDriver
    ->setRequestSettings($aSettings)
    ->initConnection();
 
// перегруженная функция isImportResourceAvailable сообщает, что ресурс доступен для чтения
if($oDriver->isImportResourceAvailable()){
    $oDriver
        ->readData()
        ->closeConnection();
    // если данные успешно импортированы, сохраняем в БД
    if($oDriver->doImport() && $oDriver->isImported()){
        $oDriver->save();
        return true;
    }else{
        return false;
    }
}else{
    return false;
}

Поддерживаемые кодировки соединения -  'utf-8', 'utf-16', 'utf-32', 'windows-1251', 'windows-1252', 'koi8-r'.
Необходимо отметить, что наличие модели данных для конечной таблицы импорта необходимо, если только вы не перегружаете метод save(), и, в таком случае, вызывать метод setResourceId() не нужно.

Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API)
 2000 – 2019 © Amiro.CMS Все права защищены.