Example #1
0
 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')]);
 }
Example #2
0
 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();
 }