VTuner.com Importer
';
//$rsdb_xml = file_get_contents($config['vtuner']['url'] . '?mac=' . $config['noxon']['mac'] . '&uid=' . $config['vtuner']['uid'] . '&lang=' . $config['vtuner']['lang']);
$rsdb_xml = file_get_contents('../full_rsdb.xml');
$rsdb_dom = new DOMDocument();
$rsdb_dom->preserveWhiteSpace = false;
$rsdb_dom->loadXML($rsdb_xml);
if ($_GET['cmd'] == 'import') {
// Stations
$stationList = $rsdb_dom->getElementsByTagName('station_list')->item(0);
echo $stationList->getElementsByTagName('station')->length . ' Stationen';
$counter = 0;
$sql_pre = 'REPLACE INTO nodes (id, type, name, description, bitrate, url, mime_type) VALUES ' . "\n";
foreach ($stationList->getElementsByTagName('station') as $station) {
if($counter % 50 == 0) {
$sql = substr($sql, 0, -3);
mysql_query($sql, $site['db']['connection']);
echo '.'; flush();
$sql = $sql_pre;
}
$sql .= '(' . (int) $station->getElementsByTagName('id')->item(0)->nodeValue . ', \'station\', \'' . mysql_real_escape_string($station->getElementsByTagName('station_name')->item(0)->nodeValue) . '\', \'' . mysql_real_escape_string($station->getElementsByTagName('station_description')->item(0)->nodeValue) . '\', ' . (int) $station->getElementsByTagName('bw')->item(0)->nodeValue . ', \'' . mysql_real_escape_string($station->getElementsByTagName('url')->item(0)->nodeValue) . '\', \'' . mysql_real_escape_string($station->getElementsByTagName('mime_type')->item(0)->nodeValue) . '\'), ' . "\n";
$counter++;
}
if(mysql_affected_rows() > 0) {
echo '' . $counter . ' stations successfully imported!
';
}
else {
echo 'Sorry we had a problem during the importing process:
' . mysql_error() . '
';
echo '' . $sql . '
';
}
//Structure
$dirList = $rsdb_dom->getElementsByTagName('directory_list')->item(0);
$sql = 'REPLACE INTO tree (node_id, lft, rgt) VALUES ' . "\n";
$curNode = $dirList;
$counter = 0;
$level = 0;
$lft[$level] = 0;
while($curNode) {
switch ($curNode->nodeName) {
case 'dir':
mysql_query('REPLACE INTO nodes (type, name) VALUES (\'directory\', \'' . mysql_real_escape_string($curNode->attributes->getNamedItem('name')->nodeValue) . '\')');
$id[$level] = mysql_insert_id();
//echo 'found dir: ' . $curNode->getAttribute('name') . ' and added to nodes with id: ' . mysql_insert_id() . '
';
break;
case 'station':
$id[$level] = (int) $curNode->nodeValue;
//echo 'found station: ' . $curNode->nodeValue . '
';
break;
default:
break;
}
if ($curNode->hasChildNodes() && strpos($curNode->nodeName, 'dir') !== false) {
$curNode = $curNode->firstChild;
$level++;
$lft[$level] = $lft[$level - 1] + 1;
//echo 'entering subtree (level: ' . $level . ')
';
}
else {
$rgt[$level] = $lft[$level] + 1;
$sql .= '(' . $id[$level] . ', ' . $lft[$level] . ', ' . $rgt[$level] . '), ' . "\n";
echo 'next node (level: ' . $level . '): (' . $id[$level] . ', ' . $lft[$level] . ', ' . $rgt[$level] . ')
';
$lft[$level] = $rgt[$level] + 1;
if ($curNode->nextSibling) {
$curNode = $curNode->nextSibling;
}
else {
do {
$level--;
$rgt[$level] = $rgt[$level + 1] + 1;
$sql .= '(' . $id[$level] . ', ' . $lft[$level] . ', ' . $rgt[$level] . '), ' . "\n";
echo 'leave subtree (level: ' . $level . '): (' . $id[$level] . ', ' . $lft[$level] . ', ' . $rgt[$level] . ')
';
$lft[$level] = $rgt[$level] + 1;
if ($level == 1) break 2;
$curNode = $curNode->parentNode;
} while (!$curNode->nextSibling);
$curNode = $curNode->nextSibling;
}
}
/*if($counter % 50 == 0 && $sql != '') {
$sql = substr($sql, 0, -3);
mysql_query($sql, $site['db']['connection']);
echo '.'; flush();
$sql = $sql_pre;
echo mysql_error();
}*/
$counter++;
}
$sql = substr($sql, 0, -3);
mysql_query($sql, $site['db']['connection']);
if(mysql_affected_rows() > 0) {
echo '' . $counter . ' nodes successfully imported!
';
}
else {
echo 'Sorry we had a problem during the importing process:
' . mysql_error() . '
';
}
echo '' . $sql . '
';
}
else {
echo ' Database Info
Version | ' . $rsdb_dom->firstChild->attributes->getNamedItem('version')->nodeValue . ' |
Stationen | ' . $rsdb_dom->firstChild->attributes->getNamedItem('station_count')->nodeValue . ' |
Format Version | ' . $rsdb_dom->firstChild->attributes->getNamedItem('format_version')->nodeValue . ' |
Server URL | ' . $rsdb_dom->getElementsByTagName('database_info')->item(0)->getElementsByTagName('server_url')->item(0)->nodeValue . ' |
Name | ' . $rsdb_dom->getElementsByTagName('database_info')->item(0)->getElementsByTagName('name')->item(0)->nodeValue . ' |
Service | ' . $rsdb_dom->getElementsByTagName('database_info')->item(0)->getElementsByTagName('service')->item(0)->nodeValue . ' |
Do you really want to import ' . $rsdb_dom->firstChild->attributes->getNamedItem('station_count')->nodeValue . ' Station to your DB?
YES
';
}
echo '