mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 15:04:04 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb36f15369 | ||
|
|
0b6aaa0432 | ||
|
|
d57985b90a |
@@ -118,9 +118,14 @@ class Cms extends FHCAPI_Controller
|
||||
$this->load->model('content/news_model', 'NewsModel');
|
||||
|
||||
$limit = $this->input->get('limit',TRUE);
|
||||
|
||||
$passedInMaxAlter = $this->input->get('maxAlter', true);
|
||||
if($passedInMaxAlter !== null)
|
||||
{
|
||||
$maxAlter = intval($passedInMaxAlter);
|
||||
}
|
||||
|
||||
//query the news
|
||||
$news = $this->NewsModel->getAll($limit);
|
||||
$news = $this->NewsModel->getAll($limit, $maxAlter);
|
||||
|
||||
//get the data or terminate with error
|
||||
$news = $this->getDataOrTerminateWithError($news);
|
||||
@@ -163,8 +168,14 @@ class Cms extends FHCAPI_Controller
|
||||
$all = $edit;
|
||||
|
||||
$this->load->model('content/News_model','NewsModel');
|
||||
|
||||
$passedInMaxAlter = $this->input->get('maxAlter', true);
|
||||
if($passedInMaxAlter !== null)
|
||||
{
|
||||
$maxAlter = intval($passedInMaxAlter);
|
||||
}
|
||||
|
||||
$num_rows = $this->NewsModel->countNewsWithContent(getSprache(), $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxalter, $page, $page_size, $all, $mischen);
|
||||
$num_rows = $this->NewsModel->countNewsWithContent(getSprache(), $studiengang_kz, $semester, $fachbereich_kurzbz, $sichtbar, $maxAlter, $page, $page_size, $all, $mischen);
|
||||
|
||||
$num_rows = $this->getDataOrTerminateWithError($num_rows);
|
||||
|
||||
@@ -173,7 +184,7 @@ class Cms extends FHCAPI_Controller
|
||||
}
|
||||
|
||||
|
||||
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true)
|
||||
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true, $maxalter = 0)
|
||||
{
|
||||
//form validation
|
||||
$this->load->library('form_validation');
|
||||
@@ -194,7 +205,13 @@ class Cms extends FHCAPI_Controller
|
||||
// default value for the page_size is 10
|
||||
$page_size = $page_size ?? 10;
|
||||
|
||||
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar, $page, $page_size, $sprache);
|
||||
$passedInMaxAlter = $this->input->get('maxAlter', true);
|
||||
if($passedInMaxAlter !== null)
|
||||
{
|
||||
$maxAlter = intval($passedInMaxAlter);
|
||||
}
|
||||
|
||||
$news = $this->cmslib->getNews($infoscreen, $studiengang_kz, $semester, $mischen, $titel, $edit, $sichtbar, $page, $page_size, $sprache, $maxalter);
|
||||
$news = $this->getDataOrTerminateWithError($news);
|
||||
|
||||
$this->addMeta('phrases', json_decode($this->p->getJson()));
|
||||
|
||||
@@ -233,7 +233,7 @@ class CmsLib
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true, $page = 1, $page_size = 10, $sprache)
|
||||
public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true, $page = 1, $page_size = 10, $sprache, $maxAlter = 0)
|
||||
{
|
||||
$this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
list($studiengang_kz, $semester) = $this->getStgAndSem($studiengang_kz, $semester);
|
||||
@@ -242,7 +242,7 @@ class CmsLib
|
||||
$xml = '<?xml version="1.0" encoding="UTF-8"?><content>';
|
||||
|
||||
$this->ci->load->model('content/News_model', 'NewsModel');
|
||||
$news = $this->ci->NewsModel->getNewsWithContent($sprache, $studiengang_kz, $semester, null, $sichtbar, 0, $page, $page_size, $all, $mischen);
|
||||
$news = $this->ci->NewsModel->getNewsWithContent($sprache, $studiengang_kz, $semester, null, $sichtbar, $maxAlter, $page, $page_size, $all, $mischen);
|
||||
|
||||
if (isError($news))
|
||||
return $news;
|
||||
|
||||
@@ -17,16 +17,22 @@ class News_model extends DB_Model
|
||||
* @param null $limit Amount of news.
|
||||
* @return array
|
||||
*/
|
||||
public function getAll($limit = null)
|
||||
public function getAll($limit = null, $maxAlter = 0)
|
||||
{
|
||||
$this->addJoin("campus.tbl_content","content_id");
|
||||
|
||||
$maxAlterQueryFilter = "datum_bis >= NOW()::date";
|
||||
if ($maxAlter !== 0) {
|
||||
$maxAlterQueryFilter .= " OR datum_bis IS NULL AND (NOW()-datum) < interval '" . $this->escape($maxAlter) . " days'";
|
||||
}
|
||||
|
||||
return $this->execReadOnlyQuery('
|
||||
SELECT *, TO_CHAR(campus.tbl_news.datum, ?) as datumformatted
|
||||
FROM campus.tbl_news
|
||||
JOIN campus.tbl_content content ON content.content_id = campus.tbl_news.content_id
|
||||
WHERE
|
||||
WHERE
|
||||
--text IS NOT NULL AND
|
||||
datum <= NOW() AND (datum_bis IS NULL OR datum_bis >= now()::date)
|
||||
datum <= NOW() AND (' . $maxAlterQueryFilter . ')
|
||||
ORDER BY datum DESC
|
||||
LIMIT ' . $this->escape($limit)
|
||||
, ['DD/MM/YYYY']);
|
||||
@@ -66,8 +72,9 @@ class News_model extends DB_Model
|
||||
$fachbereich_kurzbz = trim($fachbereich_kurzbz);
|
||||
|
||||
$where = [];
|
||||
if (trim($maxalter) != '0') {
|
||||
$where[] = "(now()-datum) < interval " . $this->db->escape($maxalter) . " days";
|
||||
if ($maxalter !== 0 && is_numeric($maxalter)) {
|
||||
$maxalter = (int)$maxalter;
|
||||
$where[] = "(now()-datum) < interval '" . $this->db->escape($maxalter) . " days'";
|
||||
|
||||
}
|
||||
if (!$all) {
|
||||
@@ -103,7 +110,7 @@ class News_model extends DB_Model
|
||||
|
||||
$where[] = "cs.version = (SELECT MAX(version) FROM campus.tbl_contentsprache cs3 WHERE cs3.content_id=" . $this->dbTable . ".content_id AND cs3.sprache = (CASE WHEN EXISTS(SELECT 1 FROM campus.tbl_contentsprache cs2 WHERE cs2.content_id=" . $this->dbTable . ".content_id AND sprache=" . $this->db->escape($sprache) . ") THEN " . $this->db->escape($sprache) . " ELSE " . $this->db->escape(DEFAULT_LANGUAGE) . " END))";
|
||||
|
||||
|
||||
|
||||
$where = implode(" AND ", $where);
|
||||
|
||||
$this->db->where($where, NULL, FALSE);
|
||||
|
||||
@@ -29,29 +29,33 @@ export default {
|
||||
};
|
||||
},
|
||||
//api function used for the news View that renders the html
|
||||
getNews(page = 1, page_size = 10, sprache) {
|
||||
getNews(page = 1, page_size = 10, sprache, maxAge = 60) {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/Cms/getNews',
|
||||
params: {
|
||||
page,
|
||||
page_size,
|
||||
sprache
|
||||
sprache,
|
||||
maxAlter: maxAge
|
||||
},
|
||||
};
|
||||
},
|
||||
//api function used for the widget component
|
||||
news(limit) {
|
||||
news(limit, maxAge = 60) {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/Cms/news',
|
||||
params: { limit }
|
||||
params: { limit, maxAlter: maxAge }
|
||||
};
|
||||
},
|
||||
getNewsRowCount() {
|
||||
getNewsRowCount(maxAge = 60) {
|
||||
return {
|
||||
method: 'get',
|
||||
url: '/api/frontend/v1/Cms/getNewsRowCount'
|
||||
url: '/api/frontend/v1/Cms/getNewsRowCount',
|
||||
params: {
|
||||
maxAlter: maxAge
|
||||
}
|
||||
};
|
||||
},
|
||||
getNewsExtra() {
|
||||
|
||||
@@ -4,6 +4,8 @@ import BsConfirm from "../../Bootstrap/Confirm.js";
|
||||
|
||||
import ApiCms from "../../../api/factory/cms.js";
|
||||
|
||||
const MAX_NEW_AGE = 60;
|
||||
|
||||
export default {
|
||||
name: "NewsComponent",
|
||||
components: {
|
||||
@@ -32,7 +34,7 @@ export default {
|
||||
methods: {
|
||||
async fetchNews() {
|
||||
let newsResponse = await this.$api.call(
|
||||
ApiCms.getNews(this.page, this.page_size, this.sprache),
|
||||
ApiCms.getNews(this.page, this.page_size, this.sprache, MAX_NEW_AGE),
|
||||
);
|
||||
this.content = newsResponse.data;
|
||||
|
||||
@@ -98,7 +100,7 @@ export default {
|
||||
this.fetchNews();
|
||||
|
||||
this.$api
|
||||
.call(ApiCms.getNewsRowCount())
|
||||
.call(ApiCms.getNewsRowCount(MAX_NEW_AGE))
|
||||
.then((res) => res.data)
|
||||
.then((result) => {
|
||||
this.maxPageCount = result;
|
||||
|
||||
@@ -4,6 +4,7 @@ import { numberPadding } from '../../helpers/DateHelpers.js';
|
||||
import ApiCms from '../../api/factory/cms.js';
|
||||
|
||||
const MAX_LOADED_NEWS = 30;
|
||||
const MAX_NEW_AGE = 60;
|
||||
|
||||
export default {
|
||||
name: "WidgetsNews",
|
||||
@@ -183,7 +184,7 @@ export default {
|
||||
created() {
|
||||
this.$emit("setConfig", false);
|
||||
this.$api
|
||||
.call(ApiCms.news(MAX_LOADED_NEWS))
|
||||
.call(ApiCms.news(MAX_LOADED_NEWS, MAX_NEW_AGE))
|
||||
.then(res => res.data)
|
||||
.then((news) => {
|
||||
this.allNewsList = Array.from(Object.values(news));
|
||||
|
||||
@@ -2,6 +2,6 @@ node_modules
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
/cypress/videos
|
||||
/cypress/screenshots
|
||||
/results
|
||||
/cypress/videos
|
||||
/results
|
||||
|
||||
Reference in New Issue
Block a user