mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2024-11-30 12:36:03 +00:00
DB Dump Working
This commit is contained in:
parent
50252def84
commit
7a6d2ace00
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
db
|
89
_pdo.php
Normal file
89
_pdo.php
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
// PDO helper functions.
|
||||||
|
// Copyright (c) 2012-2014 The PHP Desktop authors. All rights reserved.
|
||||||
|
// License: New BSD License.
|
||||||
|
// Website: http://code.google.com/p/phpdesktop/
|
||||||
|
|
||||||
|
function PDO_Connect($dsn, $user="", $password="")
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
$PDO = new PDO($dsn, $user, $password);
|
||||||
|
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
|
||||||
|
}
|
||||||
|
function PDO_FetchOne($query, $params=null)
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
if (isset($params)) {
|
||||||
|
$stmt = $PDO->prepare($query);
|
||||||
|
$stmt->execute($params);
|
||||||
|
} else {
|
||||||
|
$stmt = $PDO->query($query);
|
||||||
|
}
|
||||||
|
$row = $stmt->fetch(PDO::FETCH_NUM);
|
||||||
|
if ($row) {
|
||||||
|
return $row[0];
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function PDO_FetchRow($query, $params=null)
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
if (isset($params)) {
|
||||||
|
$stmt = $PDO->prepare($query);
|
||||||
|
$stmt->execute($params);
|
||||||
|
} else {
|
||||||
|
$stmt = $PDO->query($query);
|
||||||
|
}
|
||||||
|
return $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
}
|
||||||
|
function PDO_FetchAll($query, $params=null)
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
if (isset($params)) {
|
||||||
|
$stmt = $PDO->prepare($query);
|
||||||
|
$stmt->execute($params);
|
||||||
|
} else {
|
||||||
|
$stmt = $PDO->query($query);
|
||||||
|
}
|
||||||
|
return $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
}
|
||||||
|
function PDO_FetchAssoc($query, $params=null)
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
if (isset($params)) {
|
||||||
|
$stmt = $PDO->prepare($query);
|
||||||
|
$stmt->execute($params);
|
||||||
|
} else {
|
||||||
|
$stmt = $PDO->query($query);
|
||||||
|
}
|
||||||
|
$rows = $stmt->fetchAll(PDO::FETCH_NUM);
|
||||||
|
$assoc = array();
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
$assoc[$row[0]] = $row[1];
|
||||||
|
}
|
||||||
|
return $assoc;
|
||||||
|
}
|
||||||
|
function PDO_Execute($query, $params=null)
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
if (isset($params)) {
|
||||||
|
$stmt = $PDO->prepare($query);
|
||||||
|
$stmt->execute($params);
|
||||||
|
return $stmt;
|
||||||
|
} else {
|
||||||
|
return $PDO->query($query);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function PDO_LastInsertId()
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
return $PDO->lastInsertId();
|
||||||
|
}
|
||||||
|
function PDO_ErrorInfo()
|
||||||
|
{
|
||||||
|
global $PDO;
|
||||||
|
return $PDO->errorInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
48
index.php
48
index.php
@ -20,10 +20,15 @@
|
|||||||
along with D2UM. If not, see <http://www.gnu.org/licenses/>.
|
along with D2UM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ini_set('display_errors', 1);
|
ini_set('display_errors', 0);
|
||||||
|
error_reporting(0);
|
||||||
ini_set('log_errors', 1);
|
ini_set('log_errors', 1);
|
||||||
|
|
||||||
define('FILTER_PROPERTIES_FILE', 'filterProperties.txt');
|
define('FILTER_PROPERTIES_FILE', 'filterProperties.txt');
|
||||||
|
define('DB_FILE', 'db');
|
||||||
|
|
||||||
|
|
||||||
|
include "./_pdo.php";
|
||||||
|
|
||||||
$filename = 'd2im.conf';
|
$filename = 'd2im.conf';
|
||||||
|
|
||||||
@ -39,6 +44,9 @@ if (file_exists($filename)) {
|
|||||||
|
|
||||||
// Misc functions
|
// Misc functions
|
||||||
require_once "./src/D2Functions.php";
|
require_once "./src/D2Functions.php";
|
||||||
|
|
||||||
|
// D2 Database
|
||||||
|
require_once "./src/D2Database.php";
|
||||||
|
|
||||||
// D2 Files Loader
|
// D2 Files Loader
|
||||||
require_once './src/D2Files.php';
|
require_once './src/D2Files.php';
|
||||||
@ -52,14 +60,18 @@ if (file_exists($filename)) {
|
|||||||
$parser = new D2TxtParser();
|
$parser = new D2TxtParser();
|
||||||
|
|
||||||
$armor = $parser->parseFile($files->getFile('Armor'));
|
$armor = $parser->parseFile($files->getFile('Armor'));
|
||||||
$weapon = $parser->parseFile($files->getFile('Weapons'));
|
$gems = $parser->parseFile($files->getFile('Gems'));
|
||||||
|
$itypes = $parser->parseFile($files->getFile('ItemTypes'));
|
||||||
|
$misc = $parser->parseFile($files->getFile('Misc'));
|
||||||
$prop = $parser->parseFile($files->getFile('Properties'));
|
$prop = $parser->parseFile($files->getFile('Properties'));
|
||||||
$uni = $parser->parseFile($files->getFile('UniqueItems'));
|
|
||||||
$sets = $parser->parseFile($files->getFile('Sets'));
|
|
||||||
$setitems = $parser->parseFile($files->getFile('SetItems'));
|
$setitems = $parser->parseFile($files->getFile('SetItems'));
|
||||||
|
$sets = $parser->parseFile($files->getFile('Sets'));
|
||||||
|
$uni = $parser->parseFile($files->getFile('UniqueItems'));
|
||||||
|
$weapon = $parser->parseFile($files->getFile('Weapons'));
|
||||||
|
|
||||||
$u = $files->getFile("UniqueItems");
|
$u = $files->getFile("UniqueItems");
|
||||||
$s = $files->getFile("SetItems");
|
$s = $files->getFile("SetItems");
|
||||||
|
|
||||||
|
|
||||||
// If there's data, process it and save
|
// If there's data, process it and save
|
||||||
if (!empty($_POST)) {
|
if (!empty($_POST)) {
|
||||||
@ -79,20 +91,16 @@ if (file_exists($filename)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// if ladder or carry1 is 0, set empty field.
|
|
||||||
if (!$post['ladder']){
|
|
||||||
$post['ladder'] = '';
|
|
||||||
}
|
|
||||||
if (!$post['carry1']){
|
|
||||||
$post['carry1'] = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ($_POST['formtype'] == "uniqueitems") {
|
if ($_POST['formtype'] == "uniqueitems") {
|
||||||
$saver->save($u);
|
// if ladder or carry1 is 0, set empty field.
|
||||||
|
if (!$post['ladder']) {
|
||||||
|
$post['ladder'] = '';
|
||||||
|
}
|
||||||
|
if (!$post['carry1']) {
|
||||||
|
$post['carry1'] = '';
|
||||||
|
}
|
||||||
|
$saver->save($u, $post);
|
||||||
$saver->saveTblEnries("UniqueItems.tbl.txt");
|
$saver->saveTblEnries("UniqueItems.tbl.txt");
|
||||||
}
|
}
|
||||||
if ($_POST['formtype'] == "setitems") {
|
if ($_POST['formtype'] == "setitems") {
|
||||||
@ -100,13 +108,13 @@ if (file_exists($filename)) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
$saver->save($s);
|
$saver->save($s, $post);
|
||||||
$saver->saveTblEnries("SetItems.tbl.txt");
|
$saver->saveTblEnries("SetItems.tbl.txt");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// load app
|
// load app
|
||||||
require_once './src/index.php';
|
require_once './src/index.php';
|
||||||
} else {
|
} else {
|
||||||
header('Location: ./src/D2Config.php');
|
header('Location: ./src/D2Config.php');
|
||||||
|
74
src/D2Database.php
Normal file
74
src/D2Database.php
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
GPLv2 (C) <2021> <HashCasper>
|
||||||
|
|
||||||
|
This file is part of D2IM.
|
||||||
|
|
||||||
|
D2IM is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
D2IM is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with D2IM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class D2Database {
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
PDO_Connect("sqlite:" . DB_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createTables($file, $data) {
|
||||||
|
$tableName = basename($file);
|
||||||
|
$tableName = strtolower(substr($tableName, 0, -4));
|
||||||
|
$sql = "CREATE TABLE IF NOT EXISTS `$tableName` (";
|
||||||
|
foreach ($data[0] as $k => $v) {
|
||||||
|
if (is_numeric($v)) {
|
||||||
|
$dataType = "INT";
|
||||||
|
} else {
|
||||||
|
$dataType = "VARCHAR(255)";
|
||||||
|
}
|
||||||
|
$sql .= "`$k` $dataType NOT NULL,";
|
||||||
|
}
|
||||||
|
$sql = rtrim($sql, ",");
|
||||||
|
$sql .= ")";
|
||||||
|
$res = PDO_Execute($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function fillsTables($file, $data) {
|
||||||
|
$tableName = basename($file);
|
||||||
|
$tableName = strtolower(substr($tableName, 0, -4));
|
||||||
|
|
||||||
|
foreach ($data as $d) {
|
||||||
|
$sql = "INSERT INTO `$tableName` (";
|
||||||
|
if (!empty($d)) {
|
||||||
|
foreach ($d as $k => $v) {
|
||||||
|
$sql .= "`$k`" . ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sql = rtrim($sql, ",");
|
||||||
|
$sql .= ") ";
|
||||||
|
|
||||||
|
$sql .= "VALUES (";
|
||||||
|
|
||||||
|
if (!empty($d)) {
|
||||||
|
foreach ($d as $k => $v) {
|
||||||
|
$sql .= '"' . $v . '"' . ",";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sql = rtrim($sql, ",");
|
||||||
|
$sql .= ");";
|
||||||
|
|
||||||
|
var_dump($sql);
|
||||||
|
PDO_Execute($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
function dd($var) {
|
function ddump($var) {
|
||||||
echo "<pre>";
|
echo "<pre>";
|
||||||
var_dump($var);
|
var_dump($var);
|
||||||
echo "</pre>";
|
echo "</pre>";
|
||||||
|
41
src/D2Gems.php
Normal file
41
src/D2Gems.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
GPLv2 (C) <2021> <HashCasper>
|
||||||
|
|
||||||
|
This file is part of D2IM.
|
||||||
|
|
||||||
|
D2IM is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
D2IM is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with D2IM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
<h2>Gem Maker</h2>
|
||||||
|
<div class="container">
|
||||||
|
<div class="form-group row">
|
||||||
|
<div class="col-2" style="background: #ccd;">
|
||||||
|
<select class="m-select custom-select" name="code[]" id="" required="required">
|
||||||
|
<option value="">Misc</option>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($misc as $a)
|
||||||
|
if ($a['spawnable']) {
|
||||||
|
echo '<option value="' . $a['code'] . '">' . $a['name'] . '</option>';
|
||||||
|
} else {
|
||||||
|
echo '<option disabled value="' . $a['code'] . '">' . $a['name'] . '</option>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -24,13 +24,10 @@ class D2SaveFile {
|
|||||||
public $path;
|
public $path;
|
||||||
|
|
||||||
public function save($file, $data) {
|
public function save($file, $data) {
|
||||||
|
|
||||||
$fp = fopen($this->path.DIRECTORY_SEPARATOR.$file, 'a+');
|
$fp = fopen($this->path.DIRECTORY_SEPARATOR.$file, 'a+');
|
||||||
|
$this->saveBackup($file);
|
||||||
$this->saveBackup($file);
|
fputcsv($fp, $data, "\t");
|
||||||
|
|
||||||
fputcsv($fp, $data, "\t");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,10 +26,10 @@ class D2TxtParser {
|
|||||||
|
|
||||||
public $path = TXT_PATH;
|
public $path = TXT_PATH;
|
||||||
|
|
||||||
// Files specific to Unique Items
|
public $db;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
|
$this->db = new D2Database();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function parseFile($file) {
|
public function parseFile($file) {
|
||||||
@ -46,10 +46,10 @@ class D2TxtParser {
|
|||||||
$allProps[] = $d['code'];
|
$allProps[] = $d['code'];
|
||||||
}
|
}
|
||||||
$filteredProps = array_diff($allProps, $propsToFilter);
|
$filteredProps = array_diff($allProps, $propsToFilter);
|
||||||
return $filteredProps;
|
return $filteredProps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function parseData($file) {
|
public function parseData($file) {
|
||||||
$file = $this->path . $file;
|
$file = $this->path . $file;
|
||||||
$rows = array_map(function ($v) {
|
$rows = array_map(function ($v) {
|
||||||
return str_getcsv($v, "\t");
|
return str_getcsv($v, "\t");
|
||||||
@ -58,9 +58,12 @@ class D2TxtParser {
|
|||||||
$header = array_shift($rows);
|
$header = array_shift($rows);
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
$data[] = @array_combine($header, $row);
|
$data[] = @array_combine($header, $row);
|
||||||
}
|
}
|
||||||
|
$this->db->createTables($file, $data);
|
||||||
|
$this->db->fillsTables($file, $data);
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
@ -203,8 +203,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<?php
|
<?php
|
||||||
$html = '';
|
$html = '';
|
||||||
|
|
||||||
foreach (range(01, 12) as $p) {
|
foreach (range(01, 12) as $p) {
|
||||||
?>
|
?>
|
||||||
<div class="col-2" style="padding: 15px;margin: 10px 0px; background: #ddd;">
|
<div class="col-2" style="padding: 15px;margin: 10px 0px; background: #ddd;">
|
||||||
|
@ -38,6 +38,9 @@
|
|||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
<a class="nav-link" id="Set-tab" data-toggle="tab" href="#Set" role="tab" aria-controls="Set" aria-selected="false">SetItems.txt</a>
|
<a class="nav-link" id="Set-tab" data-toggle="tab" href="#Set" role="tab" aria-controls="Set" aria-selected="false">SetItems.txt</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item" role="presentation">
|
||||||
|
<a class="nav-link" id="Gem-tab" data-toggle="tab" href="#Gem" role="tab" aria-controls="Set" aria-selected="false">Gems.txt</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-content" id="TabContent">
|
<div class="tab-content" id="TabContent">
|
||||||
@ -47,4 +50,7 @@
|
|||||||
<div class="tab-pane fade" id="Set" role="tabpanel" aria-labelledby="Set-tab">
|
<div class="tab-pane fade" id="Set" role="tabpanel" aria-labelledby="Set-tab">
|
||||||
<?php require_once 'D2SM.php'; ?>
|
<?php require_once 'D2SM.php'; ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-pane fade" id="Gem" role="tabpanel" aria-labelledby="Gem-tab">
|
||||||
|
<?php require_once 'D2Gems.php'; ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
@ -421,3 +421,10 @@ Set24.4 Set24 9ts Harpoon 7 30 51 5 5000 2 dmg% 190 240 stack 75 75 rep
|
|||||||
Set25.1 Set25 rin Ring 1 45 45 5 5000 2 hp 35 50 mana 25 25 mag% 200 200 regen -20 -20 regen -15 -15 extra-fire 100 100 0
|
Set25.1 Set25 rin Ring 1 45 45 5 5000 2 hp 35 50 mana 25 25 mag% 200 200 regen -20 -20 regen -15 -15 extra-fire 100 100 0
|
||||||
Set25.2 Set25 rin Ring 1 45 45 5 5000 2 hp 35 50 mana 25 25 mag% 200 200 regen -20 -20 regen -15 -15 extra-ltng 100 100 0
|
Set25.2 Set25 rin Ring 1 45 45 5 5000 2 hp 35 50 mana 25 25 mag% 200 200 regen -20 -20 regen -15 -15 extra-ltng 100 100 0
|
||||||
Set25.3 Set25 amu Amulet 1 45 45 5 5000 2 hp 50 75 mana 40 40 mag% 200 200 regen -20 -20 regen -15 -15 extra-cold 100 100 0
|
Set25.3 Set25 amu Amulet 1 45 45 5 5000 2 hp 50 75 mana 40 40 mag% 200 200 regen -20 -20 regen -15 -15 extra-cold 100 100 0
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
"Set 1item" "set 1" ghm "Great Helm" 1 2 3 inv flippy 12 213 2 0 on setitems
|
||||||
|
17019
vendor/rb-sqlite.php
vendored
Normal file
17019
vendor/rb-sqlite.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user