You've already forked tritonmconverter
updatev2
This commit is contained in:
172
index.php
Normal file
172
index.php
Normal file
@@ -0,0 +1,172 @@
|
||||
<?php
|
||||
if(isset($_POST['data'])){
|
||||
$data = json_decode($_POST['data'], true);
|
||||
function guidv4($data = null) {
|
||||
// Generate 16 bytes (128 bits) of random data or use the data passed into the function.
|
||||
$data = $data ?? random_bytes(16);
|
||||
assert(strlen($data) == 16);
|
||||
|
||||
// Set version to 0100
|
||||
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
|
||||
// Set bits 6-7 to 10
|
||||
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
|
||||
|
||||
// Output the 36 character UUID.
|
||||
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
|
||||
}
|
||||
|
||||
$host = $data['database']['host'];
|
||||
$port = $data['database']['port'];
|
||||
$user = $data['database']['user'];
|
||||
$pass = $data['database']['pass'];
|
||||
$database = $data['database']['base'];
|
||||
$prefix = $data['database']['pref'];
|
||||
|
||||
$link = mysqli_connect($host, $user, $pass, $database, $port);
|
||||
$link->set_charset('utf8');
|
||||
if ($link == false){
|
||||
exit(json_encode(array("success" => "false", "message"=> "Невозможно подключиться к MySQL" . mysqli_connect_error())));
|
||||
}
|
||||
|
||||
$resCollection = $link->query("SELECT * FROM `".$prefix."collections` WHERE `name` = '" . $data['collection'] . "';");
|
||||
$isSuccess = true;
|
||||
$hasCollection = mysqli_num_rows($resCollection) > 0;
|
||||
foreach($data['data'] as $key => $value){
|
||||
// echo $key . " -> "; var_dump($value); echo '<br>';
|
||||
|
||||
if($hasCollection){
|
||||
$rs = $link->query("SELECT `twin_id`, `twin_data` FROM `".$prefix."translations` WHERE `field_key` = '" . $key . "';");
|
||||
$hasLocalization = mysqli_num_rows($rs) > 0;
|
||||
|
||||
if($hasLocalization){
|
||||
//updating
|
||||
$data = mysqli_fetch_assoc($rs);
|
||||
$twinData = json_decode($data['twin_data'], true);
|
||||
$twinData['dateUpdated'] = time()*1000;
|
||||
|
||||
|
||||
$res = $link->query("UPDATE `".$prefix."translations` SET `twin_data` = '".str_replace("\"", '\\"',json_encode($twinData))."' , `content` = '".str_replace("\"", '\\"', json_encode($value, JSON_UNESCAPED_UNICODE))."' WHERE `twin_id` = '" . $data['twin_id'] . "';");
|
||||
|
||||
if(!$res) {
|
||||
exit(json_encode(array("success" => "false", "message" => "Couldn't save " . $key . ": " . $link->error)));
|
||||
break;
|
||||
}
|
||||
|
||||
}else {
|
||||
$twinData = array(
|
||||
"dateCreated" => time()*1000,
|
||||
"dateUpdated" => time()*1000,
|
||||
"archived" => false,
|
||||
"tags" => []
|
||||
);
|
||||
$twinId = guidv4();
|
||||
//inserting
|
||||
$stmt = $link->prepare("INSERT INTO `".$prefix."translations` (`collection`, `field_key`, `content`, `twin_id`, `twin_data`) VALUES (?,?,?,?,?)");
|
||||
$stmt ->bind_param("sssss", $data['collection'], $key, json_encode($value, JSON_UNESCAPED_UNICODE), $twinId, json_encode($twinData));
|
||||
$res = $stmt -> execute();
|
||||
$stmt -> close();
|
||||
if(!$res) {
|
||||
exit(json_encode(array("success" => "false", "message" => "Couldn't save " . $key . ": " . $link->error)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else {
|
||||
$twinData = array(
|
||||
"dateCreated" => time()*1000,
|
||||
"dateUpdated" => time()*1000,
|
||||
"archived" => false,
|
||||
"tags" => []
|
||||
);
|
||||
$twinId = guidv4();
|
||||
//inserting
|
||||
$queryAddCollection = "INSERT INTO `".$prefix."collections` (`name`, `servers`, `blacklist`) VALUES ('".$data['collection']."', '[]', 1)";
|
||||
// $queryAddTranslation = "INSERT INTO `".$prefix."translations` (`collection`, `field_key`, `content`, `twin_id`, `twin_data`) VALUES ('".$data['collection']."' , '".$key."' , '".str_replace("\"", '\\"', json_encode($value, JSON_UNESCAPED_UNICODE))."' , '".$twinId."' , '".str_replace("\"", '\\"',json_encode($twinData))."');";
|
||||
$res = $link->query($queryAddCollection);
|
||||
// $res = $link->query($queryAddTranslation);
|
||||
$stmt = $link->prepare("INSERT INTO `".$prefix."translations` (`collection`, `field_key`, `content`, `twin_id`, `twin_data`) VALUES (?,?,?,?,?)");
|
||||
$stmt ->bind_param("sssss", $data['collection'], $key, json_encode($value, JSON_UNESCAPED_UNICODE), $twinId, json_encode($twinData));
|
||||
$res = $stmt -> execute();
|
||||
$stmt -> close();
|
||||
if(!$res) {
|
||||
exit(json_encode(array("success" => "false", "message" => "Couldn't save " . $key . ": " . $link->error)));
|
||||
break;
|
||||
}
|
||||
$hasCollection = true;
|
||||
}
|
||||
}
|
||||
exit(json_encode(array("success" => "true")));
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Text Transformer</title>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
|
||||
<script src="js/jquery-3.7.1.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col-md-6 d-flex flex-column gap">
|
||||
<div class="row justify-content-between">
|
||||
<label for="key">Enter a key</label><input class="form-control-sm w-50" id="key" type="text" placeholder="Enter collection name">
|
||||
</div>
|
||||
<div class="row justify-content-between">
|
||||
<div class="row justify-content-between w-100">
|
||||
<label for="add_arg">Enter a new arg</label><input class="form-control-sm w-50" type="text" id="add_arg" placeholder="e.g. player admin">
|
||||
</div>
|
||||
<div class="args" id="args"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="w-100 db">
|
||||
<input type="text" id="db_host" name="" class="form-control-sm w-50" placeholder="Database host">
|
||||
<input type="text" id="db_base" name="" class="form-control-sm w-50" placeholder="Database base">
|
||||
<input type="text" id="db_user" name="" class="form-control-sm w-50" placeholder="Database user">
|
||||
<input type="password" id="db_pass" name="" class="form-control-sm w-50" placeholder="Database password">
|
||||
<input type="number" id="db_port" name="" class="form-control-sm w-50" placeholder="Database port" value="3306">
|
||||
<input type="text" id="db_prefix" name="" class="form-control-sm w-50" placeholder="Triton table prefix" value="triton_">
|
||||
</div>
|
||||
<div class="row justify-content-between"><button id="reset" class="btn-sm btn-success">Новый документ</button><button id="btn" class="btn-sm btn-success">Upload translations to database</button></div>
|
||||
</div>
|
||||
</div>
|
||||
<main class="row flex-column gap">
|
||||
<div class="row justify-content-between align-items-center">
|
||||
<div class="col-md-6 d-flex justify-content-between pr-2 align-items-center">
|
||||
<span>Input</span>
|
||||
<select id="language" class="form-control w-50">
|
||||
<option value="choose" disabled selected>Choose language</option>
|
||||
<option value="ru_RU">Russia</option>
|
||||
<option value="en_GB">United Kingdom</option>
|
||||
<option value="en_US">United States of America (USA)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 d-flex justify-content-between pl-2 align-items-center">
|
||||
<span>Output</span>
|
||||
<button class="btn btn-success" onclick="copyResult()">Copy result</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row flex-grow">
|
||||
<div class="col-md-6 pr-2 h-100">
|
||||
<textarea id="input" class="w-100 form-control h-100" disabled></textarea>
|
||||
</div>
|
||||
<div class="col-md-6 pl-2 h-100">
|
||||
<textarea id="output" class="w-100 form-control h-100" disabled></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<footer>
|
||||
<div class="w-100 row align-items-center justify-content-center p-2">
|
||||
<p>2023-<span id="date"></span> © <a href="https://discord.com/users/566255927926456320">DestKoder</a> & <a href="https:://quickfirecorp.ru">QuickFire Corp</a> All Rights Reserved</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/index.js"></script>
|
||||
<script src="js/utils.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user