. */ if (!defined('BASEPATH')) exit('No direct script access allowed'); class Lehrveranstaltung extends FHCAPI_Controller { private $_ci; private $_uid; public function __construct() { parent::__construct([ 'getByEmp' => ['admin:r', 'assistenz:r'], 'getByStg' => ['admin:r', 'assistenz:r'], 'loadByLV' => ['admin:r', 'assistenz:r'], ]); $this->_ci = &get_instance(); $this->_setAuthUID(); $this->_ci->load->model('education/Lehreinheit_model', 'LehreinheitModel'); $this->_ci->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel'); $this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); $this->_ci->load->library('VariableLib', ['uid' => $this->_uid]); $this->loadPhrases( array( 'ui' ) ); } public function getByEmp($studiensemester_kurzbz = null, $mitarbeiter_uid = null, $stg_kz = null) { if (is_null($mitarbeiter_uid)) $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); $studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz); $lehrveranstaltungen = $this->_ci->LehreinheitModel->getLvsByEmployee($mitarbeiter_uid, $studiensemester_kurzbz, $stg_kz); $lehrveranstaltungen_data = $this->getDataOrTerminateWithError($lehrveranstaltungen); $tree = []; foreach ($lehrveranstaltungen_data as $lehrveranstaltung) { $lehreinheiten = $this->_ci->LehreinheitModel->getByLvidStudiensemester($lehrveranstaltung->lehrveranstaltung_id, $studiensemester_kurzbz, $mitarbeiter_uid); $lehreinheiten_data = $this->getDataOrTerminateWithError($lehreinheiten); if (!isset($lehrveranstaltung->_children)) { $lehrveranstaltung->_children = $lehreinheiten_data; } $tree[] = $lehrveranstaltung; } $this->terminateWithSuccess($tree); } public function getByStg($studiensemester_kurzbz = null, $studiengang_kz = null, $semester = null) { if (is_null($studiengang_kz) || !preg_match("/^-?[1-9][0-9]*$/", (string)$studiengang_kz)) $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); $verband = null; if (!is_null($semester) && !is_numeric($semester)) { $verband = $semester; $semester = null; } $this->_ci->load->model('organisation/Studienplan_model', 'StudienplanModel'); $studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz); $studienplan_data = $this->_ci->StudienplanModel->getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $semester, $verband); $studienplan_ids = array(); $only_ids = array(); $placeholders = array(); if (hasData($studienplan_data)) { foreach (getData($studienplan_data) as $studienplan) { $placeholders[] = "(?, ?)"; $studienplan_ids[] = $studienplan->studienplan_id; $studienplan_ids[] = $studienplan->semester; $only_ids[] = $studienplan->studienplan_id; } } $lehrveranstaltungen_data = $this->_ci->LehrveranstaltungModel->getLvsByStudiengang($studienplan_ids, $placeholders, $only_ids, $studiengang_kz, $studiensemester_kurzbz, $semester, $verband); $lehrveranstaltungen_data = hasData($lehrveranstaltungen_data) ? getData($lehrveranstaltungen_data) : array(); $tree = []; foreach ($lehrveranstaltungen_data as $row) { $rowData = $row; $lehreinheiten_data = $this->_ci->LehreinheitModel->getByLvidStudiensemester($row->lehrveranstaltung_id, $studiensemester_kurzbz); if (hasData($lehreinheiten_data)) { $lehreinheiten = getData($lehreinheiten_data); if (!isset($row->_children)) { $row->_children = $lehreinheiten; } else { if (!is_array($row->_children)) { $row->_children = [$row->_children]; } $row->_children = array_merge($row->_children, $lehreinheiten); } } if (!isEmptyString($row->studienplan_lehrveranstaltung_id_parent)) { $child = $this->_ci->StudienplanModel->loadStudienplanLehrveranstaltung($row->studienplan_lehrveranstaltung_id_parent); if (hasData($child)) { $child = getData($child)[0]; $searchId = $child->lehrveranstaltung_id; foreach ($lehrveranstaltungen_data as &$searchParent) { if ($searchParent->lehrveranstaltung_id === $searchId) { if (!isset($searchParent->_children)) { $searchParent->_children = []; } if (is_array($searchParent->_children)) { $searchParent->_children[] = $row; } else { $searchParent->_children = [$searchParent->_children, $row]; } break; } } } } else { $tree[] = $rowData; } } $counter = 0; $this->assignUniqueIndex($tree, $counter); $this->terminateWithSuccess($tree); } public function loadByLV($lehrveranstaltung_id = null) { if (is_null($lehrveranstaltung_id) || !ctype_digit((string)$lehrveranstaltung_id)) $this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); $this->_ci->LehrveranstaltungModel->addSelect('lehrveranstaltung_id, lehrform_kurzbz, lehre, bezeichnung as lvbezeichnung, sprache'); $lehrveranstaltung_result = $this->_ci->LehrveranstaltungModel->loadWhere(array('lehrveranstaltung_id' => $lehrveranstaltung_id)); $lehrveranstaltung_result = $this->getDataOrTerminateWithError($lehrveranstaltung_result); $lehrveranstaltung = $lehrveranstaltung_result[0]; $this->_ci->LehreinheitModel->addSelect('lehrveranstaltung_id_kompatibel'); $this->_ci->LehreinheitModel->addJoin('lehre.tbl_lehrveranstaltung_kompatibel', 'lehrveranstaltung_id'); $lehrfaecher = $this->_ci->LehreinheitModel->loadWhere(array('lehrveranstaltung_id' => $lehrveranstaltung->lehrveranstaltung_id)); $lehrfaecher_array = []; if (hasData($lehrfaecher)) $lehrfaecher_array = array_merge($lehrfaecher_array, array_column(getData($lehrfaecher), 'lehrveranstaltung_id_kompatibel')); $lehrfaecher_array[] = $lehrveranstaltung->lehrveranstaltung_id; $this->_ci->LehrveranstaltungModel->addDistinct('lehrfach_id'); $this->_ci->LehrveranstaltungModel->addSelect("tbl_lehrveranstaltung.lehrveranstaltung_id, CONCAT(tbl_lehrveranstaltung.bezeichnung || '(' || tbl_lehrveranstaltung.oe_kurzbz || ')') as lehrfach"); $this->_ci->LehrveranstaltungModel->db->where_in('tbl_lehrveranstaltung.lehrveranstaltung_id', $lehrfaecher_array); $lehrfaecher_result = $this->_ci->LehrveranstaltungModel->load(); $lehrfaecher_array = hasData($lehrfaecher_result) ? getData($lehrfaecher_result) : array(); $lehrveranstaltung->lehrfaecher = $lehrfaecher_array; $this->terminateWithSuccess($lehrveranstaltung); } /* * (david) ggf. im naechsten release * public function loadByOrganization($oe_kurzbz) { $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); $lehrveranstaltungen = $this->LehrveranstaltungModel->getLvsByOrganization($oe_kurzbz); $lehrveranstaltungen_data = $this->getDataOrTerminateWithError($lehrveranstaltungen); $tree = []; foreach ($lehrveranstaltungen_data as $lehrveranstaltung) { $lehreinheiten = $this->LehreinheitModel->getByLvidStudiensemester($lehrveranstaltung->lehrveranstaltung_id, $studiensemester_kurzbz); $lehreinheiten_data = $this->getDataOrTerminateWithError($lehreinheiten); if (!isset($lehrveranstaltung->_children)) { $lehrveranstaltung->_children = $lehreinheiten_data; } $tree[] = $lehrveranstaltung; } $this->terminateWithSuccess($tree); }*/ /*public function loadByFachbereich($fachbereich, $mitarbeiter_uid = null) { $studiensemester_kurzbz = $this->variablelib->getVar('semester_aktuell'); $this->LehreinheitModel->getLvsByFachbereich($fachbereich, $studiensemester_kurzbz, $mitarbeiter_uid); }*/ private function _setAuthUID() { $this->_uid = getAuthUID(); if (!$this->_uid) show_error('User authentification failed'); } private function assignUniqueIndex(&$nodes, &$counter) { foreach ($nodes as &$node) { $node->uniqueindex = $counter++; if (!empty($node->_children) && is_array($node->_children)) { $this->assignUniqueIndex($node->_children, $counter); } } } private function getStudiensemesterKurzbz($studiensemester_kurzbz = null) { if (!is_null($studiensemester_kurzbz)) { $studiensemester_result = $this->_ci->StudiensemesterModel->load($studiensemester_kurzbz); if (isError($studiensemester_result) || !hasData($studiensemester_result)) $this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); return getData($studiensemester_result)[0]->studiensemester_kurzbz; } $this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL); } }