function jsonToXML(&$doc, &$el, $data, $dependancyData)
{
    //    print PHP_EOL.PHP_EOL."------------".PHP_EOL;
    //    print_r($data);
    foreach ($data as $key => $val) {
        $key = dependencyParser($key, $dependancyData);
        //        print PHP_EOL.$key;
        if (is_scalar($val)) {
            if ($val === true) {
                $val = 'true';
            } elseif ($val === false) {
                $val = 'false';
            }
            if ($key != 'pattern') {
                $val = dependencyParser($val, $dependancyData);
            }
            if ($val !== null) {
                $el->setAttribute($key, $val);
            }
        } elseif (is_array($val)) {
            foreach ($val as $subkey => $subval) {
                $subel = $doc->createElement($key);
                if (!is_numeric($subkey)) {
                    $subel->setAttribute('type', $subkey);
                }
                jsonToXML($doc, $subel, $subval, $dependancyData);
                $el->appendChild($subel);
            }
        } else {
            print "2" . $key;
            $subel = $doc->createElement($key);
            jsonToXML($doc, $subel, $val, $dependancyData);
            $el->appendChild($subel);
        }
    }
}
Exemplo n.º 2
0
        curl_setopt($ch, CURLOPT_URL, $uri);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $response = curl_exec($ch);
        curl_close($ch);
        $json = json_decode($response, true);
    } else {
        session_start();
        $opts = array('http' => array('header' => 'Cookie: ' . $_SERVER['HTTP_COOKIE'] . "\r\n"));
        // Send cookies for session_start of target
        $context = stream_context_create($opts);
        session_write_close();
        $json = json_decode(json_clean_line_breaks(file_get_contents($uri, false, $context)), true);
    }
    $xml = jsonToXML($json);
    $xml = stripInvalidXml($xml);
} else {
    $xml = file_get_contents($uri);
}
if (false === $xml) {
    echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"></rdf:RDF>';
    exit;
}
if (empty($xsl)) {
    echo $xml;
    exit;
}
$is_html = false !== stripos(substr(trim($xml), 0, 200), '<html') ? true : false;
$XML = new DOMDocument();
if ($is_html) {
function createFieldTypeConfig(&$doc, &$el, $fieldType, $fieldTypeInfo, $dependancyArray)
{
    global $foundTypes;
    global $unusedTypes;
    foreach ($fieldTypeInfo as $key => $val) {
        if (substr($key, 0, 2) == '__') {
            unset($fieldTypeInfo[$key]);
        }
    }
    foreach ($dependancyArray as $pos => $dependancyData) {
        $currentFieldType = dependencyParser($fieldType, $dependancyData);
        if (isset($foundTypes[$currentFieldType])) {
            unset($foundTypes[$currentFieldType]);
        } else {
            $unusedTypes[$currentFieldType] = $currentFieldType;
        }
        $comment = new DOMComment(" {$currentFieldType} ");
        $el->appendChild($comment);
        $field = $doc->createElement('fieldType');
        $field->setAttribute('name', $currentFieldType);
        jsonToXML($doc, $field, $fieldTypeInfo, $dependancyData);
        $el->appendChild($field);
        $comment = new DOMComment("NEWLINE");
        $el->appendChild($comment);
    }
}
Exemplo n.º 4
0
/**
 * @package EDK
 */
function update040()
{
    global $url, $smarty;
    //Checking if this Update already done
    if (CURRENT_DB_UPDATE < "040") {
        if (is_null(config::get('040updatestatus'))) {
            config::set('040updatestatus', 0);
        }
        $qry = DBFactory::getDBQuery(true);
        if (config::get('040updatestatus') < 1) {
            $qry->execute("SHOW COLUMNS FROM kb3_mails LIKE 'kll_json'");
            if (!$qry->recordCount()) {
                $sql = 'ALTER TABLE `kb3_mails` ADD COLUMN `kll_json` BLOB';
                $qry->execute($sql);
            }
            config::set('040updatestatus', 1);
            $smarty->assign('refresh', 1);
            $smarty->assign('content', "Adding JSON field");
            $smarty->display('update.tpl');
            die;
        }
        if (config::get('040updatestatus') < 2) {
            if (config::get('040updatelastkill') > 0) {
                $sql = "select kll_id from kb3_mails where kll_trust <> -1 AND kll_id >= " . config::get('040updatelastkill') . " AND kll_json is null limit 500";
            } else {
                $sql = "select kll_id from kb3_mails where kll_trust <> -1 AND kll_json is null limit 500";
            }
            $qry->execute($sql);
            $out = '';
            while ($row = $qry->getRow()) {
                $killid = (int) $row['kll_id'];
                $xml = killIDToXML($killid);
                if ($xml === false) {
                    config::set('040updatelastkill', $killid);
                    $out .= "Corrupt Kill: {$killid}<br/>";
                    die;
                    continue;
                }
                $xml2 = (string) str_replace(array("\r", "\r\n", "\n", " ", '<?xmlversion="1.0"?>'), '', $xml->result->rowset->row->asXML());
                $killarray = xmlToArray($xml->result->rowset->row);
                $killarray['v'] = 1;
                $json = json_encode($killarray);
                $xmlj = jsonToXML(json_decode($json));
                $xmlj = (string) str_replace(array("\r", "\r\n", "\n", " ", "<?xmlversion=\"1.0\"?>"), '', $xmlj);
                if ($xmlj == $xml2) {
                    $kll_json = gzdeflate($json, 9);
                    $qry2 = DBFactory::getDBQuery(true);
                    $sql2 = "UPDATE kb3_mails SET kll_json='" . $qry->escape($kll_json) . "' where kll_id = " . $killid;
                    $qry2->execute($sql2);
                } else {
                    echo 'Failed to convert Kill to JSON format';
                    echo $xmlj;
                    //--> encoded
                    echo "--------------------";
                    echo $xml2;
                    // --> correct
                    die;
                    continue;
                }
            }
            $sql = "select count(kll_id) as cnt from kb3_mails where kll_trust <> -1 AND kll_json is null";
            $qry->execute($sql);
            $row = $qry->getRow();
            if ($row['cnt'] == 0) {
                config::set('040updatestatus', 2);
            }
            $smarty->assign('refresh', 1);
            $smarty->assign('content', "Generating JSON For Kills ({$killid}):<br/>" . $out);
            $smarty->display('update.tpl');
            die;
        }
        config::set("DBUpdate", "040");
        $qry->execute("INSERT INTO kb3_config (cfg_site, cfg_key, cfg_value) SELECT cfg_site, 'DBUpdate', '040' FROM kb3_config GROUP BY cfg_site ON DUPLICATE KEY UPDATE cfg_value = '040'");
        config::del("040updatestatus");
        config::del("040updatelastkill");
        $smarty->assign('refresh', 1);
        $smarty->assign('content', "Update 040 completed.");
        $smarty->display('update.tpl');
        die;
    }
}