diff --git a/application/controllers/api/frontend/v1/Cms.php b/application/controllers/api/frontend/v1/Cms.php index f1fe380de..b8937a1f4 100644 --- a/application/controllers/api/frontend/v1/Cms.php +++ b/application/controllers/api/frontend/v1/Cms.php @@ -124,25 +124,35 @@ class Cms extends FHCAPI_Controller //get the data or terminate with error $news = $this->getDataOrTerminateWithError($news); - + // array that keeps track of which news don't have a betreff and have to be removed from the news array + $newsToRemove = array(); // collect the content of the news - foreach($news as $news_element){ - $this->addMeta("content_id",$news_element->content_id); + foreach($news as $index=>$news_element){ - //todo: quick fix, for query builder error when fetching content $this->NewsModel->resetQuery(); $content = $this->cmslib->getContent($news_element->content_id); - - $content = getData($content); - - $news_element->content_obj = $content; + if(isError($content)) + { + // removes the news from the news array, so that the response does not include a invalid news + array_push($newsToRemove,$index); + //add the error to the api response? visual feedback + //$this->addError(print_r($content->retval,true)); + continue; + } + $content = getData($content); + $news_element->content_obj = $content; } + + //removes all news that don't have a betreff + foreach($newsToRemove as $removeNewsIndex) + { + unset($news[$removeNewsIndex]); + } + $withContent = function($news) { return $news->content_obj != null; - }; - + }; $newsWithContent = array_filter($news, $withContent); - $this->terminateWithSuccess($newsWithContent); } diff --git a/application/libraries/CmsLib.php b/application/libraries/CmsLib.php index 60e982eab..355cf7c56 100644 --- a/application/libraries/CmsLib.php +++ b/application/libraries/CmsLib.php @@ -43,7 +43,7 @@ class CmsLib * @param string $sprache * @param boolean $sichtbar * - * @return void + * @return stdClass */ public function getContent($content_id, $version = null, $sprache = null, $sichtbar = true) { @@ -105,7 +105,19 @@ class CmsLib if($content->titel){ $betreff = $content->titel; }else{ + //DomDocument getElementsByTagName returns a DomNodeList $betreff = $XML->getElementsByTagName('betreff'); + //check if any betreff was found and if it is not empty + if($betreff->length > 0 && !empty($betreff->item(0)->nodeValue)) + { + //DomNodeList item() return a DomNode, property nodeValue contains the value of the node + $betreff = $betreff->item(0)->nodeValue; + + } + else + { + return error('no betreff found for the content'); + } } $xsltemplate = new DOMDocument(); diff --git a/public/js/components/DashboardWidget/News.js b/public/js/components/DashboardWidget/News.js index 7e6ed4795..a459e1325 100644 --- a/public/js/components/DashboardWidget/News.js +++ b/public/js/components/DashboardWidget/News.js @@ -178,19 +178,16 @@ export default {