diff --git a/application/config/navigation.php b/application/config/navigation.php index c2d221a80..d76b8a7f2 100644 --- a/application/config/navigation.php +++ b/application/config/navigation.php @@ -23,6 +23,14 @@ $config['navigation_header'] = array( 'expand' => true, 'sort' => 10, 'requiredPermissions' => 'basis/vilesci:r' + ), + 'oehbeitragsverwaltung' => array( + 'link' => site_url('codex/Oehbeitrag'), + 'icon' => '', + 'description' => 'ÖH-Beitragsverwaltung', + 'expand' => true, + 'sort' => 20, + 'requiredPermissions' => 'admin:w' ) ) ), @@ -94,6 +102,13 @@ $config['navigation_header'] = array( 'description' => 'BPK Wartung', 'sort' => 20, 'requiredPermissions' => 'admin:r' + ), + 'errormonitoring' => array( + 'link' => site_url('system/issues/Issues'), + 'description' => 'Fehler Monitoring', + 'expand' => true, + 'sort' => 30, + 'requiredPermissions' => 'system/issues_verwalten:r' ) ) ), diff --git a/application/controllers/codex/Oehbeitrag.php b/application/controllers/codex/Oehbeitrag.php new file mode 100644 index 000000000..da8c63e08 --- /dev/null +++ b/application/controllers/codex/Oehbeitrag.php @@ -0,0 +1,269 @@ + 'admin:r',// TODO which Berechtigung? + 'getOehbeitraege' => 'admin:r', + 'getValidStudiensemester' => 'admin:r', + 'addOehbeitrag' => 'admin:rw', + 'updateOehbeitrag' => 'admin:rw', + 'deleteOehbeitrag' => 'admin:rw' + ) + ); + + $this->load->model('codex/Oehbeitrag_model', 'OehbeitragModel'); + $this->load->model('organisation/Studiensemester_model', 'StudiensemesterModel'); + + $this->load->library('WidgetLib'); + + $this->loadPhrases( + array( + 'global', + 'ui', + 'oehbeitrag' + ) + ); + } + + public function index() + { + $oehbeitraege = array(); + + $oehbeitragRes = $this->_loadOehbeitraege(); + + if (isError($oehbeitragRes)) + show_error(getError($oehbeitragRes)); + + if (hasData($oehbeitragRes)) + $oehbeitraege = getData($oehbeitragRes); + + $this->load->view("codex/oehbeitrag.php", array('oehbeitraege' => $oehbeitraege)); + } + + /** + * Gets all valid, i.e. unassigned, Studiensemester. + */ + public function getValidStudiensemester() + { + $oehbeitrag_id = $this->input->get('oehbeitrag_id'); + $oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null; + + $studiensemester = array(); + + $studiensemesterres = $this->OehbeitragModel->getUnassignedStudiensemester(self::STUDIENSEMESTER_START, $oehbeitrag_id_arr); + if (isError($studiensemesterres)) + { + $this->outputJsonError(getError($studiensemesterres)); + return; + } + + if (hasData($studiensemesterres)) + $studiensemester = getData($studiensemesterres); + + $this->outputJsonSuccess($studiensemester); + } + + /** + * Gets all Öhbeiträge. Wrapper function for output as JSON. + */ + public function getOehbeitraege() + { + $this->outputJson($this->_loadOehbeitraege()); + } + + /** + * Adds an Öhbeitrag. Checks for errors beforehand. + */ + public function addOehbeitrag() + { + $studierendenbeitrag = $this->input->post('studierendenbeitrag'); + $versicherung = $this->input->post('versicherung'); + $von_studiensemester_kurzbz = $this->input->post('von_studiensemester_kurzbz'); + $bis_studiensemester_kurzbz = $this->input->post('bis_studiensemester_kurzbz'); + if ($bis_studiensemester_kurzbz == 'null') + $bis_studiensemester_kurzbz = null; + + if (!$this->_checkAmount($studierendenbeitrag)) + $this->outputJsonError('Ungültiger Studierendenbeitrag'); + elseif (!$this->_checkAmount($versicherung)) + $this->outputJsonError('Ungültige Versicherung'); + else + { + $vonBisCheck = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz); + + if (isError($vonBisCheck)) + $this->outputJsonError(getError($vonBisCheck)); + else + { + $data = array( + 'studierendenbeitrag' => $studierendenbeitrag, + 'versicherung' => $versicherung, + 'von_studiensemester_kurzbz' => $von_studiensemester_kurzbz, + 'bis_studiensemester_kurzbz' => $bis_studiensemester_kurzbz + ); + + $this->outputJson($this->OehbeitragModel->insert($data)); + } + } + } + + /** + * Updates an Öhbeitrag. Checks for errors beforehand. + */ + public function updateOehbeitrag() + { + $oehbeitrag_id = $this->input->post("oehbeitrag_id"); + $data = $this->input->post("data"); + + if (!is_numeric($oehbeitrag_id) || isEmptyArray($data)) + { + $this->outputJsonError("Ungültige Parameter"); + return; + } + + foreach ($data as $idx => $value) + { + if ($idx == 'studierendenbeitrag' || $idx == 'versicherung') + { + if (!$this->_checkAmount($value)) + { + $this->outputJsonError("Ungültige(r) $idx"); + return; + } + } + elseif ($idx == 'von_studiensemester_kurzbz' || $idx == 'bis_studiensemester_kurzbz') + { + $this->OehbeitragModel->addSelect('von_studiensemester_kurzbz, bis_studiensemester_kurzbz'); + $vonBisStudiensemesterRes = $this->OehbeitragModel->load($oehbeitrag_id); + + if (!hasData($vonBisStudiensemesterRes)) + { + $this->outputJsonError("Fehler beim Holen des Öhbeitrags"); + return; + } + + $vonBisStudiensemester = getData($vonBisStudiensemesterRes); + + $von_studiensemester_kurzbz = isset($data['von_studiensemester_kurzbz']) + ? $data['von_studiensemester_kurzbz'] + : $vonBisStudiensemester[0]->von_studiensemester_kurzbz; + + if (isset($data['bis_studiensemester_kurzbz'])) + { + $bis_studiensemester_kurzbz = $data['bis_studiensemester_kurzbz'] = $data['bis_studiensemester_kurzbz'] == 'null' ? null : $data['bis_studiensemester_kurzbz']; + } + else + $bis_studiensemester_kurzbz = $vonBisStudiensemester[0]->bis_studiensemester_kurzbz; + + $checkStudiensemester = $this->_checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id); + + if (isError($checkStudiensemester)) + { + $this->outputJsonError(getError($checkStudiensemester)); + return; + } + } + } + + $this->outputJson($this->OehbeitragModel->update($oehbeitrag_id, $data)); + } + + /** + * Deletes an Öhbeitrag. + */ + public function deleteOehbeitrag() + { + $oehbeitrag_id = $this->input->post("oehbeitrag_id"); + + $this->outputJson($this->OehbeitragModel->delete($oehbeitrag_id)); + } + + /** + * Loads all Öhbeiträge sorted by date descending. + * @return object + */ + private function _loadOehbeitraege() + { + $this->OehbeitragModel->addSelect('oehbeitrag_id, von_studiensemester_kurzbz, bis_studiensemester_kurzbz, studierendenbeitrag, versicherung, sem_von.start as von_datum, sem_bis.ende as bis_datum'); + $this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_von', 'tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz'); + $this->OehbeitragModel->addJoin('public.tbl_studiensemester sem_bis', 'tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz', 'LEFT'); + $this->OehbeitragModel->addOrder('sem_von.start', 'DESC'); + return $this->OehbeitragModel->load(); + } + + /** + * Checks if an amount is numeric and not too big. + * @param $amount + * @return bool true if valid amount, false otherwise + */ + private function _checkAmount($amount) + { + return is_numeric($amount) && (float) $amount <= 99999.99; + } + + /** + * Checks if a certain Von-Studiensemester is valid together with a Bis-Studiensemester. + * Checks for correct format, Von-Studiensemester cannot be after the Bis-Studiensemester, + * checks that semester are not overlapping with semester for existent Öhbeiträge. + * @param string $von_studiensemester_kurzbz + * @param string $bis_studiensemester_kurzbz + * @param int $oehbeitrag_id öhbeitrag to ignore, i.e. which is assignable (id of Öhbeitrag of the passed semesters) + * @return object array with true if assignable, with false if not + */ + private function _checkVonBisStudiensemester($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz, $oehbeitrag_id = null) + { + $regex = "/^(WS|SS)\d{4}$/"; + if (!preg_match($regex, $von_studiensemester_kurzbz)) + return error("Ungültiges Von-Studiensemester"); + + if (!preg_match($regex, $bis_studiensemester_kurzbz) && $bis_studiensemester_kurzbz != null) + return error("Ungültiges Bis-Studiensemester"); + + $this->StudiensemesterModel->addSelect("start"); + $vonStudiensemesterRes = $this->StudiensemesterModel->load($von_studiensemester_kurzbz); + + if (!hasData($vonStudiensemesterRes)) + return error("Fehler beim Holen von Von-Studiensemester"); + + $this->StudiensemesterModel->addSelect("start"); + $bisStudiensemesterRes = $this->StudiensemesterModel->load($bis_studiensemester_kurzbz); + + if (!hasData($bisStudiensemesterRes)) + return error("Fehler beim Holen von Bis-Studiensemester"); + + $vonStudiensemester = getData($vonStudiensemesterRes)[0]->start; + $bisStudiensemester = getData($bisStudiensemesterRes)[0]->start; + + if ($bis_studiensemester_kurzbz != null && new DateTime($vonStudiensemester) > new DateTime($bisStudiensemester)) + return error("Von-Studiensemester größer als Bis-Studiensemester"); + + $oehbeitrag_id_arr = isset($oehbeitrag_id) ? array($oehbeitrag_id) : null; + + $assignableRes = $this->OehbeitragModel->checkIfStudiensemesterAssignable( + $von_studiensemester_kurzbz, + $bis_studiensemester_kurzbz, + $oehbeitrag_id_arr + ); + + if (isError($assignableRes)) + return $assignableRes; + + if (hasData($assignableRes)) + { + $assignable = getData($assignableRes)[0]; + + if (!$assignable) + return error("Keine Zuweisung möglich, Semesterüberschneidung"); + } + + return success("Studiensemester gültig"); + } +} diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index cd88f814a..a69a43220 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -20,6 +20,7 @@ class InfoCenter extends Auth_Controller const INDEX_PAGE = 'index'; const FREIGEGEBEN_PAGE = 'freigegeben'; const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert'; + const ABGEWIESEN_PAGE = 'abgewiesen'; const SHOW_DETAILS_PAGE = 'showDetails'; const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails'; const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung'; @@ -107,6 +108,7 @@ class InfoCenter extends Auth_Controller array( 'index' => 'infocenter:r', 'freigegeben' => 'infocenter:r', + 'abgewiesen' => 'infocenter:r', 'reihungstestAbsolviert' => 'infocenter:r', 'showDetails' => 'infocenter:r', 'showZGVDetails' => 'lehre/zgvpruefung:r', @@ -203,6 +205,16 @@ class InfoCenter extends Auth_Controller $this->load->view('system/infocenter/infocenterFreigegeben.php'); } + /** + * Abgewiesen page of the InfoCenter tool + */ + public function abgewiesen() + { + $this->_setNavigationMenu(self::ABGEWIESEN_PAGE); // define the navigation menu for this page + + $this->load->view('system/infocenter/infocenterAbgewiesen.php'); + } + /** * */ @@ -297,6 +309,13 @@ class InfoCenter extends Auth_Controller } $persondata = $this->_loadPersonData($person_id); + + $checkPerson = $this->PersonModel->checkDuplicate($person_id); + + if (isError($checkPerson)) show_error(getError($checkPerson)); + + $duplicate = array('duplicated' => getData($checkPerson)); + $prestudentdata = $this->_loadPrestudentData($person_id); $this->DokumentModel->addOrder('bezeichnung'); @@ -305,7 +324,8 @@ class InfoCenter extends Auth_Controller $data = array_merge( $persondata, $prestudentdata, - $dokumentdata + $dokumentdata, + $duplicate ); $data[self::FHC_CONTROLLER_ID] = $this->getControllerId(); @@ -734,7 +754,7 @@ class InfoCenter extends Auth_Controller if (hasData($lastStatus) && hasData($statusgrresult)) { - //check if still Interessent + //check if still Interessent, Bewerber or Wartender if ($lastStatus->retval[0]->status_kurzbz === self::INTERESSENTSTATUS || $lastStatus->retval[0]->status_kurzbz === self::BEWERBERSTATUS || $lastStatus->retval[0]->status_kurzbz === self::WARTENDER) @@ -913,7 +933,8 @@ class InfoCenter extends Auth_Controller $this->_log($person_id, 'freigegeben', $logparams); - $this->_sendFreigabeMail($prestudent_id); + if (is_numeric($statusgrund_id) || $logdata['studiengang_typ'] === 'm') + $this->_sendFreigabeMail($prestudent_id); } } } @@ -1191,6 +1212,10 @@ class InfoCenter extends Auth_Controller { $this->_setNavigationMenu(self::REIHUNGSTESTABSOLVIERT_PAGE); } + elseif (strpos($navigation_page, self::ABGEWIESEN_PAGE) !== false) + { + $this->_setNavigationMenu(self::ABGEWIESEN_PAGE); + } $this->outputJsonSuccess('success'); } @@ -1414,12 +1439,14 @@ class InfoCenter extends Auth_Controller $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); $reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); + $abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); $currentFilterId = $this->input->get(self::FILTER_ID); if (isset($currentFilterId)) { $freigegebenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; $reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; + $abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; } $this->navigationlib->setSessionMenu( @@ -1458,6 +1485,18 @@ class InfoCenter extends Auth_Controller null, // subscriptLinkValue '', // target 20 // sort + ), + 'abgewiesen' => $this->navigationlib->oneLevel( + 'Abgewiesene', // description + $abgewiesenLink, // link + null, // children + 'close', // icon + null, // subscriptDescription + false, // expand + null, // subscriptLinkClass + null, // subscriptLinkValue + '', // target + 30 // sort ) ) ); @@ -1483,6 +1522,8 @@ class InfoCenter extends Auth_Controller } if ($origin_page === self::ZGV_UBERPRUEFUNG_PAGE) $link = site_url(self::ZGV_UEBERPRUEFUNG_URI); + if ($origin_page === self::ABGEWIESEN_PAGE) + $link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) @@ -1520,6 +1561,7 @@ class InfoCenter extends Auth_Controller $homeLink = site_url(self::INFOCENTER_URI.'/'.self::INDEX_PAGE); $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); $absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); + $abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { @@ -1578,6 +1620,24 @@ class InfoCenter extends Auth_Controller ) ); } + if($page == self::ABGEWIESEN_PAGE) + { + $this->navigationlib->setSessionElementMenu( + 'abgewiesen', + $this->navigationlib->oneLevel( + 'Abgewiesene', // description + $abgewiesenLink, // link + null, // children + 'close', // icon + null, // subscriptDescription + false, // expand + null, // subscriptLinkClass + null, // subscriptLinkValue + '', // target + 40 // sort + ) + ); + } } /** @@ -2134,17 +2194,18 @@ class InfoCenter extends Auth_Controller { $statusgrund = $this->input->post('statusgrund'); $studiengang = $this->input->post('studiengang'); + $abgeschickt = $this->input->post('abgeschickt'); $personen = $this->input->post('personen'); $studienSemester = $this->variablelib->getVar('infocenter_studiensemester'); - if ($statusgrund === 'null' || $studiengang === 'null' || empty($personen)) - $this->terminateWithJsonError("Bitte Statusgrund, Studiengang und Personen auswählen."); + if ($statusgrund === 'null' || $studiengang === 'null' || $abgeschickt === 'null' || empty($personen)) + $this->terminateWithJsonError("Bitte füllen Sie alle Felder aus"); foreach($personen as $person) { - $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester); + $prestudent = $this->PrestudentModel->getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt); - if(!hasData($prestudent)) + if (!hasData($prestudent)) continue; $prestudentData = getData($prestudent); diff --git a/application/controllers/system/issues/Issues.php b/application/controllers/system/issues/Issues.php new file mode 100644 index 000000000..e9764fb63 --- /dev/null +++ b/application/controllers/system/issues/Issues.php @@ -0,0 +1,145 @@ + array(self::BERECHTIGUNG_KURZBZ.':r'), + 'changeIssueStatus' => array(self::BERECHTIGUNG_KURZBZ.':rw') + ) + ); + + // Load libraries + $this->load->library('IssuesLib'); + $this->load->library('PermissionLib'); + $this->load->library('WidgetLib'); + + // Load models + $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); + $this->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel'); + + $this->loadPhrases( + array( + 'global', + 'ui', + 'filter', + 'lehre', + 'person', + 'fehlermonitoring' + ) + ); + + $this->_setAuthUID(); // sets property uid + } + + public function index() + { + $oes_for_issues = $this->_getOesForIssues(); + + $this->load->view( + 'system/issues/issues', + $oes_for_issues + ); + } + + /** + * Initializes issues status change + */ + public function changeIssueStatus() + { + $issue_ids = $this->input->post('issue_ids'); + $status_kurzbz = $this->input->post('status_kurzbz'); + $verarbeitetvon = $this->_uid; + + $errors = array(); + foreach ($issue_ids as $issue_id) + { + $issueRes = $this->issueslib->changeIssueStatus($issue_id, $status_kurzbz, $verarbeitetvon); + + if (isError($issueRes)) + $errors[] = getError($issueRes); + } + + if (!isEmptyArray($errors)) + $this->outputJsonError(implode(", ", $errors)); + else + $this->outputJsonSuccess("Status erfolgreich aktualisiert"); + } + + /** + * Retrieve the UID of the logged user and checks if it is valid + */ + private function _setAuthUID() + { + $this->_uid = getAuthUID(); + + if (!$this->_uid) show_error('User authentification failed'); + } + + /** + * Gets oes of logged in user, which are needed to display issues of the user. + * This includes oes assigned by a funktio and as the issue permission. + * @return array + */ + private function _getOesForIssues() + { + // get oes of uid for which there is a current funktion + $all_funktionen_oe_kurzbz = array(); + $oe_kurzbz_for_funktion = array(); + $benutzerfunktionRes = $this->BenutzerfunktionModel->getBenutzerFunktionByUid($this->_uid, null, date('Y-m-d'), date('Y-m-d')); + + if (isError($benutzerfunktionRes)) + show_error(getError($benutzerfunktionRes)); + + if (hasData($benutzerfunktionRes)) + { + foreach (getData($benutzerfunktionRes) as $benutzerfunktion) + { + $all_funktionen_oe_kurzbz[$benutzerfunktion->oe_kurzbz][] = $benutzerfunktion->funktion_kurzbz; + + // separate oes for the funktion needed for displaying issues + if ($benutzerfunktion->funktion_kurzbz == self::FUNKTION_KURZBZ) + { + $oe_kurzbz_for_funktion[] = $benutzerfunktion->oe_kurzbz; + + // permission also for all oes under the oe for which funktion is assigend + $childOesFunktionRes = $this->OrganisationseinheitModel->getChilds($benutzerfunktion->oe_kurzbz); + + if (isError($childOesFunktionRes)) + show_error(getError($childOesFunktionRes)); + + if (hasData($childOesFunktionRes)) + { + $childOesFunktion = getData($childOesFunktionRes); + + foreach ($childOesFunktion as $childOeFunktion) + { + if (!in_array($childOeFunktion->oe_kurzbz, $oe_kurzbz_for_funktion)) + $oe_kurzbz_for_funktion[] = $childOeFunktion->oe_kurzbz; + } + } + } + } + } + + // add oes for which there is the "manage issues" Berechtigung + if (!$oe_kurzbz_berechtigt = $this->permissionlib->getOE_isEntitledFor(self::BERECHTIGUNG_KURZBZ)) + show_error('Keine Berechtigung oder Fehler bei Berechtigungsprüfung'); + + $all_oe_kurzbz_berechtigt = array_unique(array_merge($oe_kurzbz_for_funktion, $oe_kurzbz_berechtigt)); + + return array( + 'all_funktionen_oe_kurzbz' => $all_funktionen_oe_kurzbz, + 'all_oe_kurzbz_berechtigt' => $all_oe_kurzbz_berechtigt + ); + } +} diff --git a/application/core/JQW_Controller.php b/application/core/JQW_Controller.php index 361efd998..1bc4cd346 100644 --- a/application/core/JQW_Controller.php +++ b/application/core/JQW_Controller.php @@ -70,6 +70,19 @@ abstract class JQW_Controller extends JOB_Controller return $jobs; } + /** + * To get all the jobs specified by the given parameters + */ + protected function getJobsByTypeStatus($type, $status) + { + $jobs = $this->jobsqueuelib->getJobsByTypeStatus($type, $status); + + // If an error occurred then log it in database + if (isError($jobs)) $this->logError(getError($jobs), array($type, $status)); + + return $jobs; + } + /** * To get all the jobs specified by the given parameters */ diff --git a/application/libraries/FilterWidgetLib.php b/application/libraries/FilterWidgetLib.php index cdf0cac3c..d9a3428a0 100644 --- a/application/libraries/FilterWidgetLib.php +++ b/application/libraries/FilterWidgetLib.php @@ -203,7 +203,7 @@ class FilterWidgetLib // Loops in the session for all the filter widgets foreach ($filterWidgetsSession as $filterWidget => $filterWidgetData) { - // If this filter widget is not the currrent used filter widget and the it is expired... + // If this filter widget is not the current used filter widget and the it is expired... if ($this->_filterUniqueId != $filterWidget && $filterWidgetData[self::SESSION_TIMEOUT] <= time()) { cleanSessionElement(self::SESSION_NAME, $filterWidget); // ...remove it @@ -232,7 +232,7 @@ class FilterWidgetLib if ($filterId != null && is_numeric($filterId) && $filterId > 0) { $whereParameters = array( - 'filter_id' => $filterId + self::FILTER_ID => $filterId ); } else @@ -279,6 +279,18 @@ class FilterWidgetLib if ($definition == null && $whereParameters != null) { $definition = $this->_ci->FiltersModel->loadWhere($whereParameters); + + // Last chance!!! + if (!hasData($definition)) // If no data have been found until now the tries the most desperate query + { + $this->_ci->FiltersModel->addOrder('filter_id', 'ASC'); // sort on column filter_id to get the oldest + $whereParameters = array( + 'app' => $app, + 'dataset_name' => $datasetName + ); + + $definition = $this->_ci->FiltersModel->loadWhere($whereParameters); + } } return $definition; @@ -712,8 +724,11 @@ class FilterWidgetLib { $this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to remove the filter definitions from DB - // delete it! - $this->_ci->FiltersModel->delete(array('filter_id' => $filterId)); + // Delete it from database + $this->_ci->FiltersModel->delete(array(self::FILTER_ID => $filterId)); + + // Delete it from session + $this->_dropFromSessionFilterWidgetById($filterId); $removeCustomFilter = true; } @@ -735,7 +750,7 @@ class FilterWidgetLib $session = $this->getSession(); // The filter currently stored in session (the one that is currently used) if ($session != null) { - // Loads the Fitlers model + // Loads the Filters model $this->_ci->load->model('system/Filters_model', 'FiltersModel'); // Loads all the filters related to this page (same dataset_name and same app name) @@ -761,7 +776,7 @@ class FilterWidgetLib '%s?%s=%s', site_url($navigationPage), self::FILTER_ID, - $filter->filter_id + $filter->{self::FILTER_ID} ) // link ); @@ -774,7 +789,7 @@ class FilterWidgetLib { $menuEntry['subscriptDescription'] = 'Remove'; $menuEntry['subscriptLinkClass'] = 'remove-custom-filter'; - $menuEntry['subscriptLinkValue'] = $filter->filter_id; + $menuEntry['subscriptLinkValue'] = $filter->{self::FILTER_ID}; $childrenPersonalArray[] = $menuEntry; // adds to personal filters menu array } } @@ -974,5 +989,29 @@ class FilterWidgetLib return $pos; } + + /** + * Remove from the session the given filter widget + */ + private function _dropFromSessionFilterWidgetById($filterId) + { + // Loads the session for all the filter widgets + $filterWidgetsSession = getSession(self::SESSION_NAME); + + // If something is present in session + if ($filterWidgetsSession != null) + { + // Loops in the session for all the filter widgets + foreach ($filterWidgetsSession as $filterWidget => $filterWidgetData) + { + // If this filter widget is not the one that we are looking for + if ($filterWidgetData[self::FILTER_ID] == $filterId) + { + cleanSessionElement(self::SESSION_NAME, $filterWidget); // ...remove it + break; // stop to search + } + } + } + } } diff --git a/application/libraries/IssuesLib.php b/application/libraries/IssuesLib.php new file mode 100644 index 000000000..1b06db333 --- /dev/null +++ b/application/libraries/IssuesLib.php @@ -0,0 +1,244 @@ +_ci =& get_instance(); + + // Properties default values + $this->_app = 'core'; + $this->_insertvon = 'system'; + $this->_fallbackFehlercode = 'UNKNOWN_ERROR'; + + // If parameters are given then overwrite the default values + if (!isEmptyArray($params)) $this->setConfigs($params); + + // load models + $this->_ci->load->model('system/Issue_model', 'IssueModel'); + $this->_ci->load->model('system/Fehler_model', 'FehlerModel'); + } + + // -------------------------------------------------------------------------------------------------------------- + // Public methods + + /** + * Store configuration parameters for this lib + */ + public function setConfigs($params) + { + // If parameters are given then overwrite the default values + if (!isEmptyArray($params)) + { + if (isset($params[self::APP_INDEX])) $this->_app = $params[self::APP_INDEX]; + if (isset($params[self::INSERTVON_INDEX])) $this->_insertvon = $params[self::INSERTVON_INDEX]; + if (isset($params[self::FALLBACK_FEHLERCODE_INDEX])) $this->_fallbackFehlercode = $params[self::FALLBACK_FEHLERCODE_INDEX]; + } + } + + /** + * Adds an Fhc issue, i.e. an internal, self-defined issue. + * @param string $fehler_kurzbz short unique text name of the issue + * @param int $person_id + * @param string $oe_kurzbz + * @param array $fehlertext_params params for sprint replace of error text in system.tbl_fehler + * @return object success or error + */ + public function addFhcIssue($fehler_kurzbz, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null) + { + $fehlerRes = $this->_ci->FehlerModel->loadWhere(array('fehler_kurzbz' => $fehler_kurzbz)); + + if (hasData($fehlerRes)) + { + $fehlercode = getData($fehlerRes)[0]->fehlercode; + return $this->_addIssue($fehlercode, $person_id, $oe_kurzbz, $fehlertext_params); + } + else + return error("Fehler $fehler_kurzbz nicht gefunden"); + } + + /** + * Adds an external issue, already defined externally by another system. + * @param string $fehlercode_extern the error code in the external system + * @param string $inhalt_extern error text in external system + * @param int $person_id + * @param int $oe_kurzbz + * @param array $fehlertext_params params for replacement of parts of error text + * @param bool $force_predefined if true, only predefined external issues are added + * @return object success or error + */ + public function addExternalIssue($fehlercode_extern, $inhalt_extern, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null, $force_predefined = false) + { + if (isEmptyString($fehlercode_extern)) + return error("fehlercode_extern fehlt"); + + // get external fehlercode (unique for each app) + $this->_ci->FehlerModel->addSelect('fehlercode'); + $fehlerRes = $this->_ci->FehlerModel->loadWhere( + array( + 'fehlercode_extern' => $fehlercode_extern, + 'app' => $this->_app + ) + ); + + if (isError($fehlerRes)) + return $fehlerRes; + + $fehlerData = getData($fehlerRes)[0]; + + // check if there is a predefined custom error for the external issue + if (hasData($fehlerRes)) + { + // if found, use the code + $fehlercode = $fehlerData->fehlercode; + } + elseif ($force_predefined === true) + { + // only added if predefined + return success("No definition found - not added"); + } + else + { + // if predefined error is not found, insert with fallback code + $fehlercode = $this->_fallbackFehlercode; + } + + // add external issue + return $this->_addIssue($fehlercode, $person_id, $oe_kurzbz, $fehlertext_params, $fehlercode_extern, $inhalt_extern); + } + + /** + * Changes status of an issue. + * @param int $issue_id + * @param string $status_kurzbz the new status + * @param string $verarbeitetvon uid of person changing the status (needed for in Bearbeitung and behoben) + * @return success or error + */ + public function changeIssueStatus($issue_id, $status_kurzbz, $verarbeitetvon = null) + { + if (!isset($issue_id) || !is_numeric($issue_id)) + return error("Issue Id muss korrekt gesetzt sein."); + + // check if given status is same as existing + $this->_ci->IssueModel->addSelect('status_kurzbz'); + $currStatus = $this->_ci->IssueModel->load($issue_id); + + if (hasData($currStatus)) + { + if (getData($currStatus)[0]->status_kurzbz == $status_kurzbz) + return success("Gleicher Status bereits gesetzt"); + } + else + return error("Fehler beim Holen des Status"); + + $data = array( + 'status_kurzbz' => $status_kurzbz, + 'updatevon' => $verarbeitetvon, + 'updateamum' => date('Y-m-d H:i:s') + ); + + if ($status_kurzbz == self::STATUS_NEU) + { + + $data['verarbeitetvon'] = null; + } + + if ($status_kurzbz == self::STATUS_NEU || $status_kurzbz == self::STATUS_IN_BEARBEITUNG) + { + $data['verarbeitetamum'] = null; + } + + if ($status_kurzbz == self::STATUS_IN_BEARBEITUNG || $status_kurzbz == self::STATUS_BEHOBEN) + { + if (isset($verarbeitetvon)) + $data['verarbeitetvon'] = $verarbeitetvon; + else + return error("Verarbeitetvon nicht gesetzt"); + } + + if ($status_kurzbz == self::STATUS_BEHOBEN) + $data['verarbeitetamum'] = date('Y-m-d H:i:s'); + + return $this->_ci->IssueModel->update( + array( + 'issue_id' => $issue_id + ), + $data + ); + } + + /** + * Adds an issue. + * @param $fehlercode + * @param int $person_id + * @param string $oe_kurzbz + * @param array $fehlertext_params + * @param string $fehlercode_extern + * @param string $inhalt_extern + * @return object success or error + */ + private function _addIssue($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlertext_params = null, $fehlercode_extern = null, $inhalt_extern = null) + { + if (isEmptyString($person_id) && isEmptyString($oe_kurzbz)) + return error("Person_id oder oe_kurzbz muss gesetzt sein."); + + // get fehlertextVorlage and replace it with params + $fehlerRes = $this->_ci->FehlerModel->load($fehlercode); + + if (hasData($fehlerRes)) + { + $fehlertextVorlage = getData($fehlerRes)[0]->fehlertext; + $fehlertext = isEmptyArray($fehlertext_params) ? $fehlertextVorlage : vsprintf($fehlertextVorlage, $fehlertext_params); + + $openIssuesCountRes = $this->_ci->IssueModel->getOpenIssueCount($fehlercode, $person_id, $oe_kurzbz, $fehlercode_extern); + + if (hasData($openIssuesCountRes)) + { + // don't insert if issue is already open + // already open - status new with same fehlercode or same fehlercode-extern (if set) + $openIssueCount = getData($openIssuesCountRes)[0]->anzahl_open_issues; + + if ($openIssueCount == 0) + { + return $this->_ci->IssueModel->insert( + array( + 'fehlercode' => $fehlercode, + 'fehlercode_extern' => $fehlercode_extern, + 'inhalt' => $fehlertext, + 'inhalt_extern' => $inhalt_extern, + 'person_id' => $person_id, + 'oe_kurzbz' => $oe_kurzbz, + 'datum' => date('Y-m-d H:i:s'), + 'status_kurzbz' => self::STATUS_NEU, + 'insertvon' => $this->_insertvon + ) + ); + } + else + return success($openIssueCount); + } + else + return error("Anzahl offener Issues konnte nicht ermittelt werden."); + } + else + return error("Fehler $fehlercode nicht gefunden"); + } +} diff --git a/application/libraries/JobsQueueLib.php b/application/libraries/JobsQueueLib.php index d264f7119..5871a3767 100644 --- a/application/libraries/JobsQueueLib.php +++ b/application/libraries/JobsQueueLib.php @@ -72,6 +72,18 @@ class JobsQueueLib return $this->_ci->JobsQueueModel->loadWhere(array('status' => self::STATUS_NEW, 'type' => $type)); } + /** + * To get all the jobs specified by the given parameters + */ + public function getJobsByTypeStatus($type, $status) + { + $this->_ci->JobsQueueModel->resetQuery(); + + $this->_ci->JobsQueueModel->addOrder('creationtime', 'DESC'); + + return $this->_ci->JobsQueueModel->loadWhere(array('status' => $status, 'type' => $type)); + } + /** * To get all the jobs specified by the given parameters */ diff --git a/application/libraries/UDFLib.php b/application/libraries/UDFLib.php index 827bdc989..c5f0d3e98 100644 --- a/application/libraries/UDFLib.php +++ b/application/libraries/UDFLib.php @@ -312,10 +312,10 @@ class UDFLib { $resultElement->{$columnName} = $columnValue; } - } - // And finally remove the UDFs column - unset($resultElement->{self::COLUMN_NAME}); + // And finally remove the UDFs column + unset($resultElement->{self::COLUMN_NAME}); + } } /** diff --git a/application/libraries/VorlageLib.php b/application/libraries/VorlageLib.php index 9679dff1c..d8d443a41 100644 --- a/application/libraries/VorlageLib.php +++ b/application/libraries/VorlageLib.php @@ -114,7 +114,7 @@ class VorlageLib if (!hasData($vorlage)) { // Builds where clause - $where = $this->_where($vorlage_kurzbz, $orgform_kurzbz, $sprache); + $where = $this->_where($vorlage_kurzbz); $vorlage = $this->ci->organisationseinheitlib->treeSearch( 'public', @@ -134,20 +134,11 @@ class VorlageLib /** * _where */ - private function _where($vorlage_kurzbz, $orgform_kurzbz, $sprache) + private function _where($vorlage_kurzbz) { // Builds where clause $where = "vorlage_kurzbz = ".$this->ci->VorlageModel->escape($vorlage_kurzbz); - if (is_null($sprache)) - { - $where .= " AND sprache IS NULL"; - } - else - { - $where .= " AND sprache = ".$this->ci->VorlageModel->escape($sprache); - } - $where .= " AND aktiv = true"; return $where; diff --git a/application/models/codex/Aufenthaltfoerderung_model.php b/application/models/codex/Aufenthaltfoerderung_model.php new file mode 100644 index 000000000..b650b3a05 --- /dev/null +++ b/application/models/codex/Aufenthaltfoerderung_model.php @@ -0,0 +1,14 @@ +dbTable = 'bis.tbl_aufenthaltfoerderung'; + $this->pk = 'aufenthaltfoerderung_code'; + } +} diff --git a/application/models/codex/Oehbeitrag_model.php b/application/models/codex/Oehbeitrag_model.php new file mode 100644 index 000000000..0df016ba8 --- /dev/null +++ b/application/models/codex/Oehbeitrag_model.php @@ -0,0 +1,107 @@ +dbTable = 'bis.tbl_oehbeitrag'; + $this->pk = 'oehbeitrag_id'; + } + + /** + * Gets oehbeitrag data valid for a certain Studiensemester. + * @param string $studiensemester_kurzbz + * @return object + */ + public function getByStudiensemester($studiensemester_kurzbz) + { + $qry = "WITH semstart AS ( + SELECT start FROM public.tbl_studiensemester + WHERE studiensemester_kurzbz = ? + ) + SELECT * FROM bis.tbl_oehbeitrag oehb + JOIN public.tbl_studiensemester semvon ON oehb.von_studiensemester_kurzbz = semvon.studiensemester_kurzbz + LEFT JOIN public.tbl_studiensemester sembis ON oehb.bis_studiensemester_kurzbz = sembis.studiensemester_kurzbz + JOIN semstart ON semstart.start::date >= semvon.start::date AND (sembis.studiensemester_kurzbz IS NULL OR semstart.start::date <= sembis.start::date) + ORDER BY semvon.start + LIMIT 1"; + + return $this->execQuery($qry, array($studiensemester_kurzbz)); + } + + /** + * Gets all Studiensemester for which no Oehbeitrag value assignment exists. + * @param string $start_studiensemester_kurzbz semester before the given semester are ignored + * @param array $excluded_oehbeitrag_id oehbeitraege to be ignored, i.e. which are assigned + * @return object + */ + public function getUnassignedStudiensemester($start_studiensemester_kurzbz, $excluded_oehbeitrag_id = array()) + { + $params = array($start_studiensemester_kurzbz); + + $qry = "SELECT * FROM public.tbl_studiensemester sem + WHERE sem.start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?) + AND NOT EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag oeh + JOIN public.tbl_studiensemester oeh_von ON oeh.von_studiensemester_kurzbz = oeh_von.studiensemester_kurzbz + LEFT JOIN public.tbl_studiensemester oeh_bis ON oeh.bis_studiensemester_kurzbz = oeh_bis.studiensemester_kurzbz + WHERE sem.start::date >= oeh_von.start::date AND (sem.start::date <= oeh_bis.start::date OR oeh_bis.studiensemester_kurzbz IS NULL)"; + + if (!isEmptyArray($excluded_oehbeitrag_id)) + { + $qry .= " AND oehbeitrag_id NOT IN ?"; + $params[] = $excluded_oehbeitrag_id; + } + + $qry .= ") ORDER BY sem.start"; + + return $this->execQuery($qry, $params); + } + + /** + * Checks if a Öhbeitrag can be assigned for a Studiensemester range. + * @param string $von_studiensemester_kurzbz + * @param string $bis_studiensemester_kurzbz + * @param array $excluded_oehbeitrag_id oehbeitraege to ignore, i.e. which are assignable + * @return object array with true if assignable, with false if not + */ + public function checkIfStudiensemesterAssignable($von_studiensemester_kurzbz, $bis_studiensemester_kurzbz = null, $excluded_oehbeitrag_id = array()) + { + $params = array($von_studiensemester_kurzbz); + + $allStdSemSpanQry = "SELECT count(studiensemester_kurzbz) as number_assigned FROM public.tbl_studiensemester sem + WHERE start >= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?)"; + + if ($bis_studiensemester_kurzbz != null) + { + $allStdSemSpanQry .= " AND (start <= (SELECT start FROM public.tbl_studiensemester WHERE studiensemester_kurzbz = ?))"; + $params[] = $bis_studiensemester_kurzbz; + } + + $allStdSemSpanQry .= " AND EXISTS (SELECT 1 FROM bis.tbl_oehbeitrag + JOIN public.tbl_studiensemester sem_von ON tbl_oehbeitrag.von_studiensemester_kurzbz = sem_von.studiensemester_kurzbz + LEFT JOIN public.tbl_studiensemester sem_bis ON tbl_oehbeitrag.bis_studiensemester_kurzbz = sem_bis.studiensemester_kurzbz + WHERE sem.start >= sem_von.start AND (sem.start <= sem_bis.start OR sem_bis.studiensemester_kurzbz IS NULL)"; + + if (!isEmptyArray($excluded_oehbeitrag_id)) + { + $allStdSemSpanQry .= " AND oehbeitrag_id NOT IN ?"; + $params[] = $excluded_oehbeitrag_id; + } + + $allStdSemSpanQry .= ")"; + + $nrAssigned = $this->execQuery($allStdSemSpanQry, $params); + + if (isError($nrAssigned)) + return $nrAssigned; + + if (!hasData($nrAssigned)) + return error("Fehler bei Überprüfung der Möglichkeit der Semesterzuweisung"); + + return success(array(getData($nrAssigned)[0]->number_assigned == 0)); + } +} diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 5589e5049..5db9a98f1 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -611,7 +611,7 @@ class Prestudent_model extends DB_Model )); } - public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester) + public function getPrestudentByStudiengangAndPerson($studiengang, $person, $studienSemester, $abgeschickt) { $query = "SELECT ps.prestudent_id FROM public.tbl_prestudentstatus pss @@ -621,8 +621,49 @@ class Prestudent_model extends DB_Model WHERE ps.person_id = ? AND UPPER((sg.typ || sg.kurzbz) || ':' || sp.orgform_kurzbz) = ? AND pss.studiensemester_kurzbz = ? - "; + AND"; + + if ($abgeschickt === 'true') + $query .= " EXISTS"; + else + $query .= " NOT EXISTS"; + + $query .= " (SELECT 1 FROM public.tbl_prestudentstatus spss + JOIN public.tbl_prestudent sps USING(prestudent_id) + WHERE sps.prestudent_id = ps.prestudent_id + AND spss.bewerbung_abgeschicktamum IS NOT NULL)"; return $this->execQuery($query, array($person, $studiengang, $studienSemester)); } + + /** + * Gets förderrelevant flag for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang + * @param int $prestudent_id + * @return object + */ + public function getFoerderrelevant($prestudent_id) + { + $query = 'SELECT COALESCE (ps.foerderrelevant, stg.foerderrelevant) AS foerderrelevant + FROM public.tbl_prestudent ps + LEFT JOIN public.tbl_studiengang stg USING (studiengang_kz) + WHERE prestudent_id = ?'; + + return $this->execQuery($query, array($prestudent_id)); + } + + /** + * Gets bis standort_code for a prestudent, from prestudent, or, if not set on prestudent level, from studiengang + * @param int $prestudent_id + * @return object + */ + public function getStandortCode($prestudent_id) + { + $query = 'SELECT COALESCE (ps.standort_code, stg.standort_code) AS standort_code + FROM public.tbl_prestudent ps + LEFT JOIN public.tbl_studiengang stg USING (studiengang_kz) + WHERE prestudent_id = ?'; + + return $this->execQuery($query, array($prestudent_id)); + } + } diff --git a/application/models/education/Pruefung_model.php b/application/models/education/Pruefung_model.php index d10364979..e3776c4ad 100644 --- a/application/models/education/Pruefung_model.php +++ b/application/models/education/Pruefung_model.php @@ -11,4 +11,29 @@ class Pruefung_model extends DB_Model $this->dbTable = 'campus.tbl_pruefung'; $this->pk = 'pruefung_id'; } + + /** + * Gets Pruefungen of a person for a Studiensemester. + * @param int $person_id + * @param string $studiensemester_kurzbz + * @return object + */ + public function getByPerson($person_id, $studiensemester_kurzbz) + { + $qry = ' + SELECT prfg.*, pers.matr_nr, lv.ects, stg.studiengang_kz, prst.prestudent_id, + UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung + FROM public.tbl_person pers + JOIN public.tbl_prestudent prst USING (person_id) + JOIN public.tbl_student USING (prestudent_id) + JOIN lehre.tbl_pruefung prfg USING (student_uid) + JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) + JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) + JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz + WHERE pers.person_id = ? + AND le.studiensemester_kurzbz = ? + ORDER BY prfg.datum, pruefung_id'; + + return $this->execQuery($qry, array($person_id, $studiensemester_kurzbz)); + } } diff --git a/application/models/education/Zeugnisnote_model.php b/application/models/education/Zeugnisnote_model.php index 7ed0e6456..65607e252 100644 --- a/application/models/education/Zeugnisnote_model.php +++ b/application/models/education/Zeugnisnote_model.php @@ -12,4 +12,125 @@ class Zeugnisnote_model extends DB_Model $this->pk = array('studiensemester_kurzbz', 'student_uid', 'lehrveranstaltung_id'); $this->hasSequence = false; } + + /** + * Gets ECTS sums of completed courses (Zeugnisnoten) of a person for a Studiensemester. + * If no valid Noten for the course were entered, 0 ects is returned. + * @param int $person_id + * @param string $studiensemester_kurzbz + * @param bool $aktiv + * @param bool $lehre + * @param bool $offiziell + * @param bool $positiv + * @return object + */ + public function getEctsSumsByPerson($person_id, $studiensemester_kurzbz, $aktiv = true, $lehre = null, $offiziell = null, $positiv = null) + { + $params = array(); + + $qry = "SELECT DISTINCT ON (prst.prestudent_id) pers.matr_nr, stg.studiengang_kz, prst.prestudent_id, stg.erhalter_kz, + UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung, COALESCE(summen.summe_ects, 0) AS summe_ects + FROM public.tbl_person pers + JOIN public.tbl_prestudent prst USING (person_id) + JOIN public.tbl_prestudentstatus prstst USING (prestudent_id) + JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz + LEFT JOIN ( + SELECT zgnisnote.student_uid, prestudent_id, zgnisnote.studiensemester_kurzbz, sum(ects) AS summe_ects + FROM public.tbl_student + LEFT JOIN lehre.tbl_zeugnisnote zgnisnote USING(student_uid) + LEFT JOIN lehre.tbl_note note ON zgnisnote.note = note.note + LEFT JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) + WHERE TRUE"; + + if (isset($aktiv)) + { + $qry .= ' AND (note.aktiv = ?)'; + $params[] = $aktiv; + } + + if (isset($lehre)) + { + $qry .= ' AND (note.lehre = ?)'; + $params[] = $lehre; + } + + if (isset($offiziell)) + { + $qry .= ' AND (note.offiziell = ?)'; + $params[] = $offiziell; + } + + if (isset($positiv)) + { + $qry .= ' AND (note.positiv = ?)'; + $params[] = $positiv; + } + + $qry .= " GROUP BY zgnisnote.studiensemester_kurzbz, zgnisnote.student_uid, prestudent_id + ) summen ON prst.prestudent_id = summen.prestudent_id AND prstst.studiensemester_kurzbz = summen.studiensemester_kurzbz + WHERE pers.person_id = ? + AND prstst.studiensemester_kurzbz = ? + ORDER BY prst.prestudent_id"; + + $params[] = $person_id; + $params[] = $studiensemester_kurzbz; + + return $this->execQuery($qry, $params); + } + + /** + * Gets courses (Zeugnisnoten) of a person for a Studiensemester. + * @param int $person_id + * @param string $studiensemester_kurzbz + * @param bool $aktiv + * @param bool $lehre + * @param bool $offiziell + * @param bool $positiv + * @return object + */ + public function getByPerson($person_id, $studiensemester_kurzbz, $aktiv = true, $lehre = null, $offiziell = null, $positiv = null) + { + $params = array($person_id, $studiensemester_kurzbz); + + $qry = "SELECT zgnisnote.*, pers.matr_nr, lv.ects, stg.studiengang_kz, prst.prestudent_id, stg.erhalter_kz, + UPPER(stg.typ||stg.kurzbz) AS studiengang, stg.bezeichnung AS studiengang_bezeichnung, note.note, + note.bezeichnung AS note_bezeichnung + FROM public.tbl_person pers + JOIN public.tbl_prestudent prst USING (person_id) + JOIN public.tbl_student USING (prestudent_id) + JOIN lehre.tbl_zeugnisnote zgnisnote USING (student_uid) + JOIN lehre.tbl_note note ON zgnisnote.note = note.note + JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) + JOIN public.tbl_studiengang stg ON prst.studiengang_kz = stg.studiengang_kz + WHERE pers.person_id = ? + AND zgnisnote.studiensemester_kurzbz = ?"; + + if (isset($aktiv)) + { + $qry .= ' AND note.aktiv = ?'; + $params[] = $aktiv; + } + + if (isset($lehre)) + { + $qry .= ' AND note.lehre = ?'; + $params[] = $lehre; + } + + if (isset($offiziell)) + { + $qry .= ' AND note.offiziell = ?'; + $params[] = $offiziell; + } + + if (isset($positiv)) + { + $qry .= ' AND note.positiv = ?'; + $params[] = $positiv; + } + + $qry .= ' ORDER BY zgnisnote.benotungsdatum'; + + return $this->execQuery($qry, $params); + } } diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php index e005e243c..ec5522674 100644 --- a/application/models/person/Person_model.php +++ b/application/models/person/Person_model.php @@ -152,34 +152,36 @@ class Person_model extends DB_Model */ public function getPersonStammdaten($person_id, $zustellung_only = false) { - $this->addSelect('public.tbl_person.*, s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation'); + $this->addSelect('public.tbl_person.*, tbl_person.staatsbuergerschaft AS staatsbuergerschaft_code, tbl_person.geburtsnation AS geburtsnation_code, + s.kurztext as staatsbuergerschaft, g.kurztext as geburtsnation'); $this->addJoin('bis.tbl_nation s', 'public.tbl_person.staatsbuergerschaft = s.nation_code', 'LEFT'); $this->addJoin('bis.tbl_nation g', 'public.tbl_person.geburtsnation = g.nation_code', 'LEFT'); $person = $this->load($person_id); - if($person->error) return $person; + if (isError($person)) return $person; //return null if not found - if(count($person->retval) < 1) + if (!hasData($person)) return success(null); - $this->KontaktModel->addDistinct(); $this->KontaktModel->addSelect('kontakttyp, anmerkung, kontakt, zustellung'); $this->KontaktModel->addOrder('kontakttyp'); + $this->KontaktModel->addOrder('insertamum', 'DESC'); $where = $zustellung_only === true ? array('person_id' => $person_id, 'zustellung' => true) : array('person_id' => $person_id); $kontakte = $this->KontaktModel->loadWhere($where); - if($kontakte->error) return $kontakte; + if (isError($kontakte)) return $kontakte; $where = $zustellung_only === true ? array('person_id' => $person_id, 'zustelladresse' => true) : array('person_id' => $person_id); $this->AdresseModel->addSelect('public.tbl_adresse.*, bis.tbl_nation.kurztext AS nationkurztext'); $this->AdresseModel->addJoin('bis.tbl_nation', 'tbl_adresse.nation = tbl_nation.nation_code', 'LEFT'); + $this->AdresseModel->addOrder('insertamum', 'DESC'); $adressen = $this->AdresseModel->loadWhere($where); - if($adressen->error) return $adressen; + if (isError($adressen)) return $adressen; - $stammdaten = $person->retval[0]; - $stammdaten->kontakte = $kontakte->retval; - $stammdaten->adressen = $adressen->retval; + $stammdaten = getData($person)[0]; + $stammdaten->kontakte = hasData($kontakte) ? getData($kontakte) : array(); + $stammdaten->adressen = hasData($adressen) ? getData($adressen) : array(); return success($stammdaten); } @@ -263,4 +265,19 @@ class Person_model extends DB_Model return success($result->vorname. ' '. $result->nachname); } + + public function checkDuplicate($person_id) + { + $qry = "SELECT sp.person_id + FROM public.tbl_person p + LEFT JOIN public.tbl_person sp ON p.vorname = sp.vorname + AND p.nachname = sp.nachname + AND p.gebdatum = sp.gebdatum + JOIN public.tbl_prestudent ps ON sp.person_id = ps.person_id + JOIN public.tbl_prestudentstatus pss ON ps.prestudent_id = pss.prestudent_id + WHERE p.person_id = ? AND sp.person_id != ? AND pss.status_kurzbz = ?"; + + + return $this->execQuery($qry, array($person_id, $person_id, 'Abbrecher')); + } } diff --git a/application/models/ressource/Betriebsmittelperson_model.php b/application/models/ressource/Betriebsmittelperson_model.php index 87915cfa8..1a97d9e38 100644 --- a/application/models/ressource/Betriebsmittelperson_model.php +++ b/application/models/ressource/Betriebsmittelperson_model.php @@ -18,7 +18,7 @@ class Betriebsmittelperson_model extends DB_Model * @param bool $isRetourniert False to retrieve only active Betriebsmittel. * @return array|bool */ - public function getBetriebsmittel($person_id, $betriebsmitteltyp = null, $isRetourniert = null) + public function getBetriebsmittel($person_id, $betriebsmitteltyp = null, $isRetourniert = null, $onlyAktiveBenutzer=false) { if (!is_numeric($person_id)) { @@ -28,8 +28,12 @@ class Betriebsmittelperson_model extends DB_Model $this->addJoin('wawi.tbl_betriebsmittel', 'betriebsmittel_id'); + if( $onlyAktiveBenutzer ) { + $this->addJoin('public.tbl_benutzer b', 'b.uid = wawi.tbl_betriebsmittelperson.uid AND b.aktiv = \'t\''); + } + $condition = ' - person_id = '. $this->escape($person_id). ' + wawi.tbl_betriebsmittelperson.person_id = '. $this->escape($person_id). ' '; if (is_string($betriebsmitteltyp)) { diff --git a/application/models/system/Fehler_model.php b/application/models/system/Fehler_model.php new file mode 100644 index 000000000..28618f6d9 --- /dev/null +++ b/application/models/system/Fehler_model.php @@ -0,0 +1,14 @@ +dbTable = 'system.tbl_fehler'; + $this->pk = 'fehlercode'; + } +} diff --git a/application/models/system/Issue_model.php b/application/models/system/Issue_model.php new file mode 100644 index 000000000..5dac85066 --- /dev/null +++ b/application/models/system/Issue_model.php @@ -0,0 +1,51 @@ +dbTable = 'system.tbl_issue'; + $this->pk = 'issue_id'; + } + + /** + * Gets number of open (non-resolved) issues. + * @param string $fehlercode unique error code + * @param int $person_id if provided, only issues with this person_id are counted. + * @param string $oe_kurzbz if provided, only issues with this oe_kurzbz are counted. + * @param string $fehlercode_extern if provided, only issues with this external fehlercode are counted (for identifying issues from external systems). + * @return Object success with number of issues or error + */ + public function getOpenIssueCount($fehlercode, $person_id = null, $oe_kurzbz = null, $fehlercode_extern = null) + { + $params = array($fehlercode); + // issue exists for a fehlercode (or fehlercode_extern), person_id, oe_kurzbz, if not verarbeitet yet + $qry = 'SELECT count(*) as anzahl_open_issues FROM system.tbl_issue + WHERE fehlercode = ? + AND verarbeitetamum IS NULL'; + + if (!isEmptyString($fehlercode_extern)) + { + $qry .= ' AND fehlercode_extern = ?'; + $params[] = $fehlercode_extern; + } + + if (isset($person_id)) + { + $qry .= ' AND person_id = ?'; + $params[] = $person_id; + } + + if (isset($oe_kurzbz)) + { + $qry .= ' AND oe_kurzbz = ?'; + $params[] = $oe_kurzbz; + } + + return $this->execQuery($qry, $params); + } +} diff --git a/application/views/codex/oehbeitrag.php b/application/views/codex/oehbeitrag.php new file mode 100644 index 000000000..8a697129e --- /dev/null +++ b/application/views/codex/oehbeitrag.php @@ -0,0 +1,68 @@ +load->view( + 'templates/FHC-Header', + array( + 'title' => 'ÖH-Beitragsverwaltung', + 'jquery' => true, + 'jqueryui' => true, + 'bootstrap' => true, + 'fontawesome' => true, + 'sbadmintemplate' => true, + 'tablesorter' => true, + 'dialoglib' => true, + 'ajaxlib' => true, + 'navigationwidget' => true, + 'phrases' => array( + 'person' => array('vorname', 'nachname'), + 'global' => array('unbeschraenkt'), + 'ui' => array('bearbeiten', 'loeschen', 'speichern', 'entfernen'), + 'oehbeitrag' => array('oehbeitraegeFestgelegt', 'fehlerHolenOehbeitraege', 'fehlerHolenSemester', + 'fehlerHinzufuegenOehbeitrag', 'fehlerAktualisierenOehbeitrag', + 'fehlerLoeschenOehbeitrag') + ), + 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/codex/oehbeitrag.css'), + 'customJSs' => array('public/js/tablesort/tablesort.js', 'public/js/codex/oehbeitrag.js') + ) +); +?> + + +
+ + widgetlib->widget('NavigationWidget'); ?> + +
+
+
+
+ +
+
+
+
+ +
+
+ + + + + + + + + + + + +
p->t('global', 'gueltigVon')) ?>p->t('global', 'gueltigBis')) ?>p->t('oehbeitrag', 'studierendenbetrag')) ?>p->t('oehbeitrag', 'versicherungsbetrag')) ?>p->t('ui', 'aktion')) ?>
+
+
+
+
+
+ + +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php index 7c9669ae3..635fd9da9 100644 --- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php +++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php @@ -2,7 +2,7 @@ $STUDIENSEMESTER = $studiensemester_selected; $ORGANISATIONSEINHEIT = (isset($organisationseinheit_selected) && !is_null($organisationseinheit_selected)) ? array($organisationseinheit_selected) : $organisationseinheit; -$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8'; +$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8,9,10'; $query = ' SELECT @@ -187,7 +187,7 @@ FROM (SELECT uid FROM - public.tbl_benutzer JOIN public.tbl_mitarbeiter ma + public.tbl_benutzer JOIN public.tbl_mitarbeiter ma ON tbl_benutzer.uid = ma.mitarbeiter_uid WHERE person_id = tmp_projektbetreuung.person_id @@ -268,7 +268,7 @@ FROM ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - (vorname || \' \' || nachname) AS "lektor", + (nachname || \' \' || vorname) AS "lektor", TRUNC(pb.stunden, 1) AS "stunden", TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", vertrag_id, diff --git a/application/views/lehre/lehrauftrag/orderLehrauftrag.php b/application/views/lehre/lehrauftrag/orderLehrauftrag.php index 4498dacb4..023df1ac7 100644 --- a/application/views/lehre/lehrauftrag/orderLehrauftrag.php +++ b/application/views/lehre/lehrauftrag/orderLehrauftrag.php @@ -160,7 +160,7 @@ $this->load->view( 'Ausbildungssemester_widget', array( DropdownWidget::SELECTED_ELEMENT => $ausbildungssemester_selected, - 'number_semester' => 6 + 'number_semester' => 10 ), array( 'name' => 'ausbildungssemester', diff --git a/application/views/lehre/lehrauftrag/orderLehrauftragData.php b/application/views/lehre/lehrauftrag/orderLehrauftragData.php index 1ccfc55a4..c272c392c 100644 --- a/application/views/lehre/lehrauftrag/orderLehrauftragData.php +++ b/application/views/lehre/lehrauftrag/orderLehrauftragData.php @@ -2,7 +2,7 @@ $STUDIENSEMESTER = $studiensemester_selected; $STUDIENGANG = (isset($studiengang_selected) && !is_null($studiengang_selected)) ? array($studiengang_selected) : $studiengang; -$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8'; +$AUSBILDUNGSSEMESTER = (isset($ausbildungssemester_selected) && !is_null($ausbildungssemester_selected)) ? $ausbildungssemester_selected : '1,2,3,4,5,6,7,8,9,10'; $query = ' SELECT diff --git a/application/views/system/infocenter/dokpruefung.php b/application/views/system/infocenter/dokpruefung.php index 95e383569..f7446895c 100644 --- a/application/views/system/infocenter/dokpruefung.php +++ b/application/views/system/infocenter/dokpruefung.php @@ -22,7 +22,7 @@ titel) ? $dokument->bezeichnung : $dokument->titel ?> - autocomplete="off"> bezeichnung === $dokument->dokument_bezeichnung ? 'selected' : '') . " value = " . $dokumenttyp->dokument_kurzbz . ">" . $dokumenttyp->bezeichnung . "" diff --git a/application/views/system/infocenter/infocenterAbgewiesen.php b/application/views/system/infocenter/infocenterAbgewiesen.php new file mode 100644 index 000000000..8e946e573 --- /dev/null +++ b/application/views/system/infocenter/infocenterAbgewiesen.php @@ -0,0 +1,50 @@ +load->view( + 'templates/FHC-Header', + array( + 'title' => 'Info Center', + 'jquery' => true, + 'jqueryui' => true, + 'jquerycheckboxes' => true, + 'bootstrap' => true, + 'fontawesome' => true, + 'sbadmintemplate' => true, + 'tablesorter' => true, + 'ajaxlib' => true, + 'filterwidget' => true, + 'navigationwidget' => true, + 'dialoglib' => true, + 'phrases' => array( + 'person' => array('vorname', 'nachname'), + 'global' => array('mailAnXversandt'), + 'ui' => array('bitteEintragWaehlen') + ), + 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'), + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') + ) + ); +?> + + +
+ + widgetlib->widget('NavigationWidget'); ?> + +
+
+
+
+ +
+
+
+ load->view('system/infocenter/infocenterAbgewiesenData.php'); ?> +
+
+
+
+ + +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php new file mode 100644 index 000000000..dbe0540be --- /dev/null +++ b/application/views/system/infocenter/infocenterAbgewiesenData.php @@ -0,0 +1,87 @@ +config->load('infocenter'); + $ABGEWIESENEN_STATUS = '\'Abgewiesener\''; + $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; + $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); + $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; + $LOGDATA_NAME = '\'Message sent\''; + $LOGDATA_VON = '\'online\''; + +$query = ' + SELECT + p.person_id AS "PersonID", + ps.prestudent_id AS "PreStudentID", + p.vorname AS "Vorname", + p.nachname AS "Nachname", + sg.kurzbzlang as "Studiengang", + pss.insertamum AS "AbgewiesenAm", + ( + SELECT l.zeitpunkt + FROM system.tbl_log l + WHERE l.person_id = p.person_id + AND '. $LOGDATA_NAME .' = ( + SELECT l.logdata->>\'name\' + FROM system.tbl_log l + WHERE l.person_id = p.person_id + ORDER BY l.log_id DESC + LIMIT 1 + ) + AND '. $LOGDATA_VON .' = ( + SELECT l.insertvon + FROM system.tbl_log l + WHERE l.person_id = p.person_id + ORDER BY l.log_id DESC + LIMIT 1 + ) + AND l.zeitpunkt >= pss.insertamum + ORDER BY l.log_id DESC + LIMIT 1 + ) AS "Nachricht" + FROM + public.tbl_prestudentstatus pss + JOIN public.tbl_prestudent ps USING(prestudent_id) + JOIN public.tbl_person p USING(person_id) + JOIN public.tbl_studiengang sg USING(studiengang_kz) + WHERE pss.status_kurzbz = '. $ABGEWIESENEN_STATUS .' + AND pss.studiensemester_kurzbz = '. $STUDIENSEMESTER .' + AND (sg.typ IN ('. $STUDIENGANG_TYP .') + OR + sg.studiengang_kz IN ('. $ADDITIONAL_STG .') + ) + ORDER BY "AbgewiesenAm" DESC'; + + $filterWidgetArray = array( + 'query' => $query, + 'app' => InfoCenter::APP, + 'datasetName' => 'abgewiesen', + 'filter_id' => $this->input->get('filter_id'), + 'requiredPermissions' => 'infocenter', + 'datasetRepresentation' => 'tablesorter', + 'columnsAliases' => array( + 'PersonID', + 'PreStudentID', + 'Vorname', + 'Nachname', + 'Studiengang', + 'Abgewiesen am', + 'Nachricht' + ), + + 'formatRow' => function($datasetRaw) { + if ($datasetRaw->{'Nachricht'} === null) + { + $datasetRaw->{'Nachricht'} = 'Nein'; + } + else + { + $datasetRaw->{'Nachricht'} = 'Ja'; + } + + $datasetRaw->{'AbgewiesenAm'} = date_format(date_create($datasetRaw->{'AbgewiesenAm'}),'Y-m-d H:i'); + return $datasetRaw; + } + ); + + echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); +?> diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index d0e0a7126..d867c8613 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -6,7 +6,7 @@ $INTERESSENT_STATUS = '\'Interessent\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; - $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\', \'Interessent rejected\''; + $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Interessent rejected\', \'Attempt to register with existing mailadress\''; $LOGDATA_NAME_PARKED = '\'Parked\''; $LOGDATA_NAME_ONHOLD = '\'Onhold\''; $LOGTYPE_KURZBZ = '\'Processstate\''; @@ -14,6 +14,7 @@ $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); $AKTE_TYP = '\'identity\', \'zgv_bakk\''; $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; + $ORG_NAME = '\'InfoCenter\''; $query = ' SELECT @@ -33,7 +34,7 @@ WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "LastAction", ( @@ -42,7 +43,7 @@ WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "LastActionType", ( @@ -54,12 +55,14 @@ a.dokument_kurzbz in ('.$AKTE_TYP.') ) AS "AnzahlAkte", ( - SELECT l.insertvon + SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END FROM system.tbl_log l + LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid + LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "User/Operator", ( @@ -254,13 +257,14 @@ JOIN public.tbl_organisationseinheit USING(oe_kurzbz) WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) + AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.' AND tbl_benutzerfunktion.uid = ( SELECT l.insertvon FROM system.tbl_log l WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) LIMIT 1 @@ -269,8 +273,10 @@ LEFT JOIN ( SELECT tpl.person_id, tpl.zeitpunkt, - tpl.uid AS lockuser + sp.nachname AS lockuser FROM system.tbl_person_lock tpl + JOIN public.tbl_benutzer sb USING (uid) + JOIN public.tbl_person sp ON sb.person_id = sp.person_id WHERE tpl.app = '.$APP.' ) pl USING(person_id) LEFT JOIN ( @@ -439,13 +445,13 @@ $datasetRaw->{'ZGVMNation'} = '-'; } - if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter') + if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) { - $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja'; + $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; } else { - $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; + $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja'; } return $datasetRaw; diff --git a/application/views/system/infocenter/infocenterDetails.php b/application/views/system/infocenter/infocenterDetails.php index 30acb8617..76a371c11 100644 --- a/application/views/system/infocenter/infocenterDetails.php +++ b/application/views/system/infocenter/infocenterDetails.php @@ -101,6 +101,22 @@ + +
+

+ p->t('global', 'bewerberVorhanden') . ':'; ?> +

+
+ person_id . '
'; + } + ?> +
+ +
+
diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php index 26c30d718..39b1e3cca 100644 --- a/application/views/system/infocenter/infocenterFreigegebenData.php +++ b/application/views/system/infocenter/infocenterFreigegebenData.php @@ -5,13 +5,14 @@ $INTERESSENT_STATUS = '\'Interessent\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; - $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\''; + $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\''; $REJECTED_STATUS = '\'Abgewiesener\''; $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); $STATUS_KURZBZ = '\'Wartender\', \'Bewerber\', \'Aufgenommener\', \'Student\''; $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; + $ORG_NAME = '\'InfoCenter\''; - $query = ' +$query = ' SELECT p.person_id AS "PersonId", p.vorname AS "Vorname", @@ -27,7 +28,7 @@ WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "LastAction", ( @@ -36,16 +37,18 @@ WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "LastActionType", ( - SELECT l.insertvon + SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END FROM system.tbl_log l + LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid + LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "User/Operator", ( @@ -231,13 +234,14 @@ JOIN public.tbl_organisationseinheit USING(oe_kurzbz) WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) + AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.' AND tbl_benutzerfunktion.uid = ( SELECT l.insertvon FROM system.tbl_log l WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) LIMIT 1 @@ -246,8 +250,10 @@ LEFT JOIN ( SELECT tpl.person_id, tpl.zeitpunkt, - tpl.uid AS lockuser + sp.nachname AS lockuser FROM system.tbl_person_lock tpl + JOIN public.tbl_benutzer sb USING (uid) + JOIN public.tbl_person sp ON sb.person_id = sp.person_id WHERE tpl.app = '.$APP.' ) pl USING(person_id) WHERE @@ -410,13 +416,13 @@ $datasetRaw->{'ZGVMNation'} = '-'; } - if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter') + if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) { - $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja'; + $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; } else { - $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; + $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja'; } return $datasetRaw; diff --git a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php index 81ddd2594..dbc0124bc 100644 --- a/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php +++ b/application/views/system/infocenter/infocenterReihungstestAbsolviertData.php @@ -5,11 +5,12 @@ $INTERESSENT_STATUS = '\'Interessent\''; $STUDIENGANG_TYP = '\''.$this->variablelib->getVar('infocenter_studiensgangtyp').'\''; $TAETIGKEIT_KURZBZ = '\'bewerbung\', \'kommunikation\''; - $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'New application\''; + $LOGDATA_NAME = '\'Login with code\', \'Login with user\', \'Attempt to register with existing mailadress\''; $ADDITIONAL_STG = $this->config->item('infocenter_studiengang_kz'); $STUDIENSEMESTER = '\''.$this->variablelib->getVar('infocenter_studiensemester').'\''; + $ORG_NAME = '\'InfoCenter\''; - $query = ' +$query = ' SELECT p.person_id AS "PersonId", p.vorname AS "Vorname", @@ -25,7 +26,7 @@ WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "LastAction", ( @@ -34,7 +35,7 @@ WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) AS "User/Operator", ( @@ -182,13 +183,14 @@ JOIN public.tbl_organisationseinheit USING(oe_kurzbz) WHERE (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von <= now()) AND (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis >= now()) + AND tbl_organisationseinheit.bezeichnung = '.$ORG_NAME.' AND tbl_benutzerfunktion.uid = ( SELECT l.insertvon FROM system.tbl_log l WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.') AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.') AND l.person_id = p.person_id - ORDER BY l.zeitpunkt DESC + ORDER BY l.log_id DESC LIMIT 1 ) LIMIT 1 @@ -347,13 +349,13 @@ $datasetRaw->{'ZGVMNation'} = '-'; } - if ($datasetRaw->{'InfoCenterMitarbeiter'} === 'InfoCenter') + if ($datasetRaw->{'InfoCenterMitarbeiter'} === null) { - $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja'; + $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; } else { - $datasetRaw->{'InfoCenterMitarbeiter'} = 'Nein'; + $datasetRaw->{'InfoCenterMitarbeiter'} = 'Ja'; } return $datasetRaw; diff --git a/application/views/system/issues/issues.php b/application/views/system/issues/issues.php new file mode 100644 index 000000000..9812528d5 --- /dev/null +++ b/application/views/system/issues/issues.php @@ -0,0 +1,49 @@ +load->view( + 'templates/FHC-Header', + array( + 'title' => 'Fehler Monitoring', + 'jquery' => true, + 'jqueryui' => true, + 'jquerycheckboxes' => true, + 'bootstrap' => true, + 'fontawesome' => true, + 'sbadmintemplate' => true, + 'tablesorter' => true, + 'ajaxlib' => true, + 'filterwidget' => true, + 'navigationwidget' => true, + 'dialoglib' => true, + 'phrases' => array( + 'ui', + 'fehlermonitoring' + ), + 'customCSSs' => array('public/css/issues/issuesDataset.css', 'public/css/sbadmin2/tablesort_bootstrap.css'), + 'customJSs' => array('public/js/issues/issuesDataset.js', 'public/js/bootstrapper.js'), + ) +); +?> + + +
+ + widgetlib->widget('NavigationWidget'); ?> + +
+
+
+
+ +
+
+
+ load->view('system/issues/issuesData.php'); ?> +
+
+
+
+ + +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/system/issues/issuesData.php b/application/views/system/issues/issuesData.php new file mode 100644 index 000000000..c9a1d3828 --- /dev/null +++ b/application/views/system/issues/issuesData.php @@ -0,0 +1,198 @@ + $funktionen_kurzbz) + { + foreach ($funktionen_kurzbz as $funktion_kurzbz) + { + $query .= " OR (zst.oe_kurzbz = '$oe_kurzbz' AND zst.funktion_kurzbz = '$funktion_kurzbz')"; + } + } + } + + $query .= " THEN TRUE + ELSE FALSE + END AS \"zustaendig\" + FROM system.tbl_fehler_zustaendigkeiten zst + )"; + +$query .= "SELECT issue_id, fehlercode AS \"Fehlercode\", iss.fehlercode_extern AS \"Fehlercode extern\", datum AS \"Datum\", + inhalt AS \"Inhalt\", inhalt_extern AS \"Inhalt extern\", iss.person_id AS \"PersonId\", iss.oe_kurzbz AS \"OE\", + ftyp.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlertyp\", stat.bezeichnung_mehrsprachig[".$LANGUAGE_INDEX."] AS \"Fehlerstatus\", + verarbeitetvon AS \"Verarbeitet von\",verarbeitetamum AS \"Verarbeitet am\", fr.app AS \"Applikation\", + fr.fehlertyp_kurzbz AS \"Fehlertypcode\", iss.status_kurzbz AS \"Statuscode\", + pers.vorname AS \"Vorname\", pers.nachname AS \"Nachname\", + CASE + WHEN + EXISTS(SELECT 1 + FROM zustaendigkeiten + WHERE fehlercode = iss.fehlercode + AND zustaendig = TRUE) /* If Zuständigkeit is defined for the oe/person, zustaendig. */ + THEN 'Ja' + WHEN + EXISTS(SELECT 1 + FROM zustaendigkeiten + WHERE fehlercode = iss.fehlercode + AND zustaendig = FALSE) /* If Zuständigkeit is defined for different oe/person, not zustaendig. */ + THEN 'Nein' + ELSE 'Ja' /* If no Zuständigkeit defined, zustaendig by default. */ + END AS \"Hauptzuständig\" + FROM system.tbl_issue iss + JOIN system.tbl_fehler fr USING (fehlercode) + JOIN system.tbl_fehlertyp ftyp USING (fehlertyp_kurzbz) + JOIN system.tbl_issue_status stat USING (status_kurzbz) + LEFT JOIN public.tbl_person pers ON iss.person_id = pers.person_id + WHERE EXISTS ( /* if oe or person is specified in fehler_zustaendigkeiten */ + SELECT 1 FROM zustaendigkeiten + WHERE fehlercode = iss.fehlercode + AND zustaendig = TRUE)"; + +// show issue if it is assigend to oe of logged in user or to student of oe of logged in user +if (!isEmptyArray($all_oe_kurzbz_berechtigt)) +{ + $query .= " OR iss.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT /* if issue is for oe */"; + + $query .= " OR (iss.oe_kurzbz IS NULL AND EXISTS ( /* if person_id of issue is a student of studiengang oe */ + SELECT 1 FROM public.tbl_prestudent ps + JOIN public.tbl_prestudentstatus pss USING (prestudent_id) + JOIN public.tbl_studiengang stg USING (studiengang_kz) + WHERE person_id = iss.person_id + AND stg.oe_kurzbz IN $ALL_OE_KURZBZ_BERECHTIGT + AND pss.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS + AND NOT EXISTS (SELECT 1 /* irrelevant if already finished studies and studied a while ago */ + FROM public.tbl_prestudentstatus ps_finished + JOIN public.tbl_studiensemester sem_finished USING (studiensemester_kurzbz) + WHERE prestudent_id = ps.prestudent_id + AND status_kurzbz IN ('Absolvent','Abbrecher','Abgewiesener') + AND datum::date + interval '2 months' < NOW() + AND EXISTS (SELECT 1 FROM public.tbl_prestudent /* if more recent prestudent exists, still display the issue */ + JOIN public.tbl_prestudentstatus USING (prestudent_id) + JOIN public.tbl_studiensemester USING (studiensemester_kurzbz) + WHERE tbl_prestudentstatus.status_kurzbz IN $RELEVANT_PRESTUDENT_STATUS + AND person_id = ps.person_id + AND prestudent_id <> ps_finished.prestudent_id + AND tbl_studiensemester.start::date > sem_finished.start::date) + ) + ) + )"; +} + +$query .= " ORDER BY CASE + WHEN iss.status_kurzbz = '".IssuesLib::STATUS_NEU."' THEN 0 + WHEN iss.status_kurzbz = '".IssuesLib::STATUS_IN_BEARBEITUNG."' THEN 1 + ELSE 2 + END, + CASE + WHEN fehlertyp_kurzbz = '".IssuesLib::ERRORTYPE_CODE."' THEN 0 + WHEN fehlertyp_kurzbz = '".IssuesLib::WARNINGTYPE_CODE."' THEN 1 + ELSE 2 + END, + datum DESC, fehlercode, issue_id DESC"; + +$filterWidgetArray = array( + 'query' => $query, + 'app' => 'core', + 'datasetName' => 'issues', + 'filter_id' => $this->input->get('filter_id'), + 'tableUniqueId' => 'issues', + 'requiredPermissions' => 'admin', + 'datasetRepresentation' => 'tablesorter', + 'checkboxes' => 'issue_id', + 'columnsAliases' => array( + 'ID', + ucfirst($this->p->t('fehlermonitoring', 'fehlercode')), + ucfirst($this->p->t('fehlermonitoring', 'fehlercodeExtern')), + ucfirst($this->p->t('global', 'datum')), + ucfirst($this->p->t('fehlermonitoring', 'inhalt')), + ucfirst($this->p->t('fehlermonitoring', 'inhaltExtern')), + 'PersonId', + ucfirst($this->p->t('lehre', 'organisationseinheit')), + ucfirst($this->p->t('fehlermonitoring', 'fehlertyp')), + ucfirst($this->p->t('fehlermonitoring', 'fehlerstatus')), + ucfirst($this->p->t('fehlermonitoring', 'verarbeitetVon')), + ucfirst($this->p->t('fehlermonitoring', 'verarbeitetAm')), + ucfirst($this->p->t('global', 'applikation')), + ucfirst($this->p->t('fehlermonitoring', 'fehlertypcode')), + ucfirst($this->p->t('fehlermonitoring', 'statuscode')), + ucfirst($this->p->t('person', 'vorname')), + ucfirst($this->p->t('person', 'nachname')), + ucfirst($this->p->t('fehlermonitoring', 'hauptzustaendig')) + ), + 'formatRow' => function($datasetRaw) { + + if ($datasetRaw->{'Fehlercode extern'} == null) + { + $datasetRaw->{'Fehlercode extern'} = '-'; + } + + if ($datasetRaw->{'Inhalt'} == null) + { + $datasetRaw->{'Inhalt'} = '-'; + } + + if ($datasetRaw->{'Inhalt extern'} == null) + { + $datasetRaw->{'Inhalt extern'} = '-'; + } + + if ($datasetRaw->{'PersonId'} == null) + { + $datasetRaw->{'PersonId'} = '-'; + } + + if ($datasetRaw->{'OE'} == null) + { + $datasetRaw->{'OE'} = '-'; + } + + if ($datasetRaw->{'Verarbeitet am'} == null) + { + $datasetRaw->{'Verarbeitet am'} = '-'; + } + + if ($datasetRaw->{'Verarbeitet von'} == null) + { + $datasetRaw->{'Verarbeitet von'} = '-'; + } + + return $datasetRaw; + }, + 'markRow' => function($datasetRaw) { + + $mark = ''; + + if ($datasetRaw->Statuscode == IssuesLib::STATUS_BEHOBEN) + $mark = "text-success"; + elseif ($datasetRaw->Statuscode == IssuesLib::STATUS_NEU || $datasetRaw->Statuscode == IssuesLib::STATUS_IN_BEARBEITUNG) + { + if ($datasetRaw->Fehlertypcode == IssuesLib::ERRORTYPE_CODE) + { + $mark = "text-danger"; + } + elseif ($datasetRaw->Fehlertypcode == IssuesLib::WARNINGTYPE_CODE) + { + $mark = "text-warning"; + } + } + + return $mark; + } +); + +echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); diff --git a/application/views/widgets/filter/filterOptions.php b/application/views/widgets/filter/filterOptions.php index 6f1dd3885..38b5be98a 100644 --- a/application/views/widgets/filter/filterOptions.php +++ b/application/views/widgets/filter/filterOptions.php @@ -21,8 +21,6 @@
-
-
diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index 4b98c629c..5c8243e3e 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -1,17 +1,28 @@ +
+ +
+
+ + p->t('filter', 'filterHinzufuegen')); ?>: + + + + + + +
+ +
+ +
+ +
+ + + +
+
-
- -
- - p->t('filter', 'filterHinzufuegen')); ?>: - - - - - - - - -
+ diff --git a/cis/private/lehre/anwesenheitsliste.pdf.php b/cis/private/lehre/anwesenheitsliste.pdf.php index 01ec1c93f..065820c91 100644 --- a/cis/private/lehre/anwesenheitsliste.pdf.php +++ b/cis/private/lehre/anwesenheitsliste.pdf.php @@ -28,6 +28,7 @@ require_once('../../../include/studiensemester.class.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/erhalter.class.php'); require_once('../../../include/datum.class.php'); +require_once('../../../include/lehrelisthelper.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -64,183 +65,15 @@ if(isset($_GET['output']) && ($output='odt' || $output='doc')) isset($_GET['stg_kz']) ? $studiengang = $_GET['stg_kz'] : $studiengang = NULL; isset($_GET['lehreinheit_id']) ? $lehreinheit = $_GET['lehreinheit_id'] : $lehreinheit = NULL; - - -$doc = new dokument_export('Anwesenheitslist'); - -// Teilnehmende Gruppen laden -$qry = "SELECT DISTINCT ON(kuerzel, semester, verband, gruppe, gruppe_kurzbz) - UPPER(stg_typ::varchar(1) || stg_kurzbz) as kuerzel, - semester, - verband, - gruppe, - gruppe_kurzbz - FROM campus.vw_lehreinheit - WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." - AND studiensemester_kurzbz=".$db->db_add_param($studiensemester); -if($lehreinheit!='') - $qry.=" AND lehreinheit_id=".$db->db_add_param($lehreinheit, FHC_INTEGER); - -$gruppen_string = ''; -if($result = $db->db_query($qry)) -{ - while($row = $db->db_fetch_object($result)) - { - if($gruppen_string!='') - $gruppen_string.=', '; - if($row->gruppe_kurzbz=='') - $gruppen_string.=trim($row->kuerzel.'-'.$row->semester.$row->verband.$row->gruppe); - else - $gruppen_string.=$row->gruppe_kurzbz; - } -} - - -// Verplante Räume laden -$qry = "SELECT distinct(ort_kurzbz) - FROM lehre.tbl_stundenplan - WHERE lehreinheit_id in - ( - SELECT lehreinheit_id - FROM campus.vw_lehreinheit - WHERE lehrveranstaltung_id = ".$db->db_add_param($lvid, FHC_INTEGER)." - AND studiensemester_kurzbz = ".$db->db_add_param($studiensemester)." - )"; -if($lehreinheit!='') - $qry.= " AND tbl_stundenplan.lehreinheit_id = ".$db->db_add_param($lehreinheit, FHC_INTEGER); - - -$raum_string = ''; -if($result = $db->db_query($qry)) -{ - while($row = $db->db_fetch_object($result)) - { - if($raum_string!='') - $raum_string.=', '; - if($row->ort_kurzbz!='') - $raum_string.=$row->ort_kurzbz; - } -} - - $stg = new studiengang(); $stg->load($lv->studiengang_kz); -$studiengang_bezeichnung=$stg->bezeichnung; +$doc = new dokument_export('Anwesenheitslist'); -$stg->getAllTypes(); - -$data = array( - 'gruppen'=>$gruppen_string, - 'bezeichnung'=>$lv->bezeichnung, - 'lehrveranstaltung_id'=>$lv->lehrveranstaltung_id, - 'studiengang'=>$studiengang_bezeichnung, - 'studiengang_kz'=>$lv->studiengang_kz, - 'typ'=>$stg->studiengang_typ_arr[$stg->typ], - 'ects'=>$lv->ects, - 'sprache'=>$lv->sprache, - 'studiensemester'=>$studiensemester, - 'semester'=>$lv->semester, - 'orgform'=>$lv->orgform_kurzbz, - 'raum'=>$raum_string, -); - -//Lehrende der LV laden und in ein Array schreiben -$lehrende = new lehreinheitmitarbeiter(); -$lehrende->getMitarbeiterLV($lvid, $studiensemester, $lehreinheit); -$arr_lehrende = array(); -if (isset($lehrende->result)) -{ - foreach($lehrende->result AS $row) - { - $data[]=array('lehrende'=>array('uid'=>$row->uid,'name'=>$row->vorname.' '.$row->nachname)); - $arr_lehrende[]=mb_strtoupper($row->uid); - } -} - - -//Studierende der LV laden und in ein Array schreiben - -$qry = 'SELECT - distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, - tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, - (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, - tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, - tbl_note.lkt_ueberschreibbar, tbl_note.anmerkung, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_studiengang.kurzbzlang - FROM - campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_person USING(person_id) LEFT JOIN public.tbl_student ON(uid=student_uid) - LEFT JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid) - LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) - LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) - LEFT JOIN lehre.tbl_note USING (note) - LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) - LEFT JOIN public.tbl_studiengang ON(tbl_student.studiengang_kz=tbl_studiengang.studiengang_kz) - WHERE - vw_student_lehrveranstaltung.lehrveranstaltung_id='.$db->db_add_param($lvid, FHC_INTEGER).' AND - vw_student_lehrveranstaltung.studiensemester_kurzbz='.$db->db_add_param($studiensemester); - -if($lehreinheit!='') - $qry.=' AND vw_student_lehrveranstaltung.lehreinheit_id='.$db->db_add_param($lehreinheit, FHC_INTEGER); - -$qry.=' ORDER BY nachname, vorname, person_id, tbl_bisio.bis DESC'; - -$stsem_obj = new studiensemester(); -$stsem_obj->load($studiensemester); -$stsemdatumvon = $stsem_obj->start; -$stsemdatumbis = $stsem_obj->ende; - -$erhalter = new erhalter(); -$erhalter->getAll(); - -$a_o_kz = '9'.sprintf("%03s", $erhalter->result[0]->erhalter_kz); //Stg_Kz AO-Studierende auslesen (9005 fuer FHTW) -$anzahl_studierende = 0; -$datum = new datum(); -$zusatz = ''; - -if($result = $db->db_query($qry)) -{ - while($row = $db->db_fetch_object($result)) - { - if($row->status!='Abbrecher' && $row->status!='Unterbrecher') - { - $anzahl_studierende++; - - if($row->status=='Incoming') //Incoming - $zusatz='(i)'; - else - $zusatz=''; - - if($row->bisio_id!='' && $row->status!='Incoming' && ($row->bis > $stsemdatumvon || $row->bis=='') && $row->von < $stsemdatumbis) //Outgoing - $zusatz.='(o)(ab '.$datum->formatDatum($row->von,'d.m.Y').')'; - - if($row->lkt_ueberschreibbar == 'f') // angerechnet / intern angerechnet / nicht zugelassen - $zusatz.= '('. $row->anmerkung. ')'; - - if($row->mitarbeiter_uid!='') //mitarbeiter - $zusatz.='(ma)'; - - if($row->stg_kz_student==$a_o_kz) //Außerordentliche Studierende - $zusatz.='(a.o.)'; - - $data[]=array('student'=>array( - 'vorname'=>$row->vorname, - 'nachname'=>$row->nachname, - 'personenkennzeichen'=>trim($row->matrikelnr), - 'matr_nr'=>$row->matr_nr, - 'semester'=>$row->semester, - 'verband'=>trim($row->verband), - 'gruppe'=>trim($row->gruppe), - 'zusatz'=>$zusatz, - 'studiengang_kurzbz'=>$row->kurzbzlang - )); - } - } - //Anzahl Studierende in Array $data (an erster Stelle) einfuegen - $data = array_reverse($data, true); - $data['anzahl_studierende'] = $anzahl_studierende; - $data = array_reverse($data, true); -} +$lehrelisthelper = new LehreListHelper($db, $studiensemester, $lvid, $lv, $stg, $lehreinheit); +$arr_lehrende = $lehrelisthelper->getArr_Lehrende(); +$data = $lehrelisthelper->getData(); +$studentuids = $lehrelisthelper->getStudentUids(); $doc->addDataArray($data,'anwesenheitsliste'); if($lehreinheit!='') diff --git a/cis/private/lehre/anwesenheitsliste.php b/cis/private/lehre/anwesenheitsliste.php index bc7d96083..2cdf56d5f 100644 --- a/cis/private/lehre/anwesenheitsliste.php +++ b/cis/private/lehre/anwesenheitsliste.php @@ -34,6 +34,7 @@ require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/vertrag.class.php'); + require_once '../../../include/covid/covidhelper.class.php'; $sprache = getSprache(); $p=new phrasen($sprache); @@ -61,7 +62,8 @@ $stsem = $_GET['stsem']; else die($p->t('anwesenheitsliste/studiensemesterIstUngueltig')); - + +$covidhelper = new CovidHelper(); ?> @@ -69,6 +71,11 @@ + @@ -84,6 +91,7 @@ isUdfDefined()) ? '' . $p->t('anwesenheitsliste/gesamtliste') . ' ' . $lv->bezeichnung . '' : ''; $aw_content .= "".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung"; $awbild_content .= "".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung"; $nt_content .= "".$p->t('anwesenheitsliste/gesamtliste')." $lv->bezeichnung"; @@ -151,6 +160,7 @@ } } + $covid_content .= ($covidhelper->isUdfDefined()) ? '   ' . $kurzbz . ' - ' . $lehrform . ' - ' . $gruppen . ' (' . $lektoren . ')' : ''; $aw_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $awbild_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $nt_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; @@ -186,6 +196,7 @@ } } + $covid_content .= ($covidhelper->isUdfDefined()) ? '   ' . $kurzbz . ' - ' . $lehrform . ' - ' . $gruppen . ' (' . $lektoren . ')' : ''; $aw_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $awbild_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; $nt_content .= "   $kurzbz - $lehrform - $gruppen ($lektoren)"; @@ -198,6 +209,11 @@ } else { + if($covid_content!='') + $covid_content = "".$covid_content."

".$p->t('anwesenheitsliste/covidstatuslisten')."

"; + else + $covid_content = ($covidhelper->isUdfDefined()) ? $p->t('anwesenheitsliste/keineStudentenVorhanden') : ''; + if($aw_content!='') $aw_content = "".$aw_content."

".$p->t('anwesenheitsliste/anwesenheitslisten')."

"; else @@ -221,17 +237,20 @@ $aw_content=''; if(defined('CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_BILD_ANZEIGEN') && !CIS_ANWESENHEITSLISTE_ANWESENHEITSLISTE_BILD_ANZEIGEN) $awbild_content=''; - + echo " - + + + +
$aw_content$covid_content
$awbild_content
$nt_content
"; diff --git a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php index 407502178..70d15d801 100644 --- a/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php +++ b/cis/private/lehre/benotungstool/lvgesamtnoteverwalten.php @@ -45,6 +45,8 @@ require_once ('../../../../include/note.class.php'); require_once ('../../../../include/notenschluessel.class.php'); require_once ('../../../../include/studienplan.class.php'); require_once ('../../../../include/addon.class.php'); +require_once ('../../../../include/mobilitaet.class.php'); +require_once ('../../../../include/student.class.php'); $summe_stud = 0; $summe_t2 = 0; @@ -80,6 +82,8 @@ if (! $lv_obj->load($lvid)) // Studiengang laden $stg_obj = new studiengang($lv_obj->studiengang_kz); +$stg_obj->studiengang_kz; + $datum_obj = new datum(); if (isset($_GET['stsem'])) @@ -1113,8 +1117,8 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG campus.vw_student_lehrveranstaltung JOIN campus.vw_student USING(uid) WHERE - studiensemester_kurzbz = " . $db->db_add_param($stsem) . " - AND lehrveranstaltung_id = " . $db->db_add_param($lvid) . " + studiensemester_kurzbz = ". $db->db_add_param($stsem). " + AND lehrveranstaltung_id = ". $db->db_add_param($lvid). " ORDER BY nachname, vorname "; if ($result_stud = $db->db_query($qry_stud)) @@ -1122,11 +1126,29 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG $i = 1; $errorshown = false; $summe_stud = $db->db_num_rows($result_stud); + + //Ergänzung um Mobility-Eintrag (d.d.) while ($row_stud = $db->db_fetch_object($result_stud)) { $grades[$row_stud->uid]['vorname'] = $row_stud->vorname; $grades[$row_stud->uid]['nachname'] = $row_stud->nachname; + $student = new student(); + $student->load($row_stud->uid); + $student->result[]= $student; + $prestudent_id = $student->prestudent_id; + + $mobility = new mobilitaet(); + $mobility->loadPrestudent($prestudent_id); + $output = $mobility->result; + $eintrag = ''; + foreach ($output as $k) + { + if($k->mobilitaetstyp_kurzbz == 'GS') + $eintrag = ' (d.d.)'; + } + $grades[$row_stud->uid]['mobility'] = $eintrag; + // Noten aus Uebungstool $le = new lehreinheit(); $le->load_lehreinheiten($lvid, $stsem); @@ -1167,12 +1189,13 @@ if (defined("CIS_GESAMTNOTE_PRUEFUNG_MOODLE_LE_NOTE") && CIS_GESAMTNOTE_PRUEFUNG $anzahlChanged = 0; foreach ($grades as $uid => $data) + //Ausgabe Array { $htmlstring .= ' ' . $db->convert_html_chars($uid) . ' ' . $db->convert_html_chars($data['nachname']) . ' - ' . $db->convert_html_chars($data['vorname']) . ''; + ' . $db->convert_html_chars($data['vorname']) . $db->convert_html_chars($data['mobility']) .''; // Bereits eingetragene Note ermitteln if ($lvgesamtnote = new lvgesamtnote($lvid, $uid, $stsem)) @@ -1619,5 +1642,11 @@ echo $htmlstring;
+
+
+

Legende

+

(d.d.)... Double Degree Program

+
+ diff --git a/cis/private/lehre/covidstatusliste.php b/cis/private/lehre/covidstatusliste.php new file mode 100644 index 000000000..affe2b929 --- /dev/null +++ b/cis/private/lehre/covidstatusliste.php @@ -0,0 +1,166 @@ + + */ +require_once('../../../config/cis.config.inc.php'); +require_once('../../../include/lehrveranstaltung.class.php'); +require_once('../../../include/lehreinheitgruppe.class.php'); +require_once('../../../include/lehreinheit.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); +require_once('../../../include/lehreinheitmitarbeiter.class.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/erhalter.class.php'); +require_once('../../../include/datum.class.php'); +require_once('../../../include/lehrelisthelper.class.php'); +require_once('../../../include/covid/covidhelper.class.php'); + +$debug = false; + +if (!$db = new basis_db()) + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); + +$user=get_uid(); + +$berechtigung = new benutzerberechtigung(); +$berechtigung->getBerechtigungen($user); + +if(isset($_GET['lvid']) && is_numeric($_GET['lvid'])) + $lvid = $_GET['lvid']; +else + die('Eine gueltige LvID muss uebergeben werden'); + +$lv = new lehrveranstaltung(); +$lv->load($lvid); + +if(isset($_GET['stsem'])) + $studiensemester = $_GET['stsem']; +else + die('Eine Studiensemester muss uebergeben werden'); + +if( !$berechtigung->isBerechtigt('admin') + && !$berechtigung->isBerechtigt('assistenz') + && !$berechtigung->isBerechtigt('lehre', $lv->oe_kurzbz, 's') + && !check_lektor_lehrveranstaltung($user,$lvid,$studiensemester)) + die('Sie muessen LektorIn der LV sein oder das Recht "ADMIN", "ASSISTENZ" oder "LEHRE" haben, um diese Seite aufrufen zu koennen'); + +isset($_GET['stg_kz']) ? $studiengang = $_GET['stg_kz'] : $studiengang = NULL; +isset($_GET['lehreinheit_id']) ? $lehreinheit = $_GET['lehreinheit_id'] : $lehreinheit = NULL; + +$stg = new studiengang(); +$stg->load($lv->studiengang_kz); + +$lehrelisthelper = new LehreListHelper($db, $studiensemester, $lvid, $lv, $stg, $lehreinheit); +$arr_lehrende = $lehrelisthelper->getArr_Lehrende(); +$data = $lehrelisthelper->getData(); +$studentuids = $lehrelisthelper->getStudentUids(); + +$covidhelper = new CovidHelper(); +$covidhelper->fetchCovidStatus($studentuids); +$covidstatus = $covidhelper->getCovidStatus(); + +$now = new DateTime('now', new DateTimeZone('Europe/Vienna')); +header('Content-Type: text/html; charset=utf-8'); +?> + + + + FHC - Nachweisliste + + + + + +
+
+
+ +

Nachweisliste ""

+
    +
  • Gruppen:
  • +
  • Studiensemester:
  • +
  • Lehrende: getLehrende_String(); ?>
  • +
  • generiert: format('d.m.Y H:i'); ?>
  • +
  • Anzahl der Studierenden:
  • +
+ + + + + + + + + + + + + + + + + + + + + + +
lfd.Nr.NameKennzeichenGruppeNachweis
getIconHtml($tmpstudent['uid']); ?>
+ +
+
+ + +
+
+ +
+
+
+				
+
+ +
+
+ + +
+ + + \ No newline at end of file diff --git a/cis/private/lehre/ects/Beispiel_Change_Management.pdf b/cis/private/lehre/ects/Beispiel_Change_Management.pdf deleted file mode 100644 index 31520b52c..000000000 Binary files a/cis/private/lehre/ects/Beispiel_Change_Management.pdf and /dev/null differ diff --git a/cis/private/lehre/ects/Beispiel_Computerarchitektur.pdf b/cis/private/lehre/ects/Beispiel_Computerarchitektur.pdf deleted file mode 100644 index 291500516..000000000 Binary files a/cis/private/lehre/ects/Beispiel_Computerarchitektur.pdf and /dev/null differ diff --git a/cis/private/lehre/ects/Beispiel_ITProjektarbeit_at.pdf b/cis/private/lehre/ects/Beispiel_ITProjektarbeit_at.pdf deleted file mode 100644 index 2f817ea95..000000000 Binary files a/cis/private/lehre/ects/Beispiel_ITProjektarbeit_at.pdf and /dev/null differ diff --git a/cis/private/lehre/ects/Beispiel_ITProjektarbeit_en.pdf b/cis/private/lehre/ects/Beispiel_ITProjektarbeit_en.pdf deleted file mode 100644 index d1e7e8ef2..000000000 Binary files a/cis/private/lehre/ects/Beispiel_ITProjektarbeit_en.pdf and /dev/null differ diff --git a/cis/private/lehre/ects/Beispiel_Projektmarketing.pdf b/cis/private/lehre/ects/Beispiel_Projektmarketing.pdf deleted file mode 100644 index 106a60428..000000000 Binary files a/cis/private/lehre/ects/Beispiel_Projektmarketing.pdf and /dev/null differ diff --git a/cis/private/lehre/ects/beispiele.php b/cis/private/lehre/ects/beispiele.php deleted file mode 100644 index 12e9984a8..000000000 --- a/cis/private/lehre/ects/beispiele.php +++ /dev/null @@ -1,78 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/phrasen.class.php'); - -$sprache = getSprache(); -$p= new phrasen($sprache); - -?> - - - - - -<?php echo $p->t('courseInformation/ectsLvInfo');?> - - - -

t('courseInformation/lvInfoBeispiele');?>

- - - - - -
-   - - -
- - - - - - -
- -
- - - \ No newline at end of file diff --git a/cis/private/lehre/ects/freigabe.php b/cis/private/lehre/ects/freigabe.php deleted file mode 100644 index 3e0a242f3..000000000 --- a/cis/private/lehre/ects/freigabe.php +++ /dev/null @@ -1,363 +0,0 @@ -, - * Andreas Oesterreicher - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ - -/* - @author Andres Oesterreicher - @date 20.10.2005 - @brief Formular zum Freigeben der LV Informationen aus der tabelle tbl_lvinfo - - @edit 08-11-2006 Versionierung entfernt. Studiensemester = WS2007 - 03-01-2006 Anpassung an neue DB -*/ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../include/basis_db.class.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/studiensemester.class.php'); -require_once('../../../../include/lvinfo.class.php'); -require_once('../../../../include/phrasen.class.php'); -require_once('../../../../include/benutzerberechtigung.class.php'); - -$sprache = getSprache(); -$p = new phrasen($sprache); - -if (!$db = new basis_db()) - die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); -$user = get_uid(); - -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -//if(!check_lektor($user)) -// die('
'.$p->t('global/keineBerechtigungFuerDieseSeite').'
'); - - /* WriteLog($qry,$uid) - * @brief Schreib die Querys im format: uid - datum - qry ins LogFile - * @param $qry Query anweisung - * $uid Username - * @return true wenn ok false wenn fehler beim oeffnen - */ - function WriteLog($qry,$uid) - { - if($fp=fopen(LOG_PATH.'lvinfo.log',"a")) - { - fwrite($fp,"\n"); - fwrite($fp,$uid." ". date("d.m.Y - H:i:s") . " ". $qry); - fclose($fp); - return true; - } - else - return false; - } - - - $lv=trim((isset($_REQUEST['lv']) ? $_REQUEST['lv']:'')); - - //Studiengang der Angezeigt werden soll - $stg=trim((isset($_REQUEST['stg']) ? $_REQUEST['stg']:'')); - //Semester das angezeigt werden soll - $sem=trim((isset($_REQUEST['sem']) ? $_REQUEST['sem']:'')); - - if (!$rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg)) - die ($rechte->errormsg); - - if(isset($_GET["lv"])) //Id des DS der freigegeben/nicht freigegeben werden soll - $id=$_GET["lv"]; - - if(isset($_GET["del"])) //Wenn diese Variable gesetzt ist dann wird DS mit $idde und $iden geloescht - $del=$_GET["del"]; - - if(isset($_GET["changestat"])) //Wenn diese Variable gesetzt ist dann wird DS mit $id freigegeben/nicht freigegeben - $changestat=$_GET["changestat"]; - - if(isset($_POST["status"]) && $_POST["status"] =='changestg') - unset($sem); - - if(isset($del) && isset($lv)) - { - //Loeschen der beiden Datensaetze - - $lvinfo_obj = new lvinfo(); - $db->db_query('BEGIN'); - if($lvinfo_obj->delete($lv)) - { - if(!WriteLog($lvinfo_obj->lastqry,$user)) - { - echo "
".$p->t('courseInformation/fehlerBeimSchreibenDesLog')."
"; - } - $db->db_query('COMMIT'); - } - else - { - $db->db_query('ROLLBACK'); - echo "
".$p->t('global/fehleraufgetreten')."
"; - } - } - - if(isset($changestat) && isset($lv) && isset($_GET['lang'])) - { - //Setzt die Spalte genehmigt auf den entsprechenden Wert - //=Wenn Hackerl angeklickt wird - - $qry="SELECT genehmigt FROM campus.tbl_lvinfo WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." AND sprache="; - if($_GET['lang']=='de') - $qry.= $db->db_add_param(ATTR_SPRACHE_DE); - else - $qry.= $db->db_add_param(ATTR_SPRACHE_EN); - - if($result=$db->db_query($qry)) - { - if($row=$db->db_fetch_object($result)) - { - $wert = $row->genehmigt=='t'?'false':'true'; - $qry="UPDATE campus.tbl_lvinfo SET genehmigt=$wert - WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." AND sprache="; - if($_GET['lang']=='de') - $qry .= $db->db_add_param(ATTR_SPRACHE_DE); - else - $qry .= $db->db_add_param(ATTR_SPRACHE_EN); - - if($db->db_query($qry)) - WriteLog($qry,$user); - else - echo $p->t('global/fehlerBeimLesenAusDatenbank'); - } - else - echo $p->t('global/fehlerBeimLesenAusDatenbank'); - } - else - echo $p->t('global/fehlerBeimLesenAusDatenbank'); - } - -?> - - - - - - - - - - - - - -<?php echo $p->t('courseInformation/ectsLvInfo');?> - - - -

t('courseInformation/lvInfoFreigabe');?>

- - - - - - -
-   - - -
- - - "; - echo ""; - echo ""; - //stg Drop Down - $qry = "SELECT distinct tbl_studiengang.studiengang_kz, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kurzbzlang FROM campus.tbl_lvinfo, lehre.tbl_lehrveranstaltung, public.tbl_studiengang - WHERE tbl_lvinfo.aktiv=true - AND tbl_lvinfo.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id - AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz - ORDER by kurzbzlang"; - if(!$result=$db->db_query($qry)) - die ('
'.$p->t('global/fehlerBeimLesenAusDatenbank').'
'); - - echo $p->t('global/studiengang')." "; - - if(!$vorhanden) //Wenn $stg einen Wert enthaelt der nicht in der Liste vorkommt wird der erste Eintrag der Liste ausgewaehlt - $stg=$firststg; - - //Semester Drop Down - $qry = "SELECT distinct semester FROM campus.tbl_lvinfo, lehre.tbl_lehrveranstaltung - WHERE tbl_lvinfo.aktiv=true - AND tbl_lvinfo.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id - AND tbl_lehrveranstaltung.studiengang_kz=".$db->db_add_param($stg)." - ORDER by semester"; - if(!$result=$db->db_query($qry)) - die ("
".$p->t('global/fehleraufgetreten')."
"); - - echo " ".$p->t('global/semester')." "; - if(!$vorhanden) //Wenn $sem einen Wert enthaelt der nicht in der Liste vorkommt wird der erste Eintrag der Liste ausgewaehlt - $sem=$firstsem; - - //Anzeigen der Liste mit den LV - Informationen - ?> -

- - - - -
- - - - - - - - - - - - - - db_add_param($stg)." - AND semester=".$db->db_add_param($sem)." AND tbl_lvinfo.aktiv=true - AND tbl_lvinfo.sprache=".$db->db_add_param(ATTR_SPRACHE_DE)." - ORDER BY tbl_lehrveranstaltung.bezeichnung ASC"; - - if(!$result=$db->db_query($qry)) - die("
Fehler bei einer Datenbankabfrage
"); - - $i=-1; - while($row=$db->db_fetch_object($result)) - { - $i++; - $qry1="SELECT *, - tbl_lehrveranstaltung.bezeichnung as bezeichnung, - tbl_lvinfo.updatevon as updatevon - FROM - campus.tbl_lvinfo - JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) - WHERE - tbl_lvinfo.sprache=".$db->db_add_param(ATTR_SPRACHE_EN)." - AND lehrveranstaltung_id=".$db->db_add_param($row->lehrveranstaltung_id); - - if(!$result1=$db->db_query($qry1)) - die("
Fehler bei einer Datenbankabfrage
"); - - if(!$row1=$db->db_fetch_object($result1)) - die("
Fehler bei einer Datenbankabfrage
"); - - $qry2="SELECT vorname, nachname FROM campus.vw_mitarbeiter WHERE uid=".$db->db_add_param($row->updatevon); - - $style=''; - if ($lv==$row->lehrveranstaltung_id) - $style='style="background-color: #AAA; border-top: 1px solid black; border-bottom: 1px solid black"'; - - $bearbeitet=$row->updatevon; - if($result2=$db->db_query($qry2)) - if($row2=$db->db_fetch_object($result2)) - $bearbeitet=$row2->vorname.' '.$row2->nachname; - echo "\n"; - echo ""."\n"; - echo ""."\n"; - echo ""."\n"; - //echo ""."\n"; - echo ""."\n"; - echo ""."\n"; - echo ""."\n"; - echo ""."\n"; - echo ""; - } - ?> - -
t('global/lehrveranstaltung');?>t('courseInformation/bearbeitetVon');?>t('courseInformation/updateAm');?>t('global/anzeigen');?>t('courseInformation/freigeben');?>
lehrveranstaltung_id' onClick='return ask();'>Delete$row->bezeichnung$row->studiensemester_kurzbz$bearbeitet".$row->amum."German "; - echo "EnglishDE lehrveranstaltung_id&lang=de\";' ".($row->genehmigt=='t'?'checked':'').">"."\n"; - echo "lehrveranstaltung_id&lang=en\";' ".($row1->genehmigt=='t'?'checked':'')."> EN
-
- - - diff --git a/cis/private/lehre/ects/index.php b/cis/private/lehre/ects/index.php deleted file mode 100644 index 3253aa074..000000000 --- a/cis/private/lehre/ects/index.php +++ /dev/null @@ -1,914 +0,0 @@ -, - * Andreas Oesterreicher - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ - -/* @author Andres Oesterreicher - @date 20.10.2005 - @brief Formular zum eintragen der ECTS Information auf Deutsch und Englisch - Die Informationen werden in der Tabelle tbl_lvinfo gespeichert. - - @edit 08-11-2006 Versionierung entfernt: Studiensemester=WS2007 - 02-01-2007 Umstellung auf die neue DB -*/ -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../config/global.config.inc.php'); -require_once('../../../../include/basis_db.class.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/studiengang.class.php'); -require_once('../../../../include/lehrveranstaltung.class.php'); -require_once('../../../../include/lvinfo.class.php'); -require_once('../../../../include/studiensemester.class.php'); -require_once('../../../../include/phrasen.class.php'); -require_once('../../../../include/safehtml/safehtml.class.php'); -require_once('../../../../include/benutzerberechtigung.class.php'); -require_once('../../../../include/lehreinheitmitarbeiter.class.php'); -require_once('../../../../include/mail.class.php'); -require_once('../../../../include/benutzer.class.php'); - -$user = get_uid(); - -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -$sprache1 = getSprache(); -$p=new phrasen($sprache1); - -if (!$db = new basis_db()) - die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); - - $output = ''; - $errormsg = ''; - $okmsg=''; - -$lv = ''; - -?> - - - - - -<?php echo $p->t('courseInformation/ectsInformation')?> - - - - -50) - return substr($string,0,47)."..."; - else - return $string; - } - - if(isset($_GET['lvid'])) - $lv=$_GET['lvid']; - - //Variablenuebernahme - if(isset($_POST['lv'])) //LehrveranstaltungsID - { - $lv = $_POST['lv']; - $lv_obj = new lehrveranstaltung(); - $lv_obj->load($lv); - $oe_kurzbz = $lv_obj->oe_kurzbz; - } - - if(isset($_GET['lvid'])) - { - $lv_obj = new lehrveranstaltung(); - $lv_obj->load($lv); - - if(!isset($stg)) - { - $stg = $lv_obj->studiengang_kz; - $oe_kurzbz = $lv_obj->oe_kurzbz; - } - if(!isset($sem)) - $sem = $lv_obj->semester; - } - else - { - $stg = ''; - } - - if(isset($_POST['stg'])) - { - $stg = $_POST['stg']; - if(!isset($oe_kurzbz)) - { - $oe = new studiengang(); - $oe->load($stg); - $oe_kurzbz = $oe->oe_kurzbz; - } - } - - if(!isset($sem) && isset($_POST['sem'])) - $sem = $_POST['sem']; - - - if(isset($_POST['changed'])) //Gibt an welches der Auswahlfelder geaendert wurde - $changed = $_POST['changed']; - - if(isset($_POST['status'])) - $status = $_POST['status']; - -// if(isset($_POST["freigeben"])) //Wird auf 'ja' gesetzt wenn gleich freigegebenwerden soll nach dem Speichern -// $freigeben = $_POST["freigeben"]; - - if(isset($_POST['sprache'])) //Sprache fuer dieses Lehrfach - $sprache = $_POST['sprache']; - - // Berechtigungen ueberpruefen - $lektor_der_lv = false; - $lektor = new lehreinheitmitarbeiter(); - $lektor_der_lv = $lektor->existsLV($lv, null, $user); - - // Bearbeiten nur moeglich, wenn Lektor der LV und bearbeiten fuer Lektoren aktiviert ist - // Oder Berechtigung zum Bearbeiten eingetragen ist - $berechtigt = true; - if(!( - (!defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && $lektor_der_lv) - || (defined('CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT') && CIS_LEHRVERANSTALTUNG_LVINFO_LEKTOR_EDIT==true && $lektor_der_lv) - || $rechte->isBerechtigt('lehre/lvinfo',$oe_kurzbz) - || $rechte->isBerechtigt('lehre/lvinfo',$stg) - ) - ) - { - $berechtigt = false; - } - - //Variablen fuer das Formular - $lehrziele_de = (isset($_POST['lehrziele_de'])?$_POST['lehrziele_de']:''); - $lehrinhalte_de = (isset($_POST['lehrinhalte_de'])?$_POST['lehrinhalte_de']:''); - $voraussetzungen_de = (isset($_POST['voraussetzungen_de'])?$_POST['voraussetzungen_de']:''); - $unterlagen_de = (isset($_POST['unterlagen_de'])?$_POST['unterlagen_de']:''); - $pruefungsordnung_de = (isset($_POST['pruefungsordnung_de'])?$_POST['pruefungsordnung_de']:''); - $anmerkungen_de = (isset($_POST['anmerkungen_de'])?$_POST['anmerkungen_de']:''); - $kurzbeschreibung_de = (isset($_POST['kurzbeschreibung_de'])?$_POST['kurzbeschreibung_de']:''); - $anwesenheit_de = (isset($_POST['anwesenheit_de'])?$_POST['anwesenheit_de']:''); - $freig_de = (isset($_POST['freig_de'])?($_POST['freig_de']=='on' && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false):''); - $methodik_de = (isset($_POST['methodik_de'])?$_POST['methodik_de']:''); - //$titel_de = (isset($_POST['titel_de'])?$_POST['titel_de']:''); - - $parser = new SafeHTML(); - $lehrziele_de = $parser->parse($lehrziele_de); - $parser = new SafeHTML(); - $lehrinhalte_de = $parser->parse($lehrinhalte_de); - $parser = new SafeHTML(); - $voraussetzungen_de = $parser->parse($voraussetzungen_de); - $parser = new SafeHTML(); - $unterlagen_de = $parser->parse($unterlagen_de); - $parser = new SafeHTML(); - $pruefungsordnung_de = $parser->parse($pruefungsordnung_de); - $parser = new SafeHTML(); - $anmerkungen_de = $parser->parse($anmerkungen_de); - $parser = new SafeHTML(); - $kurzbeschreibung_de = $parser->parse($kurzbeschreibung_de); - $parser = new SafeHTML(); - $anwesenheit_de = $parser->parse($anwesenheit_de); - $parser = new SafeHTML(); - $freig_de = $parser->parse($freig_de); - $parser = new SafeHTML(); - $methodik_de = $parser->parse($methodik_de); - - $lehrziele_en = (isset($_POST['lehrziele_en'])?$_POST['lehrziele_en']:''); - $lehrinhalte_en = (isset($_POST['lehrinhalte_en'])?$_POST['lehrinhalte_en']:''); - $voraussetzungen_en = (isset($_POST['voraussetzungen_en'])?$_POST['voraussetzungen_en']:''); - $unterlagen_en = (isset($_POST['unterlagen_en'])?$_POST['unterlagen_en']:''); - $pruefungsordnung_en = (isset($_POST['pruefungsordnung_en'])?$_POST['pruefungsordnung_en']:''); - $anmerkungen_en = (isset($_POST['anmerkungen_en'])?$_POST['anmerkungen_en']:''); - $kurzbeschreibung_en = (isset($_POST['kurzbeschreibung_en'])?$_POST['kurzbeschreibung_en']:''); - $anwesenheit_en = (isset($_POST['anwesenheit_en'])?$_POST['anwesenheit_en']:''); - $freig_en = (isset($_POST['freig_en'])?($_POST['freig_en']=='on' && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false):''); - $methodik_en = (isset($_POST['methodik_en'])?$_POST['methodik_en']:''); - //$titel_en = (isset($_POST['titel_en'])?$_POST['titel_en']:''); - - $parser = new SafeHTML(); - $lehrziele_en = $parser->parse($lehrziele_en); - $parser = new SafeHTML(); - $lehrinhalte_en = $parser->parse($lehrinhalte_en); - $parser = new SafeHTML(); - $voraussetzungen_en = $parser->parse($voraussetzungen_en); - $parser = new SafeHTML(); - $unterlagen_en = $parser->parse($unterlagen_en); - $parser = new SafeHTML(); - $pruefungsordnung_en = $parser->parse($pruefungsordnung_en); - $parser = new SafeHTML(); - $anmerkungen_en = $parser->parse($anmerkungen_en); - $parser = new SafeHTML(); - $kurzbeschreibung_en = $parser->parse($kurzbeschreibung_en); - $parser = new SafeHTML(); - $anwesenheit_en = $parser->parse($anwesenheit_en); - $parser = new SafeHTML(); - $freig_en = $parser->parse($freig_en); - $parser = new SafeHTML(); - $methodik_en = $parser->parse($methodik_en); - - /* WriteLog($qry,$uid) - * @brief Schreib die Querys im format: uid - datum - qry ins LogFile - * @param $qry Query anweisung - * $uid Username - * @return true wenn ok false wenn fehler beim oeffnen - */ - function WriteLog($qry,$uid) - { - - if($fp=fopen(LOG_PATH.'lvinfo.log',"a")) - { - fwrite($fp,"\n"); - fwrite($fp,$uid." ". date("d.m.Y - H:i:s") . " ". $qry); - fclose($fp); - return true; - } - else - return false; - } - - if(isset($status)) - { - - if($status=='save') // Beim druecken auf "Speichern" - { - if ($berechtigt==false) - die($p->t('global/keineBerechtigungFuerDieseSeite')); - //Speichert die aenderungen in der Datenbank (de und en) - $lv_obj_sav= new lvinfo(); - $save_error=false; - $save_log_error=false; - //Deutsch - $lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "
", $lehrziele_de); - $lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "
", $lehrinhalte_de); - $lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "
", $voraussetzungen_de); - $lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "
", $unterlagen_de); - $lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "
", $pruefungsordnung_de); - $lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "
", $anmerkungen_de); - $lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "
", $kurzbeschreibung_de); - $lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "
", $anwesenheit_de); - - $lv_obj_sav->genehmigt = ($freig_de==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false); - $lv_obj_sav->updateamum=date('Y-m-d H:i:s'); - $lv_obj_sav->updatevon=$user; - $lv_obj_sav->aktiv=true; - $lv_obj_sav->sprache=ATTR_SPRACHE_DE; - $lv_obj_sav->lehrveranstaltung_id=$lv; - $lv_obj_sav->methodik = mb_eregi_replace("\r\n", "
", $methodik_de); - //$lv_obj_sav->titel = mb_eregi_replace("\r\n", "
", $titel_de); - - $lv_obj1 = new lvinfo(); - $vorhanden=$lv_obj1->exists($lv, ATTR_SPRACHE_DE); - - if(!$vorhanden) - $lv_obj_sav->new=true; - else - $lv_obj_sav->new=false; - - if(!$lv_obj_sav->save()) - $save_error=true; - else - if(!WriteLog($lv_obj_sav->lastqry,$user)) - $save_log_error=true; - - //Englisch - $lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "
", $lehrziele_en); - $lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "
", $lehrinhalte_en); - $lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "
", $voraussetzungen_en); - $lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "
", $unterlagen_en); - $lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "
", $pruefungsordnung_en); - $lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "
", $anmerkungen_en); - $lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "
", $kurzbeschreibung_en); - $lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "
", $anwesenheit_en); - $lv_obj_sav->genehmigt = ($freig_en==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false); - $lv_obj_sav->aktiv=true; - $lv_obj_sav->updateamum=date('Y-m-d H:i:s'); - $lv_obj_sav->updatevon=$user; - $lv_obj_sav->sprache=ATTR_SPRACHE_EN; - $lv_obj_sav->lehrveranstaltung_id=$lv; - $lv_obj_sav->methodik = mb_eregi_replace("\r\n", "
", $methodik_en); - //$lv_obj_sav->titel = mb_eregi_replace("\r\n", "
", $titel_en); - - $lv_obj1 = new lvinfo(); - $vorhanden = $lv_obj1->exists($lv, ATTR_SPRACHE_EN); - - if(!$vorhanden) - $lv_obj_sav->new=true; - else - $lv_obj_sav->new=false; - - if(!$lv_obj_sav->save()) - $save_error=true; - else - if(!WriteLog($lv_obj_sav->lastqry,$user)) - $save_log_error=true; - - if($save_error) - $errormsg.= $p->t('courseInformation/achtungFehlerBeimSpeichern'); - else - $okmsg.= $p->t('global/erfolgreichgespeichert'); - - if($save_log_error) - $errormsg.= $p->t('courseInformation/fehlerLogFile'); - } - if($status=='freigeben') // Beim druecken auf "Zur Freigabe abschicken" - { - if ($berechtigt==false) - die($p->t('global/keineBerechtigungFuerDieseSeite')); - - //Speichert die aenderungen in der Datenbank (de und en) - $lv_obj_sav= new lvinfo(); - $save_error=false; - $save_log_error=false; - //Deutsch - $lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "
", $lehrziele_de); - $lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "
", $lehrinhalte_de); - $lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "
", $voraussetzungen_de); - $lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "
", $unterlagen_de); - $lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "
", $pruefungsordnung_de); - $lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "
", $anmerkungen_de); - $lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "
", $kurzbeschreibung_de); - $lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "
", $anwesenheit_de); - - $lv_obj_sav->genehmigt = ($freig_de==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false); - $lv_obj_sav->updateamum=date('Y-m-d H:i:s'); - $lv_obj_sav->updatevon=$user; - $lv_obj_sav->aktiv=true; - $lv_obj_sav->sprache=ATTR_SPRACHE_DE; - $lv_obj_sav->lehrveranstaltung_id=$lv; - $lv_obj_sav->methodik = mb_eregi_replace("\r\n", "
", $methodik_de); - //$lv_obj_sav->titel = mb_eregi_replace("\r\n", "
", $titel_de); - - $lv_obj1 = new lvinfo(); - $vorhanden=$lv_obj1->exists($lv, ATTR_SPRACHE_DE); - - if(!$vorhanden) - $lv_obj_sav->new=true; - else - $lv_obj_sav->new=false; - - if(!$lv_obj_sav->save()) - $save_error=true; - else - if(!WriteLog($lv_obj_sav->lastqry,$user)) - $save_log_error=true; - - //Englisch - $lv_obj_sav->lehrziele=mb_eregi_replace("\r\n", "
", $lehrziele_en); - $lv_obj_sav->lehrinhalte=mb_eregi_replace("\r\n", "
", $lehrinhalte_en); - $lv_obj_sav->voraussetzungen=mb_eregi_replace("\r\n", "
", $voraussetzungen_en); - $lv_obj_sav->unterlagen=mb_eregi_replace("\r\n", "
", $unterlagen_en); - $lv_obj_sav->pruefungsordnung=mb_eregi_replace("\r\n", "
", $pruefungsordnung_en); - $lv_obj_sav->anmerkungen=mb_eregi_replace("\r\n", "
", $anmerkungen_en); - $lv_obj_sav->kurzbeschreibung=mb_eregi_replace("\r\n", "
", $kurzbeschreibung_en); - $lv_obj_sav->anwesenheit=mb_eregi_replace("\r\n", "
", $anwesenheit_en); - $lv_obj_sav->genehmigt = ($freig_en==true && ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg))?true:false); - $lv_obj_sav->aktiv=true; - $lv_obj_sav->updateamum=date('Y-m-d H:i:s'); - $lv_obj_sav->updatevon=$user; - $lv_obj_sav->sprache=ATTR_SPRACHE_EN; - $lv_obj_sav->lehrveranstaltung_id=$lv; - $lv_obj_sav->methodik = mb_eregi_replace("\r\n", "
", $methodik_en); - //$lv_obj_sav->titel = mb_eregi_replace("\r\n", "
", $titel_en); - - $lv_obj1 = new lvinfo(); - $vorhanden = $lv_obj1->exists($lv, ATTR_SPRACHE_EN); - - if(!$vorhanden) - $lv_obj_sav->new=true; - else - $lv_obj_sav->new=false; - - if(!$lv_obj_sav->save()) - $save_error=true; - else - if(!WriteLog($lv_obj_sav->lastqry,$user)) - $save_log_error=true; - - if($save_error) - $errormsg.= $p->t('courseInformation/achtungFehlerBeimSpeichern'); - else - $okmsg.= $p->t('global/erfolgreichgespeichert'); - - if($save_log_error) - $errormsg.= $p->t('courseInformation/fehlerLogFile'); - - //Mail an Studiengangsleiter - $studiengangsleiter = new studiengang(); - $stgleiter = $studiengangsleiter->getLeitung($stg); - - if($stgleiter) - { - $to=''; - foreach($stgleiter as $leiter) - { - if($to!='') - { - $to.=', '.$leiter.'@'.DOMAIN; - } - else - { - $to.=$leiter.'@'.DOMAIN; - } - } - - $benutzer = new benutzer(); - $benutzer->load($user); - - $bezeichnung = new lehrveranstaltung(); - $bezeichnung->load($lv); - - $message = $p->t('courseInformation/diesIstEineAutomatischeMail').".\n". - $p->t('courseInformation/lvinfoWurdeUeberarbeitet',array($benutzer->nachname.' '.$benutzer->vorname,$bezeichnung->bezeichnung)).":\n"; - - $message.="\n".$p->t('courseInformation/sieKoennenDieseUnterFolgenderAdresseFreigeben').":\n". - APP_ROOT."cis/private/lehre/ects/freigabe.php?stg=".$stg."&sem=".$sem."&lv=".$lv; - - $mail = new mail($to, 'vilesci@'.DOMAIN,$p->t('courseInformation/freigabeLvinfo'), $message); - if($mail->send()) - { - $okmsg.="
".$p->t('courseInformation/freigabemailWurdeVersandt',array($to)).""; - } - else - { - $okmsg.="
".$p->t('courseInformation/fehlerBeimSendenAufgetreten',array($to))."!"; - } - } - else - { - $okmsg.="
".$p->t('courseInformation/konnteKeinFreigabemailVersendetWerden').""; - } - - } - } - - $output .= "\n"; - $output .= ""; - $output .= ""; - - $output .= "
"; - $output .= "
"; - $stg_obj = new studiengang(); - - //Anzeigen des DropDown Menues mit Stg - if($stg_obj->getAll('typ, kurzbz')) - { - $output .= $p->t('global/studiengang')." "; - if(!$stgselected) - $stg=$firststg; - } - else - { - $errormsg .= "$stg_obj->errormsg"; - } - - - - //Anzeigen des DropDown Menues mit Semester - if(isset($changed) && $changed=='stg') - { - unset($sem); - unset($lvid); - } - - if($stg_obj->load($stg)) - { - $output .= $p->t('global/semester')." "; - - if(!$semselected) - $sem=$firstsem; - } - else - $errormsg .= "$stg_obj->errormsg"; - - //Anzeigen des DropDown Menues mit Lehrveranstaltungen - $lv_obj = new lehrveranstaltung(); - if($lv_obj->load_lva($stg,$sem,null,true,null,'orgform_kurzbz,semester, bezeichnung')) - { - $output .= $p->t('global/lehrveranstaltung')." "; - if(!$vorhanden) - $lv=$firstlv; - } - else - { - $errormsg .= "$lv_obj->errormsg"; - } - - $output .= ""; - $output .= ""; - $output .= "
"; - $output .= "
"; - //Menue ausgeben - $output .= "\n"; - $output .= ""; - $output .= "
"; - - $stg_obj->load($stg); - - //Kopfzeile hinausschreiben und $output ausgeben - echo "

 ".$p->t('courseInformation/lvInfoSemester',array($stg_obj->kuerzel, $sem))."

"; - echo $output; - - if ($berechtigt==false) - die($p->t('global/keineBerechtigungFuerDieseSeite')); - - if(isset($lv) && isset($stg) && isset($sem)) // Wenn oben alles Ausgewaehlt wurde - { - //Anzeige des Formulares - $stg_obj1 = new studiengang(); - $stg_obj1->load($stg); - - if(isset($errormsg) && $okmsg!='') - echo ''.$errormsg.'
'; - if(isset($okmsg) && $okmsg!='') - echo ''.$okmsg.'
'; - - $lv_obj_en = new lvinfo(); - $lv_obj_de = new lvinfo(); - - if($lv_obj_en->load($lv, ATTR_SPRACHE_EN)) - $lv_en=$lv_obj_en; - - if($lv_obj_de->load($lv, ATTR_SPRACHE_DE)) - $lv_de=$lv_obj_de; - - if(!isset($_POST['lehrziele_de']) && isset($lv_de)) - { - $lehrziele_de = $lv_de->lehrziele; - $lehrinhalte_de = $lv_de->lehrinhalte; - $voraussetzungen_de = $lv_de->voraussetzungen; - $unterlagen_de = $lv_de->unterlagen; - $pruefungsordnung_de = $lv_de->pruefungsordnung; - $anmerkungen_de = $lv_de->anmerkungen; - $kurzbeschreibung_de = $lv_de->kurzbeschreibung; - $anwesenheit_de = $lv_de->anwesenheit; - $freig_de = $lv_de->genehmigt; - $titel_de = $lv_de->titel; - $methodik_de = $lv_de->methodik; - - //Fuegt den Satz "Nach erfolgreichem Abschluss sind die Studierenden in der Lage, " vor den Lehrzielen ein, falls noch nicht vorhanden - if (substr_count($lehrziele_de, 'Nach erfolgreichem Abschluss sind die Studierenden in der Lage')==0) - $lehrziele_de = 'Nach erfolgreichem Abschluss sind die Studierenden in der Lage, '.$lehrziele_de; - } - - if(!isset($_POST['lehrziele_en']) && isset($lv_en)) - { - $lehrziele_en = $lv_en->lehrziele; - $lehrinhalte_en = $lv_en->lehrinhalte; - $voraussetzungen_en = $lv_en->voraussetzungen; - $unterlagen_en = $lv_en->unterlagen; - $pruefungsordnung_en = $lv_en->pruefungsordnung; - $anmerkungen_en = $lv_en->anmerkungen; - $kurzbeschreibung_en = $lv_en->kurzbeschreibung; - $anwesenheit_en = $lv_en->anwesenheit; - $freig_en = $lv_en->genehmigt; - $titel_en = $lv_en->titel; - $methodik_en = $lv_en->methodik; - - //Fuegt den Satz "Nach erfolgreichem Abschluss sind die Studierenden in der Lage, " vor den Lehrzielen ein, falls noch nicht vorhanden - if (substr_count($lehrziele_en, 'After passing this course successfully students are able to')==0) - $lehrziele_en = 'After passing this course successfully students are able to '.$lehrziele_en; - } - - $lv_obj = new lehrveranstaltung(); - $lv_obj->load($lv); - echo "
"; - - echo ""; - echo ""; - - $stsem_obj = new studiensemester(); - $stsem = $stsem_obj->getaktorNext(); - //Namen der Lehrenden Auslesen - $qry = "SELECT - * - FROM - campus.vw_mitarbeiter, lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit - WHERE - lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." - AND tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id - AND studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE lehrveranstaltung_id=".$db->db_add_param($lv)." ORDER BY ende DESC LIMIT 1) - AND mitarbeiter_uid=uid"; - - echo ""; - - //FB Leiter auslesen - $qry = " SELECT - distinct titelpre, titelpost, vorname, nachname - FROM - public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) - WHERE - funktion_kurzbz='Leitung' AND - (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND - oe_kurzbz in (SELECT distinct lehrfach.oe_kurzbz - FROM - lehre.tbl_lehreinheit - JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id) - WHERE - tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND - studiensemester_kurzbz=(SELECT studiensemester_kurzbz - FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." - ORDER BY ende DESC LIMIT 1 - ) - )"; - - echo ""; - - //FB Koordinator auslesen - //$qry = "SELECT distinct vorname, nachname FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='fbk' AND studiengang_kz='$stg' AND fachbereich_kurzbz in (SELECT fachbereich_kurzbz FROM lehre.tbl_lehrfach, lehre.tbl_lehreinheit WHERE lehrveranstaltung_id='$lv' AND tbl_lehrfach.lehrfach_id=tbl_lehreinheit.lehrfach_id AND tbl_lehreinheit.studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) WHERE tbl_lehreinheit.lehrveranstaltung_id='$lv' ORDER BY ende DESC LIMIT 1))"; - $qry = "SELECT - distinct titelpre, titelpost, vorname, nachname, tbl_fachbereich.fachbereich_kurzbz - FROM - lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach, public.tbl_benutzerfunktion, campus.vw_mitarbeiter, public.tbl_fachbereich - WHERE - tbl_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND - tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND - tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz AND - tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz AND - tbl_benutzerfunktion.funktion_kurzbz='fbk' AND - (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND - vw_mitarbeiter.uid=COALESCE(tbl_lehrveranstaltung.koordinator, tbl_benutzerfunktion.uid) AND - tbl_lehrveranstaltung.studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)"; - - echo ""; - - //echo "
".$p->t('courseInformation/ectsCredits')."".($lv_obj->ects!=''?number_format($lv_obj->ects,1,'.',''):'')."
".$p->t('courseInformation/lehrendeLautLehrauftrag').""; - $helparray = array(); - if($result=$db->db_query($qry)) - { - while($row=$db->db_fetch_object($result)) - { - if(!in_array("$row->titelpre $row->vorname $row->nachname $row->titelpost",$helparray))//damit ein Name nicht doppelt vorkommt - $helparray[] = "$row->titelpre $row->vorname $row->nachname $row->titelpost"; - } - } - - foreach($helparray as $elem) - echo $elem."
"; - echo "
".$p->t('courseInformation/institutsleiter').""; - if($result=$db->db_query($qry)) - { - while($row=$db->db_fetch_object($result)) - { - echo "$row->titelpre $row->vorname $row->nachname $row->titelpost
"; - } - } - - echo "
".$p->t('courseInformation/institutskoordinator').""; - if($result=$db->db_query($qry)) - { - while($row=$db->db_fetch_object($result)) - { - echo "$row->titelpre $row->vorname $row->nachname $row->titelpost
"; - } - } - - echo "
"; - echo ""; - - - echo ""; - echo ""; - echo ""; - echo ""; - - echo ""; - //Sprache ausgeben - echo "".$p->t('courseInformation/unterrichtssprache')."$lv_obj->sprache"; - echo ""; - - //Anz. Incoming ausgeben - - if ($lv_obj->incoming > -1) - { - echo "".$p->t('courseInformation/incomingplaetze')."$lv_obj->incoming"; - } - else echo "".$p->t('courseInformation/incomingplaetze')."0"; - echo "".$p->t('courseInformation/beiFehlernInDenFixfeldern',array($stg_obj1->email)).""; - echo "

".$p->t('courseInformation/pflichtfelderWerdenAufDerExternenSeiteAngezeigt',array($stg_obj1->email))."."; - //echo "".$p->t('courseInformation/fallsSieAufzaehlungslistenVerwenden',array($stg_obj1->email)).""; --> Es sollten keine HTML-Tags gespeichert werden koennen. Hier muss eine andere Loesung gefunde werden. - echo "

"; - - //Eingabefelder anzeigen - echo ""; - - - echo ' - - - - '; - echo ' - - - '; - echo ' - - '; - - echo ' - - - - - - - - - - - - '; - echo ' - - - - - - - - - - - - - - - - - '; - echo ' - - - - - - - - - - - - - - - - - - - - - - - '; - if ($rechte->isBerechtigt('lehre/lvinfo_freigabe',$oe_kurzbz) || $rechte->isBerechtigt('lehre/lvinfo_freigabe',$stg)) - echo ' - - - - '; - - echo "

DEUTSCH

 

ENGLISH

'.($lv_de->genehmigt==false?''.$p->t('courseInformation/nochNichtFreigegeben').'':$p->t('courseInformation/freigegeben')).''.($lv_en->genehmigt==false?''.$p->t('courseInformation/nochNichtFreigegeben').'':$p->t('courseInformation/freigegeben')).'
 
'.$p->t('lvinfo/kurzbeschreibung').' (Pflichtfeld) '.$p->t('lvinfo/kurzbeschreibungEN').' (Required)
'.$p->t('lvinfo/methodik').' (Pflichtfeld) '.$p->t('lvinfo/methodikEN').' (Required)
'.$p->t('lvinfo/lernergebnisse').' (Pflichtfeld)'.$p->t('lvinfo/lernergebnisseEN').' (Required)
'.$p->t('lvinfo/lehrinhalte').' (Pflichtfeld)'.$p->t('lvinfo/lehrinhalteEN').' (Required)
'.$p->t('lvinfo/vorkenntnisse').' (Pflichtfeld) '.$p->t('lvinfo/vorkenntnisseEN').' (Required)
'.$p->t('lvinfo/literatur').' '.$p->t('lvinfo/literaturEN').'
'.$p->t('lvinfo/leistungsbeurteilung').''.$p->t('lvinfo/leistungsbeurteilungEN').'
'.$p->t('lvinfo/anwesenheit').''.$p->t('lvinfo/anwesenheitEN').'
'.$p->t('lvinfo/anmerkungen').''.$p->t('lvinfo/anmerkungenEN').'

'.$p->t('courseInformation/deutschFreigeben').'

'.$p->t('courseInformation/englischFreigeben').'

"; - echo "
"; - echo ""; - echo ""; - echo "

"; - if (!$berechtigt) - echo ""; - echo "
"; - echo "
"; - echo "











"; - if(isset($error) && $error!='') - echo $error; - } -?> - - - diff --git a/cis/private/lehre/ects/preview.php b/cis/private/lehre/ects/preview.php deleted file mode 100644 index ca2d696d8..000000000 --- a/cis/private/lehre/ects/preview.php +++ /dev/null @@ -1,746 +0,0 @@ -, - * Andreas Oesterreicher - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ -/* @date 27.10.2005 - @brief Zeigt die Daten aus der tbl_lvinfo an - - @edit 08-11-2006 Versionierung wurde entfernt. Alle eintraege werden jetzt im WS2007 - abgespeichert - 03-02-2006 Anpassung an die neue Datenbank -*/ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../config/global.config.inc.php'); -require_once('../../../../include/studiensemester.class.php'); -require_once('../../../../include/lehrveranstaltung.class.php'); -require_once('../../../../include/lvinfo.class.php'); -require_once('../../../../include/studiengang.class.php'); -require_once('../../../../include/safehtml/safehtml.class.php'); -require_once '../../../../include/phrasen.class.php'; -require_once '../../../../include/lehreinheit.class.php'; -require_once '../../../../include/lehrstunde.class.php'; -require_once '../../../../include/datum.class.php'; -require_once '../../../../include/stunde.class.php'; - -if (!$db = new basis_db()) - die('Fehler beim Herstellen der Datenbankverbindung'); - -$phrasen = new phrasen(); - -function cmp($a, $b) -{ - if($a->datum == $b->datum && $a->stunde == $b->stunde) - { - return 0; - } - if($a->datum == $b->datum && $a->stunde < $b->stunde) - { - return -1; - } - else if($a->datum == $b->datum && $a->stunde >= $b->stunde) - { - return 1; - } - return ($a->datum < $b->datum) ? -1 : 1; - -} - -function getLastStundeByDatum(Array $array, $filterDatum) -{ - $callback = function($item) use ($filterDatum) - { - return ($filterDatum == $item->datum); - }; - return array_filter($array,$callback); -} - -$titel_de = ''; -$methodik_de = ''; -$kurzbeschreibung_de = ''; -$anwesenheit_de = ''; -$lehrziele_de = ''; -$lehrinhalte_de = ''; -$voraussetzungen_de = ''; -$unterlagen_de = ''; -$pruefungsordnung_de = ''; -$anmerkungen_de = ''; - -$titel_en = ''; -$methodik_en = ''; -$kurzbeschreibung_en = ''; -$anwesenheit_en = ''; -$lehrziele_en = ''; -$lehrinhalte_en = ''; -$voraussetzungen_en = ''; -$unterlagen_en = ''; -$pruefungsordnung_en = ''; -$anmerkungen_en = ''; - -?> - - - -ECTS - European Course Credit Transfer Systems (ECTS) - - - - - - - - -
- -
-





- - - - - - -
- -Deutsche Version
"; - echo "
  • Englische Version

  • "; - } - - if(isset($_POST['methodik_de'])) //Alle Variablen werden per POST Methode uebergeben (zB bei Voransicht) - { - //$sprache = stripslashes($_POST['sprache']); - //$semstunden = stripslashes($_POST["semstunden"]); - $lehrveranstaltung_id = $_POST['lv']; - - // german content variables - //$titel_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['titel_de'])); - $methodik_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['methodik_de'])); - $kurzbeschreibung_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['kurzbeschreibung_de'])); - $anwesenheit_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['anwesenheit_de'])); - $lehrziele_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['lehrziele_de'])); - $lehrinhalte_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['lehrinhalte_de'])); - $voraussetzungen_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['voraussetzungen_de'])); - $unterlagen_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['unterlagen_de'])); - $pruefungsordnung_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['pruefungsordnung_de'])); - $anmerkungen_de = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['anmerkungen_de'])); - - $parser = new SafeHTML(); - $lehrziele_de = $parser->parse($lehrziele_de); - $parser = new SafeHTML(); - $lehrinhalte_de = $parser->parse($lehrinhalte_de); - $parser = new SafeHTML(); - $voraussetzungen_de = $parser->parse($voraussetzungen_de); - $parser = new SafeHTML(); - $unterlagen_de = $parser->parse($unterlagen_de); - $parser = new SafeHTML(); - $pruefungsordnung_de = $parser->parse($pruefungsordnung_de); - $parser = new SafeHTML(); - $anmerkungen_de = $parser->parse($anmerkungen_de); - $parser = new SafeHTML(); - $kurzbeschreibung_de = $parser->parse($kurzbeschreibung_de); - $parser = new SafeHTML(); - $anwesenheit_de = $parser->parse($anwesenheit_de); - $parser = new SafeHTML(); - $methodik_de = $parser->parse($methodik_de); - - // Englisch content variables - //$titel_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['titel_en'])); - $methodik_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['methodik_en'])); - $kurzbeschreibung_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['kurzbeschreibung_en'])); - $anwesenheit_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['anwesenheit_en'])); - $lehrziele_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['lehrziele_en'])); - $lehrinhalte_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['lehrinhalte_en'])); - $voraussetzungen_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['voraussetzungen_en'])); - $unterlagen_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['unterlagen_en'])); - $pruefungsordnung_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['pruefungsordnung_en'])); - $anmerkungen_en = mb_eregi_replace("\r\n","
    ",stripslashes($_POST['anmerkungen_en'])); - - $parser = new SafeHTML(); - $lehrziele_en = $parser->parse($lehrziele_en); - $parser = new SafeHTML(); - $lehrinhalte_en = $parser->parse($lehrinhalte_en); - $parser = new SafeHTML(); - $voraussetzungen_en = $parser->parse($voraussetzungen_en); - $parser = new SafeHTML(); - $unterlagen_en = $parser->parse($unterlagen_en); - $parser = new SafeHTML(); - $pruefungsordnung_en = $parser->parse($pruefungsordnung_en); - $parser = new SafeHTML(); - $anmerkungen_en = $parser->parse($anmerkungen_en); - $parser = new SafeHTML(); - $kurzbeschreibung_en = $parser->parse($kurzbeschreibung_en); - $parser = new SafeHTML(); - $anwesenheit_en = $parser->parse($anwesenheit_en); - $parser = new SafeHTML(); - $methodik_en = $parser->parse($methodik_en); - } - elseif(isset($_GET['lv'])) //LV Id wird uebergeben (zB bei Ansicht fuer alle von lesson.php) - { - $lehrveranstaltung_id=$_GET['lv']; - - $stsemobj = new studiensemester(); - $stsem = $stsemobj->getaktorNext(); - - $lvinfo_obj = new lvinfo(); - if($lvinfo_obj->load($lehrveranstaltung_id, ATTR_SPRACHE_DE)) - { - // german content variables - //$titel_de = $lvinfo_obj->titel; - $methodik_de = $lvinfo_obj->methodik; - $kurzbeschreibung_de = $lvinfo_obj->kurzbeschreibung; - $anwesenheit_de = $lvinfo_obj->anwesenheit; - $lehrziele_de = $lvinfo_obj->lehrziele; - $lehrinhalte_de = $lvinfo_obj->lehrinhalte; - $voraussetzungen_de = $lvinfo_obj->voraussetzungen; - $unterlagen_de = $lvinfo_obj->unterlagen; - $pruefungsordnung_de = $lvinfo_obj->pruefungsordnung; - $anmerkungen_de = $lvinfo_obj->anmerkungen; - } - - if($lvinfo_obj->load($lehrveranstaltung_id, ATTR_SPRACHE_EN)) - { - // Englisch content variables - //$titel_en = $lvinfo_obj->titel; - $methodik_en = $lvinfo_obj->methodik; - $kurzbeschreibung_en = $lvinfo_obj->kurzbeschreibung; - $anwesenheit_en = $lvinfo_obj->anwesenheit; - $lehrziele_en = $lvinfo_obj->lehrziele; - $lehrinhalte_en = $lvinfo_obj->lehrinhalte; - $voraussetzungen_en = $lvinfo_obj->voraussetzungen; - $unterlagen_en = $lvinfo_obj->unterlagen; - $pruefungsordnung_en = $lvinfo_obj->pruefungsordnung; - $anmerkungen_en = $lvinfo_obj->anmerkungen; - } - } - else - die('Fehler bei der Parameteruebergabe'); - - $stsemobj = new studiensemester(); - $stsem = $stsemobj->getaktorNext(); - - $lv_obj = new lehrveranstaltung(); - if(!$lv_obj->load($lehrveranstaltung_id)) - die($lv_obj->errormsg); - - $ects_points = $lv_obj->ects; - $stg = $lv_obj->studiengang_kz; - $sem = $lv_obj->semester; - $lang = $lv_obj->sprache; - $titel_de = $lv_obj->bezeichnung; - $titel_en = $lv_obj->bezeichnung_english; - $anz_incoming = $lv_obj->incoming; - - if (!isset($lv)) - $lv=0; - - - //Zugeteilte Fachbereiche auslesen - $qry = "SELECT distinct tbl_fachbereich.bezeichnung as bezeichnung, tbl_fachbereich.fachbereich_kurzbz as fachbereich_kurzbz - FROM public.tbl_fachbereich, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach - WHERE tbl_lehreinheit.studiensemester_kurzbz=( - SELECT studiensemester_kurzbz FROM lehre.tbl_lehreinheit JOIN public.tbl_studiensemester USING(studiensemester_kurzbz) - WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." ORDER BY ende DESC LIMIT 1) - AND tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND - tbl_fachbereich.oe_kurzbz=lehrfach.oe_kurzbz"; - - if(!$result=$db->db_query($qry)) - die('Fehler beim Lesen aus der Datenbank'); - - $fachbereiche="'1'"; - $fachbereich['kurzbz']=array(); - $fachbereich['bezeichnung']=array(); - - while($row=$db->db_fetch_object($result)) - { - $fachbereiche .= ", ".$db->db_add_param($row->fachbereich_kurzbz); - $fachbereich['kurzbz'][]=$row->fachbereich_kurzbz; - $fachbereich['bezeichnung'][]=$row->bezeichnung; - } - - //Studiengangsbezeichnung auslesen - $stg_hlp_obj = new studiengang(); - $stg_hlp_obj->load($stg); - - $stg_kurzbz = $stg_hlp_obj->kuerzel; - $stg_kurzbzlang = $stg_hlp_obj->kurzbzlang; - - //Lehrform auslesen - $qry = "Select distinct lehrform_kurzbz FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id=".$db->db_add_param($lv, FHC_INTEGER)." AND studiensemester_kurzbz=".$db->db_add_param($stsem); - if(!$res = $db->db_query($qry)) - die('Fehler beim Lesen aus der Datenbank'); - //echo $fachbereiche; - while($row = $db->db_fetch_object($res)) - $lehrform_kurzbz[] = $row->lehrform_kurzbz; - //Fachbereichsleiter fuer alle FB ermitteln - $qry=" - SELECT - vorname, nachname, tbl_fachbereich.fachbereich_kurzbz - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_fachbereich USING(oe_kurzbz) - JOIN campus.vw_mitarbeiter USING(uid) - WHERE - vw_mitarbeiter.aktiv AND - funktion_kurzbz='Leitung' AND tbl_fachbereich.fachbereich_kurzbz in($fachbereiche) AND - (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())"; - - if(!$res=$db->db_query($qry)) - die('Fehler '.$db->errormsg); - - $fachbereichsleiter=array(); - while($row=$db->db_fetch_object($res)) - $fachbereichsleiter[$row->fachbereich_kurzbz] = $row->vorname." ".$row->nachname; - - //Fachbereichskoordinatoren fuer alle FB ermitteln - //$qry="SELECT * FROM public.tbl_benutzerfunktion JOIN campus.vw_mitarbeiter USING(uid) WHERE funktion_kurzbz='fbk' AND studiengang_kz='$stg' AND fachbereich_kurzbz in($fachbereiche)"; - $qry = "SELECT - distinct vorname, nachname, tbl_fachbereich.fachbereich_kurzbz - FROM - lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach, public.tbl_benutzerfunktion, campus.vw_mitarbeiter, public.tbl_fachbereich - WHERE - vw_mitarbeiter.aktiv AND - tbl_lehrveranstaltung.lehrveranstaltung_id='$lv' AND - tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND - lehrfach.oe_kurzbz=tbl_fachbereich.oe_kurzbz AND - tbl_fachbereich.fachbereich_kurzbz=tbl_benutzerfunktion.fachbereich_kurzbz AND - tbl_benutzerfunktion.funktion_kurzbz='fbk' AND - vw_mitarbeiter.uid=COALESCE(tbl_lehrveranstaltung.koordinator, tbl_benutzerfunktion.uid) AND - (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND - (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND - tbl_lehrveranstaltung.studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1) "; - - if(!$res=$db->db_query($qry)) - die('Fehler ! '.$db->errormsg); - - $fachbereichskoordinator=array(); - while($row=$db->db_fetch_object($res)) - { - $name = $row->vorname." ".$row->nachname; - - if(!isset($fachbereichskoordinator[$row->fachbereich_kurzbz]) || - !in_array($name, $fachbereichskoordinator[$row->fachbereich_kurzbz])) - { - $fachbereichskoordinator[$row->fachbereich_kurzbz][] = $name; - } - } - - //Namen der Lehrenden Auslesen - $qry = "SELECT distinct vorname, nachname FROM lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, campus.vw_mitarbeiter - WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." - AND studiensemester_kurzbz=(SELECT studiensemester_kurzbz FROM public.tbl_studiensemester JOIN lehre.tbl_lehreinheit USING(studiensemester_kurzbz) WHERE tbl_lehreinheit.lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." ORDER BY ende DESC LIMIT 1) - AND tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id - AND tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid"; - - $lehrendearray = array(); - if($result=$db->db_query($qry)) - { - while($row=$db->db_fetch_object($result)) - $lehrendearray[] = "$row->vorname $row->nachname"; - } - - //Ausgabe der LV-Information - - //Deutsch Version - if(!(isset($language) && $language=='en')) - { - echo "

    - - - - - - "; - - if ($kurzbeschreibung_de) - { - echo ""; - echo ""; - } - - if ($lehrziele_de) - { - echo ""; - echo ""; - } - - if ($lehrinhalte_de) - { - echo ""; - echo ""; - } - - if ($voraussetzungen_de) - { - echo ""; - echo ""; - } - - if ($methodik_de) - { - echo ""; - echo ""; - } - - if ($pruefungsordnung_de) - { - echo ""; - echo ""; - } - - if ($unterlagen_de) - { - echo ""; - echo ""; - } - - if ($anwesenheit_de) - { - echo ""; - echo ""; - } - - if ($anmerkungen_de) - { - echo ""; - echo ""; - } - - echo "
    - -

    - ".stripslashes($titel_de)."

    - -

    "; - echo ''; - echo ""; - echo ""; - echo ''; - if(($anz=count($lehrendearray))>0) - { - echo "'; - } - - if(isset($lehrform_kurzbz) && count($lehrform_kurzbz)>0) - { - echo "'; - } - - if ($lang > -1) - echo ''; - - if ($ects_points) - echo ''; - - if ($anz_incoming > -1) - { - echo ''; - } - else echo ''; - - echo ''; - //Fachbereiche und Leiter/Koordinatoren anzeigen - if (count($fachbereich['bezeichnung'])>0) - { - echo ''; - } - echo "
    Studiengang:$stg_kurzbz
    Semester:$sem
      
    ".$phrasen->t('lehre/lehrbeauftragter').": "; - - foreach($lehrendearray as $elem) - { - $anz--; - echo " $elem"; - if($anz!=0) - echo ','; - } - echo '
    Lehrform: "; - foreach ($lehrform_kurzbz as $lehrform_kurz) - echo "$lehrform_kurz
    "; - echo '
    Sprache: '.stripslashes($lang).'
    ECTS: '.number_format(stripslashes($ects_points),1,'.','').'
    Incomingplätze: '.stripslashes($anz_incoming).'
    Incomingplätze: 0
      
    Institut: '; - //Fachbereiche durchlaufen - for($i=0;$i
    "; - echo "

    ".$phrasen->t('lvinfo/kurzbeschreibung')."

    ".stripslashes($kurzbeschreibung_de)."

    ".$phrasen->t('lvinfo/lernergebnisse')."

    ".stripslashes($lehrziele_de)."

    ".$phrasen->t('lvinfo/lehrinhalte')."

    ".stripslashes($lehrinhalte_de)."

    ".$phrasen->t('lvinfo/vorkenntnisse')."

    ".stripslashes($voraussetzungen_de)."

    ".$phrasen->t('lvinfo/methodik')."

    ".stripslashes($methodik_de)."

    ".$phrasen->t('lvinfo/leistungsbeurteilung')."

    ".stripslashes($pruefungsordnung_de)."

    ".$phrasen->t('lvinfo/literatur')."

    ".stripslashes($unterlagen_de)."

    ".$phrasen->t('lvinfo/anwesenheit')."

    ".stripslashes($anwesenheit_de)."

    ".$phrasen->t('lvinfo/anmerkungen')."

    ".stripslashes($anmerkungen_de)." 

    "; - } - - //Englische Version - if(!(isset($language) && $language=='de')) - { - echo "

    "; - echo " - - - - '; - - if ($kurzbeschreibung_en) - { - echo ""; - echo ""; - } - - if ($lehrziele_en) - { - echo ""; - echo ""; - } - - if ($lehrinhalte_en) - { - echo ""; - echo ""; - } - - if ($voraussetzungen_en) - { - echo ""; - echo ""; - } - - if ($methodik_en) - { - echo ""; - echo ""; - } - - if ($pruefungsordnung_en) - { - echo ""; - echo ""; - } - - if ($unterlagen_en) - { - echo ""; - echo ""; - } - - if ($anwesenheit_en) - { - echo ""; - echo ""; - } - - if ($anmerkungen_en) - { - echo ""; - echo ""; - } - } - - echo "
    -

    - ".stripslashes($titel_en)." -

    -

    "; - - echo ''; - echo ""; - echo ""; - echo ""; - - if(($anz=count($lehrendearray))>0) - { - echo ""; - } - - if(isset($lehrform_kurzbz) && count($lehrform_kurzbz)>0) - { - echo ""; - } - - if ($lang > -1) - echo ""; - - if ($ects_points) - echo ""; - - if ($anz_incoming > -1) - { - echo ''; - } - else echo ''; - - echo ""; - - //Fachbereiche und Leiter/Koordinatoren anzeigen - if (count($fachbereich['bezeichnung'])>0) - { - echo ''; - } - - echo '
    Degree programme:$stg_kurzbz
    Semester:$sem
      
    Lecturer:"; - - foreach($lehrendearray as $elem) - { - $anz--; - echo " $elem"; - if($anz!=0) - echo ","; - } - echo "
    Course methods: "; - foreach ($lehrform_kurzbz as $lehrform_kurz) - echo "$lehrform_kurz
    "; - echo "
    Language: ".stripslashes($lang)."
    ECTS Credits: ".number_format(stripslashes($ects_points),1,'.','')."
    Places Available for Incoming Students: '.stripslashes($anz_incoming).'
    Places Available for Incoming Students: 0
      
    Department: '; - //Fachbereiche durchlaufen - for($i=0;$i
    '; - echo '

    ".$phrasen->t('lvinfo/kurzbeschreibungEN')."

    ".stripslashes($kurzbeschreibung_en)."

    ".$phrasen->t('lvinfo/lernergebnisseEN')."

    ".stripslashes($lehrziele_en)."

    ".$phrasen->t('lvinfo/lehrinhalteEN')."

    ".stripslashes($lehrinhalte_en)."

    ".$phrasen->t('lvinfo/vorkenntnisseEN')."

    ".stripslashes($voraussetzungen_en)."

    ".$phrasen->t('lvinfo/methodikEN')."

    ".stripslashes($methodik_en)."

    ".$phrasen->t('lvinfo/leistungsbeurteilungEN')."

    ".stripslashes($pruefungsordnung_en)."

    ".$phrasen->t('lvinfo/literaturEN')."

    ".stripslashes($unterlagen_en)."

    ".$phrasen->t('lvinfo/anwesenheitEN')."

    ".stripslashes($anwesenheit_en)."

    ".$phrasen->t('lvinfo/anmerkungenEN')."

    ".stripslashes($anmerkungen_en)." 
    "; - - $lehreinheit = new lehreinheit(); - $studiensemester = new studiensemester(); - $lehreinheit->load_lehreinheiten($lv, $studiensemester->getaktorNext()); - - if (CIS_LVINFO_TERMINE_ANZEIGEN == true) - { - if(!empty($lehreinheit->lehreinheiten)) - { - echo "

    Termine

    "; - foreach($lehreinheit->lehreinheiten as $lehreinheit_temp) - { - $lehrstunde = new lehrstunde(); - $lehrstunde->load_lehrstunden_le($lehreinheit_temp->lehreinheit_id); - $i = 1; - echo ""; - } - echo "
      "; - - $result = $lehrstunde->lehrstunden; - $last = ""; - $bis = ""; - usort($result, "cmp"); - $datum = new datum(); - $std_von = new stunde(); - $std_bis = new stunde(); - foreach($result as $key=>$stunde) - { - if($last !== $stunde->datum) - { - $temp = array_values(getLastStundeByDatum($result, $stunde->datum)); - $size = count($temp); - if($size != 0) - { - $std_von->load($temp[0]->stunde); - $std_bis->load($temp[$size-1]->stunde); - echo "
    • ".$datum->formatDatum($temp[0]->datum,"d.m.Y")." von ".mb_substr($std_von->beginn,0,5)." bis ".mb_substr($std_bis->ende,0,5)."
    • "; - } - $i++; - } - elseif($last == "") - { - $temp = getLastStundeByDatum($result, $stunde->datum); - var_dump($temp); - } - else - { - $bis = $stunde->stunde; - } - - if($i % 5 === 0) - { - // echo "
      "; - // $i++; - } - $last = $stunde->datum; - } - echo "
    "; - } - } - - //Ein paar Zeilenumbrueche damit er beim Sprung zum Anker weit genug nach unten springt - echo "



















    "; - -?> -
     
    - diff --git a/cis/private/lehre/ects/terminologie.php b/cis/private/lehre/ects/terminologie.php deleted file mode 100644 index 68cf250c1..000000000 --- a/cis/private/lehre/ects/terminologie.php +++ /dev/null @@ -1,921 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -require_once('../../../../config/cis.config.inc.php'); -require_once('../../../../include/functions.inc.php'); -require_once('../../../../include/phrasen.class.php'); - -$sprache = getSprache(); -$p= new phrasen($sprache); - -?> - - - - - -<?php echo $p->t('courseInformation/terminologie');?> - - - -

    t('courseInformatoin/lvInfoTerminologie')?>

    - - - - - - -
    -   - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - t('courseInformation/terminologieDeutschEnglisch');?> -
    -
    - Deutsch - - Englisch -
    - Abschluss (einer Lehrveranstaltung) - - completion -
    - AnfängerIn - - beginner -
    - angerechnet - - recognized -
    - Anrechnung - - recognition -
    - Aufgaben - - tasks / responsibilities / assignment -
    - Bachelor-Studiengang - - bachelor's degree program -
    - Bachelor - - Bachelor -
    - Bachelor-Arbeiten - - bachelor's paper -
    - berufsbegleitend - - part-time study -
    - Berufspraktikum - - intership -
    - bestanden - - pass -
    - bestanden, mit gutem Erfolg - - pass with merit -
    - bestanden, mit ausgezeichnetem - Erfolg - - pass with distinction -
    - BetreuerIn - - supervisor -
    - Diplomarbeit - - master's thesis -
    - DI (FH) - - DI (FH) -
    - Diplom-Studiengang - - diploma degree program -
    - Erhalter - - operator -
    - Experte/in - - expert -
    - Fachbereich - - special field -
    - FachbereichskoordinatorIn - - special field coordinator -
    - FachbereichsleiterIn - - head of special field -
    - Fachhochschul-Beirat - - University of Applied Sciences Advisory Board (UAS Advisory Board) -
    - Fachhochschul-Kollegium - - University of Applied Sciences Council (UAS Council) -
    - Fachhochschul-KollegiumsleiterIn - - Head of University of Applied Sciences Council -
    - Fachhochschulrat - - FH Council -
    - Fachhochschulkonferenz - - Association of Universities of - Applied Sciences Austria -
    - Fernlehre - - distance learning -
    - Fernlehrelemente - - distance learning elements -
    - Fortgeschrittene/r - - advanced -
    - Gesamtnote, Gesamtbeurteilung - - final grade -
    - Grundlagen - - fundamentals -
    - hauptberuflich Lehrende/r - - full-time instructor -
    - Immanente Leistungsbeurteilung - - continuous assessment -
    - integrierte Lehrveranstaltung - - integrated course -
    - JahrgangssprecherIn - - class representative -
    - kommissionelle Prüfung - - panel exam -
    - Labor - - laboratory -
    - Lehrender - - instructor -
    - Lehrgang universitären - Charakters - - university - level course -
    - Lehrinhalte - - course contents -
    - Lehrkörper - - teaching staff -
    - Lehrmethode - - teaching method -
    - Lehrveranstaltung - - course -
    - Lehrziele - - course objectives -
    - Lernmethode - - study technique -
    - Magisterarbeit - - master's thesis -
    - Mag. (FH) - - Mag. (FH) -
    - Master-Studiengang - - master's degree program -
    - Matrikelnummer - - registration number -
    - Mündliche Prüfung - - oral examination -
    - nebenberuflich Lehrende/r - - part-time instructor -
    - Niveaustufe - - level -
    - Niveaustufen: - - levels -
    - Note - - grade -
    - Organisation der LV - - course organization -
    - Personenkennzeichen - - personal identification number -
    - Pflichtveranstaltung - - required course -
    - Präsentation - - presentation -
    - Programmverantwortlicher - - Program Director -
    - Projektarbeit - - project work -
    - Prüfung - - examination -
    - Prüfungsmodalitäten - - exam procedure -
    - Prüfungsordnung - - examination regulation -
    - Rektor - - rector -
    - Schriftliche Prüfung - - written examination -
    - Semester - - semester -
    - Seminar - - seminar -
    - Stellv. Studiengangsleiter - - Deputy Program Director -
    - AssistentIn - - Administrative Assistant -
    - ECTS-Leistungspunkte - - ECTS credits -
    - Semesterwochenstunden - - Semester periods per week (SP/W) -
    - Sommersemester - - summer semester / spring semester -
    - Spezialisten - - specialists -
    - Studiengang - - degree program -
    - StudiengangssprecherIn - - program representative -
    - StudiengangsleiterIn - - program director -
    - Studienjahr - - academic year -
    - Studienplan - - curriculum -
    - Studienplatz - - study place -
    - Studierendenvertretung - - student council -
    - Teilgebiet - - segment -
    - Test - - test -
    - Titel der Lehrveranstaltung - - course title -
    - Übung (einfache, mit Anleitung) - - exercise -
    - Übung (im Sinne einer LV) - - practice - session
    - Übung (im Sinne üben) - - practice -
    - Unterricht - - instruction -
    - Vollzeit - - full-time -
    - Voraussetzungen (für LVs) - - requirements -
    - Vorlesung - - lecture -
    - Vortragender - - lecturer -
    - Wintersemester - - autumn semester / winter semester -
    - Zeugnis - - certificate -
    - Unterrichtssprache - - Language of instruction -
    - Bewerbung - - application -
    - Zugangsvorraussetzungen - - admission requirements -
    - Matura - - Secondary School diploma -
    - Auslandssemester - - exchange semester -
    - Fachhochschule Technikum Wien - - University of Applied Sciences Technikum Wien (UAS Technikum Wien) -
    - Institut für - - department of -
    - Senat - - Senate -
    - - \ No newline at end of file diff --git a/cis/private/lehre/notenliste.xls.php b/cis/private/lehre/notenliste.xls.php index 4f6437358..9866a6299 100644 --- a/cis/private/lehre/notenliste.xls.php +++ b/cis/private/lehre/notenliste.xls.php @@ -200,20 +200,26 @@ else $stsemdatumbis = $stsem_obj->ende; $qry = "SELECT - distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid, - tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, - (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, - tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von, - tbl_zeugnisnote.note - FROM - campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid) - LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) - LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id AND tbl_zeugnisnote.student_uid=tbl_student.student_uid AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) - LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) - WHERE - vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND - vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem); + distinct on(nachname, vorname, person_id) vorname, nachname, matrikelnr, person_id, tbl_student.student_uid as uid, + tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, + (SELECT status_kurzbz + FROM public.tbl_prestudentstatus + WHERE prestudent_id=tbl_student.prestudent_id + ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, + tbl_bisio.bisio_id, tbl_bisio.bis, tbl_bisio.von, + tbl_zeugnisnote.note,tbl_mobilitaet.mobilitaetstyp_kurzbz + FROM + campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) + JOIN public.tbl_person USING(person_id) JOIN public.tbl_student ON(uid=student_uid) + LEFT JOIN public.tbl_studentlehrverband USING(student_uid,studiensemester_kurzbz) + LEFT JOIN lehre.tbl_zeugnisnote on(vw_student_lehrveranstaltung.lehrveranstaltung_id=tbl_zeugnisnote.lehrveranstaltung_id + AND tbl_zeugnisnote.student_uid=tbl_student.student_uid + AND tbl_zeugnisnote.studiensemester_kurzbz=tbl_studentlehrverband.studiensemester_kurzbz) + LEFT JOIN bis.tbl_bisio ON(uid=tbl_bisio.student_uid) + LEFT JOIN bis.tbl_mobilitaet USING(prestudent_id) + WHERE + vw_student_lehrveranstaltung.lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND + vw_student_lehrveranstaltung.studiensemester_kurzbz=".$db->db_add_param($stsem);";"; if($lehreinheit_id!='') $qry.=" AND vw_student_lehrveranstaltung.lehreinheit_id=".$db->db_add_param($lehreinheit_id, FHC_INTEGER); @@ -243,6 +249,10 @@ else $inc.=' (ar)'; $note='ar'; } + if($elem->mobilitaetstyp_kurzbz !='') //dd-Program + { + $inc.=' (dd)'; + } else $note=''; $worksheet->write($lines,1,$elem->uid); @@ -295,6 +305,7 @@ else $worksheet->write(++$lines,0,'(i) ... Incoming'); $worksheet->write(++$lines,0,'(o) ... Outgoing'); $worksheet->write(++$lines,0,'(ar) ... '.$p->t('anwesenheitsliste/angerechnet')); + $worksheet->write(++$lines,0,'(dd) ... Double Degree Program'); $worksheet->setColumn(0, 0, 5); $worksheet->setColumn(0, 1, 16); diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php index 80062a932..1f1330839 100644 --- a/cis/private/profile/index.php +++ b/cis/private/profile/index.php @@ -293,36 +293,9 @@ if (!$ansicht) $adresse = new adresse(); $adresse->load_pers($user->person_id); - function sortAdresse($a , $b) - { - if ($a->typ === $b->typ) - return 0; - - return ($a->typ < $b->typ) ? -1 : 1; - } - usort($adresse->result, "sortAdresse"); foreach($adresse->result as $a) { - if ($a->zustelladresse) - { - switch ($a->typ) - { - case "h": - $typ = $p->t("global/hauptwohnsitz"); - break; - case "n": - $typ = $p->t("global/nebenwohnsitz"); - break; - default: - $typ = NULL; - break; - } - if ($typ !== NULL) - { - echo "".$typ.":
    "; - echo $a->strasse."
    ".$a->plz." ".$a->ort."

    "; - } - } + echo $a->strasse . " (" . $a->bezeichnung_mehrsprachig[$sprache] .") " . "
    ".$a->plz." ".$a->ort."

    "; } } diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index fcf3dd811..1e91aec20 100644 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -96,12 +96,12 @@ $fieldheadings = array( if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung')) { $za_simple = 0; - $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'FuE', 'Lehre', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); + $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'FuE','FuEallg', 'Lehre', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe', 'Weiterbildung', 'LVEntwicklung'); } else { $za_simple = 1; - $activities = array('Admin', 'FuE','Lehre', 'Pause', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); + $activities = array('Admin', 'FuE','FuEallg','Lehre', 'Pause', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe', 'Weiterbildung', 'LVEntwicklung'); } $activities_str = "'".implode("','", $activities)."'"; @@ -660,7 +660,7 @@ echo ' function checkPausenblock() { var sel = $("#aktivitaet").val(); - var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design"]; + var activities = ["Admin", "Lehre", "FuE", "Operativ", "Betrieb", "Design", "LVEntwicklung", "Weiterbildung", "FuEallg"]; if (activities.includes(sel)) showPausenblock(); else @@ -710,6 +710,10 @@ echo ' else { var pausenstart = Math.floor((spanne/2-15)+(von_stunden*60+parseInt(von_minuten))); + if (pausenstart%15 !== 0) + { + pausenstart = Math.round(pausenstart/10)*10; + } var pausenstart_stunde = Math.floor(pausenstart/60); var pausenstart_minute = pausenstart - pausenstart_stunde*60; pausenstart_stunde = (pausenstart_stunde < 10 ? "0"+pausenstart_stunde : pausenstart_stunde); @@ -1375,8 +1379,10 @@ if ($projekt->getProjekteMitarbeiter($user, true)) if($result = $db->db_query($qry)) { echo ' + + Mimetype + + CIS-Suche @@ -1088,6 +1109,7 @@ function drawAllVersions($id) CIS-Suche Kategorie Filename intern + Mimetype Datum User @@ -1102,6 +1124,7 @@ function drawAllVersions($id) '.($dms_help->cis_suche == 'true'?'Ja':'Nein').' '.$dms_help->kategorie_kurzbz.' '.$dms_help->filename.' + '.$dms_help->mimetype.' '.$dms_help->insertamum.' '.$dms_help->insertvon.' @@ -1568,6 +1591,10 @@ function drawRenameForm($dms_id, $version, $page = NULL, $dpp = NULL, $searching Schlagworte
    (Semikolon getrennt): + + Mimetype + + CIS-Suche: cis_suche == 'true'?'checked="checked"':'').'> diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index b31447994..ed17a096d 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -194,6 +194,9 @@ define('REIHUNGSTEST_CHECK', true); // Bei Statuswechsel auf Bewerber bzw. Student -> soll ZGV brücksichtigt werden define('ZGV_CHECK', true); +define ('ZGV_DOKTOR_ANZEIGEN', false); +define ('ZGV_ERFUELLT_ANZEIGEN', false); + // Bei Statuswechsel auf Bewerber -> bei true wird email (INFOMAIL_BEWERBER) an den Bewerber geschickt define('SEND_BEWERBER_INFOMAIL', false); diff --git a/content/adressedialog.xul.php b/content/adressedialog.xul.php index f4f530bf0..50fb92b00 100644 --- a/content/adressedialog.xul.php +++ b/content/adressedialog.xul.php @@ -70,13 +70,15 @@ else diff --git a/content/betriebsmitteloverlay.xul.php b/content/betriebsmitteloverlay.xul.php index ec0e9f0d5..d9da9269b 100644 --- a/content/betriebsmitteloverlay.xul.php +++ b/content/betriebsmitteloverlay.xul.php @@ -204,7 +204,7 @@ else diff --git a/content/fasDBDML.php b/content/fasDBDML.php index 9beea99db..1c5a7a4c4 100644 --- a/content/fasDBDML.php +++ b/content/fasDBDML.php @@ -413,6 +413,12 @@ if(!$error) } if(!$error) { + //Check, ob OE aktiv ist, sonst Hinweis ausgeben + $oe = new organisationseinheit($_POST['oe_kurzbz']); + if ($oe->aktiv === false) + { + $errormsg = 'ACHTUNG: Die Organisationseinheit ist inaktiv. Änderungen wurden gespeichert.'; + } $benutzerfunktion->oe_kurzbz = $_POST['oe_kurzbz']; $benutzerfunktion->semester = $_POST['semester']; $benutzerfunktion->fachbereich_kurzbz = $_POST['fachbereich_kurzbz']; diff --git a/content/funktionen.js.php b/content/funktionen.js.php index ae9edd2af..a96ea3165 100644 --- a/content/funktionen.js.php +++ b/content/funktionen.js.php @@ -328,6 +328,8 @@ function FunktionDetailSpeichern(kopie) } else { + if(val.dbdml_errormsg!='' && val.dbdml_errormsg!='unknown') + alert(val.dbdml_errormsg); FunktionBezeichnungChanged=false; netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); FunktionenSelectID=val.dbdml_data; diff --git a/content/lvplanung/timetable-week.xul.php b/content/lvplanung/timetable-week.xul.php index 18eaf6076..7e3a144dd 100644 --- a/content/lvplanung/timetable-week.xul.php +++ b/content/lvplanung/timetable-week.xul.php @@ -1,708 +1,735 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - * Gerald Simane-Sequens . - */ -header("Content-type: application/vnd.mozilla.xul+xml"); - -require_once('../../config/vilesci.config.inc.php'); -require_once('../../include/globals.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/benutzerberechtigung.class.php'); -require_once('../../include/lehreinheit.class.php'); -require_once('../../include/zeitwunsch.class.php'); -require_once('../../include/wochenplan.class.php'); -require_once('../../include/reservierung.class.php'); -require_once('../../include/log.class.php'); - -echo ''; -echo ''; -$PHP_SELF = $_SERVER['PHP_SELF']; -// Startwerte setzen -$db_stpl_table=null; -$db = new basis_db(); - -echo ''; - -$uid = get_uid(); - -//Berechtigung pruefen -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($uid); - -if(!$rechte->isBerechtigt('lehre/lvplan')) - die('Sie haben keine Berechtigung fuer diese Seite'); - -$error_msg=''; -$kollision_msg=''; - -// Benutzerdefinierte Variablen laden -loadVariables($uid); - -if (!isset($ignore_kollision)) - $ignore_kollision=(boolean)false; -elseif ($ignore_kollision=='false') - $ignore_kollision=(boolean)false; -else - $ignore_kollision=(boolean)true; - -if (!isset($alle_unr_mitladen)) - $alle_unr_mitladen=(boolean)false; -elseif ($alle_unr_mitladen=='false') - $alle_unr_mitladen=(boolean)false; -else - $alle_unr_mitladen=(boolean)true; - -// Bezeichnungen fuer Tabellen und Views -$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; - -// Variablen uebernehmen -if (isset($_GET['aktion'])) - $aktion=$_GET['aktion']; -else - $aktion=null; - -if (isset($_GET['semesterplan'])) - $semesterplan=$_GET['semesterplan']; -else - $semesterplan=false; -if (isset($_GET['new_stunde'])) - $new_stunde=$_GET['new_stunde']; -if (isset($_GET['new_datum'])) - $new_datum=$_GET['new_datum']; -if (isset($_GET['old_ort'])) - $old_ort=$_GET['old_ort']; -if (isset($_GET['new_ort'])) - $new_ort=$_GET['new_ort']; -if (isset($_GET['kollisionsanzahl'])) - $kollisionsanzahl=$_GET['kollisionsanzahl']; -else - $kollisionsanzahl=0; -if (isset($_GET['ort'])) - $ort=$_GET['ort']; -else - $ort=null; -if (isset($_GET['datum'])) - $datum=$_GET['datum']; -if (isset($_GET['type'])) - $type=$_GET['type']; -if (isset($_GET['stg_kz'])) - $stg_kz=$_GET['stg_kz']; -else - $stg_kz=null; -if (isset($_GET['sem'])) - $sem=$_GET['sem']; -else - $sem=null; -if (isset($_GET['ver'])) - $ver=$_GET['ver']; -else - $ver=null; -if (isset($_GET['grp'])) - $grp=$_GET['grp']; -else - $grp=null; -if (isset($_GET['pers_uid'])) - $pers_uid=$_GET['pers_uid']; -if (isset($_GET['gruppe'])) - $gruppe=$_GET['gruppe']; -else - $gruppe=null; -if (isset($_GET['semester_aktuell'])) - $semester_aktuell=$_GET['semester_aktuell']; - -if (!isset($semester_aktuell) && $semesterplan) - $error_msg.='Studien-Semester ist nicht gesetzt!'; - -if(isset($_GET['fachbereich_kurzbz'])) - $fachbereich_kurzbz = $_GET['fachbereich_kurzbz']; -else - $fachbereich_kurzbz=null; - -if (isset($_GET['new_unr'])) - $new_unr=$_GET['new_unr']; -else - $new_unr=null; - -if (isset($_GET['new_blockung'])) - $new_blockung=$_GET['new_blockung']; -else - $new_blockung=null; -?> - - - - > - - - +, + * Andreas Oesterreicher and + * Rudolf Hangl . + * Gerald Simane-Sequens . + */ +header("Content-type: application/vnd.mozilla.xul+xml"); + +require_once('../../config/vilesci.config.inc.php'); +require_once('../../include/globals.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/lehreinheit.class.php'); +require_once('../../include/zeitwunsch.class.php'); +require_once('../../include/wochenplan.class.php'); +require_once('../../include/reservierung.class.php'); +require_once('../../include/log.class.php'); + +echo ''; +echo ''; +$PHP_SELF = $_SERVER['PHP_SELF']; +// Startwerte setzen +$db_stpl_table=null; +$db = new basis_db(); + +echo ''; + +$uid = get_uid(); + +//Berechtigung pruefen +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($uid); + +if(!$rechte->isBerechtigt('lehre/lvplan')) + die('Sie haben keine Berechtigung fuer diese Seite'); + +$error_msg=''; +$kollision_msg=''; + +// Benutzerdefinierte Variablen laden +loadVariables($uid); + +if (!isset($ignore_kollision)) + $ignore_kollision=(boolean)false; +elseif ($ignore_kollision=='false') + $ignore_kollision=(boolean)false; +else + $ignore_kollision=(boolean)true; + +if (!isset($alle_unr_mitladen)) + $alle_unr_mitladen=(boolean)false; +elseif ($alle_unr_mitladen=='false') + $alle_unr_mitladen=(boolean)false; +else + $alle_unr_mitladen=(boolean)true; + +// Bezeichnungen fuer Tabellen und Views +$lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; + +// Variablen uebernehmen +if (isset($_GET['aktion'])) + $aktion=$_GET['aktion']; +else + $aktion=null; + +if (isset($_GET['semesterplan'])) + $semesterplan=$_GET['semesterplan']; +else + $semesterplan=false; +if (isset($_GET['new_stunde'])) + $new_stunde=$_GET['new_stunde']; +if (isset($_GET['new_datum'])) + $new_datum=$_GET['new_datum']; +if (isset($_GET['old_ort'])) + $old_ort=$_GET['old_ort']; +if (isset($_GET['new_ort'])) + $new_ort=$_GET['new_ort']; +if (isset($_GET['kollisionsanzahl'])) + $kollisionsanzahl=$_GET['kollisionsanzahl']; +else + $kollisionsanzahl=0; +if (isset($_GET['ort'])) + $ort=$_GET['ort']; +else + $ort=null; +if (isset($_GET['datum'])) + $datum=$_GET['datum']; +if (isset($_GET['type'])) + $type=$_GET['type']; +if (isset($_GET['stg_kz'])) + $stg_kz=$_GET['stg_kz']; +else + $stg_kz=null; +if (isset($_GET['sem'])) + $sem=$_GET['sem']; +else + $sem=null; +if (isset($_GET['ver'])) + $ver=$_GET['ver']; +else + $ver=null; +if (isset($_GET['grp'])) + $grp=$_GET['grp']; +else + $grp=null; +if (isset($_GET['pers_uid'])) + $pers_uid=$_GET['pers_uid']; +if (isset($_GET['gruppe'])) + $gruppe=$_GET['gruppe']; +else + $gruppe=null; +if (isset($_GET['semester_aktuell'])) + $semester_aktuell=$_GET['semester_aktuell']; + +if (!isset($semester_aktuell) && $semesterplan) + $error_msg.='Studien-Semester ist nicht gesetzt!'; + +if(isset($_GET['fachbereich_kurzbz'])) + $fachbereich_kurzbz = $_GET['fachbereich_kurzbz']; +else + $fachbereich_kurzbz=null; + +if (isset($_GET['new_unr'])) + $new_unr=$_GET['new_unr']; +else + $new_unr=null; + +if (isset($_GET['new_blockung'])) + $new_blockung=$_GET['new_blockung']; +else + $new_blockung=null; +?> + + + + > + + + diff --git a/content/projekt/projekt.overlay.js.php b/content/projekt/projekt.overlay.js.php index fcb511f00..19fe9e2e1 100644 --- a/content/projekt/projekt.overlay.js.php +++ b/content/projekt/projekt.overlay.js.php @@ -149,12 +149,22 @@ function onselectProjekt() var beginn=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#beginn" )); var ende=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#ende" )); var budget=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#budget" )); - var farbe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#farbe" )); - var aufwand_pt=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufwand_pt" )); + var farbe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#farbe" )); + var aufwand_pt=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufwand_pt" )); var anzahl_ma=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#anzahl_ma" )); var aufwandstyp_kurzbz=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#aufwandstyp_kurzbz" )); - - //Daten den Feldern zuweisen + var zeitaufzeichnung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnung" )); + + if (!zeitaufzeichnung) + { + zeitaufzeichnung='Nein'; + } + else + { + zeitaufzeichnung='Ja'; + } + + //Daten den Feldern zuweisen document.getElementById('textbox-projekt-detail-projekt_kurzbz').value=projekt_kurzbz; //document.getElementById('menulist-projekt-detail-oe_kurzbz').value=oe_kurzbz; @@ -166,9 +176,14 @@ function onselectProjekt() document.getElementById('textbox-projekt-detail-ende').value=ende; document.getElementById('textbox-projekt-detail-budget').value=budget; document.getElementById('textbox-projekt-detail-farbe').value=farbe; - document.getElementById('checkbox-projekt-detail-neu').checked=false; - document.getElementById('textbox-projekt-anzahl_ma').value=anzahl_ma; + document.getElementById('checkbox-projekt-detail-neu').checked=false; + document.getElementById('textbox-projekt-anzahl_ma').value=anzahl_ma; document.getElementById('textbox-projekt-aufwand_pt').value=aufwand_pt; + if(zeitaufzeichnung=='Nein') + document.getElementById('checkbox-projekt-detail-zeitaufzeichnung').checked=false; + else + document.getElementById('checkbox-projekt-detail-zeitaufzeichnung').checked=true; + MenulistSelectItemOnValue('menulist-projekt-detail-aufwandstyp', aufwandstyp_kurzbz); @@ -197,12 +212,13 @@ function saveProjektDetail() beginn = document.getElementById('textbox-projekt-detail-beginn').iso; ende = document.getElementById('textbox-projekt-detail-ende').iso; budget = document.getElementById('textbox-projekt-detail-budget').value; - farbe = document.getElementById('textbox-projekt-detail-farbe').value; + farbe = document.getElementById('textbox-projekt-detail-farbe').value; neu = document.getElementById('checkbox-projekt-detail-neu').checked; - aufwandstyp_kurzbz = MenulistGetSelectedValue('menulist-projekt-detail-aufwandstyp'); - anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value; + aufwandstyp_kurzbz = MenulistGetSelectedValue('menulist-projekt-detail-aufwandstyp'); + anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value; aufwand_pt = document.getElementById('textbox-projekt-aufwand_pt').value; - + zeitaufzeichnung = document.getElementById('checkbox-projekt-detail-zeitaufzeichnung').checked; + var soapBody = new SOAPObject("saveProjekt"); //soapBody.appendChild(new SOAPObject("username")).val('joe'); //soapBody.appendChild(new SOAPObject("passwort")).val('waschl'); @@ -217,14 +233,28 @@ function saveProjektDetail() projekt.appendChild(new SOAPObject("ende")).val(ende); projekt.appendChild(new SOAPObject("budget")).val(budget); projekt.appendChild(new SOAPObject("farbe")).val(farbe); - projekt.appendChild(new SOAPObject("aufwandstyp_kurzbz")).val(aufwandstyp_kurzbz); - projekt.appendChild(new SOAPObject("anzahl_ma")).val(anzahl_ma); + projekt.appendChild(new SOAPObject("aufwandstyp_kurzbz")).val(aufwandstyp_kurzbz); + projekt.appendChild(new SOAPObject("anzahl_ma")).val(anzahl_ma); projekt.appendChild(new SOAPObject("aufwand_pt")).val(aufwand_pt); - + + if(zeitaufzeichnung) + { + projekt.appendChild(new SOAPObject("zeitaufzeichnung")).val('true'); + } + else + { + projekt.appendChild(new SOAPObject("zeitaufzeichnung")).val('false'); + } + if(neu) + { projekt.appendChild(new SOAPObject("neu")).val('true'); - else + } + else + { projekt.appendChild(new SOAPObject("neu")).val('false'); + } + soapBody.appendChild(projekt); var sr = new SOAPRequest("saveProjekt",soapBody); @@ -342,9 +372,9 @@ function ProjektDetailReset() document.getElementById('textbox-projekt-detail-beschreibung').value=''; document.getElementById('textbox-projekt-detail-beginn').value=''; document.getElementById('textbox-projekt-detail-ende').value=''; - document.getElementById('textbox-projekt-detail-budget').value=''; - document.getElementById('textbox-projekt-anzahl_ma').value=''; - document.getElementById('textbox-projekt-aufwand_pt').value=''; + document.getElementById('textbox-projekt-detail-budget').value=''; + document.getElementById('textbox-projekt-anzahl_ma').value=''; + document.getElementById('textbox-projekt-aufwand_pt').value=''; document.getElementById('textbox-projekt-detail-projektwuerdigkeit').value=''; } @@ -362,7 +392,7 @@ function ProjektDisableFields(val) document.getElementById('textbox-projekt-detail-budget').disabled=val; document.getElementById('textbox-projekt-detail-farbe').disabled=val; document.getElementById('button-projekt-detail-speichern').disabled=val; - document.getElementById('menulist-projekt-detail-aufwandstyp').disabled=val; + document.getElementById('menulist-projekt-detail-aufwandstyp').disabled=val; document.getElementById('textbox-projekt-anzahl_ma').disabled=val; document.getElementById('textbox-projekt-aufwand_pt').disabled=val; } @@ -385,65 +415,65 @@ function ProjektNeu() document.getElementById('textbox-projekt-detail-projekt_kurzbz').disabled=false; document.getElementById('checkbox-projekt-detail-neu').checked=true; document.getElementById('caption-projekt-detail').label='Neues Projekt'; - document.getElementById('textbox-projekt-detail-farbe').value='#FF0000'; - document.getElementById('textbox-projekt-anzahl_ma').disabled=false; + document.getElementById('textbox-projekt-detail-farbe').value='#FF0000'; + document.getElementById('textbox-projekt-anzahl_ma').disabled=false; document.getElementById('textbox-projekt-aufwand_pt').disabled=false; //Detail Tab auswaehlen document.getElementById('tabs-projekt-main').selectedItem=document.getElementById('tab-projekt-detail'); } - -function makeProjektAnalyse(){ - var ergebnis_el = document.getElementById('textbox-projekt-detail-projektwuerdigkeit'); - ergebnis_el.value=""; - var anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value; - var aufwand_pt = document.getElementById('textbox-projekt-aufwand_pt').value; - var budget = document.getElementById('textbox-projekt-detail-budget').value; + +function makeProjektAnalyse(){ + var ergebnis_el = document.getElementById('textbox-projekt-detail-projektwuerdigkeit'); + ergebnis_el.value=""; + var anzahl_ma = document.getElementById('textbox-projekt-anzahl_ma').value; + var aufwand_pt = document.getElementById('textbox-projekt-aufwand_pt').value; + var budget = document.getElementById('textbox-projekt-detail-budget').value; var beginn = document.getElementById('textbox-projekt-detail-beginn').value; - var ende = document.getElementById('textbox-projekt-detail-ende').value; - - if (!anzahl_ma || !aufwand_pt || !budget || !beginn || !ende) - { - ergebnis_el.value = 'Angaben unvollständig'; - } - else - { - var beginn_arr = beginn.split("."); - var ende_arr = ende.split("."); - var date1 = new Date(beginn_arr[2],beginn_arr[1],beginn_arr[0]); - var date2 = new Date(ende_arr[2],ende_arr[1],ende_arr[0]); - - var dauerTage = parseInt((date2 - date1) / (1000 * 60 * 60 * 24)); - - var punkte_gesamt = 0; - var projekttyp = ''; - if (aufwand_pt < 10) punkte_gesamt += 1; - else if (aufwand_pt <= 50) punkte_gesamt += 4; - else if (aufwand_pt <= 250) punkte_gesamt += 8; - else punkte_gesamt += 8; - - if (anzahl_ma < 3) punkte_gesamt += 1; - else if (anzahl_ma <= 5) punkte_gesamt += 3; - else if (anzahl_ma <= 20) punkte_gesamt += 6; - else punkte_gesamt += 9; - - if (budget < 5000) punkte_gesamt += 1; - else if (budget <= 25000) punkte_gesamt += 2; - else if (budget <= 500000) punkte_gesamt += 4; - else punkte_gesamt += 6; - - if (dauerTage < 30) punkte_gesamt += 0; - else if (dauerTage <= 90) punkte_gesamt += 4; - else if (dauerTage <= 360) punkte_gesamt += 5; - else punkte_gesamt += 7; - - if (punkte_gesamt <= 8) projekttyp = 'Vorhaben'; - else if (punkte_gesamt <= 15) projekttyp = 'Kleinprojekt'; - else if (punkte_gesamt <= 30) projekttyp = 'Projekt'; - else projekttyp = 'Großrojekt'; - ergebnis_el.value = projekttyp; - } -} + var ende = document.getElementById('textbox-projekt-detail-ende').value; + + if (!anzahl_ma || !aufwand_pt || !budget || !beginn || !ende) + { + ergebnis_el.value = 'Angaben unvollständig'; + } + else + { + var beginn_arr = beginn.split("."); + var ende_arr = ende.split("."); + var date1 = new Date(beginn_arr[2],beginn_arr[1],beginn_arr[0]); + var date2 = new Date(ende_arr[2],ende_arr[1],ende_arr[0]); + + var dauerTage = parseInt((date2 - date1) / (1000 * 60 * 60 * 24)); + + var punkte_gesamt = 0; + var projekttyp = ''; + if (aufwand_pt < 10) punkte_gesamt += 1; + else if (aufwand_pt <= 50) punkte_gesamt += 4; + else if (aufwand_pt <= 250) punkte_gesamt += 8; + else punkte_gesamt += 8; + + if (anzahl_ma < 3) punkte_gesamt += 1; + else if (anzahl_ma <= 5) punkte_gesamt += 3; + else if (anzahl_ma <= 20) punkte_gesamt += 6; + else punkte_gesamt += 9; + + if (budget < 5000) punkte_gesamt += 1; + else if (budget <= 25000) punkte_gesamt += 2; + else if (budget <= 500000) punkte_gesamt += 4; + else punkte_gesamt += 6; + + if (dauerTage < 30) punkte_gesamt += 0; + else if (dauerTage <= 90) punkte_gesamt += 4; + else if (dauerTage <= 360) punkte_gesamt += 5; + else punkte_gesamt += 7; + + if (punkte_gesamt <= 8) projekttyp = 'Vorhaben'; + else if (punkte_gesamt <= 15) projekttyp = 'Kleinprojekt'; + else if (punkte_gesamt <= 30) projekttyp = 'Projekt'; + else projekttyp = 'Großrojekt'; + ergebnis_el.value = projekttyp; + } +} function ProjektPrintStatusbericht() { diff --git a/content/projekt/projektdetail.overlay.xul.php b/content/projekt/projektdetail.overlay.xul.php index 9c814954f..fda08baa5 100644 --- a/content/projekt/projektdetail.overlay.xul.php +++ b/content/projekt/projektdetail.overlay.xul.php @@ -164,6 +164,15 @@ echo ''; + + + diff --git a/content/projekt/projektphase.overlay.js.php b/content/projekt/projektphase.overlay.js.php index c5f3a9eef..c3114d1e6 100644 --- a/content/projekt/projektphase.overlay.js.php +++ b/content/projekt/projektphase.overlay.js.php @@ -161,7 +161,16 @@ function onselectTreeProjektphase() var budget=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#budget" )); var personentage=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#personentage" )); var farbe=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#farbe" )); - + var zeitaufzeichnung=getTargetHelper(dsource,subject,rdfService.GetResource( predicateNS + "#zeitaufzeichnung" )); + + if (!zeitaufzeichnung) + { + zeitaufzeichnung='Nein'; + } + else + { + zeitaufzeichnung='Ja'; + } //alert(typ); //Daten den Feldern zuweisen @@ -180,6 +189,11 @@ function onselectTreeProjektphase() document.getElementById('textbox-projektphase-detail-personentage').value=personentage; document.getElementById('textbox-projektphase-detail-farbe').value=farbe; document.getElementById('checkbox-projektphase-detail-neu').checked=false; + if(zeitaufzeichnung=='Nein') + document.getElementById('checkbox-projektphase-detail-zeitaufzeichnung').checked=false; + else + document.getElementById('checkbox-projektphase-detail-zeitaufzeichnung').checked=true; + MenulistSelectItemOnValue('menulist-projektphase-detail-projektphase_fk', projektphase_fk); MenulistSelectItemOnValue('menulist-projektphase-detail-ressource', ressource_id); @@ -233,6 +247,7 @@ function saveProjektphaseDetail() var personentage = document.getElementById('textbox-projektphase-detail-personentage').value; var farbe = document.getElementById('textbox-projektphase-detail-farbe').value; var neu = document.getElementById('checkbox-projektphase-detail-neu').checked; + var zeitaufzeichnung = document.getElementById('checkbox-projektphase-detail-zeitaufzeichnung').checked; var soapBody = new SOAPObject("saveProjektphase"); //soapBody.appendChild(new SOAPObject("username")).val('joe'); @@ -251,10 +266,22 @@ function saveProjektphaseDetail() phase.appendChild(new SOAPObject("budget")).val(budget); phase.appendChild(new SOAPObject("personentage")).val(personentage); phase.appendChild(new SOAPObject("farbe")).val(farbe); - if(neu) - phase.appendChild(new SOAPObject("neu")).val('true'); + if(zeitaufzeichnung) + { + phase.appendChild(new SOAPObject("zeitaufzeichnung")).val('true'); + } else + { + phase.appendChild(new SOAPObject("zeitaufzeichnung")).val('false'); + } + if(neu) + { + phase.appendChild(new SOAPObject("neu")).val('true'); + } + else + { phase.appendChild(new SOAPObject("neu")).val('false'); + } phase.appendChild(new SOAPObject("user")).val(getUsername()); soapBody.appendChild(phase); diff --git a/content/projekt/projektphasedetail.overlay.xul.php b/content/projekt/projektphasedetail.overlay.xul.php index f7b4dcb5b..eeadf366f 100644 --- a/content/projekt/projektphasedetail.overlay.xul.php +++ b/content/projekt/projektphasedetail.overlay.xul.php @@ -143,6 +143,15 @@ echo ''; + + + diff --git a/content/statistik/lvplanung.xls.php b/content/statistik/lvplanung.xls.php index 3b74992fa..970e66899 100644 --- a/content/statistik/lvplanung.xls.php +++ b/content/statistik/lvplanung.xls.php @@ -29,6 +29,7 @@ require_once('../../include/benutzer.class.php'); require_once('../../include/mitarbeiter.class.php'); require_once('../../include/organisationseinheit.class.php'); require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/studiensemester.class.php'); $user = get_uid(); @@ -114,6 +115,9 @@ $oe_arr[''] = ''; $stg_obj = new studiengang(); $stg_obj->getAll('typ, kurzbz', false); +$stsem = new studiensemester(); + +$previousStsem = $stsem->getPreviousFrom($stsem->getPreviousFrom($studiensemester_kurzbz)); $qry = " SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung, tbl_lehrveranstaltung.studiengang_kz, @@ -124,18 +128,21 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung, tbl_lehreinheitmitarbeiter.stundensatz, tbl_lehreinheitmitarbeiter.semesterstunden lemss, tbl_lehreinheitmitarbeiter.planstunden, + tbl_lehreinheitmitarbeiter.anmerkung as mitarbeiter_anmerkung, tbl_lehreinheit.stundenblockung, tbl_lehreinheit.wochenrythmus, tbl_lehreinheit.raumtyp, tbl_lehreinheit.raumtypalternativ, - tbl_lehreinheit.anmerkung, + tbl_lehreinheit.anmerkung as lehreinheit_anmerkung, tbl_lehreinheit.studiensemester_kurzbz, + tbl_lehreinheit.start_kw, tbl_lehrveranstaltung.ects, tbl_lehrveranstaltung.semesterstunden, tbl_lehrveranstaltung.semesterstunden AS sws, tbl_lehrveranstaltung.lehrform_kurzbz, tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.orgform_kurzbz, + tbl_lehrveranstaltung.sprache, ( SELECT nachname FROM PUBLIC.tbl_person @@ -163,6 +170,17 @@ SELECT tbl_lehrveranstaltung.bezeichnung AS lf_bezeichnung, FROM lehre.tbl_lehrform WHERE lehre.tbl_lehrform.lehrform_kurzbz = tbl_lehrveranstaltung.lehrform_kurzbz LIMIT 1 ) AS lv_type, + ( + SELECT STRING_AGG(DISTINCT (person.nachname || ' ' || person.vorname), ', ') + FROM lehre.tbl_lehrveranstaltung slv + JOIN lehre.tbl_lehreinheit sle USING (lehrveranstaltung_id) + JOIN lehre.tbl_lehreinheitmitarbeiter slema USING (lehreinheit_id) + JOIN PUBLIC.tbl_benutzer benutzer ON benutzer.uid = slema.mitarbeiter_uid + JOIN PUBLIC.tbl_person person USING (person_id) + WHERE lehre.tbl_lehreinheit.lehrveranstaltung_id = sle.lehrveranstaltung_id + AND tbl_lehrveranstaltung.lehrform_kurzbz = slv.lehrform_kurzbz + AND sle.studiensemester_kurzbz = " . $db->db_add_param($previousStsem) . " + ) AS vorjahr_lektor, tbl_lehrveranstaltung.lehrform_kurzbz FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id) @@ -217,6 +235,10 @@ $worksheet->write($zeile,++$spalte,"LektorIn", $format_bold); $maxlength[$spalte]=6; $worksheet->write($zeile,++$spalte,"Fixangestellt", $format_bold); $maxlength[$spalte]=10; +$worksheet->write($zeile,++$spalte,"Vorjahrslektor", $format_bold); +$maxlength[$spalte]=12; +$worksheet->write($zeile,++$spalte,"Lektor*in bestätigt", $format_bold); +$maxlength[$spalte]=12; $worksheet->write($zeile,++$spalte,"Bezeichnung", $format_bold); $maxlength[$spalte]=25; $worksheet->write($zeile,++$spalte,"Semester", $format_bold); @@ -239,8 +261,12 @@ $worksheet->write($zeile,++$spalte,"Raum", $format_bold); $maxlength[$spalte]=4; $worksheet->write($zeile,++$spalte,"Raum alternativ", $format_bold); $maxlength[$spalte]=15; -$worksheet->write($zeile,++$spalte,"Anmerkung", $format_bold); -$maxlength[$spalte]=9; + +$worksheet->write($zeile,++$spalte,"Anmerkung für LV Planung", $format_bold); +$maxlength[$spalte]=25; + +$worksheet->write($zeile,++$spalte,"Anmerkung für Dpt/KF", $format_bold); +$maxlength[$spalte]=25; $worksheet->write($zeile,++$spalte,"LV-Leitung", $format_bold); $maxlength[$spalte]=9; @@ -260,6 +286,16 @@ $maxlength[$spalte]=9; $worksheet->write($zeile,++$spalte,"Organisationsform", $format_bold); $maxlength[$spalte]=15; +$worksheet->write($zeile,++$spalte,"Sprache (LV)", $format_bold); +$maxlength[$spalte]=10; + +$worksheet->write($zeile,++$spalte,"Software", $format_bold); +$maxlength[$spalte]=10; + +$worksheet->write($zeile,++$spalte,"Start in KW", $format_bold); +$maxlength[$spalte]=10; + + if($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) @@ -290,6 +326,10 @@ if($result = $db->db_query($qry)) if($maxlength[$spalte]fixangestellt ? 'Ja' : 'Nein')) $maxlength[$spalte]=mb_strlen($mitarbeiter->fixangestellt ? 'Ja' : 'Nein'); + $worksheet->write($zeile,++$spalte, $row->vorjahr_lektor); + + $worksheet->write($zeile,++$spalte, ''); + //Lehrfach $worksheet->write($zeile,++$spalte,$row->lf_bezeichnung); //if($maxlength[$spalte]lf_bezeichnung)) @@ -354,10 +394,12 @@ if($result = $db->db_query($qry)) $worksheet->write($zeile,++$spalte,$row->raumtypalternativ); if($maxlength[$spalte]raumtypalternativ)) $maxlength[$spalte]=mb_strlen($row->raumtypalternativ); - //Anmerkung - $worksheet->write($zeile,++$spalte,$row->anmerkung); - //if($maxlength[$spalte]anmerkung)) - //$maxlength[$spalte]=mb_strlen($row->anmerkung); + + //Anmerkung für LV Planung + $worksheet->write($zeile,++$spalte,$row->lehreinheit_anmerkung); + + //Anmerkung für Dpt/KF + $worksheet->write($zeile,++$spalte,$row->mitarbeiter_anmerkung); //LV-Leitung $worksheet->write($zeile,++$spalte,$row->lv_leitung.' '.$row->lv_leitung_vorname); @@ -394,6 +436,15 @@ if($result = $db->db_query($qry)) $worksheet->write($zeile,++$spalte,$row->orgform_kurzbz); if($maxlength[$spalte]orgform_kurzbz)) $maxlength[$spalte]=mb_strlen($row->orgform_kurzbz); + + //Sprache (LV) + $worksheet->write($zeile,++$spalte,$row->sprache); + + //Software + $worksheet->write($zeile,++$spalte,''); + + //Start in KW + $worksheet->write($zeile,++$spalte,$row->start_kw); } //Betreuungen diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 79e330c7f..a2c6eca51 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -110,10 +110,18 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz) { $db = new basis_db(); + $studiengang_details = new studiengang(); + $studiengang_details->load($studiengang_kz); + + if (!isset($studiengang_details->studiengang_kz)) + { + return false; + } + $jahr = substr($studiensemester_kurzbz, 4); $art = substr($studiensemester_kurzbz, 0, 2); - if($studiengang_kz<0) + if (($studiengang_kz < 0) || (isset($studiengang_details->typ) && ($studiengang_details->typ == 'l'))) { $studiengang_kz=abs($studiengang_kz); //Lehrgang @@ -136,7 +144,17 @@ function generateMatrikelnummer($studiengang_kz, $studiensemester_kurzbz) } if($art=='2' || $art=='4') $jahr = $jahr-1; - $matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz); + + //FH-Burgenland - weil leider die AO Studiengänge aufgeteilt sind + //(AO sind normal 9+erhalter Nummer, matrikelnr/personenkz wird auch im DVUH Extension berücksichtigt) + if ($studiengang_kz >= 90010 && $studiengang_kz <= 90019) + { + $matrikelnummer = sprintf("%02d",$jahr).$art.substr($studiengang_kz, 0, 4); + } + else + { + $matrikelnummer = sprintf("%02d",$jahr).$art.sprintf("%04d",$studiengang_kz); + } $qry = "SELECT matrikelnr FROM public.tbl_student WHERE matrikelnr LIKE '$matrikelnummer%' ORDER BY matrikelnr DESC LIMIT 1"; @@ -365,6 +383,7 @@ if(!$error) $error = true; $errormsg = 'Sie haben keine Schreibrechte fuer diesen Studiengang'; } + //Studentendaten speichern if(!$error) { @@ -384,7 +403,8 @@ if(!$error) $return = false; $errormsg = 'Geburtsdatum ist nicht korrekt.'; $error = true; - } + } + if(!$error) { $student->uid = $_POST['uid']; @@ -410,6 +430,8 @@ if(!$error) $student->geburtsnation = $_POST['geburtsnation']; $student->sprache = $_POST['sprache']; $student->matrikelnr = $_POST['matrikelnummer']; + if (isset($_POST['bpk'])) + $student->bpk = $_POST['bpk']; $student->updateamum = date('Y-m-d H:i:s'); $student->updatevon = $user; @@ -559,6 +581,8 @@ if(!$error) $person->geburtsnation = $_POST['geburtsnation']; $person->sprache = $_POST['sprache']; $person->matr_nr = $_POST['matr_nr']; + if (isset($_POST['bpk'])) + $person->bpk = $_POST['bpk']; $person->updateamum = date('Y-m-d H:i:s'); $person->updatevon = $user; @@ -624,18 +648,32 @@ if(!$error) $prestudent->zgvort = $_POST['zgvort']; $prestudent->zgvdatum = $_POST['zgvdatum']; $prestudent->zgvnation = $_POST['zgvnation']; + $prestudent->zgv_erfuellt = $_POST['zgv_erfuellt']; $prestudent->zgvmas_code = $_POST['zgvmas_code']; $prestudent->zgvmaort = $_POST['zgvmaort']; $prestudent->zgvmadatum = $_POST['zgvmadatum']; $prestudent->zgvmanation = $_POST['zgvmanation']; + $prestudent->zgvmas_erfuellt = $_POST['zgvmas_erfuellt']; + $prestudent->zgvdoktor_code = $_POST['zgvdoktor_code']; + $prestudent->zgvdoktorort = $_POST['zgvdoktorort']; + $prestudent->zgvdoktordatum = $_POST['zgvdoktordatum']; + $prestudent->zgvdoktornation = $_POST['zgvdoktornation']; + $prestudent->zgvdoktor_erfuellt = $_POST['zgvdoktor_erfuellt']; $prestudent->aufnahmeschluessel = $_POST['aufnahmeschluessel']; $prestudent->facheinschlberuf = ($_POST['facheinschlberuf']=='true'?true:false); $prestudent->bismelden = ($_POST['bismelden']=='true'?true:false); + $foerderrelevant = null; + if ($_POST['foerderrelevant'] === 'true') + $foerderrelevant = true; + elseif ($_POST['foerderrelevant'] === 'false') + $foerderrelevant = false; + $prestudent->foerderrelevant = $foerderrelevant; $prestudent->dual = ($_POST['dual']=='true'?true:false); $prestudent->anmerkung = $_POST['anmerkung']; $prestudent->mentor = $_POST['mentor']; $prestudent->gsstudientyp_kurzbz = $_POST['gsstudientyp_kurzbz']; $prestudent->priorisierung = $_POST['priorisierung']; + $prestudent->standort_code = $_POST['standort_code']; //$prestudent->insertamum = date('Y-m-d H:i:s'); //$prestudent->insertvon = $user; $prestudent->updateamum = date('Y-m-d H:i:s'); @@ -2308,7 +2346,7 @@ if(!$error) { if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) continue; - + if($dokument_kurzbz!='') { $dok = new dokument(); @@ -2321,6 +2359,7 @@ if(!$error) $dok->new = true; if ($dokument_kurzbz === 'Sonst') $sonst++; + if(!$dok->save()) { @@ -2515,7 +2554,6 @@ if(!$error) $dokumente = explode(';',$_POST['dokumente']); $errormsg = ''; $sonst = 0; - foreach ($dokumente as $dokument_kurzbz) { if ($dokument_kurzbz === 'Sonst' && $sonst !== 0) diff --git a/content/student/studentdetailoverlay.xul.php b/content/student/studentdetailoverlay.xul.php index 18e69874e..51be7d554 100644 --- a/content/student/studentdetailoverlay.xul.php +++ b/content/student/studentdetailoverlay.xul.php @@ -31,7 +31,9 @@ require_once('../../include/variable.class.php'); require_once('../../include/functions.inc.php'); require_once('../../include/benutzerberechtigung.class.php'); -$user=get_uid(); +$user = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); $variable = new variable(); if(!$variable->loadVariables($user)) @@ -72,7 +74,9 @@ echo ''; + + +