query($query); } catch(mysqli_sql_exception $e) { if($exceptioncallback !== null) $exceptioncallback($e); return; } if($result === false) { echo("SQL ERROR: " . mysqli_error($conn)); } else if($result === true) { if($callback !== null) $callback(null, 0); } else if($callback !== null && $result->num_rows > 0) { $id = 0; while($row = $result->fetch_assoc()) $callback($row, $id++); } } // ----------------------------------------------------- // SQL INITIALIZATION // ----------------------------------------------------- try { $conn = new mysqli("localhost", $dbuser, $dbpass, $dbname); } catch(mysqli_sql_exception $e) { if(isset($_GET["geterrormsg"])) die("Connection failed: " . $e); else die("SQL error. Try again later."); } if($conn->connect_error) { if(isset($_GET["geterrormsg"])) die("Connection failed: " . $conn->connect_error); else die("SQL error. Try again later."); } // ----------------------------------------------------- // INITIAL SETUP - CREATE NECESSARY TABLES // ----------------------------------------------------- $tables = []; query("SHOW TABLES;", function($row) { global $tables; $tables[] = $row[array_key_first($row)]; }); if(!in_array("for_moderation", $tables)) { query("CREATE TABLE `for_moderation` ( `id` int NOT NULL AUTO_INCREMENT, `text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"); } if(!in_array("for_stallman", $tables)) { query("CREATE TABLE `for_stallman` ( `id` int NOT NULL AUTO_INCREMENT, `text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `selected` boolean NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"); } if(isset($_GET["cmd"])) { $cmd = $_GET['cmd']; switch($cmd) { case "newmodmessages": $arr = json_decode(file_get_contents("php://input")); foreach ($arr as $value) { query("INSERT INTO `for_moderation`(`text`) VALUES (\"" . $conn->real_escape_string($value) . "\");"); } break; case "newstallmanmessages": $arr = json_decode(file_get_contents("php://input")); foreach ($arr as $value) { query("INSERT INTO `for_stallman`(`text`, `selected`) VALUES (\"" . $conn->real_escape_string($value) . "\", false);"); } break; case "getselectedmessage": query("SELECT `text` FROM `for_stallman` WHERE `selected` = true LIMIT 1;", function($row) { echo $row["text"]; }); break; case "selectmessage": query("UPDATE `for_stallman` SET `selected` = false"); query("UPDATE `for_stallman` SET `selected` = true WHERE `id` = " . file_get_contents("php://input") . ";"); break; case "unselectmessage": query("UPDATE `for_stallman` SET `selected` = false"); break; case "getmodmessages": $arr = []; query("SELECT `id`, `text` FROM `for_moderation`;", function($row) { global $arr; $arr[$row["id"]] = $row["text"]; }); echo(json_encode($arr)); break; case "getstallmanmessages": $arr = []; query("SELECT `id`, `text` FROM `for_stallman`;", function($row) { global $arr; $arr[$row["id"]] = $row["text"]; }); echo(json_encode($arr)); break; case "deletemodmessages": $arr = json_decode(file_get_contents("php://input")); foreach ($arr as $value) { query("DELETE FROM `for_moderation` WHERE `id` = " . $conn->real_escape_string($value) . ";"); } break; case "deletestallmanmessages": $arr = json_decode(file_get_contents("php://input")); foreach ($arr as $value) { query("DELETE FROM `for_stallman` WHERE `id` = " . $conn->real_escape_string($value) . ";"); } break; default: die("Loading React..."); } } ?>