Skip to content
Snippets Groups Projects
Commit 78174fc5 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

delete messages from inbox and outbox separately, fixes #565

parent 15f0eadb
No related branches found
No related tags found
No related merge requests found
...@@ -42,13 +42,17 @@ class MessagesController extends AuthenticatedController { ...@@ -42,13 +42,17 @@ class MessagesController extends AuthenticatedController {
} }
if (Request::isPost()) { if (Request::isPost()) {
$mbox = Request::option('mbox');
foreach (Request::optionArray('bulk') as $message_id) { foreach (Request::optionArray('bulk') as $message_id) {
$this->deleteMessage($message_id); $this->deleteMessage($message_id, $mbox);
} }
PageLayout::postSuccess(sprintf( PageLayout::postSuccess(sprintf(
_('%u Nachrichten wurden gelöscht'), _('%u Nachrichten wurden gelöscht'),
count(Request::optionArray('bulk')) count(Request::optionArray('bulk'))
)); ));
$this->redirect($this->overviewURL());
return;
} }
$this->messages = $this->getMessages( $this->messages = $this->getMessages(
...@@ -68,13 +72,17 @@ class MessagesController extends AuthenticatedController { ...@@ -68,13 +72,17 @@ class MessagesController extends AuthenticatedController {
Navigation::activateItem('/messaging/messages/sent'); Navigation::activateItem('/messaging/messages/sent');
if (Request::isPost()) { if (Request::isPost()) {
$mbox = Request::option('mbox');
foreach (Request::optionArray('bulk') as $message_id) { foreach (Request::optionArray('bulk') as $message_id) {
$this->deleteMessage($message_id); $this->deleteMessage($message_id, $mbox);
} }
PageLayout::postSuccess(sprintf( PageLayout::postSuccess(sprintf(
_('%u Nachrichten wurden gelöscht'), _('%u Nachrichten wurden gelöscht'),
count(Request::optionArray('bulk')) count(Request::optionArray('bulk'))
)); ));
$this->redirect($this->sentURL());
return;
} }
$this->messages = $this->getMessages( $this->messages = $this->getMessages(
...@@ -122,7 +130,7 @@ class MessagesController extends AuthenticatedController { ...@@ -122,7 +130,7 @@ class MessagesController extends AuthenticatedController {
$this->render_json($this->output); $this->render_json($this->output);
} }
public function read_action($message_id) public function read_action($message_id, $mbox = 'rec')
{ {
$this->message = new Message($message_id); $this->message = new Message($message_id);
if (!$this->message->permissionToRead()) { if (!$this->message->permissionToRead()) {
...@@ -160,6 +168,8 @@ class MessagesController extends AuthenticatedController { ...@@ -160,6 +168,8 @@ class MessagesController extends AuthenticatedController {
)); ));
} }
$this->message->markAsRead($GLOBALS['user']->id); $this->message->markAsRead($GLOBALS['user']->id);
$this->mbox = $mbox;
} }
/** /**
...@@ -658,34 +668,29 @@ class MessagesController extends AuthenticatedController { ...@@ -658,34 +668,29 @@ class MessagesController extends AuthenticatedController {
} }
} }
protected function deleteMessage($message_id) protected function deleteMessage($message_id, $mbox)
{ {
$message = Message::find($message_id); $message = Message::find($message_id);
if ($message) { if ($message) {
$message->markAsRead($GLOBALS['user']->id); $message->markAsRead($GLOBALS['user']->id);
} }
$messageuser = new MessageUser([$GLOBALS['user']->id, $message_id, "snd"]); $messageuser = MessageUser::find([$GLOBALS['user']->id, $message_id, $mbox]);
$success = 0; if ($messageuser) {
if (!$messageuser->isNew()) { $messageuser['deleted'] = true;
$messageuser['deleted'] = 1;
$success = $messageuser->store(); $success = $messageuser->store();
} }
$messageuser = new MessageUser([$GLOBALS['user']->id, $message_id, "rec"]);
if (!$messageuser->isNew()) {
$messageuser['deleted'] = 1;
$success += $messageuser->store();
}
return $success; return $success;
} }
public function delete_action($message_id) public function delete_action($message_id, $mbox = 'rec')
{ {
$message = Message::find($message_id); $message = Message::find($message_id);
$ticket = Request::get('studip-ticket'); $ticket = Request::get('studip-ticket');
if (Request::isPost() && $ticket && check_ticket($ticket)) { if (Request::isPost() && $ticket && check_ticket($ticket)) {
$success = $this->deleteMessage($message_id); $success = $this->deleteMessage($message_id, $mbox);
if ($success) { if ($success) {
PageLayout::postMessage(MessageBox::success(_('Nachricht gelöscht!'))); PageLayout::postMessage(MessageBox::success(_('Nachricht gelöscht!')));
} else { } else {
...@@ -693,9 +698,9 @@ class MessagesController extends AuthenticatedController { ...@@ -693,9 +698,9 @@ class MessagesController extends AuthenticatedController {
} }
} }
$redirect = $message->autor_id === $GLOBALS['user']->id $redirect = $mbox === 'rec'
? $this->url_for('messages/sent') ? $this->url_for('messages/overview')
: $this->url_for('messages/overview'); : $this->url_for('messages/sent');
$this->redirect($redirect); $this->redirect($redirect);
} }
...@@ -716,7 +721,7 @@ class MessagesController extends AuthenticatedController { ...@@ -716,7 +721,7 @@ class MessagesController extends AuthenticatedController {
'id' => $GLOBALS['user']->id, 'id' => $GLOBALS['user']->id,
]); ]);
foreach ($returnedMessages as $returnedMessage) { foreach ($returnedMessages as $returnedMessage) {
$this->deleteMessage($returnedMessage); $this->deleteMessage($returnedMessage, $sndrec);
} }
if ($sndrec === 'rec') { if ($sndrec === 'rec') {
PageLayout::postSuccess(_('Alle empfangenen Nachrichten wurden gelöscht.')); PageLayout::postSuccess(_('Alle empfangenen Nachrichten wurden gelöscht.'));
......
<tr id="message_<?= $message->getId() ?>" class="<?= $message->isRead() || $message['autor_id'] === $GLOBALS['user']->id ? "" : "unread" ?>"> <tr id="message_<?= $message->getId() ?>" class="<?= $message->isRead() || $message['autor_id'] === $GLOBALS['user']->id ? "" : "unread" ?>">
<td class="hidden-small-down"><input type="checkbox" name="bulk[]" value="<?= htmlReady($message->getId()) ?>"></td> <td class="hidden-small-down"><input type="checkbox" name="bulk[]" value="<?= htmlReady($message->getId()) ?>"></td>
<td class="title"> <td class="title">
<a href="<?= URLHelper::getLink("dispatch.php/messages/read/".$message->getId()) ?>" data-dialog> <a href="<?= $controller->read($message, $received ? 'rec' : 'snd') ?>" data-dialog>
<?= trim($message['subject']) ? htmlReady($message['subject']) : htmlReady(mila(kill_format($message['message']), 40)) ?> <?= trim($message['subject']) ? htmlReady($message['subject']) : htmlReady(mila(kill_format($message['message']), 40)) ?>
<div class="message-indicators"> <div class="message-indicators">
<span><?= $message->getNumAttachments() ? Icon::create('staple', 'info', ["title" => _("Mit Anhang")])->asImg(20) : "" ?></span> <span><?= $message->getNumAttachments() ? Icon::create('staple', 'info', ["title" => _("Mit Anhang")])->asImg(20) : "" ?></span>
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<form action="?" method="post" id="bulk"> <form action="?" method="post" id="bulk">
<?= CSRFProtection::tokenTag() ?> <?= CSRFProtection::tokenTag() ?>
<input type="hidden" name="mbox" value="<?= $received ? 'rec' : 'snd' ?>">
<table class="default" id="messages"> <table class="default" id="messages">
<caption> <caption>
<?= $received ? _("Eingang") : _("Gesendet") ?> <?= $received ? _("Eingang") : _("Gesendet") ?>
......
...@@ -93,10 +93,10 @@ ...@@ -93,10 +93,10 @@
<a href="<?= URLHelper::getLink("dispatch.php/messages/write", ['answer_to' => $message->getId(), 'forward' => "rec"]) ?>" data-dialog="width=700;height=700"><?= \Studip\Button::create(_("Weiterleiten"))?></a> <a href="<?= URLHelper::getLink("dispatch.php/messages/write", ['answer_to' => $message->getId(), 'forward' => "rec"]) ?>" data-dialog="width=700;height=700"><?= \Studip\Button::create(_("Weiterleiten"))?></a>
</div> </div>
<a href="<?= URLHelper::getLink("dispatch.php/messages/print/".$message->getId()) ?>" class="print_action"><?= \Studip\Button::create(_("Drucken"))?></a> <a href="<?= URLHelper::getLink("dispatch.php/messages/print/".$message->getId()) ?>" class="print_action"><?= \Studip\Button::create(_("Drucken"))?></a>
<form action="<?= $controller->url_for('messages/delete/' . $message->id) ?>" method="post" style="display: inline;"> <form action="<?= $controller->delete($message, $mbox) ?>" method="post" style="display: inline;">
<input type="hidden" name="studip-ticket" value="<?= get_ticket() ?>"> <input type="hidden" name="studip-ticket" value="<?= get_ticket() ?>">
<?= \Studip\Button::create(_("Löschen"), 'delete', [ <?= \Studip\Button::create(_("Löschen"), 'delete', [
'onClick' => 'return window.confirm("' . _('Nachricht wirklich löschen?') . '");', 'data-confirm' => _('Nachricht wirklich löschen?'),
])?> ])?>
</form> </form>
</div> </div>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment