Fixed install process - for PHP 8.1
Fixed install process - for PHP 8.1

--- a/admin/settings.php
+++ b/admin/settings.php
@@ -105,7 +105,7 @@
 		$submissionsoff = $_POST['newsubmissionsoff'] == 1 ? 1 : 0;
 		$autovalidate = $_POST['newautovalidate'] == 1 ? 1 : 0;
 		$coauthallowed = $_POST['newcoauthallowed'] == 1 ? 1 : 0;
-		$store = !empty($_POST['newstore']) ? $_POST['newstore'] == "files" ? "files" : "mysql" : $store;
+		$store = !empty($_POST['newstore']) ? ($_POST['newstore'] == "files" ? "files" : "mysql" ) : $store;
 		$storiespath = descript($_POST['newstoriespath']);
 		$minwords = isNumber($_POST['newminwords']) ? $_POST['newminwords'] : 0;
 		$maxwords = isNumber($_POST['newmaxwords']) ? $_POST['newmaxwords'] : 0;

--- a/install/install.php
+++ b/install/install.php
@@ -64,17 +64,35 @@
 
 include ("../includes/class.TemplatePower.inc.php");
 
+/* PHP 8 fix - other way is separated LANs to smaller files */
+$allowed_tags = '';
+$recentdays = 7;
+$sitename = "";
+$url = "" ;
+$multiplecats = '';
+$minwords = '';
+$maxwords = '';
+$action = '';
+$pwdsetting = '';
+$imagewidth = '';
+$imageheight = '';
+$version = '';
+$user = array();
+$user['penname'] = '';
+$user['email'] = '';
+$penname = '';
+
 if(!isset($_GET['step']) || $_GET['step'] == 2) {
-	//include ("../languages/en.php");
-	//include ("../languages/en_admin.php");
+	include ("../languages/en.php");
+	include ("../languages/en_admin.php");
 	include ("languages/en.php");
 }
 else if(isset($_REQUEST['language'])) {
 	$language = $_REQUEST['language'];
-	//if(file_exists("../languages/".$language.".php")) include ("../languages/".$language.".php");
-	//else include ("../languages/en.php");
-	//if(file_exists("../languages/".$language."_admin.php")) include("../languages/".$language."_admin.php");
-	//else include ("../languages/en_admin.php");
+	if(file_exists("../languages/".$language.".php")) include ("../languages/".$language.".php");
+	else include ("../languages/en.php");
+	if(file_exists("../languages/".$language."_admin.php")) include("../languages/".$language."_admin.php");
+	else include ("../languages/en_admin.php");
 	if(file_exists("languages/".$language.".php")) include("languages/".$language.".php");
 	else include ("languages/en.php");
 }
@@ -83,6 +101,7 @@
 $dbconnect = dbconnect($dbhost, $dbuser, $dbpass, $dbname );
 $settings = dbquery("SELECT tableprefix, language FROM ".$settingsprefix."fanfiction_settings WHERE sitekey = '".$sitekey."'");
 list($tableprefix, $language) = dbrow($settings);
+
 define("TABLEPREFIX", $tableprefix);
 define("SITEKEY", $sitekey);
 if(file_exists("../languages/".$language.".php")) include ("../languages/".$language.".php");
@@ -169,8 +188,10 @@
 		}
 		else {
 			$output .= "<div id='pagetitle'>"._ADMINACCT."</div><form method=\"POST\" class='tblborder' style='margin: 1em auto; width: 400px;' enctype=\"multipart/form-data\" action=\"install.php?step=9\">
-			<div class='row'><label for='newpenname'>"._PENNAME.":</label> <INPUT name=\"newpenname\" type=\"text\" class=\"textbox\" maxlength=\"200\" value=\"$user[penname]\"></div>
-		 	<div class='row'><label for='email'>"._EMAIL.":</label> <INPUT  type=\"text\" class=\"textbox=\" name=\"email\" value=\"$user[email]\" maxlength=\"200\"></div>
+			<div class='row'><label for='newpenname'>"._PENNAME.":</label> 
+			<input name=\"newpenname\" type=\"text\" class=\"textbox\" maxlength=\"200\" value=\"".$user['penname']."\"></div>
+		 	<div class='row'><label for='email'>"._EMAIL.":</label> <INPUT  type=\"text\" class=\"textbox=\" name=\"email\" value=\"".$user['email'].
+			"\" maxlength=\"200\"></div>
 			<div class='row'><label for='password'>"._PASSWORD.":</label>  <INPUT name=\"password\" class=\"textbox\" value=\"\" type=\"password\"></div> 
 			<div class='row'><label for='password2'>"._PASSWORD2.":</label> <INPUT name=\"password2\" class=\"textbox=\" value=\"\" type=\"password\"></div>
 			<div style='text-align: center;'><INPUT type=\"submit\"class=\"button\" name=\"submit\" value=\"submit\"></div></form>";	
@@ -776,6 +797,9 @@
 			$dbconnect = dbconnect($dbhost, $dbuser, $dbpass, $dbname );
 			$settings = dbquery("SELECT tableprefix, language FROM ".$settingsprefix."fanfiction_settings WHERE sitekey = '".$sitekey."'");
 			list($tableprefix, $language) = dbrow($settings);
+			
+			if ($tableprefix == '') $tableprefix = $settingsprefix;
+
 			define("TABLEPREFIX", $tableprefix);
 			define("SITEKEY", $sitekey);
 			
@@ -786,7 +810,6 @@
 				$settingsresults = dbquery("SELECT * FROM ".$settingsprefix."fanfiction_settings WHERE sitekey = '".SITEKEY."'");
 			}
 			$settings = dbassoc($settingsresults);
-			define("_BASEDIR", "../");
 			foreach($settings as $var => $val) {
 				$$var = $val;
 			}

--- a/install/languages/de.php
+++ b/install/languages/de.php
@@ -190,4 +190,7 @@


 

-?>
+//  Missing LANs - fatal error  

+define("_EMAILREQUIRED", "Email is required");

+define("_BADSITEKEY", "Wrong Sitekey");

+

--- a/install/languages/en.php
+++ b/install/languages/en.php
@@ -197,14 +197,7 @@
 define("_HELP_INSTALL_SITEKEY", "The sitekey will be used to access the settings for your site.  It is also used to prevent crossed member logins when two or more sites are installed on the same domain.  You <strong>must</strong> have a <strong>unique</strong> sitekey for each eFiction site!  If you leave this blank, the script will randomly generate another one for you.");
 define("_HELP_SETTINGSPREFIX", "This allows you to define a separate prefix for the settings table.  This allows you to share the settings table among more than one eFiction site in the same database.");
 
-/* LANs from en_admin.php needed in install.php - include all file is not good idea in PHP 8 */
-define("_SITEKEY", "Site Key");
-define("_LANGUAGE", "Language");
-define("_HELP_LANGUAGE", "The language the site will be displayed in.  The language files are found in the languages/ folder.  You may create your own translations through these files.");
-
-/* LANs from en.php needed in STEP 1 */
-define("_CONTINUE", "Continue");
-
-/* Missing LANs - fatal error */
+//  Missing LANs - fatal error  
 define("_EMAILREQUIRED", "Email is required");
-
+define("_BADSITEKEY", "Wrong Sitekey");
+