From 8dd0d1496c53d3befb4b1c85806a811595d398e3 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Thu, 11 Sep 2008 18:43:21 +0000
Subject: [PATCH] Deleting of entries added

---
 inc/databases.php               |  2 +-
 inc/functions.php               | 55 ++++++++++++++++++++++++---------
 inc/language/de.php             |  2 ++
 inc/modules/admin/admin-inc.php | 49 +++++++++++++----------------
 4 files changed, 65 insertions(+), 43 deletions(-)

diff --git a/inc/databases.php b/inc/databases.php
index 60045547c1..70bf8d8334 100644
--- a/inc/databases.php
+++ b/inc/databases.php
@@ -114,7 +114,7 @@ define('USAGE_BASE', "usage");
 define('SERVER_URL', "http://www.mxchange.org");
 
 // This current patch level
-define('CURR_SVN_REVISION', "298");
+define('CURR_SVN_REVISION', "299");
 
 // Take a prime number which is long (if you know a longer one please try it out!)
 define('_PRIME', 591623);
diff --git a/inc/functions.php b/inc/functions.php
index bfe60aa6e7..db1e00d4ec 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -2031,15 +2031,14 @@ function scrambleString($str) {
 
 		// Add it to final output string
 		$scrambled .= $char;
-	}
+	} // END - for
 
 	// Return scrambled string
 	//* DEBUG: */ echo "***Scrambled=".$scrambled."***<br />";
 	return $scrambled;
 }
 //
-function descrambleString($str)
-{
+function descrambleString($str) {
 	global $_CONFIG;
 	// Scramble only 40 chars long strings
 	if (strlen($str) != 40) return $str;
@@ -2053,11 +2052,10 @@ function descrambleString($str)
 	// Begin descrambling
 	$orig = str_repeat(" ", 40);
 	//* DEBUG: */ echo "+++Scrambled=".$str."+++<br />";
-	for ($idx = 0; $idx < 40; $idx++)
-	{
+	for ($idx = 0; $idx < 40; $idx++) {
 		$char = substr($str, $idx, 1);
 		$orig = substr_replace($orig, $char, $scrambleNums[$idx], 1);
-	}
+	} // END - for
 
 	// Return scrambled string
 	//* DEBUG: */ echo "+++Original=".$orig."+++<br />";
@@ -2077,11 +2075,11 @@ function genScrambleString($len) {
 		// Check for it by creating more numbers
 		while (array_key_exists($rand, $scrambleNumbers)) {
 			$rand = mt_rand(0, ($len -1));
-		}
+		} // END - while
 
 		// Add number
 		$scrambleNumbers[$rand] = $rand;
-	}
+	} // END - for
 
 	// So let's create the string for storing it in database
 	$scrambleString = implode(":", $scrambleNumbers);
@@ -2089,8 +2087,7 @@ function genScrambleString($len) {
 }
 // Append data like session ID referral ID to the given URL which would
 // normally be stored in cookies
-function ADD_URL_DATA($URL)
-{
+function ADD_URL_DATA($URL) {
 	global $_CONFIG;
 	$ADD = "";
 
@@ -2119,7 +2116,7 @@ function ADD_URL_DATA($URL)
 			// Add current session
 			$ADD .= $BIND."PHPSESSID=".session_id();
 		}
-	}
+	} // END - if
 
 	// Add all together and return it
 	return $URL.$ADD;
@@ -2175,8 +2172,8 @@ function FIX_DELETED_COOKIES ($cookies) {
 			if (get_session($cookieName) == "deleted") {
 				set_session($cookieName, "");
 			}
-		}
-	}
+		} // END - foreach
+	} // END - if
 }
 
 // Output error messages in a fasioned way and die...
@@ -2431,6 +2428,36 @@ function FILE_READABLE($fqfn) {
 	// Check all...
 	return ((file_exists($fqfn)) && (is_file($fqfn)) && (is_readable($fqfn)));
 }
+// Converts timestamp selections into a timestamp
+function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) {
+	// Init test variable
+	$TEST2 = "";
+
+	// Get last three chars
+	$TEST = substr($id, -3);
+
+	// Improved way of checking! :-)
+	if (in_array($TEST, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) {
+		// Found a multi-selection for timings?
+		$TEST = substr($id, 0, -3);
+		if ((isset($POST[$TEST."_ye"])) && (isset($POST[$TEST."_mo"])) && (isset($POST[$TEST."_we"])) && (isset($POST[$TEST."_da"])) && (isset($POST[$TEST."_ho"])) && (isset($POST[$TEST."_mi"])) && (isset($POST[$TEST."_se"])) && ($TEST != $TEST2)) {
+			// Generate timestamp
+			$POST[$TEST] = CREATE_TIMESTAMP_FROM_SELECTIONS($TEST, $POST);
+			$DATA[] = "$TEST='".$POST[$TEST]."'";
+
+			// Remove data from array
+			foreach (array("ye", "mo", "we", "da", "ho", "mi", "se") as $rem) {
+				unset($POST[$TEST."_".$rem]);
+			} // END - foreach
+
+			// Skip adding
+			unset($id); $skip = true; $TEST2 = $TEST;
+		} // END - if
+	} else {
+		// Process this entry
+		$skip = false; $TEST2 = "";
+	}
+}
 //
 //////////////////////////////////////////////////
 //                                              //
@@ -2445,7 +2472,7 @@ if (!function_exists('html_entity_decode')) {
 		$trans_tbl = array_flip($trans_tbl);
 		return strtr($string, $trans_tbl);
 	}
-}
+} // END - if
 
 //
 ?>
