kevacoinkvamanticorekvazarblockchainexplorersymfonyblockchain-explorerkvazar-webappkevacoin-phpkevacoin-explorermanticoresearch-phpkevacoin-indexcomposer-project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
3.6 KiB
172 lines
3.6 KiB
<?php |
|
|
|
require_once(__DIR__ . '/../config.php'); |
|
require_once(__DIR__ . '/../library/icon.php'); |
|
require_once(__DIR__ . '/../library/sqlite.php'); |
|
|
|
$query = isset($_GET['q']) ? preg_replace('/[^\w\s]+/u', '', urldecode($_GET['q'])) : ''; |
|
$ns = ''; |
|
$tx = ''; |
|
$page = 0; |
|
$rss = false; |
|
|
|
if (isset($_SERVER['REQUEST_URI'])) { |
|
|
|
$q = explode('/', $_SERVER['REQUEST_URI']); |
|
|
|
if (isset($q[1])) { |
|
if ($q[1] == 'rss') { |
|
$rss = true; |
|
} else if (strlen($q[1]) == 34) { |
|
$ns = preg_replace('/[^a-zA-Z0-9]+/', '', $q[1]); |
|
} else if (strlen($q[1]) == 64) { |
|
$tx = preg_replace('/[^a-zA-Z0-9]+/', '', $q[1]); |
|
} else if (preg_match('/[0-9]+/', $q[1])) { |
|
$page = (int) $q[1]; |
|
} |
|
} |
|
|
|
if (isset($q[2])) { |
|
if ($q[2] == 'rss') { |
|
$rss = true; |
|
} else if (strlen($q[2]) == 34) { |
|
$ns = preg_replace('/[^a-zA-Z0-9]+/', '', $q[2]); |
|
} else if (preg_match('/[0-9]+/', $q[2])) { |
|
$page = (int) $q[2]; |
|
} |
|
} |
|
} |
|
|
|
if ($query) { |
|
$rss = isset($_GET['rss']) ? true : false; |
|
} |
|
|
|
if ($page > 0) { |
|
$limit = PAGE_LIMIT * $page - PAGE_LIMIT; |
|
} else { |
|
$limit = PAGE_LIMIT * $page; |
|
} |
|
|
|
$db = new SQLite(DB_NAME, DB_USERNAME, DB_PASSWORD); |
|
|
|
if ($ns) { |
|
|
|
$namespaceHash = $ns; |
|
$namespaceValue = $db->getNamespaceValueByNS($ns); |
|
|
|
} else if ($tx) { |
|
|
|
$namespaceHash = $db->getNamespaceHashByTX($tx); |
|
$namespaceValue = $db->getNamespaceValueByNS($namespaceHash); |
|
|
|
} else { |
|
|
|
$namespaceHash = false; |
|
$namespaceValue = false; |
|
} |
|
|
|
$trends = []; |
|
|
|
if (TRENDS_ENABLED) { |
|
|
|
foreach ($db->getTrends(time() - TRENDS_SECONDS_OFFSET) as $value) { |
|
|
|
foreach ((array) explode(' ', strip_tags(html_entity_decode(nl2br(trim($value['key']))))) as $trend) { |
|
|
|
if (strlen($trend) >= TRENDS_MIN_LENGHT) { |
|
|
|
$trend = strtolower($trend); |
|
|
|
if (isset($trends[$trend])) { |
|
$trends[$trend]++; |
|
} else { |
|
$trends[$trend] = 1; |
|
} |
|
} |
|
} |
|
|
|
foreach ((array) explode(' ', strip_tags(html_entity_decode(nl2br(trim($value['value']))))) as $trend) { |
|
|
|
if (strlen($trend) >= TRENDS_MIN_LENGHT) { |
|
|
|
$trend = strtolower($trend); |
|
|
|
if (isset($trends[$trend])) { |
|
$trends[$trend]++; |
|
} else { |
|
$trends[$trend] = 1; |
|
} |
|
} |
|
} |
|
} |
|
|
|
arsort($trends); |
|
|
|
$trends = array_slice($trends, 0, TRENDS_LIMIT); |
|
|
|
$trends = array_flip($trends); |
|
} |
|
|
|
$data = []; |
|
foreach ($db->getData($ns, $tx, $query, $limit, PAGE_LIMIT) as $value) { |
|
$data[] = [ |
|
'namehash' => $value['namehash'], |
|
'block' => $value['block'], |
|
'txid' => $value['txid'], |
|
'time' => date(($rss ? 'r' : 'd-m-Y H:i'), $value['time']), |
|
'key' => $rss ? htmlentities(strip_tags(trim($value['key'])), ENT_XML1) : nl2br(trim($value['key'])), |
|
'value' => $rss ? htmlentities(strip_tags(trim($value['value'])), ENT_XML1): nl2br(trim($value['value'])), |
|
]; |
|
} |
|
|
|
$older = false; |
|
$newer = false; |
|
|
|
if (!in_array($page, [0, 1])) { |
|
if ($page == 2) { |
|
$newer = ($ns ? $ns : ''); |
|
} else { |
|
$newer = ($ns ? $ns . '/' . ($page - 1) : ($page - 1)); |
|
} |
|
|
|
if ($query) { |
|
$newer = $newer . '?q=' . $query; |
|
} |
|
} |
|
|
|
if ($data) { |
|
if (in_array($page, [0, 1])) { |
|
$older = ($ns ? $ns . '/2' : '2'); |
|
} else { |
|
$older = ($ns ? $ns . '/' . ($page + 1) : ($page + 1)); |
|
} |
|
|
|
if ($query) { |
|
$older = $older . '?q=' . $query; |
|
} |
|
} |
|
|
|
if ($ns) { |
|
if ($page) { |
|
$hrefThisPage = $ns . '/' . $page; |
|
} else { |
|
$hrefThisPage = $ns; |
|
} |
|
} else { |
|
if ($page) { |
|
$hrefThisPage = $page; |
|
} else { |
|
$hrefThisPage = ''; |
|
} |
|
} |
|
|
|
if ($rss) { |
|
|
|
header('Content-type: application/xml'); |
|
require_once('rss.phtml'); |
|
|
|
} else { |
|
|
|
require_once('index.phtml'); |
|
|
|
}
|
|
|