2011-06-02 01:45:46 +02:00
|
|
|
<?php
|
2016-09-29 10:53:17 +02:00
|
|
|
|
2017-01-21 13:58:53 +01:00
|
|
|
use Engelsystem\Database\DB;
|
2019-10-31 20:02:34 +01:00
|
|
|
use Engelsystem\Models\News\News;
|
2018-10-09 21:47:31 +02:00
|
|
|
use Engelsystem\Models\User\User;
|
2017-01-21 13:58:53 +01:00
|
|
|
|
2017-01-03 03:22:48 +01:00
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
2017-01-02 03:57:23 +01:00
|
|
|
function user_news_comments_title()
|
|
|
|
{
|
2018-08-29 21:55:32 +02: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()
|
|
|
|
{
|
2018-08-29 21:55:32 +02: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()
|
|
|
|
{
|
2018-08-29 21:55:32 +02: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-21 23:07:20 +01:00
|
|
|
$display_news = config('display_news');
|
2017-01-02 03:57:23 +01:00
|
|
|
$html = '<div class="col-md-12"><h1>' . meetings_title() . '</h1>' . msg();
|
2017-07-18 21:38:53 +02:00
|
|
|
$request = request();
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-08-28 16:21:10 +02:00
|
|
|
if (preg_match('/^\d{1,}$/', $request->input('page', 0))) {
|
|
|
|
$page = $request->input('page', 0);
|
2016-09-29 10:53:17 +02:00
|
|
|
} else {
|
2017-01-02 03:57:23 +01:00
|
|
|
$page = 0;
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2019-10-31 20:02:34 +01:00
|
|
|
$news = News::where('is_meeting', true)
|
|
|
|
->orderBy('created_at', 'DESC')
|
|
|
|
->limit($display_news)
|
|
|
|
->offset($page * $display_news)
|
|
|
|
->get();
|
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
foreach ($news as $entry) {
|
|
|
|
$html .= display_news($entry);
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2019-10-31 20:02:34 +01:00
|
|
|
$dis_rows = ceil(News::where('is_meeting', true)->count() / $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-08-28 16:21:10 +02:00
|
|
|
if ($request->has('page') && $i == $request->input('page', 0)) {
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<li class="active">';
|
2017-07-18 21:38:53 +02:00
|
|
|
} elseif (!$request->has('page') && $i == 0) {
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<li class="active">';
|
|
|
|
} else {
|
|
|
|
$html .= '<li>';
|
|
|
|
}
|
2017-08-28 16:21:10 +02:00
|
|
|
$html .= '<a href="' . page_link_to('user_meetings', ['page' => $i]) . '">' . ($i + 1) . '</a></li>';
|
2016-09-29 10:53:17 +02:00
|
|
|
}
|
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-12-20 23:21:03 +01:00
|
|
|
/**
|
|
|
|
* Renders the text content of a news entry
|
2017-12-25 23:12:52 +01:00
|
|
|
*
|
2019-10-31 20:02:34 +01:00
|
|
|
* @param News $news
|
2017-12-20 23:21:03 +01:00
|
|
|
* @return string HTML
|
|
|
|
*/
|
2019-10-31 20:02:34 +01:00
|
|
|
function news_text(News $news): string
|
2017-12-25 23:12:52 +01:00
|
|
|
{
|
2019-10-31 20:02:34 +01:00
|
|
|
$text = ReplaceSmilies($news->text);
|
2017-12-20 23:46:04 +01:00
|
|
|
$text = preg_replace("/\r\n\r\n/m", '<br><br>', $text);
|
2017-12-20 23:21:03 +01:00
|
|
|
return $text;
|
|
|
|
}
|
|
|
|
|
2017-01-03 03:22:48 +01:00
|
|
|
/**
|
2019-10-31 20:02:34 +01:00
|
|
|
* @param News $news
|
2017-01-03 03:22:48 +01:00
|
|
|
* @return string
|
|
|
|
*/
|
2019-10-31 20:02:34 +01:00
|
|
|
function display_news(News $news): string
|
2017-01-02 03:57:23 +01:00
|
|
|
{
|
2018-11-12 14:41:23 +01:00
|
|
|
global $page;
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$html = '';
|
2019-10-31 20:02:34 +01:00
|
|
|
$html .= '<div class="panel' . ($news->is_meeting ? ' panel-info' : ' panel-default') . '">';
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<div class="panel-heading">';
|
2019-10-31 20:02:34 +01:00
|
|
|
$html .= '<h3 class="panel-title">' . ($news->is_meeting ? '[Meeting] ' : '') . ReplaceSmilies($news->title) . '</h3>';
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '</div>';
|
2017-12-20 23:21:03 +01:00
|
|
|
$html .= '<div class="panel-body">' . news_text($news) . '</div>';
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<div class="panel-footer text-muted">';
|
2018-11-12 14:41:23 +01:00
|
|
|
if (auth()->can('admin_news')) {
|
2017-01-02 15:43:36 +01:00
|
|
|
$html .= '<div class="pull-right">'
|
2017-12-25 23:12:52 +01:00
|
|
|
. button_glyph(
|
2019-10-31 20:02:34 +01:00
|
|
|
page_link_to('admin_news', ['action' => 'edit', 'id' => $news->id]),
|
2017-12-25 23:12:52 +01:00
|
|
|
'edit',
|
|
|
|
'btn-xs'
|
|
|
|
)
|
2017-01-02 15:43:36 +01:00
|
|
|
. '</div>';
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2019-10-31 20:02:34 +01:00
|
|
|
$html .= '<span class="glyphicon glyphicon-time"></span> ' . $news->created_at->format('Y-m-d H:i') . ' ';
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2019-10-31 20:02:34 +01:00
|
|
|
$html .= User_Nick_render(User::find($news->user_id));
|
2017-01-03 14:12:17 +01:00
|
|
|
if ($page != 'news_comments') {
|
2019-10-31 20:02:34 +01:00
|
|
|
$html .= ' <a href="' . page_link_to('news_comments', ['nid' => $news->id]) . '">'
|
2017-01-03 03:22:48 +01:00
|
|
|
. '<span class="glyphicon glyphicon-comment"></span> '
|
2018-08-29 21:55:32 +02:00
|
|
|
. __('Comments') . ' »</a> '
|
2017-01-03 03:22:48 +01:00
|
|
|
. '<span class="badge">'
|
2019-10-31 20:02:34 +01:00
|
|
|
. 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()
|
|
|
|
{
|
2018-10-31 12:48:22 +01:00
|
|
|
$user = auth()->user();
|
2017-07-18 21:38:53 +02:00
|
|
|
$request = request();
|
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$html = '<div class="col-md-12"><h1>' . user_news_comments_title() . '</h1>';
|
2019-10-31 20:02:34 +01:00
|
|
|
$nid = $request->input('nid');
|
2017-01-02 15:43:36 +01:00
|
|
|
if (
|
2017-07-18 21:38:53 +02:00
|
|
|
$request->has('nid')
|
2019-10-31 20:02:34 +01:00
|
|
|
&& preg_match('/^\d{1,}$/', $nid)
|
|
|
|
&& News::where('id', $request->input('nid'))->count() > 0
|
2017-01-02 15:43:36 +01:00
|
|
|
) {
|
2019-10-31 20:02:34 +01:00
|
|
|
$news = News::find('id');
|
2018-11-20 16:02:03 +01:00
|
|
|
if ($request->hasPostData('submit') && $request->has('text')) {
|
2018-12-28 22:52:00 +01:00
|
|
|
$text = $request->input('text');
|
2017-01-21 13:58:53 +01:00
|
|
|
DB::insert('
|
|
|
|
INSERT INTO `NewsComments` (`Refid`, `Datum`, `Text`, `UID`)
|
|
|
|
VALUES (?, ?, ?, ?)
|
|
|
|
',
|
|
|
|
[
|
|
|
|
$nid,
|
2017-01-21 19:37:42 +01:00
|
|
|
date('Y-m-d H:i:s'),
|
2017-01-21 13:58:53 +01:00
|
|
|
$text,
|
2018-10-08 21:15:56 +02:00
|
|
|
$user->id,
|
2017-01-21 13:58:53 +01:00
|
|
|
]
|
|
|
|
);
|
2018-12-28 22:52:00 +01:00
|
|
|
|
2019-05-31 04:03:19 +02:00
|
|
|
engelsystem_log('Created news_comment: ' . $text);
|
2018-08-29 21:55:32 +02:00
|
|
|
$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
|
|
|
|
2017-01-21 13:58:53 +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) {
|
2018-10-09 21:47:31 +02:00
|
|
|
$user_source = User::find($comment['UID']);
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<div class="panel panel-default">';
|
2017-08-29 22:22:53 +02:00
|
|
|
$html .= '<div class="panel-body">' . nl2br(htmlspecialchars($comment['Text'])) . '</div>';
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<div class="panel-footer text-muted">';
|
|
|
|
$html .= '<span class="glyphicon glyphicon-time"></span> ' . $comment['Datum'] . ' ';
|
|
|
|
$html .= User_Nick_render($user_source);
|
|
|
|
$html .= '</div>';
|
|
|
|
$html .= '</div>';
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2018-08-29 21:55:32 +02:00
|
|
|
$html .= '<hr /><h2>' . __('New Comment:') . '</h2>';
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= form([
|
2018-08-29 21:55:32 +02:00
|
|
|
form_textarea('text', __('Message'), ''),
|
|
|
|
form_submit('submit', __('Save'))
|
2017-08-28 16:21:10 +02:00
|
|
|
], page_link_to('news_comments', ['nid' => $news['ID']]));
|
2017-01-02 03:57:23 +01:00
|
|
|
} else {
|
2018-08-29 21:55:32 +02: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()
|
|
|
|
{
|
2018-10-31 12:48:22 +01:00
|
|
|
$user = auth()->user();
|
2017-01-21 23:07:20 +01:00
|
|
|
$display_news = config('display_news');
|
2017-07-18 21:38:53 +02:00
|
|
|
$request = request();
|
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-08-29 16:21:25 +02:00
|
|
|
$isMeeting = $request->postData('treffen');
|
2018-11-12 14:41:23 +01:00
|
|
|
if ($request->has('text') && $request->has('betreff') && auth()->can('admin_news')) {
|
2017-08-29 16:21:25 +02:00
|
|
|
if (!$request->has('treffen')) {
|
2017-07-18 21:38:53 +02:00
|
|
|
$isMeeting = 0;
|
2017-01-02 03:57:23 +01:00
|
|
|
}
|
2017-08-29 22:22:53 +02:00
|
|
|
|
|
|
|
$text = $request->postData('text');
|
2018-11-12 14:41:23 +01:00
|
|
|
if (!auth()->can('admin_news_html')) {
|
2017-08-29 22:22:53 +02:00
|
|
|
$text = strip_tags($text);
|
|
|
|
}
|
|
|
|
|
2019-10-31 20:02:34 +01:00
|
|
|
News::create([
|
|
|
|
'title' => strip_tags($request->postData('betreff')),
|
|
|
|
'text' => $text,
|
|
|
|
'user_id' => $user->id,
|
|
|
|
'is_meeting' => !!$isMeeting,
|
|
|
|
]);
|
2018-12-28 22:52:00 +01:00
|
|
|
|
2017-08-29 16:21:25 +02:00
|
|
|
engelsystem_log('Created news: ' . $request->postData('betreff') . ', treffen: ' . $isMeeting);
|
2018-08-29 21:55:32 +02:00
|
|
|
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-08-28 16:21:10 +02:00
|
|
|
if (preg_match('/^\d{1,}$/', $request->input('page', 0))) {
|
|
|
|
$page = $request->input('page', 0);
|
2017-01-02 03:57:23 +01:00
|
|
|
} else {
|
|
|
|
$page = 0;
|
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2019-10-31 20:02:34 +01:00
|
|
|
$news = News::query()
|
|
|
|
->orderBy('created_at', 'DESC')
|
|
|
|
->limit($display_news)
|
|
|
|
->offset($page * $display_news)
|
|
|
|
->get();
|
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
foreach ($news as $entry) {
|
|
|
|
$html .= display_news($entry);
|
2016-09-29 10:53:17 +02:00
|
|
|
}
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2019-10-31 20:02:34 +01:00
|
|
|
$dis_rows = ceil(News::query()->count() / $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-08-28 16:21:10 +02:00
|
|
|
if ($request->has('page') && $i == $request->input('page', 0)) {
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<li class="active">';
|
2017-07-18 21:38:53 +02:00
|
|
|
} elseif (!$request->has('page') && $i == 0) {
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<li class="active">';
|
|
|
|
} else {
|
|
|
|
$html .= '<li>';
|
|
|
|
}
|
2017-08-28 16:21:10 +02:00
|
|
|
$html .= '<a href="' . page_link_to('news', ['page' => $i]) . '">' . ($i + 1) . '</a></li>';
|
2016-09-29 10:53:17 +02:00
|
|
|
}
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '</ul></div>';
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2018-11-12 14:41:23 +01:00
|
|
|
if (auth()->can('admin_news')) {
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= '<hr />';
|
2018-08-29 21:55:32 +02:00
|
|
|
$html .= '<h2>' . __('Create news:') . '</h2>';
|
2017-01-02 15:43:36 +01:00
|
|
|
|
2017-01-02 03:57:23 +01:00
|
|
|
$html .= form([
|
2018-08-29 21:55:32 +02: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
|
|
|
}
|