engelsystem/includes/pages/user_news.php

252 lines
7.4 KiB
PHP
Raw Normal View History

2011-06-02 01:45:46 +02:00
<?php
use Engelsystem\Database\DB;
2017-01-03 03:22:48 +01:00
/**
* @return string
*/
2017-01-02 03:57:23 +01:00
function user_news_comments_title()
{
2017-01-03 14:12:17 +01:00
return _('News comments');
2013-11-25 21:56:56 +01:00
}
2017-01-03 03:22:48 +01:00
/**
* @return string
*/
2017-01-02 03:57:23 +01:00
function news_title()
{
2017-01-03 14:12:17 +01:00
return _('News');
2013-11-25 21:04:58 +01:00
}
2017-01-03 03:22:48 +01:00
/**
* @return string
*/
2017-01-02 03:57:23 +01:00
function meetings_title()
{
2017-01-03 14:12:17 +01:00
return _('Meetings');
2013-11-25 21:04:58 +01:00
}
2017-01-03 03:22:48 +01:00
/**
* @return string
*/
2017-01-02 03:57:23 +01:00
function user_meetings()
{
2017-01-03 03:22:48 +01:00
global $display_news;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html = '<div class="col-md-12"><h1>' . meetings_title() . '</h1>' . msg();
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
if (isset($_REQUEST['page']) && preg_match('/^[0-9]{1,}$/', $_REQUEST['page'])) {
2017-01-02 03:57:23 +01:00
$page = $_REQUEST['page'];
} else {
2017-01-02 03:57:23 +01:00
$page = 0;
}
2017-01-02 15:43:36 +01:00
$news = DB::select(sprintf('
2017-01-03 03:22:48 +01:00
SELECT *
FROM `News`
WHERE `Treffen`=1
ORDER BY `Datum`DESC
LIMIT %u, %u',
$page * $display_news,
$display_news
));
2017-01-02 03:57:23 +01:00
foreach ($news as $entry) {
$html .= display_news($entry);
}
2017-01-02 15:43:36 +01:00
$dis_rows = ceil(count(DB::select('SELECT `ID` FROM `News`')) / $display_news);
2017-01-02 03:57:23 +01:00
$html .= '<div class="text-center">' . '<ul class="pagination">';
2017-01-02 15:43:36 +01:00
for ($i = 0; $i < $dis_rows; $i++) {
2017-01-02 03:57:23 +01:00
if (isset($_REQUEST['page']) && $i == $_REQUEST['page']) {
$html .= '<li class="active">';
2017-01-02 15:43:36 +01:00
} elseif (!isset($_REQUEST['page']) && $i == 0) {
2017-01-02 03:57:23 +01:00
$html .= '<li class="active">';
} else {
$html .= '<li>';
}
2017-01-03 14:12:17 +01:00
$html .= '<a href="' . page_link_to('user_meetings') . '&page=' . $i . '">' . ($i + 1) . '</a></li>';
}
2017-01-02 03:57:23 +01:00
$html .= '</ul></div></div>';
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return $html;
2011-06-03 06:47:35 +02:00
}
2017-01-03 03:22:48 +01:00
/**
* @param array $news
* @return string
*/
2017-01-02 03:57:23 +01:00
function display_news($news)
{
global $privileges, $page;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html = '';
$html .= '<div class="panel' . ($news['Treffen'] == 1 ? ' panel-info' : ' panel-default') . '">';
$html .= '<div class="panel-heading">';
$html .= '<h3 class="panel-title">' . ($news['Treffen'] == 1 ? '[Meeting] ' : '') . ReplaceSmilies($news['Betreff']) . '</h3>';
$html .= '</div>';
$html .= '<div class="panel-body">' . ReplaceSmilies(nl2br($news['Text'])) . '</div>';
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html .= '<div class="panel-footer text-muted">';
2017-01-03 14:12:17 +01:00
if (in_array('admin_news', $privileges)) {
2017-01-02 15:43:36 +01:00
$html .= '<div class="pull-right">'
2017-01-03 14:12:17 +01:00
. button_glyph(page_link_to('admin_news') . '&action=edit&id=' . $news['ID'], 'edit', 'btn-xs')
2017-01-02 15:43:36 +01:00
. '</div>';
2017-01-02 03:57:23 +01:00
}
2017-01-03 14:12:17 +01:00
$html .= '<span class="glyphicon glyphicon-time"></span> ' . date('Y-m-d H:i', $news['Datum']) . '&emsp;';
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$user_source = User($news['UID']);
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html .= User_Nick_render($user_source);
2017-01-03 14:12:17 +01:00
if ($page != 'news_comments') {
$html .= '&emsp;<a href="' . page_link_to('news_comments') . '&nid=' . $news['ID'] . '">'
2017-01-03 03:22:48 +01:00
. '<span class="glyphicon glyphicon-comment"></span> '
2017-01-03 14:12:17 +01:00
. _('Comments') . ' &raquo;</a> '
2017-01-03 03:22:48 +01:00
. '<span class="badge">'
. count(DB::select('SELECT `ID` FROM `NewsComments` WHERE `Refid`=?', [$news['ID']]))
2017-01-03 03:22:48 +01:00
. '</span>';
2017-01-02 03:57:23 +01:00
}
$html .= '</div>';
$html .= '</div>';
return $html;
2011-06-02 01:45:46 +02:00
}
2017-01-03 03:22:48 +01:00
/**
* @return string
*/
2017-01-02 03:57:23 +01:00
function user_news_comments()
{
global $user;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html = '<div class="col-md-12"><h1>' . user_news_comments_title() . '</h1>';
2017-01-02 15:43:36 +01:00
if (
2017-01-03 14:12:17 +01:00
isset($_REQUEST['nid'])
&& preg_match('/^[0-9]{1,}$/', $_REQUEST['nid'])
&& count(DB::select('SELECT `ID` FROM `News` WHERE `ID`=? LIMIT 1', [$_REQUEST['nid']])) > 0
2017-01-02 15:43:36 +01:00
) {
2017-01-03 14:12:17 +01:00
$nid = $_REQUEST['nid'];
$news = DB::select('SELECT * FROM `News` WHERE `ID`=? LIMIT 1', [$nid]);
$news = array_shift($news);
2017-01-03 14:12:17 +01:00
if (isset($_REQUEST['text'])) {
2017-01-02 03:57:23 +01:00
$text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($_REQUEST['text']));
DB::insert('
INSERT INTO `NewsComments` (`Refid`, `Datum`, `Text`, `UID`)
VALUES (?, ?, ?, ?)
',
[
$nid,
date("Y-m-d H:i:s"),
$text,
$user["UID"],
]
);
2017-01-03 14:12:17 +01:00
engelsystem_log('Created news_comment: ' . $text);
$html .= success(_('Entry saved.'), true);
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html .= display_news($news);
2017-01-02 15:43:36 +01:00
$comments = DB::select(
'SELECT * FROM `NewsComments` WHERE `Refid`=? ORDER BY \'ID\'',
[$nid]
);
2017-01-02 03:57:23 +01:00
foreach ($comments as $comment) {
$user_source = User($comment['UID']);
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html .= '<div class="panel panel-default">';
$html .= '<div class="panel-body">' . nl2br($comment['Text']) . '</div>';
$html .= '<div class="panel-footer text-muted">';
$html .= '<span class="glyphicon glyphicon-time"></span> ' . $comment['Datum'] . '&emsp;';
$html .= User_Nick_render($user_source);
$html .= '</div>';
$html .= '</div>';
}
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
$html .= '<hr /><h2>' . _('New Comment:') . '</h2>';
2017-01-02 03:57:23 +01:00
$html .= form([
2017-01-03 14:12:17 +01:00
form_textarea('text', _('Message'), ''),
form_submit('submit', _('Save'))
2017-01-02 15:43:36 +01:00
], page_link_to('news_comments') . '&nid=' . $news['ID']);
2017-01-02 03:57:23 +01:00
} else {
2017-01-03 14:12:17 +01:00
$html .= _('Invalid request.');
2017-01-02 03:57:23 +01:00
}
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
return $html . '</div>';
2011-06-03 05:12:50 +02:00
}
2011-06-02 01:45:46 +02:00
2017-01-03 03:22:48 +01:00
/**
* @return string
*/
2017-01-02 03:57:23 +01:00
function user_news()
{
2017-01-03 03:22:48 +01:00
global $display_news, $privileges, $user;
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html = '<div class="col-md-12"><h1>' . news_title() . '</h1>' . msg();
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
if (isset($_POST['text']) && isset($_POST['betreff']) && in_array('admin_news', $privileges)) {
if (!isset($_POST['treffen']) || !in_array('admin_news', $privileges)) {
$_POST['treffen'] = 0;
2017-01-02 03:57:23 +01:00
}
DB::insert('
2017-01-03 03:22:48 +01:00
INSERT INTO `News` (`Datum`, `Betreff`, `Text`, `UID`, `Treffen`)
VALUES (?, ?, ?, ?, ?)
',
[
time(),
$_POST['betreff'],
$_POST['text'],
$user['UID'],
$_POST['treffen'],
]
);
2017-01-03 14:12:17 +01:00
engelsystem_log('Created news: ' . $_POST['betreff'] . ', treffen: ' . $_POST['treffen']);
success(_('Entry saved.'));
2017-01-02 03:57:23 +01:00
redirect(page_link_to('news'));
}
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
if (isset($_REQUEST['page']) && preg_match('/^[0-9]{1,}$/', $_REQUEST['page'])) {
2017-01-02 03:57:23 +01:00
$page = $_REQUEST['page'];
} else {
$page = 0;
}
2017-01-02 15:43:36 +01:00
$news = DB::select(sprintf('
SELECT *
FROM `News`
ORDER BY `Datum`
DESC LIMIT %u, %u
',
$page * $display_news,
$display_news
));
2017-01-02 03:57:23 +01:00
foreach ($news as $entry) {
$html .= display_news($entry);
}
2017-01-02 15:43:36 +01:00
$dis_rows = ceil(count(DB::select('SELECT `ID` FROM `News`')) / $display_news);
2017-01-02 03:57:23 +01:00
$html .= '<div class="text-center">' . '<ul class="pagination">';
2017-01-02 15:43:36 +01:00
for ($i = 0; $i < $dis_rows; $i++) {
2017-01-02 03:57:23 +01:00
if (isset($_REQUEST['page']) && $i == $_REQUEST['page']) {
$html .= '<li class="active">';
2017-01-02 15:43:36 +01:00
} elseif (!isset($_REQUEST['page']) && $i == 0) {
2017-01-02 03:57:23 +01:00
$html .= '<li class="active">';
} else {
$html .= '<li>';
}
2017-01-03 14:12:17 +01:00
$html .= '<a href="' . page_link_to('news') . '&page=' . $i . '">' . ($i + 1) . '</a></li>';
}
2017-01-02 03:57:23 +01:00
$html .= '</ul></div>';
2017-01-02 15:43:36 +01:00
2017-01-03 14:12:17 +01:00
if (in_array('admin_news', $privileges)) {
2017-01-02 03:57:23 +01:00
$html .= '<hr />';
2017-01-03 14:12:17 +01:00
$html .= '<h2>' . _('Create news:') . '</h2>';
2017-01-02 15:43:36 +01:00
2017-01-02 03:57:23 +01:00
$html .= form([
2017-01-03 14:12:17 +01:00
form_text('betreff', _('Subject'), ''),
form_textarea('text', _('Message'), ''),
form_checkbox('treffen', _('Meeting'), false, 1),
form_submit('submit', _('Save'))
2017-01-02 15:43:36 +01:00
]);
2017-01-02 03:57:23 +01:00
}
return $html . '</div>';
2011-06-02 01:45:46 +02:00
}