public function _new()
 {
     parent::_new();
     $datadefdetail = $this->_uses[$this->modeltype];
     if ($datadefdetail->isLoaded()) {
         $cc = new ConstraintChain();
         $cc->add(new Constraint('data_definition_id', '=', $datadefdetail->data_definition_id));
         $this->view->set('parent', $datadefdetail->getAll($cc));
     } elseif (isset($this->_data['data_definition_id'])) {
         $datadefdetail = new DataDefinitionDetail();
         $cc = new ConstraintChain();
         $cc->add(new Constraint('data_definition_id', '=', $this->_data['data_definition_id']));
         $this->view->set('parent', $datadefdetail->getAll($cc));
     } else {
         $this->view->set('parent', array());
     }
 }
 public function _new()
 {
     parent::_new();
 }
 public function _new()
 {
     $datamapdetail = $this->_uses[$this->modeltype];
     if ($datamapdetail->isLoaded()) {
         $this->_data['data_mapping_rule_id'] = $datamapdetail->data_mapping_rule_id;
         $this->_data['parent_id'] = $datamapdetail->parent_id;
         $datamappingrule = $datamapdetail->data_map_rule;
     } elseif (isset($this->_data['data_mapping_rule_id'])) {
         $datamappingrule = new DataMappingRule();
         $datamappingrule->load($this->_data['data_mapping_rule_id']);
     }
     if (!$this->CheckParams('data_mapping_rule_id')) {
         sendBack();
     }
     parent::_new();
     $cc = new ConstraintChain();
     $datamap = $datamappingrule->data_map;
     $options = array();
     if (!empty($this->_data['parent_id'])) {
         // get the parent mapping detail
         $parent_detail = new DataMappingDetail();
         $parent_detail->load($this->_data['parent_id']);
         // get the parent mapping
         $parent_mapping = $parent_detail->data_map_rule->data_map;
         $parent_id = $parent_detail->internal_code;
         // Rules need simplifying and/or explaining
         // perhaps move these to the DataMapping model
         $x = $datamap->getModel();
         $hasmany = $x->getHasMany();
         if (isset($hasmany[$datamap->internal_attribute])) {
             $x->load($parent_detail->internal_code);
             foreach ($x->{$datamap->internal_attribute} as $detail) {
                 $options[$detail->{$detail->idField}] = $detail->{$detail->getIdentifier()};
             }
         } elseif ($parent_mapping->isHasOne()) {
             $hasone = $parent_mapping->getHasOne();
             $x = new $hasone['model']();
             $hasmany = $x->getHasMany();
             if (isset($hasmany[$datamap->internal_attribute])) {
                 $x->load($parent_detail->internal_code);
                 foreach ($x->{$datamap->internal_attribute} as $detail) {
                     $options[$detail->{$detail->idField}] = $detail->{$detail->getIdentifier()};
                 }
             }
         } else {
             $belongsto = $x->belongsTo;
             foreach ($belongsto as $parent) {
                 if ($parent['model'] == $parent_mapping->internal_type) {
                     $cc->add(new Constraint($parent['field'], '=', $parent_id));
                     break;
                 }
             }
         }
         // If no constraints found from fk definitions and the parent class is the
         // same as the child class, then the parent is the child i.e. data specific
         // to the parent
         if (empty($cc->constraints) && $parent_mapping->internal_type == get_class($x)) {
             $cc->add(new Constraint($x->idField, '=', $parent_id));
         }
     }
     //		elseif (!is_null($datamappingrule->parent_id)) {
     // Get the list of parent options
     // from the parent mapping details via the parent mapping rule
     $parentmappingrule = new datamappingrule();
     $parentmappingrule->load($datamappingrule->parent_id);
     $parent_options = array();
     foreach ($parentmappingrule->data_translations as $parent_detail) {
         $parent_options[$parent_detail->id] = $parent_detail->displayValue();
     }
     $this->view->set('parent_options', $parent_options);
     $this->view->set('parent_label', $datamappingrule->parent);
     //		}
     if (is_null($datamap->internal_type)) {
         $errors[] = 'No Internal Type defined for Data Mapping ' . $datamappingrule->name;
     } else {
         if (empty($options)) {
             $options = $datamap->getDataOptions($datamap->getModel(), $cc);
         }
         $this->view->set('data_mapping_rule_id', $this->_data['data_mapping_rule_id']);
         if (!$datamap->isLoaded()) {
             $errors[] = 'Invalid Data Type';
         } else {
             if (!is_null($datamap->internal_type)) {
                 $model = $datamap->getModel();
                 if (!$model) {
                     $errors[] = 'Data Mapping for Internal Data Type is invalid';
                 } else {
                     $this->view->set('model', $model);
                     $this->view->set('internal_codes', $options);
                     $this->view->set('internal_name', $datamappingrule->name);
                 }
             }
         }
     }
     $datatranslations = new DataMappingDetailCollection(new DataMappingDetail());
     $sh = $this->setSearchHandler($datatranslations);
     $sh->addConstraint(new Constraint('data_mapping_rule_id', '=', $this->_data['data_mapping_rule_id']));
     if (isset($this->_data['parent_id'])) {
         $sh->addConstraint(new Constraint('parent_id', '=', $this->_data['parent_id']));
     }
     parent::index($datatranslations, $sh);
     $this->view->set('clickaction', 'view');
 }