Ejemplo n.º 1
0
 function getMetadata()
 {
     $this->metadata = array();
     $mdstart = 1;
     try {
         do {
             $metadata = new MdExport($_SESSION['u'], $mdstart, 25, "");
             $metadata->only_public = TRUE;
             $flatParams = array();
             $q = array("@type = 'service'");
             list($xmlstr, $head) = $metadata->getXML($q, $flatParams);
             $this->xml->loadXML($xmlstr);
             $result = $this->xp->transformToXML($this->xml);
             //echo $result;
             eval($result);
             //echo "mdstart=$mdstart / $records\n";
             $this->metadata = array_merge($this->metadata, $md);
             $mdstart += $returned;
         } while ($records >= $mdstart);
     } catch (Exception $e) {
         echo "catalogue not connected";
         var_dump($e);
         exit;
     }
     return true;
 }
Ejemplo n.º 2
0
/**
 * Tvorba souboru XML
 *
 * @param string $user
 * @param string $uuid
 * @param string $xsltemplate
 * @param string $xml_from cache|data
 * @return string XML|FALSE
 */
function getXml($user, $uuid, $xsltemplate, $xml_from = 'cache')
{
    setMickaLog("USER={$user}, UUID={$uuid}, XSL={$xsltemplate}", 'DEBUG', 'micka_lib_xml.php (getXML)');
    $xml = FALSE;
    $in = array();
    if ($uuid != '') {
        $in[] = "_UUID_ = '{$uuid}'";
        $export = new MdExport($user);
        $export->xml_from = $xml_from;
        $xml_pom = $export->getXML($in, FALSE);
        setMickaLog('XML=' . $xml_pom, 'DEBUG', 'micka_lib_xml.php (getXML)');
        if ($xsltemplate != '' && $export->xml_from == 'data' && $xml_pom != '') {
            setMickaLog('applyTemplate', 'DEBUG', 'micka_lib_xml.php (getXml)');
            $xml_pom = applyTemplate($xml_pom, $xsltemplate);
            if ($xml_pom === FALSE) {
                setMickaLog('applyTemplate === FALSE', 'ERROR', 'micka_lib_xml.php (getXml)');
                return $xml;
            }
        }
        if ($xml_pom != '') {
            $xml = $xml_pom;
        }
    }
    return $xml;
}
Ejemplo n.º 3
0
 function getRecordById()
 {
     $qstr = "";
     if (!$this->params['ID']) {
         $this->exception(2, "ID", "");
     }
     $ids = explode(",", $this->params['ID']);
     foreach ($ids as $id) {
         if ($id) {
             if ($qstr) {
                 $qstr .= ",";
             }
             $qstr .= "'" . urldecode($id) . "'";
         }
     }
     if ($this->params['DEBUG'] == 1) {
         var_dump($this->params['ID']);
     }
     //---- dotaz do Micky ------------------------------------------------------
     $export = new MdExport($_SESSION['u'], 0, 25, $this->params['SORTBY']);
     //$export->xml_from = 'data'; // z puvodnich dat
     //if($this->params['FORMAT']=='text/html'){
     $xmlstr = $export->getXML(array(), array("ID" => "({$qstr})"), true, true);
     //}
     //else {
     //	list($xmlstr, $head) = $export->getXML(array(), array("ID" =>"($qstr)"));
     //}
     //--------------------------------------------------------------------------
     if ($xmlstr == -1) {
         $this->exception(3, "Filter", "Invalid filter: " . $xmlstr);
     }
     $sablona = "micka2cat_19139";
     if ($this->params['OUTPUTSCHEMA']) {
         if (!in_array($this->params['OUTPUTSCHEMA'], $this->schemas)) {
             $this->exception(3, "OUTPUTSCHEMA", $this->params['OUTPUTSCHEMA'] . " is not valid value.");
         }
         switch ($this->params['OUTPUTSCHEMA']) {
             case $this->schemas["gmd"]:
                 $sablona = "micka2cat_19139";
                 break;
             case $this->schemas["atom"]:
                 $sablona = "micka2atom";
                 break;
             case $this->schemas["dcat"]:
                 $sablona = "micka2dcat";
                 break;
             default:
                 $sablona = "micka2cat_dc";
                 break;
         }
     }
     switch ($this->getParamL('ELEMENTSETNAME')) {
         //TODO - nefunguje v sablone
         case 'brief':
             $sablona .= '_brief';
             break;
         case 'summary':
             $sablona .= '_summary';
             break;
         case 'full':
         default:
             $sablona .= '_full';
             // podle standardu summary
             $this->params['ELEMENTSETNAME'] = "full";
             break;
     }
     $this->logText .= "[ID=" . $qstr . "]";
     //TODO - kaskadovani
     //---prevod XML do katalogu
     $this->xml->loadXML($xmlstr);
     $this->xsl->load(PHPPRG_DIR . "/../xsl/{$sablona}.xsl");
     $this->xp->importStyleSheet($this->xsl);
     $this->xp->setParameter('', 'requestId', $this->params['REQUESTID']);
     $this->xp->setParameter('', 'thisPath', dirname($this->params['thisURL']));
     $this->xp->setParameter('', 'LANGUAGE', $this->params['LANGUAGE']);
     $this->xp->setParameter('', 'ID', $this->params['ID']);
     $this->xp->setParameter('', 'version', $this->params['VERSION']);
     $this->xp->setParameter('', 'root', "csw:GetRecordByIdResponse");
     $this->xp->setParameter('', 'elementSet', $this->getParamL('ELEMENTSETNAME'));
     $this->xp->setParameter('', 'user', $_SESSION["u"]);
     // --- HTML ---
     if ($this->params['FORMAT'] == 'text/html') {
         //$processed = $this->xp->transformToDoc($this->xml);
         //echo CATCLIENT_PATH."/xsl/iso2htmlFull.xsl"; exit;
         if ($params['TEMPLATE']) {
             $sablona = $params['TEMPLATE'];
         } else {
             $sablona = "iso2htmlFull_";
         }
         //die(PHPPRG_DIR);
         $output = $this->asHTML($this->xml, PHPPRG_DIR . "/../xsl/{$sablona}.xsl");
         // TODO - podle konfigurace
         $this->isXML = false;
     } else {
         $output = $this->xp->transformToXML($this->xml);
     }
     return $output;
 }
