public function manualAction() { if (!empty($_POST)) { $this->module->startMigration(\Migrations\Migration\Map::get($_POST['map'])->migration_id, $_POST['map'], $_FILES['file']['tmp_name']); } $selectArray = ['' => 'Выберите']; $migrations = Migrations\Migration::getList(); foreach ($migrations as $migration) { $item = ['text' => $migration->name, 'input' => ['name' => 'map', 'type' => 'select', 'source' => 'array', 'sourceArray' => ['' => 'Выберите']]]; foreach ($migration->maps as $map) { $item['input']['sourceArray'][$map->id] = ['text' => $map->name, 'input' => ['type' => 'file', 'name' => 'file', 'noprefix' => true]]; } $selectArray[$migration->id] = $item; } $this->view->setTitle('Ручная миграции данных'); $this->view->page(['data' => compact('selectArray')]); }
public function startMigration($migrationId, $mapId, $filePath) { $log = new \Migrations\Log(); $log->migration_id = $migrationId; $log->migration_map_id = $mapId; $log->source = $filePath; $log->save(); $reader = new Migrations\Reader\Xml(); if (!$reader->loadData($filePath)) { $event = new Migrations\Log\Event(); $event->log_id = $log->id; $event->type = 'load_data_error'; $event->save(); return false; } $walker = new \Migrations\Walker(); $walker->migration = Migrations\Migration::get($migrationId); $walker->map = Migrations\Migration\Map::get($mapId); $walker->data = $reader->getArray(); $walker->migtarionLog = $log; $walker->walk(); $log->result = 'success'; $log->save(); }