Example #1
0
 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;
 }
Example #2
0
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;
}
Example #3
0
 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;
 }
Example #4
0
 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;
 }