Ejemplo n.º 4
0
 public function getMdXmlData($uuid, $xsltemplate = 'micka2one19139.xsl')
 {
     setMickaLog("UUID={$uuid}, XSL={$xsltemplate}", 'DEBUG', 'MdRecord.getMdXmlData');
     require_once PHPPRG_DIR . '/MdExport.php';
     $rs = '';
     if ($uuid != '') {
         //$in = array();
         //$in[] = "_UUID_ = '$uuid'";
         $export = new MdExport($this->user);
         if ($this->table_mode == 'tmp') {
             $export->setTableMode('tmp');
             $xml = $export->getXmlTmpMd($uuid);
         } else {
             $in = array();
             $params = array();
             $in[] = "_UUID_ = '{$uuid}'";
             // TODO: použít params
             $export->xml_from = 'data';
             $pom = $export->getXML($in, $params, FALSE);
             $xml = $pom[0];
         }
         //setMickaLog('XML=' . $xml_pom, 'DEBUG', 'micka_lib_xml.php (getXML)');
         if ($xsltemplate == '' && $xml != '') {
             $rs = $xml;
         } elseif ($xsltemplate != '' && $xml != '') {
             setMickaLog("applyTemplate {$xsltemplate}", 'DEBUG', 'MdRecord.getMdXmlData');
             $xml = applyTemplate($xml, $xsltemplate);
             if ($xml === FALSE) {
                 setMickaLog('applyTemplate === FALSE', 'ERROR', 'MdRecord.getMdXmlData');
             } else {
                 if ($xml != '') {
                     $rs = $xml;
                 }
             }
         }
     }
     if ($rs == '') {
         setMickaLog("XML empty", 'ERROR', 'MdRecord.getMdXmlData');
     }
     return $rs;
 }
Ejemplo n.º 5
0
 function run($qstring = "")
 {
     // prochazi cele repository
     $start = 1;
     $step = 50;
     $numResults = 0;
     // zpracovani dotazu
     if ($qstring) {
         $query = $this->csw->cql2sql($qstring);
     } else {
         $query = array();
     }
     do {
         $export = new MdExport($_SESSION['u'], $start, $step, "");
         list($xmlstr, $head) = $export->getXML($query, array());
         //var_dump($head); die;
         //echo $xmlstr; die();
         $this->xml->loadXML($xmlstr);
         $vety = $this->xml->getElementsByTagNameNS("http://www.isotc211.org/2005/gmd", "MD_Metadata");
         $numResults = $this->xml->documentElement->getAttribute("numberOfRecordsMatched");
         $this->refreshXpath();
         $i = 0;
         foreach ($vety as $veta) {
             $this->collectResults($veta, $head[$i]);
             $i++;
         }
         $start += $step;
     } while ($start <= $numResults);
     return $this->result;
 }