summaryrefslogtreecommitdiffstats
path: root/modules-available/news/page.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2022-05-03 17:36:29 +0200
committerSimon Rettberg2022-05-03 17:36:29 +0200
commitb155c8167ddd5562f30fcfadd9eeb60d80e2619e (patch)
treecfbb0fda2f4aeadc24a0cbb010f975e3c10ee779 /modules-available/news/page.inc.php
parent[eventlog] Add de translations (diff)
downloadslx-admin-b155c8167ddd5562f30fcfadd9eeb60d80e2619e.tar.gz
slx-admin-b155c8167ddd5562f30fcfadd9eeb60d80e2619e.tar.xz
slx-admin-b155c8167ddd5562f30fcfadd9eeb60d80e2619e.zip
[locations/news] Add per-location news/help/loginscreentext
Diffstat (limited to 'modules-available/news/page.inc.php')
-rw-r--r--modules-available/news/page.inc.php39
1 files changed, 27 insertions, 12 deletions
diff --git a/modules-available/news/page.inc.php b/modules-available/news/page.inc.php
index 21b99952..ceffd028 100644
--- a/modules-available/news/page.inc.php
+++ b/modules-available/news/page.inc.php
@@ -39,6 +39,10 @@ class Page_News extends Page
* @var int Unix epoch date when the news expires.
*/
private $newsExpires = false;
+ /**
+ * @var int location id
+ */
+ private $locationId = 0;
/**
@@ -65,28 +69,31 @@ class Page_News extends Page
/* and also the news (or help) with the given id */
$newsId = Request::get('newsid', false, 'int');
$pageType = Request::get('type', false, 'string');
+ $this->locationId = Request::get('locationid', 0, 'int');
if ($pageType === false && $newsId === false) {
- Util::redirect('?do=news&type=news');
+ Util::redirect('?do=news&type=news&locationid=' . $this->locationId);
}
$this->pageType = $pageType === false ? 'news' : $pageType;
$this->loadNews($newsId, $pageType);
foreach (self::TYPES as $type => $entry) {
- Dashboard::addSubmenu('?do=news&type=' . $type, Dictionary::translate('type_' . $type, true));
+ Dashboard::addSubmenu('?do=news&type=' . $type . '&locationid=' . $this->locationId,
+ Dictionary::translate('type_' . $type, true));
}
} else {
$action = Request::post('action', false, 'string');
$pageType = Request::post('type', false, 'string');
+ $this->locationId = Request::post('locationid', Request::REQUIRED_EMPTY, 'int');
if (!array_key_exists($pageType, self::TYPES)) {
Message::addError('invalid-type', $pageType);
- Util::redirect('?do=news');
+ Util::redirect('?do=news&locationid=' . $this->locationId);
}
if ($action === 'save') {
// save to DB
- User::assertPermission("$pageType.save");
+ User::assertPermission("$pageType.save", $this->locationId);
if (!$this->saveNews($pageType)) {
Message::addError('save-error');
} else {
@@ -95,14 +102,14 @@ class Page_News extends Page
} elseif ($action === 'delete') {
// delete it
- User::assertPermission("$pageType.delete");
+ User::assertPermission("$pageType.delete", $this->locationId);
$this->delNews(Request::post('newsid', false, 'int'), $pageType);
} else {
// unknown action, redirect user
Message::addError('invalid-action', $action);
}
- Util::redirect('?do=news&type=' . $pageType);
+ Util::redirect('?do=news&type=' . $pageType . '&locationid=' . $this->locationId);
}
/* load summernote module if available */
@@ -119,8 +126,9 @@ class Page_News extends Page
// fetch the list of the older news
$NOW = time();
$lines = array();
+ $str = $this->locationId === 0 ? 'IS NULL' : ' = ' . $this->locationId;
$res = Database::simpleQuery("SELECT newsid, dateline, expires, title, content FROM vmchooser_pages
- WHERE type = :type ORDER BY dateline DESC LIMIT 20", ['type' => $this->pageType]);
+ WHERE type = :type AND locationid $str ORDER BY dateline DESC LIMIT 20", ['type' => $this->pageType]);
$foundActive = false;
foreach ($res as $row) {
$row['dateline_s'] = Util::prettyTime($row['dateline']);
@@ -169,6 +177,10 @@ class Page_News extends Page
'disabled' => 'disabled',
];
}
+ $data['locationid'] = $this->locationId;
+ if ($this->locationId > 0) {
+ $data['location_name'] = Location::getName($this->locationId);
+ }
Render::addTemplate('page-news', $data);
}
@@ -199,8 +211,9 @@ class Page_News extends Page
Message::addError('news-empty');
}
} else {
+ $str = $this->locationId === 0 ? 'IS NULL' : ' = ' . $this->locationId;
$row = Database::queryFirst("SELECT newsid, title, content, dateline, expires, type FROM vmchooser_pages
- WHERE type = :type AND expires > UNIX_TIMESTAMP() ORDER BY dateline DESC LIMIT 1", [
+ WHERE type = :type AND locationid $str AND expires > UNIX_TIMESTAMP() ORDER BY dateline DESC LIMIT 1", [
'type' => $pageType,
]);
}
@@ -234,11 +247,12 @@ class Page_News extends Page
$expires = strtotime(Request::post('enddate', 'today', 'string') . ' '
. Request::post('endtime', '23:59', 'string'));
}
+ $str = $this->locationId === 0 ? 'IS NULL' : ' = ' . $this->locationId;
if (!empty($newsContent)) {
// we got title and content, save it to DB
// dup check first
- $row = Database::queryFirst('SELECT newsid FROM vmchooser_pages
- WHERE content = :content AND type = :type LIMIT 1', [
+ $row = Database::queryFirst("SELECT newsid FROM vmchooser_pages
+ WHERE content = :content AND type = :type AND locationid $str LIMIT 1", [
'content' => $newsContent,
'type' => $pageType,
]);
@@ -253,10 +267,11 @@ class Page_News extends Page
return true;
}
// new one
- Database::exec("INSERT INTO vmchooser_pages (dateline, expires, title, content, type)
- VALUES (:dateline, :expires, :title, :content, :type)", array(
+ Database::exec("INSERT INTO vmchooser_pages (dateline, expires, locationid, title, content, type)
+ VALUES (:dateline, :expires, :locationid, :title, :content, :type)", array(
'dateline' => time(),
'expires' => $expires,
+ 'locationid' => $this->locationId,
'title' => $newsTitle,
'content' => $newsContent,
'type' => $pageType,