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