예제 #1
0
 /**
  *  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;
 }