diff --git a/inc/language/de.php b/inc/language/de.php
index d9c90f426f..1b3737116e 100644
--- a/inc/language/de.php
+++ b/inc/language/de.php
@@ -1149,6 +1149,8 @@ define('ADMIN_CONTINUE_LOGIN', "Weiter zum Administratorlogin");
 define('ADMIN_RESET_PASS_LINK', "Jetzt Ihr Administratorkennwort zur&uuml;cksetzen (n&ouml;tiger Schritt!)");
 define('ADMIN_SUPPORT_FORUM_LINK', "Direktlink zum Support-Forum (neues Fenster)");
 define('ADMIN_REFERAL_LEVEL_ZERO_NOTICE', "Die Referal-Ebene 0 ist das Mitglied selber und sollte daher auf 100% stehen. Sie sollte auch nicht ge&auml;ndert oder gel&ouml;scht werden! Dann erhalten Ihre Mitglieder keine {!POINTS!} gutgeschrieben.");
+define('ADMIN_ALL_ENTRIES_REMOVED', "Alle ausgew&auml;hlten Eintr&auml;ge sind gel&ouml;scht.");
+define('ADMIN_SOME_ENTRIES_NOT_DELETED', "Es wurden <u>%s</u> von <u>%s</u> ausgew&auml;hlten Eintr&auml;ge gel&ouml;scht.");
 
 //
 ?>
diff --git a/inc/modules/admin/admin-inc.php b/inc/modules/admin/admin-inc.php
index 377cdfab91..1a8c01ad99 100644
--- a/inc/modules/admin/admin-inc.php
+++ b/inc/modules/admin/admin-inc.php
@@ -548,43 +548,20 @@ function ADMIN_MENU_SELECTION($MODE, $default="", $defid="") {
 	// Return output
 	return $OUT;
 }
-//
-function ADMIN_SAVE_SETTINGS (&$POST, $tableName="_config", $whereStatement="config=0", $translateComma = array(), $alwaysAdd=false) {
+// Save settings to the database
+function ADMIN_SAVE_SETTINGS (&$POST, $tableName="_config", $whereStatement="config=0", $translateComma=array(), $alwaysAdd=false) {
 	global $_CONFIG, $cacheArray, $cacheInstance;
 
 	// Prepare all arrays, variables
 	$DATA = array();
 	$skip = false;
-	$TEST2 = "";
 
 	// Now, walk through all entries and prepare them for saving
 	foreach ($POST as $id => $val) {
 		// Process only formular field but not submit buttons ;)
 		if ($id != "ok") {
 			// Do not save the ok value
-			$TEST = substr($id, -3);
-
-			// Improved way of checking! :-)
-			if (in_array($TEST, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) {
-				// Found a multi-selection for timings?
-				$TEST = substr($id, 0, -3);
-				if ((isset($POST[$TEST."_ye"])) && (isset($POST[$TEST."_mo"])) && (isset($POST[$TEST."_we"])) && (isset($POST[$TEST."_da"])) && (isset($POST[$TEST."_ho"])) && (isset($POST[$TEST."_mi"])) && (isset($POST[$TEST."_se"])) && ($TEST != $TEST2)) {
-					// Generate timestamp
-					$POST[$TEST] = CREATE_TIMESTAMP_FROM_SELECTIONS($TEST, $POST);
-					$DATA[] = "$TEST='".$POST[$TEST]."'";
-
-					// Remove data from array
-					foreach (array("ye", "mo", "we", "da", "ho", "mi", "se") as $rem) {
-						unset($POST[$TEST."_".$rem]);
-					} // END - foreach
-
-					// Skip adding
-					unset($id); $skip = true; $TEST2 = $TEST;
-				}
-			} else {
-				// Process this entry
-				$skip = false; $TEST2 = "";
-			}
+			CONVERT_SELECTIONS_TO_TIMESTAMP($POST, $DATA, $id, $skip);
 
 			// Shall we process this ID? It muss not be empty, of course
 			if ((!$skip) && (!empty($id))) {
@@ -595,7 +572,7 @@ function ADMIN_SAVE_SETTINGS (&$POST, $tableName="_config", $whereStatement="con
 				if ((is_array($translateComma)) && (in_array($id, $translateComma))) {
 					// Then do it here... :)
 					$val = str_replace(",", ".", $val);
-				}
+				} // END - if
 
 				// Shall we add numbers or strings?
 				$test = (float)$val;
@@ -837,7 +814,23 @@ function ADMIN_DELETE_ENTRIES_CONFIRM ($IDs, $table, $columns=array(), $filterFu
 		// Shall we delete here or list for deletion?
 		if ($deleteNow) {
 			// Delete them
-			die("DELETE!");
+			$SQL = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_%s WHERE %s IN (%s)";
+			$idList = "";
+			foreach ($IDs as $id => $sel) {
+				$idList .= $id.",";
+			} // END - if
+
+			// Run the query
+			SQL_QUERY($SQL, array($table, $idColumn, substr($idList, 0, -1)), __FILE__, __LINE__);
+
+			// Was this fine?
+			if (SQL_AFFECTEDROWS() == count($IDs)) {
+				// All deleted
+				LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_ALL_ENTRIES_REMOVED);
+			} else {
+				// Some are still there :(
+				LOAD_TEMPLATE("admin_settings_saved", false, sprintf(ADMIN_SOME_ENTRIES_NOT_DELETED, SQL_AFFECTEDROWS(), count($IDs)));
+			}
 		} else {
 			// List for deletion confirmation
 			ADMIN_BUILD_LIST("del", $IDs, $table, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn);
-- 
2.39.5