From fdb1b7ed8f3028994e8526b4777f75b1f3e71782 Mon Sep 17 00:00:00 2001
From: PC-Admin <perthchat@protonmail.com>
Date: Mon, 15 May 2023 22:17:53 +0800
Subject: [PATCH] allow shutting down all the rooms in a single list as well as
 many list files in a specific directory

---
 modtool.py | 48 ++++++++++++++++++++++++++++++------------------
 1 file changed, 30 insertions(+), 18 deletions(-)

diff --git a/modtool.py b/modtool.py
index 713f505..afa6fa3 100755
--- a/modtool.py
+++ b/modtool.py
@@ -520,29 +520,41 @@ def shutdown_room(preset_internal_ID,preset_user_ID,preset_new_room_name,preset_
 
 def shutdown_multiple_rooms():
 	print("Shutdown multiple rooms selected")
-	purge_list_location = input("\nPlease enter the path of the file containing a newline seperated list of room ids: ")
-	with open(purge_list_location, newline='') as f:
-    		reader = csv.reader(f)
-    		data = list(reader)
+	purge_list_location = input("\nPlease enter the path of the file or directory containing a newline seperated list of room ids: ")
+	file_list = []
+	# check if the input path is a directory or a file
+	if os.path.isdir(purge_list_location):
+		# iterate over all files in the directory
+		for filename in os.listdir(purge_list_location):
+			# construct full file path
+			file_path = os.path.join(purge_list_location, filename)
+			# add it to the list
+			file_list.append(file_path)
+	else:
+		# it's a single file
+		file_list.append(purge_list_location)
 	preset_user_ID = input("\nPlease enter the local username that will create a 'muted violation room' for your users (Example: michael): ")
 	preset_new_room_name = input("\nPlease enter the room name of the muted violation room your users will be sent to: ")
 	preset_message = input("\nPlease enter the shutdown message that will be displayed to users: ")
 	preset_purge_choice = input("\n Do you want to purge these rooms? (This deletes all the room history from your database.) y/n? ")
 	preset_block_choice = input("\n Do you want to block these rooms? (This prevents your server users re-entering the room.) y/n? ")
-	shutdown_confirmation = input("\n" + str(data) + "\n\nAre you sure you want to shutdown these rooms? y/n? ")
-	#print(len(data[0]))
-	#print(data[0][0])
-	if shutdown_confirmation == "y" or shutdown_confirmation == "Y" or shutdown_confirmation == "yes" or shutdown_confirmation == "Yes":
-		x = 0
-		while x <= (len(data) - 1):
-			#print(data[x][0])
-			shutdown_room(data[x][0],preset_user_ID,preset_new_room_name,preset_message,preset_purge_choice,preset_block_choice)
-			x += 1
-			#print(x)
-			time.sleep(10)
-
-	if shutdown_confirmation == "n" or shutdown_confirmation == "N" or  shutdown_confirmation == "no" or  shutdown_confirmation == "No":
-		print("\nExiting...\n")
+	# Get the directory of the current script
+	script_dir = os.path.dirname(os.path.realpath(__file__))	
+	for file in file_list:
+		# Change the current working directory
+		os.chdir(script_dir)
+		with open(file, newline='') as f:
+			reader = csv.reader(f)
+			data = list(reader)
+		shutdown_confirmation = input("\n" + str(data) + "\n\nAre you sure you want to shutdown these rooms? y/n? ")
+		if shutdown_confirmation.lower() in ["y", "yes"]:
+			for room_id in data:
+				shutdown_room(room_id[0], preset_user_ID, preset_new_room_name, preset_message, preset_purge_choice, preset_block_choice)
+				time.sleep(10)
+		elif shutdown_confirmation.lower() in ["n", "no"]:
+			print("\nSkipping this file...\n")
+		else:
+			print("\nInvalid input, skipping this file...\n")
 
 # Example:
 # See shutdown_room()