private function updateMd($recno) { setMickaLog("updateMd recno={$recno}", 'DEBUG', 'MdRecord.updateMd'); $rs = array(); $data = array(); $data['last_update_user'] = $this->user; $data['last_update_date'] = DB_DRIVER == 'mssql2005' ? str_replace('-', '', getNewDate()) : getNewDate(); // geometrie // title $sql = array(); $md_id = array(); if ($this->md_record['md']['MD_STANDARD'] == 0) { $md_id = array(497, 498, 499, 500, 503); $md_id[] = 11; //title $md_id[] = 5527; //lang } elseif ($this->md_record['md']['MD_STANDARD'] == 10) { $md_id = array(5133, 5134, 5135, 5136, 5140); $md_id[] = 5063; //title $md_id[] = 5527; //lang } elseif ($this->md_record['md']['MD_STANDARD'] == 1) { $md_id = array(14); $md_id[] = 11; //title } elseif ($this->md_record['md']['MD_STANDARD'] == 2) { $md_id[] = 11; //title } array_push($sql, "\n\t\t\tSELECT md_id, " . setNtext2Text('', 'md_value') . ", lang FROM {$this->table_md_values} WHERE recno=%i\n\t\t", $this->md_record['md']['RECNO']); array_push($sql, "\n\t\t\tAND md_id IN %in\n\t\t", $md_id); array_push($sql, "ORDER BY md_id DESC"); $record = _executeSql('select', $sql, array('all')); if (is_array($record) && count($record) > 0) { $x1 = ''; $y1 = ''; $x2 = ''; $y2 = ''; $poly = ''; $dc_geom = ''; $lang_main = ''; $title = ''; $title_lang_main = ''; foreach ($record as $row) { switch ($this->md_record['md']['MD_STANDARD']) { case 0: case 10: if ($row['MD_ID'] == 5527) { $lang_main = $row['MD_VALUE']; } if ($row['MD_ID'] == 497 || $row['MD_ID'] == 5133) { $x1 = $row['MD_VALUE']; } if ($row['MD_ID'] == 498 || $row['MD_ID'] == 5134) { $x2 = $row['MD_VALUE']; } if ($row['MD_ID'] == 499 || $row['MD_ID'] == 5135) { $y1 = $row['MD_VALUE']; } if ($row['MD_ID'] == 500 || $row['MD_ID'] == 5136) { $y2 = $row['MD_VALUE']; } if ($row['MD_ID'] == 503 || $row['MD_ID'] == 5140) { $poly = $row['MD_VALUE']; } if ($row['MD_ID'] == 11 || $row['MD_ID'] == 5063) { $title = $row['MD_VALUE']; if ($lang_main == $row['LANG']) { $title_lang_main = $row['MD_VALUE']; } } break; case 1: if ($row['MD_ID'] == 14) { $dc_geom = $row['MD_VALUE']; } if ($row['MD_ID'] == 11) { $title = $row['MD_VALUE']; } break; case 2: if ($row['MD_ID'] == 11) { $title = $row['MD_VALUE']; } break; } } $data = $data + $this->getGeom($x1, $y1, $x2, $y2, $poly, $dc_geom); $title = $title_lang_main != '' ? $title_lang_main : $title; $data['title'] = $title != '' ? $title : NULL; } $this->setMd($recno, $data); // update datestamp v md_values if ($this->md_record['md']['MD_STANDARD'] == 0 || $this->md_record['md']['MD_STANDARD'] == 10) { $this->setMdValuesDateStamp($this->md_record['md']['RECNO'], $this->md_record['md']['MD_STANDARD'], $update = TRUE); } // xmldata $xml = $this->getMdXmlData($this->md_record['md']['UUID']); if ($xml != '') { if (DB_DRIVER == 'oracle') { $conn = dibi::getConnection()->driver->getResource(); setXmlToClob($conn, $this->table_md, 'xmldata', "recno={$recno}", $xml); //$data['pxml%sql'] = "XMLType('$xml')"; //$data['xmldata'] = $xml; } elseif (DB_DRIVER == 'mssql2005') { // XMLDATA $data['xmldata'] = $xml; } elseif (DB_DRIVER == 'postgre') { // XMLDATA $data['xmldata'] = $xml; } elseif (DB_DRIVER == 'postgre_pxml') { $xml = str_replace("'", "'", $xml); $data['pxml%sql'] = "XMLPARSE(DOCUMENT '{$xml}')"; } else { $data['pxml'] = $xml; } } // --- validace XML ve vestavenem validatoru --- $data['valid'] = 0; $data['prim'] = 0; if (VALIDATOR == 1) { require_once WWW_DIR . '/validator/resources/Validator.php'; $validator = new Validator(); $validator->run($xml); $vResult = $validator->getPass(); switch ($this->report_valid_type['type']) { case 'xml': $this->md_record['report_valid'] = $validator->asXML($this->report_valid_type['short']); break; case 'json': $this->md_record['report_valid'] = $validator->asJSON(); break; case 'array': $this->md_record['report_valid'] = $validator->asArray($this->report_valid_type['short']); break; case 'html': $this->md_record['report_valid'] = $validator->asHTML($this->report_valid_type['short']); break; case 'htmlsmall': $this->md_record['report_valid'] = $validator->asHTMLSmall($this->report_valid_type['short']); break; default: $this->md_record['report_valid'] = $validator->asHTML(); break; } if ($vResult) { if ($vResult['fail'] > 0) { $data['valid'] = 0; } else { if ($vResult['warn'] > 0) { $data['valid'] = 1; } else { $data['valid'] = 2; } } $data['prim'] = $vResult['primary']; } setMickaLog("VALIDACE valid=" . $data['valid'], 'DEBUG', 'MdRecord.updateMd'); } $this->setMd($recno, $data); setXmldata2Pxml($this->table_md, $recno); return $rs; }
function getMdValues($recno, $mds, $micka_lang, $type_id = NULL, $id = NULL) { if ($recno == '' || $mds == '' || $micka_lang == '') { return FALSE; } $rs = array(); $sql = array(); $mds_tmp = $mds; if ($mds == 10) { $mds_tmp = 0; } array_push($sql, "\n\t\tSELECT " . setNtext2Text('md_values.', 'md_value') . ",\n\t\t\t\t\tmd_values.md_id,\n\t\t\t\t\tmd_values.md_path,\n\t\t\t\t\tmd_values.lang,\n\t\t\t\t\telements.form_code,\n\t\t\t\t\telements.el_id,\n\t\t\t\t\telements.from_codelist\n\t\tFROM (elements RIGHT JOIN tree ON elements.el_id = tree.el_id) RIGHT JOIN md_values ON tree.md_id = md_values.md_id\n\t\tWHERE md_values.recno=%i AND tree.md_id=md_values.md_id AND tree.md_standard=%i\n\t", $recno, $mds_tmp); if ($micka_lang != 'xxx') { array_push($sql, "AND (md_values.lang='xxx' OR md_values.lang=%s)", $micka_lang); } if ($type_id == 'profil' && $id > 0) { array_push($sql, "AND md_id IN (SELECT md_id FROM profil WHERE profil_id=%i)", $id); } if ($type_id == 'package' && $id > 0) { array_push($sql, "AND md_values.package_id=%i)", $id); } array_push($sql, 'ORDER BY md_values.md_path, md_values.lang'); $result = _executeSql('select', $sql, array('all')); if ($result !== FALSE) { if (count($result) > 0) { foreach ($result as $n => $row) { $value = $row['MD_VALUE']; if ($row['FORM_CODE'] == 'D' && $micka_lang == 'cze') { $value = dateIso2Cz($value); } $md_path = getMdPath($row['MD_PATH']); if ($type_id == 'no_lang') { $eval_text = '$rs' . $md_path . "=\"" . $value . "\";"; } else { $eval_text = '$rs' . $md_path . "['" . $row['LANG'] . "']" . "=\"" . $value . "\";"; } eval($eval_text); } } } return $rs; }
private function getMdValuesAll($recno, $mds, $pid = -1, $hyper = -1) { $rs = array(); if ($mds == 10) { $mds = 0; } $sql = array(); array_push($sql, "\n\t\t\tSELECT " . setNtext2Text('md_values.', 'md_value') . ", md_values.md_id, md_values.md_path, md_values.lang, elements.form_code, elements.el_id, elements.from_codelist\n\t\t\tFROM (elements RIGHT JOIN tree ON elements.el_id = tree.el_id) RIGHT JOIN md_values ON tree.md_id = md_values.md_id\n\t\t\tWHERE md_values.recno=%i AND tree.md_standard=%i AND (md_values.lang='xxx' OR md_values.lang='uri' OR md_values.lang=%s)\n\t\t", $recno, $mds, MICKA_LANG); if ($pid == -1) { array_push($sql, "AND md_values.package_id>0"); } else { array_push($sql, "AND md_values.package_id=%i", $pid); } array_push($sql, "ORDER BY tree.md_left, md_values.md_path"); $result = _executeSql('select', $sql, array('all')); foreach ($result as $row) { $sanit = true; $hle = $row['MD_VALUE']; if ($row['FORM_CODE'] == 'D' && MICKA_LANG == 'cze') { $hle = DateIso2Cz($hle); } if ($row['FORM_CODE'] == 'C') { if (!$row['FROM_CODELIST'] == '') { $eid = $row['FROM_CODELIST']; } else { $eid = $row['EL_ID']; } // hierarchy if ($mds == 0 && $row['MD_ID'] == 623) { $this->hierarchy = $hle; } $hle = getLabelCodeList($hle, $eid); } else { if ($hyper == 1) { if ($row['FORM_CODE'] == 'T') { $hle_link = getHyperLink($hle); if ($hle != $hle_link) { $sanit = false; } } } } $hodnoty = array(); $md_id = $row['MD_ID']; if ($sanit) { $hle = htmlspecialchars($hle); } $hodnoty[$md_id]['value'] = str_replace('\\', '\\\\', $hle); $hodnoty[$md_id]['lang'] = $row['LANG']; $retez = $row['MD_PATH']; $ret = substr($retez, 0, strlen($retez) - 1); $pom = explode('_', $ret); $c = sizeof(explode('_', $ret)); $retez2 = ""; for ($i = 0; $i < $c;) { $id1 = $pom[$i]; $i++; $id2 = $pom[$i]; $i++; if ($retez2 == '') { $retez2 = $id1 . "_'P" . $id2 . "'"; } else { $retez2 = $retez2 . "_" . $id1 . "_'P" . $id2 . "'"; } } $retez2 = str_replace("_", "][", $retez2); $hodnoty[$md_id]['path'] = '[' . $retez2 . ']'; array_push($rs, $hodnoty); } return $rs; }
public function getXmlTmpMd($uuid) { setMickaLog("uuid={$uuid}", 'FUNCTION', "MdExport.getXmlTmpMd.start"); $vysl = array(); $recno_arr = array(); $elements_label = $this->getIdElements(); // nacteni elementu pro prevod na kody $sql = array(); $tmp_table_md = TMPTABLE_PREFIX . '_md'; $tmp_table_md_values = TMPTABLE_PREFIX . '_md_values'; array_push($sql, "\n\t\t\tSELECT {$tmp_table_md_values}.recno, {$tmp_table_md_values}.md_path, " . setNtext2Text($tmp_table_md_values . '.', 'md_value') . ", {$tmp_table_md_values}.lang, {$tmp_table_md}.md_standard\n\t\t\tFROM ({$tmp_table_md} JOIN {$tmp_table_md_values} ON {$tmp_table_md}.recno = {$tmp_table_md_values}.recno)\n\t\t\t\tJOIN standard ON {$tmp_table_md}.md_standard = standard.md_standard\n\t\t\tWHERE {$tmp_table_md}.sid=%s and {$tmp_table_md}.uuid=%s\n\t\t\tORDER BY {$tmp_table_md_values}.md_path\n\t\t", $this->sid, $uuid); $result = DB_DRIVER == 'oracle' ? _executeSql('select', array($sql), array('assoc', 'RECNO,#,=')) : _executeSql('select', array($sql), array('assoc', 'recno,#,=')); //$result = _executeSql('select', array($pom['sql']), array('assoc', 'recno,#,=')); $eval_text = ''; foreach ($result as $recno => $data) { $recno_arr[] = $recno; // seznam recno foreach ($data as $idx => $row) { if ($row['MD_PATH'] == '') { continue; } $mds = $row['MD_STANDARD']; if ($mds - 10 > -1) { $mds = $mds - 10; } $path_arr = explode('_', substr($row['MD_PATH'], 0, strlen($row['MD_PATH']) - 1)); $eval_text_tmp = '$vysl[' . $recno . ']'; foreach ($path_arr as $key => $value) { if ($key % 2 == 0) { $eval_text_tmp .= "['" . $elements_label[$mds][$value] . "']"; } else { $eval_text_tmp .= '[' . $value . ']'; } } $eval_text_tmp .= "['!" . $row['LANG'] . "']=" . '"' . gpc_addslashes($row['MD_VALUE']) . '";' . "\n"; $eval_text .= $eval_text_tmp; } } eval($eval_text); $this->md = array(); $this->setMdHeader($recno_arr); $this->printMDXML($vysl); setMickaLog($this->rs_xml, 'DEBUG', "MdExport.getXmlTmpMd.return"); return $this->rs_xml; }