Если у вас возникнет надобность выполнять
операции импорта из какого-либо модуля, это можно сделать с помощью
кода, приведенного ниже.
Предположим, что настройки нашего драйвера находятся в массиве $aDriverData
$oDriver = AMI::getResource('import_driver/my_driver');
$oDriver
->setModId($myModId)
->setContentEncoding('utf-8')
->setResourceId('news')
;
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();
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() не нужно.