mirror of
				https://gitlab.com/hashborgir/d2tools.git
				synced 2025-11-04 01:37:46 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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\"");
 | 
						|
}
 | 
						|
 | 
						|
// 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');
 | 
						|
	// 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>
 |