public function parse() { $params = \Migrations\Migration\Object\Param::getList(['where' => [['parent_id', $this->param->id], ['object_id', $this->object->object->id]]]); if (!\Tools::isAssoc($this->data)) { foreach ($this->data as &$data) { $this->parseData($data, $params); } } else { $this->parseData($this->data, $params); } }
public function indexAction() { $this->view->setTitle('Карты миграции данных'); if (!empty($_POST['type'])) { foreach ($_POST['type'] as $pathId => $objectType) { $mapPath = Migrations\Migration\Map\Path::get($pathId); if (is_numeric($objectType)) { $mapPath->object_id = $objectType; $mapPath->type = 'object'; } else { if ($objectType == 'object') { $object = new Migrations\Migration\Object(); $object->model = !empty($_POST['typeOptions'][$pathId]) ? $_POST['typeOptions'][$pathId] : ''; $object->migration_id = $mapPath->map->migration_id; $object->code = $object->name = $mapPath->item; $object->save(); $mapPath->type = 'object'; $mapPath->object_id = $object->id; } else { $mapPath->type = $objectType; } } $mapPath->save(); } } if (!empty($_POST['param'])) { foreach ($_POST['param'] as $paramId => $type) { $param = \Migrations\Migration\Object\Param::get($paramId); if ($type == 'newObject') { $object = new Migrations\Migration\Object(); $object->model = !empty($_POST['paramOptions'][$paramId]) ? $_POST['paramOptions'][$paramId] : ''; $object->migration_id = $param->object->migration_id; $object->code = $object->name = $param->code; $object->save(); $param->type = 'object'; $param->value = $object->id; } else { $param->type = $type; $param->value = !empty($_POST['paramOptions'][$paramId]) ? $_POST['paramOptions'][$paramId] : ''; } $param->save(); } } $models = $this->modules->getSelectListModels(); $map = \Migrations\Migration\Map::get($_GET['item_pk']); $objects = $map->migration->objects(['forSelect' => true]); $this->view->page(['data' => compact('map', 'models', 'objects')]); }
public function parse() { $walked = []; $params = \Migrations\Migration\Object\Param::getList(['where' => [['parent_id', $this->param->id], ['object_id', $this->object->object->id]]]); foreach ($params as $param) { if ($this->model) { if ($param->type == 'custom') { $parserName = $param->value; } else { $parserName = '\\Migrations\\Parser\\Object\\' . ucfirst($param->type); } if (!\Tools::isAssoc($this->data)) { foreach ($this->data as $data) { $parser = new $parserName(); $parser->data =& $data; $parser->param = $param; $parser->model = $this->model; $parser->object = $this->object; $parser->parse(); } } else { $parser = new $parserName(); $parser->data =& $this->data[$param->code]; $parser->param = $param; $parser->model = $this->model; $parser->object = $this->object; $parser->parse(); } } $walked[$param->code] = true; } //check unparsed params foreach ($this->data as $key => $data) { //skip parsed and attribtes if ($key == '@attributes' || !empty($walked[$key])) { continue; } $param = new \Migrations\Migration\Object\Param(); $param->parent_id = $this->param->id; $param->object_id = $this->object->object->id; $param->code = $key; $param->type = 'param'; $param->save(); } }