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); } } }
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); } }
/** * @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; } }