ci =& get_instance(); // Load Models $this->ci->load->model('content/Content_model', 'ContentModel'); $this->ci->load->model('content/Contentgruppe_model', 'ContentgruppeModel'); $this->ci->load->model('content/Template_model', 'TemplateModel'); if (defined('LOG_CONTENT') && LOG_CONTENT) $this->ci->load->model('system/Webservicelog_model', 'WebservicelogModel'); } // ----------------------------------------------------------------------------------------------------------------- // Public methods /** * @param int $content_id * @param int $version * @param string $sprache * @param boolean $sichtbar * * @return void */ public function getContent($content_id, $version = null, $sprache = null, $sichtbar = true) { if (!is_numeric($content_id)) return error('ContentID ist ungueltig'); if ($sprache === null) $sprache = getUserLanguage(); $islocked = $this->ci->ContentgruppeModel->loadWhere(['content_id' => $content_id]); if (isError($islocked)) return $islocked; if (getData($islocked)) { $uid = getAuthUID(); $isberechtigt = $this->ci->ContentgruppeModel->berechtigt($content_id, $uid); if (isError($isberechtigt)) return $isberechtigt; if (!getData($isberechtigt)) return error('global/keineBerechtigungFuerDieseSeite'); } #$this->load->model('content/Content_model', 'ContentModel'); $content = $this->ci->ContentModel->getContent($content_id, $sprache, $version, $sichtbar, true); if (isError($content)) return $content; // Legt einen Logeintrag für die Klickstatistik an if (defined('LOG_CONTENT') && LOG_CONTENT) { // Nur eingeloggte User werden geloggt, das sonst auch alle Infoscreenaufrufe und dgl. mitgeloggt werden if (isLogged()) { $request_data = 'content_id=' . $content_id; if ($version !== null) $request_data .= '&version=' . $version; if ($sichtbar !== true) $request_data .= '&sichtbar=' . $sichtbar; $this->ci->WebservicelogModel->insert([ 'webservicetyp_kurzbz' => 'content', 'request_id' => $content_id, 'beschreibung' => 'content', 'request_data' => $request_data . '&sprache=' . $sprache, 'execute_time' => 'now()', 'execute_user' => getAuthUID() ]); } } $content = getData($content); //XSLT Vorlage laden $template = $this->ci->TemplateModel->load($content->template_kurzbz); if (isError($template)) return $template; $template = current(getData($template)); $XML = new DOMDocument(); $XML->loadXML($content->content); $xsltemplate = new DOMDocument(); $xsltemplate->loadXML($template->xslt_xhtml_c4); //Transformation $processor = new XSLTProcessor(); $processor->importStylesheet($xsltemplate); $content = $processor->transformToXML($XML); $content = str_replace('dms.php', APP_ROOT . 'cms/dms.php', $content); return success($content); } /** * @param stdClass $stg_obj * * @return stdClass */ protected function getNewsExtras($stg_obj, $semester) { $this->ci->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); $stg_ltg = $this->ci->StudiengangModel->getLeitungDetailed($stg_obj->studiengang_kz); if (isError($stg_ltg)) return $stg_ltg; $stg_ltg = getData($stg_ltg) ?: []; $gf_ltg = $this->ci->BenutzerfunktionModel->getBenutzerFunktionenDetailed('gLtg', $stg_obj->oe_kurzbz); if (isError($gf_ltg)) return $gf_ltg; $gf_ltg = getData($gf_ltg) ?: []; $stv_ltg = $this->ci->BenutzerfunktionModel->getBenutzerFunktionenDetailed('stvLtg', $stg_obj->oe_kurzbz); if (isError($stv_ltg)) return $stv_ltg; $stv_ltg = getData($stv_ltg) ?: []; $ass = $this->ci->BenutzerfunktionModel->getBenutzerFunktionenDetailed('ass', $stg_obj->oe_kurzbz); if (isError($ass)) return $ass; $ass = getData($ass) ?: []; $hochschulvertr = $this->ci->BenutzerfunktionModel->getBenutzerFunktionenDetailed('hsv'); if (isError($hochschulvertr)) return $hochschulvertr; $hochschulvertr = getData($hochschulvertr) ?: []; $stdv = $this->ci->BenutzerfunktionModel->getBenutzerFunktionenDetailed('stdv', $stg_obj->oe_kurzbz); if (isError($stdv)) return $stdv; $stdv = getData($stdv) ?: []; $jahrgangsvertr = $this->ci->BenutzerfunktionModel->getBenutzerFunktionenDetailed('jgv', $stg_obj->oe_kurzbz, $semester); if (isError($jahrgangsvertr)) return $jahrgangsvertr; $jahrgangsvertr = getData($jahrgangsvertr) ?: []; return success($this->ci->load->view('Cis/Cms/News/Xml/NewsExtras', [ 'studiengang' => $stg_obj, 'semester' => $semester, 'stg_ltg' => $stg_ltg, 'gf_ltg' => $gf_ltg, 'stv_ltg' => $stv_ltg, 'ass' => $ass, 'hochschulvertr' => $hochschulvertr, 'stdv' => $stdv, 'jahrgangsvertr' => $jahrgangsvertr ], true)); } /** * @param string $studiengang_kz * @param string $semester * * @return array queried studiengang_kz and semester */ public function getStgAndSem($studiengang_kz, $semester) { $this->ci->load->model('crm/Student_model', 'StudentModel'); //Zum anzeigen der Studiengang-Details neben den News $student = $this->ci->StudentModel->loadWhere(['student_uid' => getAuthUID()]); if (isError($student)) return $student; if (getData($student)) { $student = current(getData($student)); if ($studiengang_kz === null) $studiengang_kz = $student->studiengang_kz; if ($semester === null) $semester = $student->semester; } return [$studiengang_kz, $semester]; } /** * @param boolean $infoscreen * @param string | null $studiengang_kz * @param int | null $semester * @param boolean $mischen * @param string $titel * @param boolean $edit * @param boolean $sichtbar * * @return void */ public function getNews($infoscreen = false, $studiengang_kz = null, $semester = null, $mischen = true, $titel = '', $edit = false, $sichtbar = true, $page = 1, $page_size = 10) { $this->ci->load->model('organisation/Studiengang_model', 'StudiengangModel'); list($studiengang_kz, $semester) = $this->getStgAndSem($studiengang_kz, $semester); $all = $edit; $xml = ''; $this->ci->load->model('content/News_model', 'NewsModel'); $news = $this->ci->NewsModel->getNewsWithContent(getSprache(), $studiengang_kz, $semester, null, $sichtbar, 0, $page, $page_size, $all, $mischen); if (isError($news)) return $news; $news = getData($news); //var_dump($news->maxPageCount); foreach ($news as $newsobj) { if ($studiengang_kz && $edit && !$newsobj->studiengang_kz) continue; $date = new DateTime($newsobj->datum); $datum = 'format('d.m.Y') . ']]>'; $datum .= 'format('Y-m-d H:i') . ']]>'; $id = $edit ? 'news_id . ']]>' : ''; $xml .= "" . $newsobj->content . $datum . $id . ""; } if ($studiengang_kz != 0) { $stg_obj = $this->ci->StudiengangModel->load($studiengang_kz); if (isError($stg_obj)) return $stg_obj; $stg_obj = current(getData($stg_obj) ?: []); if ($stg_obj) { if (!$edit && !$infoscreen) { $extras = $this->getNewsExtras($stg_obj, $semester); if (isError($extras)) return $extras; $xml .= getData($extras); } $xml .= 'bezeichnung . ']]>'; } } if ($titel != '') { $xml .= '' . $titel . ''; } $xml .= ''; //XSLT Vorlage laden $template = $this->ci->TemplateModel->load($infoscreen ? 'news_infoscreen' : 'news'); if (isError($template)) return $template; $template = current(getData($template)); $XML = new DOMDocument(); $XML->loadXML($xml); $xsltemplate = new DOMDocument(); $xsltemplate->loadXML($template->xslt_xhtml_c4); //Transformation $processor = new XSLTProcessor(); $processor->importStylesheet($xsltemplate); $content = $processor->transformToDoc($XML); $content->formatOutput = true; $content = $content->saveHTML(); $content = str_replace('dms.php', APP_ROOT . 'cms/dms.php', $content); return success($content); } }