Listenänderungen werden nun "intelligent" angewendet

This commit is contained in:
Humorhenker 2020-03-12 16:43:53 +01:00
parent 3e809fb32d
commit e04470b95f
1 changed files with 37 additions and 15 deletions

View File

@ -58,24 +58,46 @@ if ($_SESSION['log'] == 1) {
$result->execute(array(':alias_id' => $_POST['editlistid'])); $result->execute(array(':alias_id' => $_POST['editlistid']));
$newlistsource = $result->fetch(); //bei fetch() werden im Array ['spaltenname'] und [#Nummer der Spalte] angelegt also ['source_username'] und [0] praktische Sache $newlistsource = $result->fetch(); //bei fetch() werden im Array ['spaltenname'] und [#Nummer der Spalte] angelegt also ['source_username'] und [0] praktische Sache
} }
$eintrag = "DELETE FROM `aliases` WHERE `alias_id` LIKE :aliasid";
$sth = $dbh->prepare($eintrag); $abfrage = "SELECT `id`, `destination_username`, `destination_domain` FROM `aliases` WHERE `alias_id` LIKE :alias_id";
$sth->execute(array(':aliasid' => $_POST['editlistid'])); $result = $dbh->prepare($abfrage);
if (!$_SESSION['admin']) { $result->execute(array(':alias_id' => $_POST['editlistid']));
$abfrage = "SELECT `source_username`, `source_domain` FROM `aliases` WHERE `alias_id` LIKE :alias_id"; $oldlistdestinations = array(array(),array(),array(),array());
$result = $dbh->prepare($abfrage); while ($row = $result->fetch()) {
$result->execute(array(':alias_id' => $_POST['editlistid'])); $oldlistdestinations[0][] = $row['id'];
$newlistsource = $result->fetch(); //bei fetch() werden im Array ['spaltenname'] und [#Nummer der Spalte] angelegt also ['source_usernam'] und [0] praktische Sache $oldlistdestinations[1][] = $row['destination_username'];
$oldlistdestinations[2][] = $row['destination_domain'];
$oldlistdestinations[3][] = $row['destination_username'] . '@' . $row['destination_domain'];
} }
else $newlistsource = explode('@', $_POST['newlistsource']); $newlistdestinations = array(array(),array(),array());
foreach (explode(' ', $_POST['newlistdestinations']) as $maillistdestination) { foreach (explode(' ', $_POST['newlistdestinations']) as $newlistdestination) {
if ($maillistdestination != Null) { $newlistdestinationex = explode('@', $newlistdestination);
$maillistdestinationex = explode('@', $maillistdestination); array_push($newlistdestinations[0], $newlistdestinationex[0]);
$eintrag = "INSERT INTO `aliases` (`alias_id`, `source_username`, `source_domain`, `destination_username`, `destination_domain`) VALUES (:aliasid, :source_username, :source_domain, :destination_username, :destination_domain)"; // Aliasdaten in MailServer DB eintragen array_push($newlistdestinations[1], $newlistdestinationex[1]);
$sth = $dbh->prepare($eintrag); array_push($newlistdestinations[2], $newlistdestinationex[0] . '@' . $newlistdestinationex[1]);
$sth->execute(array(':aliasid' => $_POST['editlistid'], ':source_username' => $newlistsource[0], ':source_domain' => $newlistsource[1], ':destination_username' => $maillistdestinationex[0], ':destination_domain' => $maillistdestinationex[1])); }
$dellistdestinations = array();
foreach ($oldlistdestinations[3] as $key => $oldlistdestination) {
if (!in_array($oldlistdestination, $newlistdestinations[2])) {
array_push($dellistdestinations, $oldlistdestinations[0][$key]);
} }
} }
$addlistdestinations = array();
foreach ($newlistdestinations[2] as $key => $newlistdestination) {
if (!in_array($newlistdestination, $oldlistdestinations[3])) {
array_push($addlistdestinations, [$newlistdestinations[0][$key], $newlistdestinations[1][$key]]);
}
}
foreach ($dellistdestinations as $dellistdestination) {
$eintrag = "DELETE FROM `aliases` WHERE `id` LIKE :id";
$sth = $dbh->prepare($eintrag);
$sth->execute(array(':id' => $dellistdestination));
}
foreach ($addlistdestinations as $addlistdestination) {
$eintrag = "INSERT INTO `aliases` (`alias_id`, `source_username`, `source_domain`, `destination_username`, `destination_domain`) VALUES (:aliasid, :source_username, :source_domain, :destination_username, :destination_domain)"; // Aliasdaten in MailServer DB eintragen
$sth = $dbh->prepare($eintrag);
$sth->execute(array(':aliasid' => $_POST['editlistid'], ':source_username' => $newlistsource[0], ':source_domain' => $newlistsource[1], ':destination_username' => $addlistdestination[0], ':destination_domain' => $addlistdestination[1]));
}
header("Location: maillistsettings.php"); header("Location: maillistsettings.php");
exit; exit;
} else { } else {