/** * Funkce pro načtení uživatelských mapování */ public static function loadFMLUserFields($fml, $returnRichArray) { $dictionary1 = $fml->Dictionary[0]; $dictionary2 = $fml->Dictionary[1]; $dict1 = array('id' => (string) $dictionary1['id'], 'sourceFormat' => (string) $dictionary1['sourceFormat']); $dict2 = array('id' => (string) $dictionary2['id'], 'sourceFormat' => (string) $dictionary2['sourceFormat']); $mappingArr = array(); if ($dict1['sourceFormat'] == 'BKEF') { //pokud bychom měli chybně uložené pořadí sloupců, tak je pro zpracování prohodíme... $dictX = $dict2; $dict2 = $dict1; $dict1 = $dictX; } else { //TODO meli bychom vyresit to, jak při mapování PMML-PMML rozhodnout, který soubor je který! } //připravíme si pole s mapováními pro dictionary 1 $fieldNames1 = array(); if (count($dictionary1->Field) > 0) { foreach ($dictionary1->Field as $field) { //potrebujeme vyhodnotit název položky $fieldId = (string) $field['id']; $fieldName = XmlConnectorFDML::getFieldName($field, $dict1['sourceFormat']); $fieldNames1[$fieldId] = $fieldName; } } //připravíme si pole s mapováními pro dictionary 2 $fieldNames2 = array(); if (count($dictionary2->Field) > 0) { foreach ($dictionary2->Field as $field) { //potrebujeme vyhodnotit název položky $fieldId = (string) $field['id']; $fieldName = XmlConnectorFDML::getFieldName($field, $dict2['sourceFormat']); $fieldNames2[$fieldId] = $fieldName; } } //projdeme jednotliva mapovani $fieldMappingId = 0; if (count($fml->DictionaryMapping[0]->FieldMapping) > 0) { foreach ($fml->DictionaryMapping[0]->FieldMapping as $fieldMapping) { if (@(string) $fieldMapping->MappingInfo[0]->Type == "user") { //jde o uzivatelske mapovani... $appliesTo1Name = ''; $appliesTo2Name = ''; foreach ($fieldMapping->AppliesTo[0]->FieldRef as $fieldRef) { $dictID = (string) $fieldRef['dictID']; $id = (string) $fieldRef['id']; if ($dictID == $dict1['id']) { if (isset($fieldNames1[$id])) { $appliesTo1Name = $fieldNames1[$id]; } } elseif ($dictID == $dict2['id']) { if (isset($fieldNames2[$id])) { $appliesTo2Name = $fieldNames2[$id]; } } } if ($appliesTo1Name != '' && $appliesTo2Name != '') { $mappingArr[] = array('0' => $appliesTo1Name, '1' => $appliesTo2Name, 'fmId' => $fieldMappingId); } } $fieldMappingId++; } } if ($returnRichArray) { //vratime mapovaci pole a informace o prubehu popis mapovani... return array('mappingArr' => $mappingArr, 'dict1id' => $dict1['id'], 'dict2id' => $dict2['id']); } else { //vratime jenom zakladni mapovaci pole return $mappingArr; } }