diff options
| author | Michaela Brückner <brueckner@data-quest.de> | 2025-01-20 15:09:23 +0100 |
|---|---|---|
| committer | Michaela Brückner <brueckner@data-quest.de> | 2025-01-20 15:09:23 +0100 |
| commit | 83817638210b9cdb200dda87feabafea51339cb3 (patch) | |
| tree | 708cb4d583def303a44d63f00b27a3d4727de6cd /app/controllers/admin/mailqueue.php | |
| parent | 8760271247efabba2f785d060c4ca77624115a8c (diff) | |
initial commit, re #5157
Diffstat (limited to 'app/controllers/admin/mailqueue.php')
| -rw-r--r-- | app/controllers/admin/mailqueue.php | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/app/controllers/admin/mailqueue.php b/app/controllers/admin/mailqueue.php new file mode 100644 index 0000000..bffd31a --- /dev/null +++ b/app/controllers/admin/mailqueue.php @@ -0,0 +1,177 @@ +<?php + +/** + * + */ +class Admin_MailqueueController extends AuthenticatedController +{ + public function before_filter(&$action, &$args) + { + parent::before_filter($action, $args); + + if (!$GLOBALS['perm']->have_perm('root')) { + throw new AccessDeniedException(); + } + + } + + public function index_action() + { + Navigation::activateItem('/admin/mailqueue/index'); + + $export = new \ExportWidget(); + $export->addLink( + _('Aktuelle Mailqueue als CSV exportieren'), + $this->url_for('admin/mailqueue/export/new'), + Icon::create('export') + ); + \Sidebar::Get()->addWidget($export); + + $this->mailqueues = []; + $this->mailqueues = MailQueueEntry::findBySQL("chdate >= UNIX_TIMESTAMP() - 15768000 ORDER BY chdate DESC"); + + foreach ($this->mailqueues as $queue) + { + if ($queue->tries == 0) + { + $queue->tries .= ' (noch nicht gesendet)'; + } + elseif ($queue->tries >= 1 && $queue->tries <= 24) + { + $queue->tries .= ' Sendeversuch(e), noch nicht zugestellt'; + } + elseif ($queue->tries >= 25) + { + $queue->tries .= ' (Zustellung fehlgeschlagen)'; + } + } + + } + + public function showoldqueue_action() + { + Navigation::activateItem('/admin/mailqueue/oldqueue'); + $export = new \ExportWidget(); + $export->addLink( + _('Alte Mailqueue als CSV exportieren'), + $this->url_for('admin/mailqueue/export/old' ), + Icon::create('export') + ); + \Sidebar::Get()->addWidget($export); + + $actions = new ActionsWidget(); + $actions->addLink( + _('Alte Mailqueue-Einträge löschen'), + $this->url_for('admin/mailqueue/delete_old'), + Icon::create('trash') + + )->asDialog('size=auto'); + Sidebar::Get()->addWidget($actions); + + $this->old_mailqueues = []; + $this->old_mailqueues = MailQueueEntry::findBySQL("chdate < UNIX_TIMESTAMP() - 15768000 ORDER BY chdate DESC"); + foreach ($this->old_mailqueues as $queue) + { + if ($queue->tries == 0) + { + $queue->tries .= ' (noch nicht gesendet)'; + } + elseif ($queue->tries >= 1 && $queue->tries <= 24) + { + $queue->tries .= ' Sendeversuch(e), noch nicht zugestellt'; + } + elseif ($queue->tries >= 25) + { + $queue->tries .= ' (Zustellung fehlgeschlagen)'; + } + } + } + + public function delete_entry_action($queue_id, $oldornew) + { + PageLayout::setTitle('Eintrag löschen'); + $this->oldornew = $oldornew; + $this->queue_id = $queue_id; + $queue_entry = MailQueueEntry::find($queue_id); + + if (Request::isPost()) + { + CSRFProtection::verifyUnsafeRequest(); + $queue_entry->delete(); + + if ($oldornew == 'new') { + $this->relocate('admin/mailqueue/index'); + } else if ($oldornew == 'old') { + $this->relocate('admin/mailqueue/showoldqueue'); + } + PageLayout::postSuccess('Eintrag wurde gelöscht.'); + } + + } + + public function delete_old_action() + { + $this->old_mailqueues = MailQueueEntry::findBySQL("chdate < UNIX_TIMESTAMP() - 15768000"); + + if (Request::isPost()) + { + CSRFProtection::verifyUnsafeRequest(); + + foreach ($this->old_mailqueues as $mailqueue) { + $mailqueue->delete(); + } + $this->relocate('mailqueue/showqueue'); + PageLayout::postSuccess('Alle Mailqueue-Einträge, die mindestens ein Jahr alt sind, wurden gelöscht.'); + } + + } + + public function export_action($oldornew) + { + if ($oldornew == 'new') { + $this->mailqueues = MailQueueEntry::findBySQL("chdate >= UNIX_TIMESTAMP() - 15768000"); + $filename = FileManager::cleanFileName( + sprintf( + 'mailqueue-export-aktuell.csv', + \Context::getHeaderLine() + ) + ); + } else if ($oldornew == 'old') { + $this->mailqueues = MailQueueEntry::findBySQL("chdate < UNIX_TIMESTAMP() - 15768000"); + $filename = FileManager::cleanFileName( + sprintf( + 'mailqueue-export-alt.csv', + \Context::getHeaderLine() + ) + ); + } + + $captions = [ + _('Erstelldatum'), + _('Betreff'), + _('Message ID'), + _('Empfänger'), + _('Versuche'), + _('Letzter Sendeversuch') + ]; + + $data = []; + foreach ($this->mailqueues as $queue_entry) + { + $row['erstelldatum'] = date('d.m.Y H:i',$queue_entry->chdate); + $message = Message::find($queue_entry->message_id); + $row['betreff'] = $message->subject; + $row['message_id'] =$queue_entry->message_id; + + $user = User::find($queue_entry->user_id); + $row['empfaenger'] = $user->vorname . ' ' . $user->nachname; + + $row['versuche'] = $queue_entry->tries; + $row['lastsend'] = date('d.m.Y H:i',$queue_entry->last_try); + + $data[] = array_values($row); + } + $this->render_csv(array_merge([$captions], $data), $filename); + } + +} |
