/** * Funkce pro získání kombinace mapování hodnot * @param $fml - simpleXML instance FML souboru * @param $fmId - pořadové číslo příslušného fieldMappingu * @param $dict1id - id prvního dictionary * @param $dict2id - id druhého dictionary * @return array */ public static function getValuesPairs($fml, $fmId, $dict1id, $dict2id) { $fieldMapping = @$fml->DictionaryMapping->FieldMapping[$fmId]; if (!$fieldMapping) { return null; } //potrebujeme ID jednotlivých fieldů foreach ($fieldMapping->AppliesTo->FieldRef as $fieldRef) { if ((string) $fieldRef['dictID'] == $dict1id) { $fieldId1 = (string) $fieldRef['id']; } elseif ((string) $fieldRef['dictID'] == $dict2id) { $fieldId2 = (string) $fieldRef['id']; } } if (!$fieldId1 || !$fieldId2) { return null; } $outputArr = array(); //vyresime jednotlive hodnoty if (count($fieldMapping->ValueMappings->ValueMapping) > 0) { foreach ($fieldMapping->ValueMappings->ValueMapping as $valueMapping) { if ((string) $valueMapping['type'] != 'user') { continue; } $catRef1 = ''; $catRef2 = ''; $val1 = ''; $val2 = ''; foreach ($valueMapping->Field as $field) { $fDictID = (string) $field['dictID']; $fID = (string) $field['id']; if ($fDictID == $dict1id && $fID == $fieldId1) { $catRef1 = $field->CatRef; } elseif ($fDictID == $dict2id && $fID == $fieldId2) { $catRef2 = $field->CatRef; } } if (!$catRef1 || !$catRef2) { continue; } //máme reference na dvojici konkrétních hodnot if ((string) $catRef1 != '') { $val1 = (string) $catRef1; } elseif (isset($catRef1['id'])) { $val1 = XmlConnectorFDML::getValue($fml, $dict1id, $fieldId1, (string) $catRef1['id']); } if ((string) $catRef2 != '') { $val2 = (string) $catRef2; } elseif (isset($catRef2['id'])) { $val2 = XmlConnectorFDML::getValue($fml, $dict2id, $fieldId2, (string) $catRef2['id']); } $outputArr[] = array($val1, $val2); } } return $outputArr; }