$result["error"]="Error while validating: required fields not found. Re-check your registration string.";
}else{
/* Getting domain at higher level (2LD for registering 3LD and etc.) and validating that domain is lower than 2LD. */
$darr=explode(".",$domain);
$dtop="";
for($i=1;$i<sizeof($darr);$i++){
$dtop.=$darr[$i];
if((sizeof($darr)-1)!=$i)$dtop.=".";
}
if(sizeof($darr)<3){
$result["error"]="Error while validating: you can't register second level domain (example.i2p) using addsubdomain action.";
}elseif($dtop!=$parsed["commands"]["oldname"]){
$result["error"]="Error while validating: oldname value is not same as your higher level domain.";
}elseif(!$pdo->query("SELECT COUNT(*) FROM `hosts` WHERE `host` = '".$parsed["commands"]["oldname"]."' AND `base64` = '".$parsed["commands"]["olddest"]."' LIMIT 1")->fetchColumn()){
$result["error"]="Error while validating: can't find higher level domain with values from oldname and olddest.";
}else{
$base32=$util->b32from64($parsed["b64"]);
if(!$pdo->exec("INSERT INTO `hosts` (`host`, `base64`, `base32`) VALUES ('".$domain."', '".$parsed["b64"]."', '".$base32."')")){
$result["error"]="Error happened while inserting record to database. Please try again later.";
$result["error"]="Error while validating: required fields not found. Re-check your registration string.";
}else{
if(!$pdo->query("SELECT COUNT(*) FROM `hosts` WHERE `host` = '".$domain."' AND `base64` = '".$parsed["commands"]["olddest"]."' LIMIT 1")->fetchColumn()){
$result["error"]="Error while validating: old base64 and value in olddest field does not match..";
}else{
$base32=$util->b32from64($parsed["b64"]);
if(!$pdo->exec("UPDATE `hosts` SET `base64` = '".$parsed["b64"]."', `base32` = '".$base32."' WHERE `host` = '".$domain."'")){
$result["error"]="Error happened while updating record in database. Please try again later.";
$result["error"]="Error while validating: required fields not found. Re-check your registration string.";
}else{
if(!$pdo->query("SELECT COUNT(*) FROM `hosts` WHERE `host` = '".$domain."' AND `base64` = '".$parsed["commands"]["olddest"]."' LIMIT 1")->fetchColumn()){
$result["error"]="Error while validating: old base64 and value in olddest field does not match..";
}else{
$base32=$util->b32from64($parsed["b64"]);
if(!$pdo->exec("UPDATE `hosts` SET `base64` = '".$parsed["b64"]."', `base32` = '".$base32."' WHERE `host` = '".$domain."'")){
$result["error"]="Error happened while updating record in database. Please try again later.";
}else{
$result["host"]=$domain;
$result["base64"]=$parsed["b64"];
$result["base32"]=$base32;
}
}
}
break;
default:
$result["error"]="Error while validating: extended record fields are NOT supported for now.";