mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2024-11-30 12:36:03 +00:00
139 lines
4.0 KiB
PHP
Executable File
139 lines
4.0 KiB
PHP
Executable File
<?php
|
|
/*
|
|
|
|
Copyright (C) 2021 Hash Borgir
|
|
|
|
This file is part of D2Modder
|
|
|
|
Redistribution and use in source and binary forms, with
|
|
or without modification, are permitted provided that the
|
|
following conditions are met:
|
|
|
|
* Redistributions of source code must retain the above
|
|
copyright notice, this list of conditions and the
|
|
following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above
|
|
copyright notice, this list of conditions and the
|
|
following disclaimer in the documentation and/or other
|
|
materials provided with the distribution.
|
|
|
|
* This software must not be used for commercial purposes
|
|
* without my consent. Any sales or commercial use are prohibited
|
|
* without my express knowledge and consent.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY!
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
|
|
|
// Second step after D2Config. If we made it here, D2Modder.db should
|
|
// have been created. Config writes active mod to session.
|
|
|
|
session_start();
|
|
include "./_pdo.php";
|
|
include "./config.php";
|
|
|
|
function processCubeMain() {
|
|
|
|
$bin = getcwd() . DIRECTORY_SEPARATOR . "bin" . DIRECTORY_SEPARATOR . "sqlite3.exe ";
|
|
$dbfile = getcwd() . DIRECTORY_SEPARATOR . DB_FILE;
|
|
$cubemain = TXT_PATH . "cubemain.txt";
|
|
|
|
exec("$bin $dbfile \".separator \\\"\\t\\\"\" \".import \\\"$cubemain\\\" cubemain\"");
|
|
}
|
|
|
|
function processCubeMainLinux() {
|
|
|
|
$bin = "/usr/bin/sqlite3";
|
|
$dbfile = getcwd() . DIRECTORY_SEPARATOR . DB_FILE;
|
|
$cubemain = TXT_PATH . "CubeMain.txt";
|
|
|
|
exec("$bin $dbfile \".separator \\\"\\t\\\"\" \".import \\\"$cubemain\\\" cubemain\"");
|
|
}
|
|
|
|
// check to see if config db exists or if for some reason it doesn't exist
|
|
if (file_exists(APP_DB)) {
|
|
if (file_exists($_SESSION['modname'] . ".db")) {
|
|
unlink($_SESSION['modname'] . ".db"); // delete old mod db file
|
|
}
|
|
// Set CONSTANTS (if D2Modder.db exists, D2Config set the session mod correctly)
|
|
define('FILTER_PROPERTIES_FILE', 'filterProperties.txt');
|
|
define('DB_FILE', $_SESSION['modname'] . ".db");
|
|
define('TXT_PATH', $_SESSION['path']);
|
|
|
|
// require src
|
|
require_once "./src/D2Functions.php";
|
|
require_once "./src/D2Database.php";
|
|
require_once './src/D2Files.php';
|
|
require_once './src/D2TxtParser.php';
|
|
require_once './src/D2Tbl.php';
|
|
|
|
// Create objects
|
|
$files = new D2Files();
|
|
$parser = new D2TxtParser();
|
|
$db = new D2Database();
|
|
|
|
// Parse all files
|
|
foreach ($files->files as $k => $v) {
|
|
$data[$v] = $parser->parseFile($v);
|
|
}
|
|
|
|
|
|
// Write all parse data to mod db
|
|
foreach ($data as $k => $v) {
|
|
$db->createTables($k, $v);
|
|
$db->fillsTables($k, $v);
|
|
}
|
|
|
|
processCubeMain('cubemain.txt');
|
|
processCubeMainLinux('cubemain.txt');
|
|
// put in html redirect as backup, because
|
|
// for some odd reason windows gives
|
|
// an error on header() but linux does not.
|
|
|
|
|
|
/*
|
|
Process tbl files
|
|
*
|
|
*
|
|
*/
|
|
|
|
$tbl = $_SESSION['tbl'];
|
|
|
|
$string = D2Tbl::getStrings($tbl."string.tbl");
|
|
$stringExpansion = D2Tbl::getStrings($tbl."expansionstring.tbl");
|
|
$stringPatch = D2Tbl::getStrings($tbl."patchstring.tbl");
|
|
|
|
$strings = array_merge($stringPatch, $stringExpansion, $string);
|
|
|
|
$db->writeTbl($strings);
|
|
|
|
|
|
} else {
|
|
// if config db does not exist, go to configure page
|
|
header("Location: /src/D2Config.php");
|
|
}
|
|
?>
|
|
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta http-equiv="refresh" content="0; URL=/" />
|
|
</head>
|
|
<body>
|
|
</body>
|
|
</html>
|