diff options
Diffstat (limited to 'includes/pages/admin_news.php')
-rw-r--r-- | includes/pages/admin_news.php | 143 |
1 files changed, 79 insertions, 64 deletions
diff --git a/includes/pages/admin_news.php b/includes/pages/admin_news.php index 789fc728..bc242831 100644 --- a/includes/pages/admin_news.php +++ b/includes/pages/admin_news.php @@ -1,67 +1,82 @@ <?php -function admin_news() { - global $user; - - if (! isset($_GET["action"])) { - redirect(page_link_to("news")); - } - - $html = '<div class="col-md-12"><h1>' . _("Edit news entry") . '</h1>' . msg(); - if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { - $news_id = $_REQUEST['id']; - } else { - return error("Incomplete call, missing News ID.", true); - } - - $news = sql_select("SELECT * FROM `News` WHERE `ID`='" . sql_escape($news_id) . "' LIMIT 1"); - if (empty($news)) { - return error("No News found.", true); - } - switch ($_REQUEST["action"]) { - default: - redirect(page_link_to('news')); - case 'edit': - list($news) = $news; - - $user_source = User($news['UID']); - - $html .= form([ - form_info(_("Date"), date("Y-m-d H:i", $news['Datum'])), - form_info(_("Author"), User_Nick_render($user_source)), - form_text('eBetreff', _("Subject"), $news['Betreff']), - form_textarea('eText', _("Message"), $news['Text']), - form_checkbox('eTreffen', _("Meeting"), $news['Treffen'] == 1, 1), - form_submit('submit', _("Save")) - ], page_link_to('admin_news&action=save&id=' . $news_id)); - - $html .= '<a class="btn btn-danger" href="' . page_link_to('admin_news&action=delete&id=' . $news_id) . '"><span class="glyphicon glyphicon-trash"></span> ' . _("Delete") . '</a>'; - break; - - case 'save': - list($news) = $news; - - sql_query("UPDATE `News` SET - `Datum`='" . sql_escape(time()) . "', - `Betreff`='" . sql_escape($_POST["eBetreff"]) . "', - `Text`='" . sql_escape($_POST["eText"]) . "', - `UID`='" . sql_escape($user['UID']) . "', - `Treffen`='" . sql_escape($_POST["eTreffen"]) . "' - WHERE `ID`='" . sql_escape($news_id) . "'"); - engelsystem_log("News updated: " . $_POST["eBetreff"]); - success(_("News entry updated.")); - redirect(page_link_to("news")); - break; - - case 'delete': - list($news) = $news; - - sql_query("DELETE FROM `News` WHERE `ID`='" . sql_escape($news_id) . "' LIMIT 1"); - engelsystem_log("News deleted: " . $news['Betreff']); - success(_("News entry deleted.")); - redirect(page_link_to("news")); - break; - } - return $html . '</div>'; +use Engelsystem\Database\DB; + +/** + * @return string + */ +function admin_news() +{ + global $user; + + if (!isset($_GET['action'])) { + redirect(page_link_to('news')); + } + + $html = '<div class="col-md-12"><h1>' . _('Edit news entry') . '</h1>' . msg(); + if (isset($_REQUEST['id']) && preg_match('/^\d{1,11}$/', $_REQUEST['id'])) { + $news_id = $_REQUEST['id']; + } else { + return error('Incomplete call, missing News ID.', true); + } + + $news = DB::select('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]); + if (empty($news)) { + return error('No News found.', true); + } + + switch ($_REQUEST['action']) { + case 'edit': + $news = array_shift($news); + $user_source = User($news['UID']); + + $html .= form([ + form_info(_('Date'), date('Y-m-d H:i', $news['Datum'])), + form_info(_('Author'), User_Nick_render($user_source)), + form_text('eBetreff', _('Subject'), $news['Betreff']), + form_textarea('eText', _('Message'), $news['Text']), + form_checkbox('eTreffen', _('Meeting'), $news['Treffen'] == 1, 1), + form_submit('submit', _('Save')) + ], page_link_to('admin_news&action=save&id=' . $news_id)); + + $html .= '<a class="btn btn-danger" href="' . page_link_to('admin_news&action=delete&id=' . $news_id) . '">' + . '<span class="glyphicon glyphicon-trash"></span> ' . _('Delete') + . '</a>'; + break; + + case 'save': + DB::update(' + UPDATE `News` SET + `Datum`=?, + `Betreff`=?, + `Text`=?, + `UID`=?, + `Treffen`=? + WHERE `ID`=? + ', + [ + time(), + $_POST["eBetreff"], + $_POST["eText"], + $user['UID'], + isset($_POST["eTreffen"]) ? 1 : 0, + $news_id + ] + ); + engelsystem_log('News updated: ' . $_POST['eBetreff']); + success(_('News entry updated.')); + redirect(page_link_to('news')); + break; + + case 'delete': + $news = array_shift($news); + DB::delete('DELETE FROM `News` WHERE `ID`=? LIMIT 1', [$news_id]); + engelsystem_log('News deleted: ' . $news['Betreff']); + success(_('News entry deleted.')); + redirect(page_link_to('news')); + break; + default: + redirect(page_link_to('news')); + } + return $html . '</div>'; } -?>
\ No newline at end of file |