From 8dd0d1496c53d3befb4b1c85806a811595d398e3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= 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."***
"; 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."+++
"; - 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."+++
"; @@ -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ücksetzen (nö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ändert oder gelöscht werden! Dann erhalten Ihre Mitglieder keine {!POINTS!} gutgeschrieben."); +define('ADMIN_ALL_ENTRIES_REMOVED', "Alle ausgewählten Einträge sind gelöscht."); +define('ADMIN_SOME_ENTRIES_NOT_DELETED', "Es wurden %s von %s ausgewählten Einträge gelö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.30.2