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/config/udfmasterschema.json b/application/config/udfmasterschema.json index fa06dc80d..ab3faa8c9 100644 --- a/application/config/udfmasterschema.json +++ b/application/config/udfmasterschema.json @@ -9,6 +9,13 @@ "name": { "type": "string" }, + "type": { + "type": "string", + "enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"] + }, + "requiredPermissions": { + "type": "array" + }, "description": { "type": "array", }, @@ -18,10 +25,6 @@ "title": { "type": "array", }, - "type": { - "type": "string", - "enum": ["checkbox", "textfield", "textarea", "date", "dropdown", "multipledropdown"] - }, "sort": { "type": "integer" }, @@ -67,5 +70,6 @@ } } }, - "required": ["type", "name"] -} \ No newline at end of file + "required": ["type", "name", "requiredPermissions"] +} + 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/FAS_UDF.php b/application/controllers/system/FAS_UDF.php index febe266c7..ecaa44393 100644 --- a/application/controllers/system/FAS_UDF.php +++ b/application/controllers/system/FAS_UDF.php @@ -31,7 +31,7 @@ class FAS_UDF extends Auth_Controller if (isset($person_id) && is_numeric($person_id)) { - if ($this->PersonModel->hasUDF()) + if ($this->PersonModel->udfsExistAndDefined()) { $personUdfs = $this->PersonModel->getUDFs($person_id); $data['person_id'] = $person_id; @@ -41,7 +41,7 @@ class FAS_UDF extends Auth_Controller if (isset($prestudent_id) && is_numeric($prestudent_id)) { - if ($this->PrestudentModel->hasUDF()) + if ($this->PrestudentModel->udfsExistAndDefined()) { $prestudentUdfs = $this->PrestudentModel->getUDFs($prestudent_id); $data['prestudent_id'] = $prestudent_id; diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index cd88f814a..9e68c5cb8 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -297,6 +297,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 +312,8 @@ class InfoCenter extends Auth_Controller $data = array_merge( $persondata, $prestudentdata, - $dokumentdata + $dokumentdata, + $duplicate ); $data[self::FHC_CONTROLLER_ID] = $this->getControllerId(); @@ -734,7 +742,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) @@ -2134,17 +2142,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/controllers/widgets/UDF.php b/application/controllers/widgets/UDF.php index 5b4c45776..26c30293c 100644 --- a/application/controllers/widgets/UDF.php +++ b/application/controllers/widgets/UDF.php @@ -26,9 +26,6 @@ class UDF extends FHC_Controller // Loads the UDFLib with HTTP GET/POST parameters $this->_loadUDFLib(); - - // Checks if the caller is allow to use this UDF widget - $this->_isAllowed(); } //------------------------------------------------------------------------------------------------------------------ @@ -39,7 +36,6 @@ class UDF extends FHC_Controller */ public function saveUDFs() { - $udfUniqueId = $this->input->post(self::UDF_UNIQUE_ID); $udfs = $this->input->post(UDFLib::UDFS_ARG_NAME); if (!isEmptyString($udfs)) @@ -47,7 +43,7 @@ class UDF extends FHC_Controller $jsonDecodedUDF = json_decode($udfs); if ($jsonDecodedUDF != null) { - $this->outputJson($this->udflib->saveUDFs($udfUniqueId, $jsonDecodedUDF)); + $this->outputJson($this->udflib->saveUDFs($jsonDecodedUDF)); } else { @@ -63,17 +59,6 @@ class UDF extends FHC_Controller //------------------------------------------------------------------------------------------------------------------ // Private methods - /** - * Checks if the user is allowed to use this UDFWidget - */ - private function _isAllowed() - { - if (!$this->udflib->isAllowed()) - { - $this->terminateWithJsonError('You are not allowed to access to this content'); - } - } - /** * Loads the UDFLib with the UDF_UNIQUE_ID parameter * If the parameter UDF_UNIQUE_ID is not given then the execution of the controller is terminated and @@ -105,3 +90,4 @@ class UDF extends FHC_Controller } } } + diff --git a/application/core/DB_Model.php b/application/core/DB_Model.php index 4b89ae5bf..4e555be6c 100644 --- a/application/core/DB_Model.php +++ b/application/core/DB_Model.php @@ -86,7 +86,7 @@ class DB_Model extends CI_Model if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL); // If this table has UDF and the validation of them is ok - if (isError($validate = $this->_manageUDFs($data, $this->dbTable))) return $validate; + if (isError($validate = $this->_prepareUDFsWrite($data, $this->dbTable))) return $validate; // DB-INSERT $insert = $this->db->insert($this->dbTable, $data); @@ -137,7 +137,7 @@ class DB_Model extends CI_Model if (is_null($this->dbTable)) return error('The given database table name is not valid', EXIT_MODEL); // If this table has UDF and the validation of them is ok - if (isError($validate = $this->_manageUDFs($data, $this->dbTable, $id))) return $validate; + if (isError($validate = $this->_prepareUDFsWrite($data, $this->dbTable, $id))) return $validate; $tmpId = $id; @@ -670,6 +670,7 @@ class DB_Model extends CI_Model /** * Returns all the UDF contained in this table ($dbTable) * If no UDF are present, an empty array will be returned + * NOTE: only the UDFs that the logged user is allowed to read are loaded by this method */ public function getUDFs($id, $udfName = null) { @@ -700,9 +701,9 @@ class DB_Model extends CI_Model } /** - * Checks if this table has the field udf_values + * Checks if this table has the field udf_values and if there is a UDF definition for this table */ - public function hasUDF() + public function udfsExistAndDefined() { if ($this->fieldExists(UDFLib::COLUMN_NAME)) { @@ -844,25 +845,25 @@ class DB_Model extends CI_Model } /** - * Wrapper method for UDFLib->manageUDFs + * Wrapper method for UDFLib->prepareUDFsWrite */ - private function _manageUDFs(&$data, $schemaAndTable, $id = null) + private function _prepareUDFsWrite(&$data, $schemaAndTable, $id = null) { - $manageUDFs = success(); + $prepareUDFsWrite = success(); - if ($this->hasUDF()) + if ($this->udfsExistAndDefined()) { if ($id != null) { - $manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable, $this->getUDFs($id)); + $prepareUDFsWrite = $this->udflib->prepareUDFsWrite($data, $this->dbTable, $this->_getUDFsNoPerms($id)); } else { - $manageUDFs = $this->udflib->manageUDFs($data, $this->dbTable); + $prepareUDFsWrite = $this->udflib->prepareUDFsWrite($data, $this->dbTable); } } - return $manageUDFs; + return $prepareUDFsWrite; } /** @@ -874,9 +875,10 @@ class DB_Model extends CI_Model */ private function _toPhp($result) { + $udfs = false; // if UDFs are inside the given result set $toPhp = $result; // if there is nothing to convert then return the result from DB - // If it's an object its fields will be parsed to find booleans and arrays types + // If it's an object its fields will be parsed to find booleans, arrays and UDFs types if (is_object($result)) { $toBeConverterdArray = array(); // Fields to be converted @@ -884,40 +886,48 @@ class DB_Model extends CI_Model $this->executedQueryMetaData = $result->field_data(); // Fields information $this->executedQueryListFields = $result->list_fields(); // List of the retrieved fields - for ($i = 0; $i < count($this->executedQueryMetaData); $i++) // Looking for booleans and arrays + // Looking for booleans, arrays and UDFs + foreach ($this->executedQueryMetaData as $eqmd) { // If array type, boolean type OR a UDF - if (strpos($this->executedQueryMetaData[$i]->type, DB_Model::PGSQL_ARRAY_TYPE) !== false - || $this->executedQueryMetaData[$i]->type == DB_Model::PGSQL_BOOLEAN_TYPE - || $this->udflib->isUDFColumn($this->executedQueryMetaData[$i]->name, $this->executedQueryMetaData[$i]->type)) + if (strpos($eqmd->type, DB_Model::PGSQL_ARRAY_TYPE) !== false + || $eqmd->type == DB_Model::PGSQL_BOOLEAN_TYPE + || $this->udflib->isUDFColumn($eqmd->name, $eqmd->type)) { - // Name and type of the field to be converted - $toBeConverted = new stdClass(); - // Set the type of the field to be converted - $toBeConverted->type = $this->executedQueryMetaData[$i]->type; - // Set the name of the field to be converted - $toBeConverted->name = $this->executedQueryMetaData[$i]->name; - // Add the field to be converted to $toBeConverterdArray - array_push($toBeConverterdArray, $toBeConverted); + // If UDFs are inside this result set + if ($this->udflib->isUDFColumn($eqmd->name, $eqmd->type)) + { + $udfs = true; + } + else // all the other cases + { + // Name and type of the field to be converted + $toBeConverted = new stdClass(); + // Set the type of the field to be converted + $toBeConverted->type = $eqmd->type; + // Set the name of the field to be converted + $toBeConverted->name = $eqmd->name; + // Add the field to be converted to $toBeConverterdArray + array_push($toBeConverterdArray, $toBeConverted); + } } } - // If there is something to convert, otherwhise don't lose time - if (count($toBeConverterdArray) > 0) - { - // Returns the array of objects, each of them represents a DB record - $resultsArray = $result->result(); - // Looping on results - for ($i = 0; $i < count($resultsArray); $i++) - { - // Single element - $resultElement = $resultsArray[$i]; - // Looping on fields to be converted - for ($j = 0; $j < count($toBeConverterdArray); $j++) - { - // Single element - $toBeConverted = $toBeConverterdArray[$j]; + // Returns the array of objects, each of them represents a DB record + $resultsArray = $result->result(); + // If in this result set there are UDFs then prepare them + if ($udfs) $this->udflib->prepareUDFsRead($resultsArray, $this->dbTable); + + // If there is something to convert, otherwhise don't waste time + if (!isEmptyArray($toBeConverterdArray)) + { + // Looping on results + foreach ($resultsArray as $resultElement) + { + // Looping on fields to be converted + foreach ($toBeConverterdArray as $toBeConverted) + { // Array type if (strpos($toBeConverted->type, DB_Model::PGSQL_ARRAY_TYPE) !== false) { @@ -931,30 +941,12 @@ class DB_Model extends CI_Model { $resultElement->{$toBeConverted->name} = $this->pgBoolPhp($resultElement->{$toBeConverted->name}); } - // UDF - elseif ($this->udflib->isUDFColumn($toBeConverted->name, $toBeConverted->type)) - { - $jsonValues = json_decode($resultElement->{$toBeConverted->name}); // decode UDFs values - if ($jsonValues != null) // if decode is ok - { - // For every UDF - foreach ($jsonValues as $key => $value) - { - $resultElement->{$key} = $value; // create a new element called like the UDF - } - } - unset($resultElement->{UDFLib::COLUMN_NAME}); // remove udf_values from the response - } } } - // Returns DB data as an array - $toPhp = $resultsArray; - } - // And returns DB data as an array - else - { - $toPhp = $result->result(); } + + // Returns DB data as an array + $toPhp = $resultsArray; } return $toPhp; @@ -998,4 +990,48 @@ class DB_Model extends CI_Model { if ($this->debugMode) $this->loglib->logDebug($this->db->last_query()); } + + /** + * Returns all the UDF contained in this table ($dbTable) + * If no UDF are present, an empty array will be returned + * NOTE: it returns all the UDFs, does _not_ check the permissions + */ + private function _getUDFsNoPerms($id) + { + $udfs = array(); + + $this->db->select(UDFLib::COLUMN_NAME, true); // get only the UDF column + + // Primary key management + $tmpId = $id; + + // Check for composite Primary Key + if (is_array($id)) + { + if (isset($id[0])) + { + $tmpId = $this->_arrayCombine($this->pk, $id); + } + } + elseif ($id != null) + { + $tmpId = array($this->pk => $id); + } + + // Read the record from the table + $result = $this->db->get_where($this->dbTable, $tmpId); + + // If was a success and there are data + if ($result && count($result->result()) == 1) + { + // Get the UDF column and decode it from JSON + $jsonValues = json_decode($result->result()[0]->{UDFLib::COLUMN_NAME}); + + // If the JSON convertion was fine convert the object to an array + if ($jsonValues != null) $udfs = get_object_vars($jsonValues); + } + + return $udfs; + } } + 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 f9ad7d20d..c5f0d3e98 100644 --- a/application/libraries/UDFLib.php +++ b/application/libraries/UDFLib.php @@ -30,13 +30,14 @@ class UDFLib // ...to specify permissions that are needed to use this TableWidget const REQUIRED_PERMISSIONS_PARAMETER = 'requiredPermissions'; + const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib + const PERMISSION_TYPE_READ = 'r'; + const PERMISSION_TYPE_WRITE = 'w'; + // ...to specify the primary key name and value const PRIMARY_KEY_NAME = 'primaryKeyName'; const PRIMARY_KEY_VALUE = 'primaryKeyValue'; - const PERMISSION_TABLE_METHOD = 'UDFWidget'; // Name for fake method to be checked by the PermissionLib - const PERMISSION_TYPE = 'rw'; - // HTML components const LABEL = 'title'; const TITLE = 'description'; @@ -76,10 +77,10 @@ class UDFLib // Public methods /** - * UDFWidget - */ - public function UDFWidget($args, $htmlArgs = array()) - { + * UDFWidget + */ + public function UDFWidget($args, $htmlArgs = array()) + { if ((isset($args[self::SCHEMA_ARG_NAME]) && !isEmptyString($args[self::SCHEMA_ARG_NAME])) && (isset($args[self::TABLE_ARG_NAME]) && !isEmptyString($args[self::TABLE_ARG_NAME]))) { @@ -112,16 +113,17 @@ class UDFLib show_error(self::TABLE_ARG_NAME.' parameter is missing!'); } } - } + } - /** + /** * It renders the HTML of the UDF * * NOTE: When this method is called $widgetData contains different data from * parameter $args in the constructor */ - public function displayUDFWidget(&$widgetData) + public function displayUDFWidget(&$widgetData) { + $field = null; $schema = $widgetData[self::SCHEMA_ARG_NAME]; // schema attribute $table = $widgetData[self::TABLE_ARG_NAME]; // table attribute @@ -133,7 +135,7 @@ class UDFLib $udfResults = $this->_loadUDF($schema, $table); // loads UDF definition if (hasData($udfResults)) { - $udf = $udfResults->retval[0]; // only one record is loaded + $udf = getData($udfResults)[0]; // only one record is loaded if (isset($udf->jsons)) { $jsonSchemas = json_decode($udf->jsons); // decode the json schema @@ -155,7 +157,7 @@ class UDFLib $found = false; // used to check if the field is found or not in the json schema $this->_sortJsonSchemas($jsonSchemasArray); // Sort the list of UDF by sort property - + // Loops through json schemas foreach ($jsonSchemasArray as $jsonSchema) { @@ -169,21 +171,37 @@ class UDFLib { show_error(sprintf('%s.%s: Attribute "name" not present in the json schema', $schema, $table)); } + // If the requiredPermissions property is not present then show an error + if (!isset($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER})) + { + show_error(sprintf('%s.%s: Attribute "requiredPermissions" not present in the json schema', $schema, $table)); + } + + // Set the required permissions for this UDF + $this->_setRequiredPermissions($jsonSchema->{self::NAME}, $jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER}); // If a UDF is specified and is present in the json schemas list or no UDF is specified if ((isset($field) && $field == $jsonSchema->{self::NAME}) || !isset($field)) { - // Set attributes using phrases - $this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); + // If the user has the permissions to read this field + if ($this->_readAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER})) + { + // Set attributes using phrases + $this->_setAttributesWithPhrases($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); - // Set validation attributes - $this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); + // Set validation attributes + $this->_setValidationAttributes($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); - // Set name and id attributes - $this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); + // Set name and id attributes + $this->_setNameAndId($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); - // Render the HTML for this UDF - $this->_render($jsonSchema, $widgetData); + // Set if the field is in read only mode + $this->_setReadOnly($jsonSchema, $widgetData[HTMLWidget::HTML_ARG_NAME]); + + // Render the HTML for this UDF + $this->_render($jsonSchema, $widgetData); + } + // otherwise the UDF is not displayed // If a UDf is specified and it was found then stop looking through this list if (isset($field) && $field == $jsonSchema->{self::NAME}) @@ -213,12 +231,97 @@ class UDFLib show_error(sprintf('%s.%s: Does not contain "jsons" field', $schema, $table)); } } - } + } /** - * Manage UDFs + * UDFs permissions check and convertion to read them from database */ - public function manageUDFs(&$data, $schemaAndTable, $udfValues = null) + public function prepareUDFsRead(&$data, $schemaAndTable, $udfValues = null) + { + $this->_ci->load->model('system/UDF_model', 'UDFModel'); + + // Retrieves UDFs definitions for this table + $resultUDFsDefinitions = $this->_ci->UDFModel->getUDFsDefinitions($schemaAndTable); + + // If an error occurred while reading from database + if (isError($resultUDFsDefinitions)) + { + $data = array(); // then set data as an empty array + return; // and exit from this method + } + + // If there are no UDFs defined for this table the return + if (!hasData($resultUDFsDefinitions)) return; + + // If not an error and has data, decodes json that define the UDFs for this table + $decodedUDFDefinitions = json_decode( + getData($resultUDFsDefinitions)[0]->{self::COLUMN_JSON_DESCRIPTION} + ); + + // Looping on results, resultElement is an object that represent a database record + foreach ($data as $resultElement) + { + // Decode the JSON column udf_values + $udfColumn = json_decode($resultElement->{self::COLUMN_NAME}); + + // If this is not a valid JSON then skip to the next database record + if ($udfColumn == null) continue; + + // For each UDF column of this database record + foreach (get_object_vars($udfColumn) as $columnName => $columnValue) + { + $udfColumnToBeRemoved = $columnName; // let's try to remove it + + // Loops through the UDFs definitions + foreach ($decodedUDFDefinitions as $decodedUDFDefinition) + { + // If the column exists in the UDF definition + if ($columnName == $decodedUDFDefinition->{self::NAME}) + { + $udfColumnToBeRemoved = null; // then keep it + } + } + + // If in this record have been found a _not_ defined UDF then remove it + if (!isEmptyString($udfColumnToBeRemoved)) unset($udfColumn->{$udfColumnToBeRemoved}); + } + + // Loops through the UDFs definitions + foreach ($decodedUDFDefinitions as $decodedUDFDefinition) + { + // Checks if the requiredPermissions is available and it is a valid array or a valid string + if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}) + && (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}) + || !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))) + { + // Then check if the user has the permissions to read such UDF + if (!$this->_readAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})) + { + // If not then remove the UDF from the result set + unset($udfColumn->{$decodedUDFDefinition->{self::NAME}}); + } + } + else // If not then remove the UDF from the result set + { + unset($udfColumn->{$decodedUDFDefinition->{self::NAME}}); + } + } + + // Add the defined and permitted UDF columns to the record set + foreach (get_object_vars($udfColumn) as $columnName => $columnValue) + { + $resultElement->{$columnName} = $columnValue; + } + + // And finally remove the UDFs column + unset($resultElement->{self::COLUMN_NAME}); + } + } + + /** + * UDFs validation and permissions check to write them into database + */ + public function prepareUDFsWrite(&$data, $schemaAndTable, $udfValues = null) { $validate = success(true); // returned value // Contains a list of validation errors for the UDFs that have not passed the validation @@ -241,18 +344,34 @@ class UDFLib // Decodes json that define the UDFs for this table $decodedUDFDefinitions = json_decode( - $resultUDFsDefinitions->retval[0]->{self::COLUMN_JSON_DESCRIPTION} + getData($resultUDFsDefinitions)[0]->{self::COLUMN_JSON_DESCRIPTION} ); // Loops through the UDFs definitions - for ($i = 0; $i < count($decodedUDFDefinitions); $i++) + foreach ($decodedUDFDefinitions as $decodedUDFDefinition) { - $decodedUDFDefinition = $decodedUDFDefinitions[$i]; // Definition of a single UDF + // Checks if the requiredPermissions is available and it is a valid array or a valid string + if (isset($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}) + && (!isEmptyArray($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}) + || !isEmptyString($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER}))) + { + // Then check if the user has the permissions to write such UDF + if (!$this->_writeAllowed($decodedUDFDefinition->{self::REQUIRED_PERMISSIONS_PARAMETER})) + { + // If the logged user has no permissions then remove the UDF + unset($udfsParameters[$decodedUDFDefinition->{self::NAME}]); + } + } + else + { + // If no permissions have been defined for this UDF then remove it + unset($udfsParameters[$decodedUDFDefinition->{self::NAME}]); + } // Loops through the UDFs values that should be stored foreach ($udfsParameters as $key => $val) { - $tmpValidate = success(true); // temporary variable used to store the returned value from _validateUDFs + $tmpValidateArray = array(); // temporary variable used to store the returned value from _validateUDFs // If this is the definition of this UDF if ($decodedUDFDefinition->{self::NAME} == $key) @@ -314,7 +433,7 @@ class UDFLib if ($toBeValidated === true) // Checks if validation should be performed { - $tmpValidate = $this->_validateUDFs( + $tmpValidateArray = $this->_validateUDFs( $decodedUDFDefinition->{self::VALIDATION}, $decodedUDFDefinition->{self::NAME}, $val @@ -324,13 +443,13 @@ class UDFLib } // If validation is ok copy the value that is to be stored into $toBeStoredUDFsArray - if (isSuccess($tmpValidate)) + if (isEmptyArray($tmpValidateArray)) { $toBeStoredUDFsArray[$key] = $val; } - else // otherwise store the validation error in $notValidUDFsArray + else // otherwise store the validation errors in $notValidUDFsArray { - $notValidUDFsArray[] = $tmpValidate; + $notValidUDFsArray = array_merge($notValidUDFsArray, $tmpValidateArray); } } } @@ -344,11 +463,11 @@ class UDFLib } // If the validation of all the supplied UDFs is ok - if (count($notValidUDFsArray) == 0) + if (isEmptyArray($notValidUDFsArray)) { // An update is performed, then in this case it preserves the values // of the UDF that are not updated - if (is_array($udfValues) && count($udfValues) > 0) + if (!isEmptyArray($udfValues)) { foreach ($udfValues as $fieldName => $fieldValue) { @@ -379,7 +498,7 @@ class UDFLib /** * isUDFColumn */ - public function isUDFColumn($columnName, $columnType) + public function isUDFColumn($columnName, $columnType = self::COLUMN_TYPE) { $isUDFColumn = false; @@ -466,7 +585,7 @@ class UDFLib /** * Save UDFs */ - public function saveUDFs($udfUniqueId, $udfs) + public function saveUDFs($udfs) { // Read the all session for this udf widget $session = $this->getSession(); @@ -490,30 +609,80 @@ class UDFLib // Returns the result of the database update operation to save UDFs return $dbModel->update( array($session[self::PRIMARY_KEY_NAME] => $session[self::PRIMARY_KEY_VALUE]), - (array)$udfs + get_object_vars($udfs) ); } - /** - * Checks if at least one of the permissions given as parameter (requiredPermissions) belongs - * to the authenticated user, if confirmed then is allowed to use this UDFWidget. - * If the parameter requiredPermissions is NOT given or is not present in the session, - * then NO one is allow to use this UDFWidget - * Wrapper method to permissionlib->hasAtLeastOne - */ - public function isAllowed($requiredPermissions = null) - { - $this->_ci->load->library('PermissionLib'); // Load permission library - - // Gets the required permissions from the session if they are not provided as parameter - $rq = $requiredPermissions; - if ($rq == null) $rq = $this->getSessionElement(self::REQUIRED_PERMISSIONS_PARAMETER); - - return $this->_ci->permissionlib->hasAtLeastOne($rq, self::PERMISSION_TABLE_METHOD, self::PERMISSION_TYPE); - } - // ------------------------------------------------------------------------------------------------- // Private methods + // + + /** + * Checks if at least one of the permissions given as parameter belongs to the authenticated user in read mode + * Wrapper method to permissionlib->hasAtLeastOne + */ + private function _readAllowed($requiredPermissions) + { + $readAllowed = false; + + // If the user is logged then it is possible to check the permissions + if (isLogged()) + { + $this->_ci->load->library('PermissionLib'); // Load permission library + + $readAllowed = $this->_ci->permissionlib->hasAtLeastOne( + $requiredPermissions, + self::PERMISSION_TABLE_METHOD, + self::PERMISSION_TYPE_READ + ); + } // otherwise it is not possible to check the permissions + + return $readAllowed; + } + + /** + * Checks if at least one of the permissions given as parameter belongs to the authenticated user in write mode + * Wrapper method to permissionlib->hasAtLeastOne + */ + private function _writeAllowed($requiredPermissions) + { + $writeAllowed = false; + + // If the user is logged then it is possible to check the permissions + if (isLogged()) + { + $this->_ci->load->library('PermissionLib'); // Load permission library + + $writeAllowed = $this->_ci->permissionlib->hasAtLeastOne( + $requiredPermissions, + self::PERMISSION_TABLE_METHOD, + self::PERMISSION_TYPE_WRITE + ); + } // otherwise it is not possible to check the permissions + + return $writeAllowed; + } + + /** + * Set an array of required permissions for a UDF into the session + */ + private function _setRequiredPermissions($udfName, $permissions) + { + // Get the session for this UDFWidget + $session = $this->getSession(); + + // If does _not_ exist yet in the session + if (!isset($session[self::REQUIRED_PERMISSIONS_PARAMETER])) + { + $session[self::REQUIRED_PERMISSIONS_PARAMETER] = array(); + } + + // Set the required permission in the session for this UDFWidget + $session[self::REQUIRED_PERMISSIONS_PARAMETER][$udfName] = $permissions; + + // Write into the session + $this->setSession($session); + } /** * Print the block for UDFs @@ -544,12 +713,12 @@ class UDFLib { $udfsParameters = array(); - foreach ($data as $key => $val) + foreach ($data as $columnName => $columnValue) { - if (substr($key, 0, 4) == self::COLUMN_PREFIX) + if ($this->isUDFColumn($columnName)) { - $udfsParameters[$key] = $val; // stores UDF value into property UDFs - unset($data[$key]); // remove from data + $udfsParameters[$columnName] = $columnValue; // stores UDF value into property UDFs + unset($data[$columnName]); // remove from data } } @@ -645,29 +814,39 @@ class UDFLib } } - // If no UDF validation errors were raised, it's a success!! - if (count($returnArrayValidation) == 0) - { - $returnArrayValidation = success(true); - } - return $returnArrayValidation; } - /** - * Set the name and id attribute of the HTML element - */ - private function _setNameAndId($jsonSchema, &$htmlParameters) - { + /** + * Disable the HTML element if in read only mode + */ + private function _setReadOnly($jsonSchema, &$htmlParameters) + { + // If write permissions _not_ exist then set the field as disabled + if (!$this->_writeAllowed($jsonSchema->{self::REQUIRED_PERMISSIONS_PARAMETER})) + { + $htmlParameters[HTMLWidget::DISABLED] = HTMLWidget::DISABLED; // any values is fine + } + else // otherwise restore to default + { + if (isset($htmlParameters[HTMLWidget::DISABLED])) unset($htmlParameters[HTMLWidget::DISABLED]); + } + } + + /** + * Set the name and id attribute of the HTML element + */ + private function _setNameAndId($jsonSchema, &$htmlParameters) + { $htmlParameters[HTMLWidget::HTML_ID] = $jsonSchema->{self::NAME}; $htmlParameters[HTMLWidget::HTML_NAME] = $jsonSchema->{self::NAME}; - } - - /** - * Sort the list of UDF by sort property - */ - private function _sortJsonSchemas(&$jsonSchemasArray) - { + } + + /** + * Sort the list of UDF by sort property + */ + private function _sortJsonSchemas(&$jsonSchemasArray) + { usort($jsonSchemasArray, function ($a, $b) { if (!isset($a->{self::SORT})) { @@ -684,13 +863,13 @@ class UDFLib return ($a->{self::SORT} < $b->{self::SORT}) ? -1 : 1; }); - } - - /** - * Loads the UDF description by the given schema and table - */ - private function _loadUDF($schema, $table) - { + } + + /** + * Loads the UDF description by the given schema and table + */ + private function _loadUDF($schema, $table) + { // Loads UDF model $this->_ci->load->model('system/UDF_model', 'UDFModel'); @@ -703,18 +882,7 @@ class UDFLib if (isError($udfResults)) { - if (is_object($udfResults) && isset($udfResults->retval)) - { - show_error(getError($udfResults)); - } - elseif (is_string($udfResults)) - { - show_error($udfResults); - } - else - { - show_error('UDFWidget: generic error occurred'); - } + show_error(getError($udfResults)); } elseif (!hasData($udfResults)) { @@ -722,13 +890,13 @@ class UDFLib } return $udfResults; - } + } - /** - * Render the HTML for the UDF - */ - private function _render($jsonSchema, &$widgetData) - { + /** + * Render the HTML for the UDF + */ + private function _render($jsonSchema, &$widgetData) + { // Checkbox if ($jsonSchema->{self::TYPE} == 'checkbox') { @@ -759,11 +927,11 @@ class UDFLib { $this->_renderDropdown($jsonSchema, $widgetData, true); } - } + } - /** - * Renders a dropdown element - */ + /** + * Renders a dropdown element + */ private function _renderDropdown($jsonSchema, &$widgetData, $multiple = false) { // Selected element/s @@ -792,7 +960,7 @@ class UDFLib $queryResult = $this->_ci->UDFModel->execReadOnlyQuery($jsonSchema->{self::LIST_VALUES}->sql); if (hasData($queryResult)) { - $parameters = $queryResult->retval; + $parameters = getData($queryResult); } } @@ -805,8 +973,8 @@ class UDFLib } /** - * Renders a textarea element - */ + * Renders a textarea element + */ private function _renderTextarea($jsonSchema, &$widgetData) { $text = null; // text value @@ -823,8 +991,8 @@ class UDFLib } /** - * Renders an input text element - */ + * Renders an input text element + */ private function _renderTextfield($jsonSchema, &$widgetData) { $text = null; // text value @@ -841,8 +1009,8 @@ class UDFLib } /** - * Renders a checkbox element - */ + * Renders a checkbox element + */ private function _renderCheckbox($jsonSchema, &$widgetData) { // Set checkbox value if present in the DB @@ -861,11 +1029,11 @@ class UDFLib $checkboxWidgetUDF->render(); } - /** - * Sets the attributes of the HTML element using the phrases system - */ - private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters) - { + /** + * Sets the attributes of the HTML element using the phrases system + */ + private function _setAttributesWithPhrases($jsonSchema, &$htmlParameters) + { // By default set to null all the attributes $htmlParameters[HTMLWidget::LABEL] = null; $htmlParameters[HTMLWidget::TITLE] = null; @@ -893,7 +1061,7 @@ class UDFLib ); if (hasData($tmpResult)) { - $htmlParameters[HTMLWidget::LABEL] = $tmpResult->retval[0]->text; + $htmlParameters[HTMLWidget::LABEL] = getData($tmpResult)[0]->text; } } @@ -911,7 +1079,7 @@ class UDFLib ); if (hasData($tmpResult)) { - $htmlParameters[HTMLWidget::TITLE] = $tmpResult->retval[0]->text; + $htmlParameters[HTMLWidget::TITLE] = getData($tmpResult)[0]->text; } } @@ -929,17 +1097,17 @@ class UDFLib ); if (hasData($tmpResult)) { - $htmlParameters[HTMLWidget::PLACEHOLDER] = $tmpResult->retval[0]->text; + $htmlParameters[HTMLWidget::PLACEHOLDER] = getData($tmpResult)[0]->text; } } } - } + } - /** - * Sets the validation attributes of the HTML element using the configuration inside the json schema - */ - private function _setValidationAttributes($jsonSchema, &$htmlParameters) - { + /** + * Sets the validation attributes of the HTML element using the configuration inside the json schema + */ + private function _setValidationAttributes($jsonSchema, &$htmlParameters) + { // Validation attributes set by default to null $htmlParameters[HTMLWidget::REGEX] = null; $htmlParameters[HTMLWidget::REQUIRED] = null; @@ -998,3 +1166,4 @@ class UDFLib } } } + 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 2553fd5fa..2d8ac4a7e 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -291,7 +291,7 @@ class Prestudent_model extends DB_Model $prestudentdata->prestudentstatus = $lastStatusData; - if ($this->hasUDF()) + if ($this->udfsExistAndDefined()) { $prestudentdata->prestudentUdfs = $this->getUDFs($prestudent_id); } @@ -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,48 @@ 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/fas_udf.php b/application/views/system/fas_udf.php index 8a1200b6a..e6fa396cf 100644 --- a/application/views/system/fas_udf.php +++ b/application/views/system/fas_udf.php @@ -45,7 +45,6 @@ echo $this->udflib->UDFWidget( array( UDFLib::UDF_UNIQUE_ID => 'fasPersonUDFs', - UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person', UDFLib::SCHEMA_ARG_NAME => 'public', UDFLib::TABLE_ARG_NAME => 'tbl_person', UDFLib::PRIMARY_KEY_NAME => 'person_id', @@ -70,7 +69,6 @@ echo $this->udflib->UDFWidget( array( UDFLib::UDF_UNIQUE_ID => 'fasPrestudentUDFs', - UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'basis/person', UDFLib::SCHEMA_ARG_NAME => 'public', UDFLib::TABLE_ARG_NAME => 'tbl_prestudent', UDFLib::PRIMARY_KEY_NAME => 'prestudent_id', @@ -109,3 +107,4 @@ load->view("templates/footer"); ?> + diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index d0e0a7126..c49a1c6cc 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\''; $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", ( @@ -59,7 +60,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", ( @@ -254,13 +255,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 @@ -439,13 +441,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..9078c13db 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\''; $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,7 +37,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", ( @@ -45,7 +46,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", ( @@ -231,13 +232,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 @@ -410,13 +412,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..5aa664a97 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\''; $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/infocenter/zgvpruefungen.php b/application/views/system/infocenter/zgvpruefungen.php index a2b2f8da8..253145557 100644 --- a/application/views/system/infocenter/zgvpruefungen.php +++ b/application/views/system/infocenter/zgvpruefungen.php @@ -341,7 +341,6 @@ echo $this->udflib->UDFWidget( array( UDFLib::UDF_UNIQUE_ID => 'infocenterPrestudentUDFs_'.$zgvpruefung->prestudent_id, - UDFLib::REQUIRED_PERMISSIONS_PARAMETER => 'infocenter', UDFLib::SCHEMA_ARG_NAME => 'public', UDFLib::TABLE_ARG_NAME => 'tbl_prestudent', UDFLib::PRIMARY_KEY_NAME => 'prestudent_id', @@ -553,3 +552,4 @@ endforeach; // end foreach zgvpruefungen ?>
+ 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/templates/FHC-Header.php b/application/views/templates/FHC-Header.php index 6a0969cd4..f4ba1bb4b 100644 --- a/application/views/templates/FHC-Header.php +++ b/application/views/templates/FHC-Header.php @@ -44,6 +44,8 @@ <?php printPageTitle($title); ?> + + + - \ No newline at end of file + + diff --git a/application/views/widgets/dropdown.php b/application/views/widgets/dropdown.php index d9faf1978..51db6d536 100644 --- a/application/views/widgets/dropdown.php +++ b/application/views/widgets/dropdown.php @@ -33,6 +33,7 @@ + > + 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/application/views/widgets/textarea.php b/application/views/widgets/textarea.php index c72b52658..5346fefa8 100644 --- a/application/views/widgets/textarea.php +++ b/application/views/widgets/textarea.php @@ -29,9 +29,11 @@ + >
- \ No newline at end of file + + diff --git a/application/views/widgets/textfield.php b/application/views/widgets/textfield.php index 73b1daa1b..c5ba81710 100644 --- a/application/views/widgets/textfield.php +++ b/application/views/widgets/textfield.php @@ -31,10 +31,12 @@ + value="" > - \ No newline at end of file + + diff --git a/application/widgets/html/HTMLWidget.php b/application/widgets/html/HTMLWidget.php index 9639890ea..0034edfd9 100644 --- a/application/widgets/html/HTMLWidget.php +++ b/application/widgets/html/HTMLWidget.php @@ -6,18 +6,18 @@ class HTMLWidget extends Widget { // The name of the array present in the data array given to the view that will render this widget - const HTML_ARG_NAME = 'HTML'; + const HTML_ARG_NAME = 'HTML'; const HTML_DEFAULT_VALUE = ''; // Default value of the html element - const HTML_NAME = 'name'; // HTML name attribute - const HTML_ID = 'id'; // HTML id attribute - - // External block definition - const EXTERNAL_BLOCK = 'externalBlock'; // External block name - const EXTERNAL_START_BLOCK_HTML_TAG = '
'; // External block start tag - const EXTERNAL_END_BLOCK_HTML_TAG = '
'; // External block end tag - - // HTML attributes - const LABEL = 'title'; + const HTML_NAME = 'name'; // HTML name attribute + const HTML_ID = 'id'; // HTML id attribute + + // External block definition + const EXTERNAL_BLOCK = 'externalBlock'; // External block name + const EXTERNAL_START_BLOCK_HTML_TAG = '
'; // External block start tag + const EXTERNAL_END_BLOCK_HTML_TAG = '
'; // External block end tag + + // HTML attributes + const LABEL = 'title'; const REGEX = 'regex'; const TITLE = 'description'; const REQUIRED = 'required-field'; @@ -26,11 +26,12 @@ class HTMLWidget extends Widget const MAX_LENGTH = 'max-length'; const MIN_LENGTH = 'min-length'; const PLACEHOLDER = 'placeholder'; + const DISABLED = 'disabled'; - /** - * It gets also the htmlArgs array as parameter, it will be used to set the HTML properties - */ - public function __construct($name, $args = array(), $htmlArgs = array()) + /** + * It gets also the htmlArgs array as parameter, it will be used to set the HTML properties + */ + public function __construct($name, $args = array(), $htmlArgs = array()) { parent::__construct($name, $args); @@ -38,11 +39,11 @@ class HTMLWidget extends Widget $this->_setHtmlProperties($htmlArgs); } - /** - * Initialising html properties, such as the id and name attributes of the HTML element - */ - private function _setHtmlProperties($htmlArgs) - { + /** + * Initialising html properties, such as the id and name attributes of the HTML element + */ + private function _setHtmlProperties($htmlArgs) + { // If $htmlArgs wasn't already stored in $this->_args if (!isset($this->_args[HTMLWidget::HTML_ARG_NAME])) { @@ -58,9 +59,9 @@ class HTMLWidget extends Widget $this->_args[HTMLWidget::HTML_ARG_NAME][$argName] = $argValue; } } - } + } - /** + /** * Prints an attribute name and eventually also the value extracted from $htmlArgs * Set $isValuePresent to false the value should not be displayed */ @@ -113,3 +114,4 @@ class HTMLWidget extends Widget } } } + diff --git a/application/widgets/udf/UDFWidget.php b/application/widgets/udf/UDFWidget.php index 7af3dd926..abbbab022 100644 --- a/application/widgets/udf/UDFWidget.php +++ b/application/widgets/udf/UDFWidget.php @@ -6,8 +6,6 @@ */ class UDFWidget extends HTMLWidget { - private $_requiredPermissions; // The required permissions to use this UDF widget - private $_schema; // Schema name private $_table; // Table name private $_primaryKeyName; // Primary key name @@ -26,26 +24,16 @@ class UDFWidget extends HTMLWidget $this->_initUDFWidget($args); // checks parameters and initialize properties - // Let's start if it's allowed - // NOTE: If it is NOT allowed then no data are loaded - if ($this->udflib->isAllowed($this->_requiredPermissions)) - { - $this->_startUDFWidget($args[UDFLib::UDF_UNIQUE_ID]); - } + $this->_startUDFWidget($args[UDFLib::UDF_UNIQUE_ID]); } /** * Called by the WidgetLib, it renders the HTML of the UDF */ - public function display($widgetData) + public function display($widgetData) { - // Let's start if it's allowed - // NOTE: If it is NOT allowed then no data are loaded - if ($this->_ci->udflib->isAllowed($this->_requiredPermissions)) - { - $this->_ci->udflib->displayUDFWidget($widgetData); - } - } + $this->_ci->udflib->displayUDFWidget($widgetData); + } //------------------------------------------------------------------------------------------------------------------ // Private methods @@ -60,18 +48,11 @@ class UDFWidget extends HTMLWidget // If here then everything is ok // Initialize class properties - $this->_requiredPermissions = null; $this->_schema = null; $this->_table = null; $this->_primaryKeyName = null; $this->_primaryKeyValue = null; - // Retrieved the required permissions parameter if present - if (isset($args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER])) - { - $this->_requiredPermissions = $args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER]; - } - // Retrieved the if (isset($args[UDFLib::SCHEMA_ARG_NAME])) { @@ -113,11 +94,6 @@ class UDFWidget extends HTMLWidget show_error('The parameter "'.UDFLib::UDF_UNIQUE_ID.'" must be specified'); } - if (!isset($args[UDFLib::REQUIRED_PERMISSIONS_PARAMETER])) - { - show_error('The parameter "'.UDFLib::REQUIRED_PERMISSIONS_PARAMETER.'" must be specified'); - } - if (!isset($args[UDFLib::SCHEMA_ARG_NAME])) { show_error('The parameter "'.UDFLib::SCHEMA_ARG_NAME.'" must be specified'); @@ -149,7 +125,6 @@ class UDFWidget extends HTMLWidget $this->udflib->setSession( array( UDFLib::UDF_UNIQUE_ID => $udfUniqueId, // table unique id - UDFLib::REQUIRED_PERMISSIONS_PARAMETER => $this->_requiredPermissions, // UDFLib::SCHEMA_ARG_NAME => $this->_schema, // UDFLib::TABLE_ARG_NAME => $this->_table, // UDFLib::PRIMARY_KEY_NAME => $this->_primaryKeyName, // @@ -158,3 +133,4 @@ class UDFWidget extends HTMLWidget ); } } + 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/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index fcf3dd811..6864641c3 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)."'"; @@ -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/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..c8c93b3f5 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"; @@ -410,6 +428,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 +579,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; @@ -631,11 +653,18 @@ if(!$error) $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'); diff --git a/content/student/studentdetailoverlay.xul.php b/content/student/studentdetailoverlay.xul.php index 18e69874e..dd86b3657 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 '';