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']));
$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);
$sth->execute(array(':aliasid' => $_POST['editlistid']));
if (!$_SESSION['admin']) {
$abfrage = "SELECT `source_username`, `source_domain` FROM `aliases` WHERE `alias_id` LIKE :alias_id";
$result = $dbh->prepare($abfrage);
$result->execute(array(':alias_id' => $_POST['editlistid']));
$newlistsource = $result->fetch(); //bei fetch() werden im Array ['spaltenname'] und [#Nummer der Spalte] angelegt also ['source_usernam'] und [0] praktische Sache
$abfrage = "SELECT `id`, `destination_username`, `destination_domain` FROM `aliases` WHERE `alias_id` LIKE :alias_id";
$result = $dbh->prepare($abfrage);
$result->execute(array(':alias_id' => $_POST['editlistid']));
$oldlistdestinations = array(array(),array(),array(),array());
while ($row = $result->fetch()) {
$oldlistdestinations[0][] = $row['id'];
$oldlistdestinations[1][] = $row['destination_username'];
$oldlistdestinations[2][] = $row['destination_domain'];
$oldlistdestinations[3][] = $row['destination_username'] . '@' . $row['destination_domain'];
}
else $newlistsource = explode('@', $_POST['newlistsource']);
foreach (explode(' ', $_POST['newlistdestinations']) as $maillistdestination) {
if ($maillistdestination != Null) {
$maillistdestinationex = explode('@', $maillistdestination);
$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' => $maillistdestinationex[0], ':destination_domain' => $maillistdestinationex[1]));
$newlistdestinations = array(array(),array(),array());
foreach (explode(' ', $_POST['newlistdestinations']) as $newlistdestination) {
$newlistdestinationex = explode('@', $newlistdestination);
array_push($newlistdestinations[0], $newlistdestinationex[0]);
array_push($newlistdestinations[1], $newlistdestinationex[1]);
array_push($newlistdestinations[2], $newlistdestinationex[0] . '@' . $newlistdestinationex[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");
exit;
} else {