public function getTargetTables(\DataContainer $dc) { $arrTables = \HeimrichHannot\EntityImport\Database::getInstance()->listTables(); return array_values($arrTables); }
protected function createObjectFromMapping($arrSourceItem) { $objDatabase = \Database::getInstance(); \Controller::loadDataContainer($this->dbTargetTable); $t = $this->dbTargetTable; $arrItem = array(); foreach (deserialize($this->fileFieldMapping, true) as $arrConfig) { if ($arrConfig['type'] == 'source') { $varValue = $arrSourceItem[$arrConfig['source'] - 1]; } else { if ($arrConfig['type'] == 'value' && !empty($arrConfig['value'])) { $varValue = $arrConfig['value']; } } if ($varValue) { $varValue = $arrConfig['transformToArray'] ? serialize(explode($this->arrayDelimiter, $varValue)) : $varValue; } $this->setObjectValueFromMapping($arrItem, $varValue, $arrConfig['target']); if ($varValue === null) { unset($arrItem[$arrConfig['target']]); continue; } } if (!$this->dryRun) { if (!$this->skipInsertion) { $strQuery = "INSERT INTO {$t} (" . implode(',', array_keys($arrItem)) . ") VALUES(" . implode(',', array_map(function ($val) { return "'" . str_replace("'", "''", $val) . "'"; }, array_values($arrItem))) . ")"; $arrItem['id'] = $objDatabase->execute($strQuery)->insertId; } // do after item has been created, $this->runAfterSaving($arrItem, $arrSourceItem); // save updates if (!$this->skipUpdateAfterSave) { $arrTargetItemPrepared = array(); foreach ($arrItem as $strKey => $strVal) { if ($strKey == 'id') { continue; } $strVal = str_replace("'", "''", $strVal); $arrTargetItemPrepared[] = "{$this->dbTargetTable}.{$strKey}='{$strVal}'"; } // update all values to the db $strQuery = "UPDATE {$this->dbTargetTable} SET " . implode(',', $arrTargetItemPrepared) . " WHERE id=" . $arrItem['id']; \Database::getInstance()->execute($strQuery); } } return $arrItem; }