Compare commits

...
7 changed files with 55 additions and 24 deletions
@@ -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()));
+2 -2
View File
@@ -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;
+13 -6
View File
@@ -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);
+10 -6
View File
@@ -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 -2
View File
@@ -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;
+2 -1
View File
@@ -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 -2
View File
@@ -2,6 +2,6 @@ node_modules
.env
.env.*
!.env.example
/cypress/videos
/cypress/screenshots
/results
/cypress/videos
/results