diff --git a/application/controllers/jobs/ReihungstestJob.php b/application/controllers/jobs/ReihungstestJob.php index e0c2c8336..5aa355b5f 100644 --- a/application/controllers/jobs/ReihungstestJob.php +++ b/application/controllers/jobs/ReihungstestJob.php @@ -65,13 +65,35 @@ class ReihungstestJob extends CLI_Controller } } - /** - * runZentraleReihungstestAnmeldefristAssistenzJob - */ - public function runZentraleReihungstestAnmeldefristAssistenzJob() - { - // Get placement tests where registration date was yesterday - $result = $this->ReihungstestModel->checkReachedRegistrationDate(11000); + /* + * Sends an email to all assistants of a placement test when an anmeldeschluss has been reached + * + * @param integer $degreeProgram. Kennzahl of Degree Program to check + * @param string $bcc. Optional. BCC-Mailadress to send the Mails to + * @param string $from. Optional. Sender-Mailadress shown to recipient + */ + public function runZentraleReihungstestAnmeldefristAssistenzJob($degreeProgram, $bcc = null, $from = null) + { + // Encode Params + if ($bcc != '') + { + // $bcc can be given as null-string, so check that too + if ($bcc == 'null') + { + $bcc = ''; + } + else + { + $bcc = urldecode($bcc); + } + } + if ($from != '') + { + $from = urldecode($from); + } + + // Get placement tests where registration date was yesterday + $result = $this->ReihungstestModel->checkReachedRegistrationDate($degreeProgram); $reachedRegistration_rt_arr = array(); @@ -99,8 +121,9 @@ class ReihungstestJob extends CLI_Controller show_error($applicants->error); } - // Get all Bachelor-Degree-Programs with Mailadress - $bachelorStudiengeange = $this->StudiengangModel->loadStudiengaengeFromTyp('b'); + // Get all Bachelor-Degree-Programs with Mailadress + $bachelorStudiengeange = $this->StudiengangModel->loadStudiengaengeFromTyp('b'); + $bachelorStudiengeange_arr = array(); if (hasData($bachelorStudiengeange)) { @@ -116,87 +139,80 @@ class ReihungstestJob extends CLI_Controller foreach ($bachelorStudiengeange_arr as $bachelorStudiengang) { $studiengang_kuerzel = strtoupper($bachelorStudiengang->typ.$bachelorStudiengang->kurzbz); - $applicants_list = ''; $applicantCounter = 0; - $rowstyle = 'style="background-color: #EEEEEE; padding: 4px;"'; - $mailReceipients = ''; // String with all mailadresses $mailcontent_data_arr = array(); foreach ($applicants_arr as $applicant) { if ($bachelorStudiengang->studiengang_kz == $applicant->studiengang_kz) { - $mailReceipients .= $applicant->email. ';'; $applicantCounter ++; - $applicants_list .= ' - - '. $applicant->orgform_kurzbz. ' - '. $applicant->ausbildungssemester. ' - '. $applicant->nachname. ' - '. $applicant->vorname. ' - '. $applicant->zgv_kurzbz. ' - '. $applicant->prioritaet. ' - '. $applicant->qualifikationskurs. ' - '. $applicant->email. ' - - '; - } - } - if ($applicantCounter == 0) - { - $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; - $mailcontent .= '

Für den Studiengang ' . $studiengang_kuerzel . ' nehmen keine InteressentInnen an diesem Reihungstest teil

'; - } - else - { - $headerstyle = 'style="background: #DCE4EF; border: 1px solid #FFF; padding: 4px; text-align: left;"'; + } + } + if ($applicantCounter == 0) + { + $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + $mailcontent .= '

Für den Studiengang '.$studiengang_kuerzel.' nehmen keine InteressentInnen an diesem Reihungstest teil

'; + } + else + { + $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; + $mailcontent .= ' +

' . $applicantCounter . ' InteressentIn(nen) des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:

+

+ + Liste der Anmeldungen + +

'; + } + $mailcontent_data_arr['table'] = $mailcontent; - $mailcontent = '

Der Anmeldeschluss für den zentralen Reihungstest am ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' um ' . $reihungstest->uhrzeit . ' Uhr wurde gestern erreicht.

'; - $mailcontent .= ' -

Folgende ' . $applicantCounter . ' InteressentInnen des Studiengangs ' . $studiengang_kuerzel . ' nehmen daran teil:

- - - - - - - - - - - - - '; - $mailcontent .= $applicants_list; - $mailcontent .= ' - -
OrgFormSemesterNachnameVornameZGVPrioritätQualikursE-Mail
- '; - $mailcontent .= '

Mail an alle schicken

'; - } - $mailcontent_data_arr['table'] = $mailcontent; + // Send email in Sancho design + if (!isEmptyString($mailcontent)) + { + sendSanchoMail( + 'Sancho_ReihungstestteilnehmerJob', + $mailcontent_data_arr, + $bachelorStudiengang->email, + 'Anmeldeschluss Reihungstest ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' ' . $reihungstest->uhrzeit . ' Uhr', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $from, + '', + $bcc); + } + } + } + } - // Send email in Sancho design - if (!isEmptyString($mailcontent)) - { - sendSanchoMail( - 'Sancho_ReihungstestteilnehmerJob', - $mailcontent_data_arr, - array($bachelorStudiengang->email, 'kindlm@technikum-wien.at'), - 'Anmeldeschluss Reihungstest ' . date_format(date_create($reihungstest->datum), 'd.m.Y') . ' ' . $reihungstest->uhrzeit . ' Uhr', - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg'); - } - } - } - } + /* + * Checks, if an applicant was assigned to a test after Anmeldefrist and sends an email to all responsible assistants + * + * @param integer $degreeProgram. Kennzahl of Degree Program to check + * @param string $bcc. Optional. BCC-Mailadress to send the Mails to + * @param string $from. Optional. Sender-Mailadress shown to recipient + */ + public function runZentraleReihungstestNachtraeglichHinzugefuegtJob($degreeProgram, $bcc = null, $from = null) + { + // Encode Params + if ($bcc != '') + { + // $bcc can be given as null-string, so check that too + if ($bcc == 'null') + { + $bcc = ''; + } + else + { + $bcc = urldecode($bcc); + } + } + if ($from != '') + { + $from = urldecode($from); + } - /** - * Checks, if an applicant was assigned to a test after Anmeldefrist - */ - public function runZentraleReihungstestNachtraeglichHinzugefuegtJob() - { - // Get applicants that have been added to a test after Anmeldefrist - $result = $this->ReihungstestModel->getApplicantAssignedAfterDate(11000); + // Get applicants that have been added to a test after Anmeldefrist + $result = $this->ReihungstestModel->getApplicantAssignedAfterDate($degreeProgram); $applicants_after_anmeldefrist_arr = array(); @@ -217,32 +233,39 @@ class ReihungstestJob extends CLI_Controller $mailcontent = ''; $applicants_list = ''; - if (count($applicants_after_anmeldefrist_arr) > 0) - { - foreach ($applicants_after_anmeldefrist_arr as $applicant) - { - if ($studiengang != $applicant->studiengang_kz) - { - if ($studiengang != '' && $studiengang != $applicant->studiengang_kz) - { - $bachelorStudiengang = $this->StudiengangModel->load($studiengang); - $mailcontent .= $applicants_list; - $mailcontent .= ''; - $mailcontent .= '

Mail an alle schicken

'; - $mailcontent_data_arr['table'] = $mailcontent; - sendSanchoMail( - 'Sancho_ReihungstestteilnehmerJob', - $mailcontent_data_arr, - array($bachelorStudiengang->retval[0]->email, 'kindlm@technikum-wien.at'), - 'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt', - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg'); - $applicants_list = ''; - $mailcontent_data_arr = array(); - } + if (count($applicants_after_anmeldefrist_arr) > 0) + { + foreach ($applicants_after_anmeldefrist_arr as $applicant) + { + if ($studiengang != $applicant->studiengang_kz) + { + if ($studiengang != '' && $studiengang != $applicant->studiengang_kz) + { + $bachelorStudiengang = $this->StudiengangModel->load($studiengang); + $mailcontent .= $applicants_list; + $mailcontent .= ''; + $mailcontent .= '

+ + Liste der Anmeldungen + +

'; + $mailcontent_data_arr['table'] = $mailcontent; + sendSanchoMail( + 'Sancho_ReihungstestteilnehmerJob', + $mailcontent_data_arr, + $bachelorStudiengang->retval[0]->email, + 'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $from, + '', + $bcc); + $applicants_list = ''; + $mailcontent_data_arr = array(); + } - $mailcontent = '

Folgende InteressentInnen wurden nach der Anmeldefrist zu einem Reihungstest hinzugefügt.

'; - $mailcontent .= ' + $mailcontent = '

Folgende InteressentInnen wurden nach der Anmeldefrist zu einem Reihungstest hinzugefügt.
Details siehe Link

'; + $mailcontent .= ' @@ -251,10 +274,6 @@ class ReihungstestJob extends CLI_Controller - - - - '; @@ -270,50 +289,57 @@ class ReihungstestJob extends CLI_Controller - - - - '; - }; - $bachelorStudiengang = $this->StudiengangModel->load($studiengang); - $mailcontent .= $applicants_list; - $mailcontent .= '
Datum des TestsSemester Nachname VornameZGVPrioritätQualikursE-Mail
' . $applicant->ausbildungssemester . ' ' . $applicant->nachname . ' ' . $applicant->vorname . '' . $applicant->zgv_kurzbz . '' . $applicant->prioritaet . '' . $applicant->qualifikationskurs . '' . $applicant->email . '
'; - $mailcontent .= '

Mail an alle schicken

'; - $mailcontent_data_arr['table'] = $mailcontent; - sendSanchoMail( - 'Sancho_ReihungstestteilnehmerJob', - $mailcontent_data_arr, - array($bachelorStudiengang->retval[0]->email, 'kindlm@technikum-wien.at'), - 'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt', - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg'); - } - } + }; + $bachelorStudiengang = $this->StudiengangModel->load($studiengang); + $mailcontent .= $applicants_list; + $mailcontent .= ''; + $mailcontent .= '

+ + Liste der Anmeldungen + +

'; + $mailcontent_data_arr['table'] = $mailcontent; + sendSanchoMail( + 'Sancho_ReihungstestteilnehmerJob', + $mailcontent_data_arr, + $bachelorStudiengang->retval[0]->email, + 'InteressentIn nach Reihungstest-Anmeldeschluss hinzugefügt', + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + $from, + '', + $bcc); + } + } - /* - * Sends an email to all applicants of a placement test to remind them 3 working days before - * - * @param integer $degreeProgram. Kennzahl of Degree Program to check - * @param string $bcc. Optional. BCC-Mailadress to send the Mails to - * @param string $from. Optional. Sender-Mailadress shown to recipient - */ - public function remindApplicantsOfPlacementTest() - { - $degreeProgram = $this->input->get('degreeprogram'); - $bcc = $this->input->get('bcc'); - $from = $this->input->get('from'); - - // Encode Params - if ($bcc != '') - { - $bcc = urldecode($bcc); - } - if ($from != '') - { - $from = urldecode($from); - } + /* + * Sends an email to all applicants of a placement test to remind them 3 working days before + * + * @param integer $degreeProgram. Kennzahl of Degree Program to check + * @param string $bcc. Optional. BCC-Mailadress to send the Mails to + * @param string $from. Optional. Sender-Mailadress shown to recipient + */ + public function remindApplicantsOfPlacementTest($degreeProgram, $bcc = null, $from = null) + { + // Encode Params + if ($bcc != '') + { + // $bcc can be given as null-string, so check that too + if ($bcc == 'null') + { + $bcc = ''; + } + else + { + $bcc = urldecode($bcc); + } + } + if ($from != '') + { + $from = urldecode($from); + } // Get placement tests with testdate within the next 2 weeks $resultNextTestDates = $this->ReihungstestModel->getNextPlacementtests($degreeProgram, 14); @@ -376,16 +402,23 @@ class ReihungstestJob extends CLI_Controller show_error($applicants->error); } - foreach ($applicants_arr as $applicant) - { - $mailcontent_data_arr = array(); - $mailcontent_data_arr['anrede'] = $applicant->anrede; - $mailcontent_data_arr['nachname'] = $applicant->nachname; - $mailcontent_data_arr['vorname'] = $applicant->vorname; - $mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y'); - $mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i'); - $mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung; - $mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan; + foreach ($applicants_arr as $applicant) + { + $mailcontent_data_arr = array(); + $mailcontent_data_arr['anrede'] = $applicant->anrede; + $mailcontent_data_arr['nachname'] = $applicant->nachname; + $mailcontent_data_arr['vorname'] = $applicant->vorname; + $mailcontent_data_arr['rt_datum'] = date_format(date_create($reihungstest->datum), 'd.m.Y'); + $mailcontent_data_arr['rt_uhrzeit'] = date_format(date_create($reihungstest->uhrzeit), 'H:i'); + $mailcontent_data_arr['rt_raum'] = $applicant->planbezeichnung; + if ($applicant->lageplan == '') + { + $mailcontent_data_arr['wegbeschreibung'] = 'Für diesen Raum liegt noch keine Wegbeschreibung vor.

No directions were found for this room'; + } + else + { + $mailcontent_data_arr['wegbeschreibung'] = $applicant->lageplan; + } sendSanchoMail( 'Sancho_RemindApplicantsOfTest', diff --git a/application/core/Auth_Controller.php b/application/core/Auth_Controller.php index 1427a318d..5d03091f0 100644 --- a/application/core/Auth_Controller.php +++ b/application/core/Auth_Controller.php @@ -14,9 +14,6 @@ class Auth_Controller extends FHC_Controller // Loads authentication library and starts authentication $this->load->library('AuthLib'); - // Loads authentication helper - $this->load->helper('hlp_authentication'); - // Checks if the caller is allowed to access to this content $this->_isAllowed($requiredPermissions); } diff --git a/application/helpers/hlp_authentication_helper.php b/application/helpers/hlp_authentication_helper.php index 1c2e3603d..740823ff9 100644 --- a/application/helpers/hlp_authentication_helper.php +++ b/application/helpers/hlp_authentication_helper.php @@ -2,20 +2,35 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); -// ------------------------------------------------------------------------ +// ----------------------------------------------------------------------------------------------------- // Functions needed to manage the user authentication -// ------------------------------------------------------------------------ +// NOTE: the following functions do NOT prompt a login page if the user is NOT logged in +// ----------------------------------------------------------------------------------------------------- /** - * It calls the AuthLib, if the user is NOT logged then the login page is shown + * If the user is NOT logged then a null value is returned. + * If the user is alredy logged, then it is possible to access to the authentication object + * that contains the person_id of the logged user + * NOTE: if a user is logged then a person_id is always present! + */ +function getAuthPersonId() +{ + $ci =& get_instance(); // get CI instance + + return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_PERSON_ID} : null; +} + + +/** + * If the user is NOT logged then a null value is returned. * If the user is alredy logged, then it is possible to access to the authentication object * that contains the username of the logged user - * - * @return string or null + * NOTE: if the user is logged with a "foreign" method (ex. Bewerbungstool), + * then it is possible that the username is null! */ function getAuthUID() { $ci =& get_instance(); // get CI instance - return ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME}; + return isLogged() ? ($ci->authlib->getAuthObj())->{AuthLib::AO_USERNAME} : null; } diff --git a/application/helpers/hlp_common_helper.php b/application/helpers/hlp_common_helper.php index bc09cd32c..bb8b1b8e4 100644 --- a/application/helpers/hlp_common_helper.php +++ b/application/helpers/hlp_common_helper.php @@ -224,3 +224,19 @@ function isDateWorkingDay($date, $days = null) return true; } } + +/** + * Checks if the current user is logged by checking that the AuthLib is loaded and + * it is present the authentication object in session + * NOTE: it is placed here instead of being placed in the helper hlp_authentication_helper + * because hlp_authentication_helper is loaded after the authentication. + * It is very useful to use this function even in those parts of the code that are accessible + * even when a user is NOT authenticated!!! + * If and only if this function returns true, then all the functions present in hlp_authentication_helper can be used! + */ +function isLogged() +{ + $ci =& get_instance(); // get CI instance + + return isset($ci->authlib) && $ci->authlib->getAuthObj() != null; +} diff --git a/application/libraries/AuthLib.php b/application/libraries/AuthLib.php index deebcb3ee..bb2c6ce9b 100644 --- a/application/libraries/AuthLib.php +++ b/application/libraries/AuthLib.php @@ -30,7 +30,6 @@ class AuthLib /** * Construct * - * * @param bool $authenticate If the authentication must be performed. */ public function __construct($authenticate = true) @@ -483,6 +482,8 @@ class AuthLib /** * Stores the authentication object into the authentication session + * Everything was fine, the user at this point is authenticated, it is possible to store the authentication object + * in the user session */ private function _storeSessionAuthObj($authObj) { @@ -552,7 +553,12 @@ class AuthLib $this->_showError(getData($auth)); // display a generic error message and logs the occurred error } } - // else the user is already logged, then continue with the execution + // else the user is already logged, then loads authentication helper and continue with the execution + // NOTE: it is needed only here because: + // - it is called when a user is already logged in + // - it is called after login the user + // - it is NOT called in case of fatal error or wrong authentication + $this->_ci->load->helper('hlp_authentication'); } /** diff --git a/application/libraries/FiltersLib.php b/application/libraries/FiltersLib.php index 9d0d67584..6346150d8 100644 --- a/application/libraries/FiltersLib.php +++ b/application/libraries/FiltersLib.php @@ -108,9 +108,6 @@ class FiltersLib { $this->_ci =& get_instance(); // get code igniter instance - // Loads authentication helper - $this->_ci->load->helper('hlp_authentication'); // NOTE: needed to load custom filters do not remove! - $this->_filterUniqueId = $this->_getFilterUniqueId($params); // sets the id for the related filter widget } @@ -185,11 +182,8 @@ class FiltersLib { // Loads the needed models $this->_ci->load->model('system/Filters_model', 'FiltersModel'); - $this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the default custom filter - $this->_ci->FiltersModel->resetQuery(); // reset any previous built query - $this->_ci->FiltersModel->addJoin('public.tbl_benutzer', 'person_id', 'LEFT'); // left join with benutzer table $this->_ci->FiltersModel->addSelect('system.tbl_filters.*'); // select only from table filters $this->_ci->FiltersModel->addOrder('sort', 'ASC'); // sort on column sort $this->_ci->FiltersModel->addLimit(1); // if more than one filter is set as default only one will be retrieved @@ -223,7 +217,7 @@ class FiltersLib $whereParameters = array( 'app' => $app, 'dataset_name' => $datasetName, - 'uid' => getAuthUID(), + 'person_id' => getAuthPersonId(), 'default_filter' => true ); @@ -260,10 +254,10 @@ class FiltersLib $jsonEncodedFilter = null; // If the definition contains data and they are valid - if (hasData($definition) && isset($definition->retval[0]->filter) && trim($definition->retval[0]->filter) != '') + if (hasData($definition) && isset(getData($definition)[0]->filter) && trim(getData($definition)[0]->filter) != '') { // Get the json definition of the filter - $tmpJsonEncodedFilter = json_decode($definition->retval[0]->filter); + $tmpJsonEncodedFilter = json_decode(getData($definition)[0]->filter); // Checks required filter's properies if (isset($tmpJsonEncodedFilter->name) @@ -585,87 +579,76 @@ class FiltersLib $saveCustomFilter = false; // by default returns a failure // Checks parameter customFilterDescription if not valid stop the execution - if (isEmptyString($customFilterDescription)) - { - return $saveCustomFilter; - } + if (isEmptyString($customFilterDescription)) return $saveCustomFilter; $this->_ci->load->model('system/Filters_model', 'FiltersModel'); // to load the filter definitions - $this->_ci->load->model('person/Benutzer_model', 'BenutzerModel'); // to get the person_id of the authenticated user - $this->_ci->FiltersModel->resetQuery(); // reset any previous built query - $this->_ci->BenutzerModel->resetQuery(); // reset any previous built query - // Loads data for the authenticated user - $authBenutzer = $this->_ci->BenutzerModel->loadWhere(array('uid' => getAuthUID())); - if (hasData($authBenutzer)) // if data are found + // person_id of the authenticated user + $authPersonId = getAuthPersonId(); + // Postgres array for the description + $descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}'); + + // Loads the definition to check if is already present in the DB + $definition = $this->_ci->FiltersModel->loadWhere(array( + 'app' => $this->getSessionElement(self::APP_PARAMETER), + 'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER), + 'description' => $descPGArray, + 'person_id' => $authPersonId + )); + + // New definition to be json encoded + $jsonDeifinition = new stdClass(); + $jsonDeifinition->name = $customFilterDescription; // name of the filter + + // Generates the "column" property + $jsonDeifinition->columns = array(); + $selectedFields = $this->getSessionElement(self::SESSION_SELECTED_FIELDS); // retrieved the selected fields + for ($i = 0; $i < count($selectedFields); $i++) { - // person_id of the authenticated user - $authPersonId = $authBenutzer->retval[0]->person_id; - // Postgres array for the description - $descPGArray = str_replace('%desc%', $customFilterDescription, '{"%desc%", "%desc%", "%desc%", "%desc%"}'); + // Each element is an object with a property called "name" + $jsonDeifinition->columns[$i] = new stdClass(); + $jsonDeifinition->columns[$i]->name = $selectedFields[$i]; + } - // Loads the definition to check if is already present in the DB - $definition = $this->_ci->FiltersModel->loadWhere(array( - 'app' => $this->getSessionElement(self::APP_PARAMETER), - 'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER), - 'description' => $descPGArray, - 'person_id' => $authPersonId - )); + // List of applied filters + $jsonDeifinition->filters = $this->getSessionElement(self::SESSION_FILTERS); - // New definition to be json encoded - $jsonDeifinition = new stdClass(); - $jsonDeifinition->name = $customFilterDescription; // name of the filter + // If it is already present + if (hasData($definition)) + { + // update it + $this->_ci->FiltersModel->update( + array( + 'app' => $this->getSessionElement(self::APP_PARAMETER), + 'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER), + 'description' => $descPGArray, + 'person_id' => $authPersonId + ), + array( + 'filter' => json_encode($jsonDeifinition) + ) + ); - // Generates the "column" property - $jsonDeifinition->columns = array(); - $selectedFields = $this->getSessionElement(self::SESSION_SELECTED_FIELDS); // retrieved the selected fields - for ($i = 0; $i < count($selectedFields); $i++) - { - // Each element is an object with a property called "name" - $jsonDeifinition->columns[$i] = new stdClass(); - $jsonDeifinition->columns[$i]->name = $selectedFields[$i]; - } + $saveCustomFilter = true; + } + else // otherwise insert a new one + { + $this->_ci->FiltersModel->insert( + array( + 'app' => $this->getSessionElement(self::APP_PARAMETER), + 'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER), + 'filter_kurzbz' => uniqid($authPersonId, true), + 'description' => $descPGArray, + 'person_id' => $authPersonId, + 'sort' => null, + 'default_filter' => false, + 'filter' => json_encode($jsonDeifinition), + 'oe_kurzbz' => null + ) + ); - // List of applied filters - $jsonDeifinition->filters = $this->getSessionElement(self::SESSION_FILTERS); - - // If it is already present - if (hasData($definition)) - { - // update it - $this->_ci->FiltersModel->update( - array( - 'app' => $this->getSessionElement(self::APP_PARAMETER), - 'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER), - 'description' => $descPGArray, - 'person_id' => $authPersonId - ), - array( - 'filter' => json_encode($jsonDeifinition) - ) - ); - - $saveCustomFilter = true; - } - else // otherwise insert a new one - { - $this->_ci->FiltersModel->insert( - array( - 'app' => $this->getSessionElement(self::APP_PARAMETER), - 'dataset_name' => $this->getSessionElement(self::DATASET_NAME_PARAMETER), - 'filter_kurzbz' => uniqid($authPersonId, true), - 'description' => $descPGArray, - 'person_id' => $authPersonId, - 'sort' => null, - 'default_filter' => false, - 'filter' => json_encode($jsonDeifinition), - 'oe_kurzbz' => null - ) - ); - - $saveCustomFilter = true; - } + $saveCustomFilter = true; } return $saveCustomFilter; @@ -721,7 +704,7 @@ class FiltersLib $childrenPersonalArray = array(); // contains all the children elements in menu enty for personal filters // Loops through loaded filters - foreach ($filters->retval as $filter) + foreach (getData($filters) as $filter) { // Generate a menu entry $menuEntry = $this->_ci->navigationlib->oneLevel( diff --git a/application/models/crm/Reihungstest_model.php b/application/models/crm/Reihungstest_model.php index 6068c246f..ec1982ea6 100644 --- a/application/models/crm/Reihungstest_model.php +++ b/application/models/crm/Reihungstest_model.php @@ -349,6 +349,7 @@ class Reihungstest_model extends DB_Model ps.prestudent_id, rt.datum, rt.uhrzeit, + rt.reihungstest_id, tbl_studienplan.orgform_kurzbz, tbl_prestudentstatus.studienplan_id, tbl_prestudentstatus.ausbildungssemester, diff --git a/application/views/person/gradelist/gradelist.php b/application/views/person/gradelist/gradelist.php index dbdcf66f8..9ae485c02 100644 --- a/application/views/person/gradelist/gradelist.php +++ b/application/views/person/gradelist/gradelist.php @@ -37,7 +37,8 @@ p->t('lehre', 'gewichteternotendurchschnitt'); ?> :
- p->t('lehre', 'ects'); ?>: + p->t('lehre', 'ects'); ?> + :

, - * Andreas Oesterreicher - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ -/* - * Erstellt eine Liste mit den Noten des eingeloggten Studenten - * das betreffende Studiensemester kann ausgewaehlt werden - */ -require_once('../../../config/cis.config.inc.php'); -require_once('../../../config/global.config.inc.php'); -require_once('../../../include/functions.inc.php'); -require_once('../../../include/studiensemester.class.php'); -require_once('../../../include/datum.class.php'); -require_once('../../../include/note.class.php'); -require_once('../../../include/phrasen.class.php'); -require_once('../../../include/studiengang.class.php'); -require_once('../../../include/studienordnung.class.php'); -require_once('../../../include/lehrveranstaltung.class.php'); -require_once('../../../include/pruefung.class.php'); -require_once('../../../include/benutzerberechtigung.class.php'); -require_once('../../../include/prestudent.class.php'); - -$sprache = getSprache(); -$p = new phrasen($sprache); - -if (! $db = new basis_db()) - die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); - -if (isset($_GET['stsem'])) - $stsem = $_GET['stsem']; -else - $stsem = ''; - -echo ' - - - - - - - - - - - - ' . $p->t('tools/leistungsbeurteilung') . ' - - - - - -

' . $p->t('tools/leistungsbeurteilung') . '

'; - -$user = get_uid(); - -if (isset($_GET['uid'])) -{ - // Administratoren duerfen die UID als Parameter uebergeben um die Notenliste - // von anderen Personen anzuzeigen - - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user); - if ($rechte->isBerechtigt('admin')) - { - $user = $_GET['uid']; - $getParam = "&uid=" . $user; - } - else - $getParam = ""; -} -else - $getParam = ''; - -$datum_obj = new datum(); - -$error = ''; - -if (! check_student($user)) -{ - $error .= $p->t('tools/mussAlsStudentEingeloggtSein'); -} -else -{ - $qry = "SELECT vw_student.vorname, vw_student.nachname, vw_student.prestudent_id, tbl_studiengang.studiengang_kz - FROM public.tbl_studiengang JOIN campus.vw_student USING (studiengang_kz) - WHERE campus.vw_student.uid = " . $db->db_add_param($user) . ";"; - - if (! $result = $db->db_query($qry)) - die($p->t('tools/studentWurdeNichtGefunden')); - else - { - $row = $db->db_fetch_object($result); - - $vorname = $row->vorname; - $nachname = $row->nachname; - $prestudent_id = $row->prestudent_id; - $stg_obj = new studiengang(); - $stg_obj->load($row->studiengang_kz); - $stg_name = $stg_obj->bezeichnung_arr[$sprache]; - $prestudent_id = $row->prestudent_id; - $prestudent = new prestudent($prestudent_id); - if ($prestudent->getLastStatus($prestudent_id)) - { - $studienplan_id = $prestudent->studienplan_id; - $studienordnung = new studienordnung(); - if ($studienordnung->getStudienordnungFromStudienplan($studienplan_id)) - { - $studiengangbezeichnung_sto = $sprache === 'English' ? $studienordnung->__get('studiengangbezeichnung_englisch') : $studienordnung->__get('studiengangbezeichnung'); - } - } - - $studiengang_bezeichnung = empty($studiengangbezeichnung_sto) ? $stg_name : $studiengangbezeichnung_sto; - } - - $notenarr = array(); - $note = new note(); - $note->getAll(); - foreach ($note->result as $row) - { - $notenarr[$row->note]['bezeichnung'] = $row->bezeichnung; - $notenarr[$row->note]['notenwert'] = $row->notenwert; - } - - // Aktuelles Studiensemester ermitteln - - $stsem_obj = new studiensemester(); - if ($stsem == '') - $stsem = $stsem_obj->getaktorNext(); - - // Erstes und letztes Studiensemester mit Studenten-Status ermitteln - $prestudent = new prestudent(); - // Wenn Incoming, dann Incomingstatus laden, sonst Studentenstatus - $prestudent->getPrestudentRolle($prestudent_id, 'Incoming'); - if(count($prestudent->result) > 0) - { - $prestudent->getFirstStatus($prestudent_id, 'Incoming'); - $firstStudiensemester = $prestudent->studiensemester_kurzbz; - $prestudent->getLastStatus($prestudent_id, null, 'Incoming'); - $lastStudiensemester = $prestudent->studiensemester_kurzbz; - } - else - { - $prestudent->getFirstStatus($prestudent_id, 'Student'); - $firstStudiensemester = $prestudent->studiensemester_kurzbz; - $prestudent->getLastStatus($prestudent_id, null, 'Student'); - $lastStudiensemester = $prestudent->studiensemester_kurzbz; - } - - $stsem_obj->getStudiensemesterBetween($firstStudiensemester, $lastStudiensemester); - - echo "
"; - echo "".$p->t('global/name').": $vorname $nachname
"; - echo "".$p->t('global/studiengang').": $studiengang_bezeichnung
"; - echo "".$p->t('global/studiensemester')."
"; - - // echo "Datum: ".date('d.m.Y')."
"; - echo "
"; - if ($notenImAktuellenStSem == false) - { - $stsem = 'alle'; - } - // Lehrveranstaltungen und Noten holen - if ($stsem != "alle") - { - $sqlFilter = " AND tbl_zeugnisnote.studiensemester_kurzbz = " . $db->db_add_param($stsem) . " - AND (tbl_lvgesamtnote.studiensemester_kurzbz = " . $db->db_add_param($stsem) . " OR tbl_lvgesamtnote.studiensemester_kurzbz is null) "; - } - else - $sqlFilter = ""; - - $qry = "SELECT - tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_zeugnisnote.note, tbl_zeugnisnote.punkte, - tbl_lvgesamtnote.note as lvnote, tbl_lvgesamtnote.punkte as lvpunkte, - tbl_zeugnisnote.benotungsdatum, tbl_lvgesamtnote.freigabedatum, - tbl_lvgesamtnote.benotungsdatum as lvbenotungsdatum, - tbl_zeugnisnote.studiensemester_kurzbz AS studiensemester_zeugnis, tbl_lvgesamtnote.studiensemester_kurzbz AS studiensemester_lvnote, - tbl_lehrveranstaltung.zeugnis, tbl_lehrveranstaltung.ects - FROM - lehre.tbl_lehrveranstaltung, lehre.tbl_zeugnisnote - LEFT OUTER JOIN - campus.tbl_lvgesamtnote - USING (lehrveranstaltung_id, student_uid, studiensemester_kurzbz) - WHERE - tbl_zeugnisnote.student_uid = " . $db->db_add_param($user) . $sqlFilter . " - AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_zeugnisnote.lehrveranstaltung_id - ORDER BY bezeichnung"; - - if ($result = $db->db_query($qry)) - { - // Tabelle anzeigen - $tbl = ""; - $tblHead = " - - "; - if ($stsem == "alle") - $tblHead .= ""; - - $tblHead .= ""; - if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) - $tblHead .= ""; - - $tblHead .= " "; - if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) - $tblHead .= ""; - - $tblHead .= " - - - - "; - $tblBody = ""; - $i = 0; - $legende = false; - $notenSummenArray = array(); - while ($row = $db->db_fetch_object($result)) - { - $lv_obj = new lehrveranstaltung(); - $lv_obj->load($row->lehrveranstaltung_id); - - $i ++; - $tblBody .= ""; - if ($stsem == "alle") - $tblBody .= ""; - - // LV Gesamtnote Punkte - if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) - { - $lvpunkte = ($row->lvpunkte != '' ? (float) $row->lvpunkte : ''); - $tblBody .= ""; - } - - if ($row->note != $row->lvnote && $row->lvnote != NULL) - { - $markier = " style='background-color: #FFD999;'"; - $legende = true; - } - else - $markier = ""; - $tblBody .= ""; - - if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) - { - $punkte = ($row->punkte != '' ? ((float) $row->punkte) : ''); - $tblBody .= ""; - } - - $tblBody .= ''; - - $pruefung = new pruefung(); - $pruefung->getPruefungen($user, null, $row->lehrveranstaltung_id, $stsem); - - if (count($pruefung->result) > 0) - { - $tblBody .= ''; - } - else - $tblBody .= ''; - - $tblBody .= ""; - } - // Durchschnitt und gewichteten Durchschnitt berechnen - $notenSumme = 0; - $notenSummeGewichtet = 0; - $ectsSumme = 0; - $anzahlLv = 0; - foreach ($notenSummenArray AS $key => $value) - { - if ($value['notenwert'] != '') - { - $anzahlLv++; - $notenSumme += $value['notenwert']; - $ectsSumme += $value['ects']; - $notenSummeGewichtet += $value['notenwert'] * $value['ects']; - } - } - - $tblBody .= ""; - $tblFoot = ""; - - if ($anzahlLv != 0) - $notenDurchschnitt = round($notenSumme / $anzahlLv, 2); - else - $notenDurchschnitt = 0; - - if ($ectsSumme != 0) - $notenDurchschnittGewichtet = round($notenSummeGewichtet / $ectsSumme, 2); - else - $notenDurchschnittGewichtet = 0; - - $tblFoot .= ''; - $tblFoot .= ''; - $tblFoot .= ''; - $tblFoot .= ''; - $tblFoot .= ""; - - $tblFoot .= ''; - $tblFoot .= ''; - $tblFoot .= ''; - $tblFoot .= ''; - - $tblFoot .= ""; - - $tblFoot .= ""; - - $tbl .= $tblHead.$tblFoot.$tblBody; - - $tbl .= "
" . $p->t('global/lehrveranstaltung') . "" . $p->t('global/studiensemester') . "" . $p->t('benotungstool/lvNote') . "" . $p->t('benotungstool/punkte') . "" . $p->t('benotungstool/zeugnisnote') . "" . $p->t('benotungstool/punkte') . "" . $p->t('tools/benotungsdatumDerZeugnisnote') . "" . $p->t('benotungstool/pruefung') . "
" . $lv_obj->bezeichnung_arr[$sprache] . ($lv_obj->lehrform_kurzbz != "" && $lv_obj->lehrform_kurzbz != " - " ? " (" . $lv_obj->lehrform_kurzbz . ")" : "") . "" . ($row->studiensemester_zeugnis != '' ? $row->studiensemester_zeugnis : $row->studiensemester_lvnote) . ""; - - $tblBody .= ""; - - // Nur freigegebene Noten anzeigen - if ($row->freigabedatum >= $row->lvbenotungsdatum) - { - if (isset($notenarr[$row->lvnote])) - $tblBody .= $notenarr[$row->lvnote]['bezeichnung']; - else - $tblBody .= $row->lvnote; - - // Nur Noten, die aufs Zeugnis gedruckt werden für Durchschnittsberechnung addieren - if ($row->zeugnis == true) - { - $notenSummenArray[$row->lehrveranstaltung_id]['notenwert'] = (isset($notenarr[$row->note]['notenwert']) ? $notenarr[$row->note]['notenwert'] : ''); - $notenSummenArray[$row->lehrveranstaltung_id]['ects'] = $row->ects; - } - } - $tblBody .= "" . $lvpunkte . ""; - - if (isset($notenarr[$row->note])) - $tblBody .= $notenarr[$row->note]['bezeichnung']; - else - $tblBody .= $row->note; - - $tblBody .= "" . $punkte . "' . $datum_obj->formatDatum($row->benotungsdatum, 'Y-m-d') . ''; - foreach ($pruefung->result as $row) - { - if (isset($notenarr[$row->note])) - $note = $notenarr[$row->note]['bezeichnung']; - else - $note = $row->note; - - if ($row->punkte != '') - $punkte = ' (' . (float) $row->punkte . ')'; - else - $punkte = ''; - - $tblBody .= $row->pruefungstyp_beschreibung . ' ' . $datum_obj->formatDatum($row->datum, 'd.m.Y') . ' ' . $note . $punkte . '
'; - } - $tblBody .= '
' . $p->t("tools/notendurchschnittDerZeugnisnote") . ''.$notenDurchschnitt.'
' . $p->t("tools/gewichteterNotendurchschnittDerZeugnisnote") . ''.$notenDurchschnittGewichtet.'
"; - $tbl .= ""; - if ($legende) - { - $tbl .= ""; - } - $tbl .= "
*" . $p->t('tools/legendeNotendurchschnitt') . "
**" . $p->t('tools/legendeGewichteterNotendurchschnitt') . "
" . $p->t('tools/hinweistextMarkierung') . "
"; - if ($i == 0) - echo $p->t('tools/nochKeineBeurteilungEingetragen'); - else - { - $tbl .= "


"; - echo $tbl; - } - } - else - { - $error .= $p->t('tools/fehlerBeimAuslesenDerNoten'); - } -} -echo $error; -echo ' -'; -?> +, + * Andreas Oesterreicher + * Rudolf Hangl < rudolf.hangl@technikum-wien.at > + * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > + */ +/* + * Erstellt eine Liste mit den Noten des eingeloggten Studenten + * das betreffende Studiensemester kann ausgewaehlt werden + */ +require_once('../../../config/cis.config.inc.php'); +require_once('../../../config/global.config.inc.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/datum.class.php'); +require_once('../../../include/note.class.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/studiengang.class.php'); +require_once('../../../include/studienordnung.class.php'); +require_once('../../../include/lehrveranstaltung.class.php'); +require_once('../../../include/pruefung.class.php'); +require_once('../../../include/benutzerberechtigung.class.php'); +require_once('../../../include/prestudent.class.php'); + +$sprache = getSprache(); +$p = new phrasen($sprache); + +if (! $db = new basis_db()) + die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); + +if (isset($_GET['stsem'])) + $stsem = $_GET['stsem']; +else + $stsem = ''; + +echo ' + + + + + + + + + + + + ' . $p->t('tools/leistungsbeurteilung') . ' + + + + + +

' . $p->t('tools/leistungsbeurteilung') . '

'; + +$user = get_uid(); + +if (isset($_GET['uid'])) +{ + // Administratoren duerfen die UID als Parameter uebergeben um die Notenliste + // von anderen Personen anzuzeigen + + $rechte = new benutzerberechtigung(); + $rechte->getBerechtigungen($user); + if ($rechte->isBerechtigt('admin')) + { + $user = $_GET['uid']; + $getParam = "&uid=" . $user; + } + else + $getParam = ""; +} +else + $getParam = ''; + +$datum_obj = new datum(); + +$error = ''; + +if (! check_student($user)) +{ + $error .= $p->t('tools/mussAlsStudentEingeloggtSein'); +} +else +{ + $qry = "SELECT vw_student.vorname, vw_student.nachname, vw_student.prestudent_id, tbl_studiengang.studiengang_kz + FROM public.tbl_studiengang JOIN campus.vw_student USING (studiengang_kz) + WHERE campus.vw_student.uid = " . $db->db_add_param($user) . ";"; + + if (! $result = $db->db_query($qry)) + die($p->t('tools/studentWurdeNichtGefunden')); + else + { + $row = $db->db_fetch_object($result); + + $vorname = $row->vorname; + $nachname = $row->nachname; + $prestudent_id = $row->prestudent_id; + $stg_obj = new studiengang(); + $stg_obj->load($row->studiengang_kz); + $stg_name = $stg_obj->bezeichnung_arr[$sprache]; + $prestudent_id = $row->prestudent_id; + $prestudent = new prestudent($prestudent_id); + if ($prestudent->getLastStatus($prestudent_id)) + { + $studienplan_id = $prestudent->studienplan_id; + $studienordnung = new studienordnung(); + if ($studienordnung->getStudienordnungFromStudienplan($studienplan_id)) + { + $studiengangbezeichnung_sto = $sprache === 'English' ? $studienordnung->__get('studiengangbezeichnung_englisch') : $studienordnung->__get('studiengangbezeichnung'); + } + } + + $studiengang_bezeichnung = empty($studiengangbezeichnung_sto) ? $stg_name : $studiengangbezeichnung_sto; + } + + $notenarr = array(); + $note = new note(); + $note->getAll(); + foreach ($note->result as $row) + { + $notenarr[$row->note]['bezeichnung'] = $row->bezeichnung; + $notenarr[$row->note]['notenwert'] = $row->notenwert; + } + + // Aktuelles Studiensemester ermitteln + + $stsem_obj = new studiensemester(); + if ($stsem == '') + $stsem = $stsem_obj->getaktorNext(); + + // Erstes und letztes Studiensemester mit Studenten-Status ermitteln + $prestudent = new prestudent(); + // Wenn Incoming, dann Incomingstatus laden, sonst Studentenstatus + $prestudent->getPrestudentRolle($prestudent_id, 'Incoming'); + if(count($prestudent->result) > 0) + { + $prestudent->getFirstStatus($prestudent_id, 'Incoming'); + $firstStudiensemester = $prestudent->studiensemester_kurzbz; + $prestudent->getLastStatus($prestudent_id, null, 'Incoming'); + $lastStudiensemester = $prestudent->studiensemester_kurzbz; + } + else + { + $prestudent->getFirstStatus($prestudent_id, 'Student'); + $firstStudiensemester = $prestudent->studiensemester_kurzbz; + $prestudent->getLastStatus($prestudent_id, null, 'Student'); + $lastStudiensemester = $prestudent->studiensemester_kurzbz; + } + + $stsem_obj->getStudiensemesterBetween($firstStudiensemester, $lastStudiensemester); + + echo "
"; + echo "".$p->t('global/name').": $vorname $nachname
"; + echo "".$p->t('global/studiengang').": $studiengang_bezeichnung
"; + echo "".$p->t('global/studiensemester')."
"; + + // echo "Datum: ".date('d.m.Y')."
"; + echo "
"; + if ($notenImAktuellenStSem == false) + { + $stsem = 'alle'; + } + // Lehrveranstaltungen und Noten holen + if ($stsem != "alle") + { + $sqlFilter = " AND tbl_zeugnisnote.studiensemester_kurzbz = " . $db->db_add_param($stsem) . " + AND (tbl_lvgesamtnote.studiensemester_kurzbz = " . $db->db_add_param($stsem) . " OR tbl_lvgesamtnote.studiensemester_kurzbz is null) "; + } + else + $sqlFilter = ""; + + $qry = "SELECT + tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_zeugnisnote.note, tbl_zeugnisnote.punkte, + tbl_lvgesamtnote.note as lvnote, tbl_lvgesamtnote.punkte as lvpunkte, + tbl_zeugnisnote.benotungsdatum, tbl_lvgesamtnote.freigabedatum, + tbl_lvgesamtnote.benotungsdatum as lvbenotungsdatum, + tbl_zeugnisnote.studiensemester_kurzbz AS studiensemester_zeugnis, tbl_lvgesamtnote.studiensemester_kurzbz AS studiensemester_lvnote, + tbl_lehrveranstaltung.zeugnis, tbl_lehrveranstaltung.ects + FROM + lehre.tbl_lehrveranstaltung, lehre.tbl_zeugnisnote + LEFT OUTER JOIN campus.tbl_lvgesamtnote USING (lehrveranstaltung_id, student_uid, studiensemester_kurzbz) + LEFT OUTER JOIN lehre.tbl_note on tbl_zeugnisnote.note = tbl_note.note + WHERE + tbl_zeugnisnote.student_uid = " . $db->db_add_param($user) . $sqlFilter . " + AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_zeugnisnote.lehrveranstaltung_id"; + + if(defined('CIS_NOTENLISTE_OFFIZIELL_ANZEIGEN') && CIS_NOTENLISTE_OFFIZIELL_ANZEIGEN) + $qry .= " AND tbl_note.offiziell = true"; + + $qry .= " ORDER BY tbl_lehrveranstaltung.bezeichnung"; + + if ($result = $db->db_query($qry)) + { + // Tabelle anzeigen + $tbl = ""; + $tblHead = " + + "; + if ($stsem == "alle") + $tblHead .= ""; + + $tblHead .= ""; + if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) + $tblHead .= ""; + + $tblHead .= " "; + if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) + $tblHead .= ""; + + $tblHead .= " + + + + "; + $tblBody = ""; + $i = 0; + $legende = false; + $notenSummenArray = array(); + while ($row = $db->db_fetch_object($result)) + { + $lv_obj = new lehrveranstaltung(); + $lv_obj->load($row->lehrveranstaltung_id); + + $i ++; + $tblBody .= ""; + if ($stsem == "alle") + $tblBody .= ""; + + // LV Gesamtnote Punkte + if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) + { + $lvpunkte = ($row->lvpunkte != '' ? (float) $row->lvpunkte : ''); + $tblBody .= ""; + } + + if ($row->note != $row->lvnote && $row->lvnote != NULL) + { + $markier = " style='background-color: #FFD999;'"; + $legende = true; + } + else + $markier = ""; + $tblBody .= ""; + + if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE) + { + $punkte = ($row->punkte != '' ? ((float) $row->punkte) : ''); + $tblBody .= ""; + } + + $tblBody .= ''; + + $pruefung = new pruefung(); + $pruefung->getPruefungen($user, null, $row->lehrveranstaltung_id, $stsem); + + if (count($pruefung->result) > 0) + { + $tblBody .= ''; + } + else + $tblBody .= ''; + + $tblBody .= ""; + } + // Durchschnitt und gewichteten Durchschnitt berechnen + $notenSumme = 0; + $notenSummeGewichtet = 0; + $ectsSumme = 0; + $anzahlLv = 0; + foreach ($notenSummenArray AS $key => $value) + { + if ($value['notenwert'] != '') + { + $anzahlLv++; + $notenSumme += $value['notenwert']; + $ectsSumme += $value['ects']; + $notenSummeGewichtet += $value['notenwert'] * $value['ects']; + } + } + + $tblBody .= ""; + $tblFoot = ""; + + if ($anzahlLv != 0) + $notenDurchschnitt = round($notenSumme / $anzahlLv, 2); + else + $notenDurchschnitt = 0; + + if ($ectsSumme != 0) + $notenDurchschnittGewichtet = round($notenSummeGewichtet / $ectsSumme, 2); + else + $notenDurchschnittGewichtet = 0; + + $tblFoot .= ''; + $tblFoot .= ''; + $tblFoot .= ''; + $tblFoot .= ''; + $tblFoot .= ""; + + $tblFoot .= ''; + $tblFoot .= ''; + $tblFoot .= ''; + $tblFoot .= ''; + + $tblFoot .= ""; + + $tblFoot .= ""; + + $tbl .= $tblHead.$tblFoot.$tblBody; + + $tbl .= "
" . $p->t('global/lehrveranstaltung') . "" . $p->t('global/studiensemester') . "" . $p->t('benotungstool/lvNote') . "" . $p->t('benotungstool/punkte') . "" . $p->t('benotungstool/zeugnisnote') . "" . $p->t('benotungstool/punkte') . "" . $p->t('tools/benotungsdatumDerZeugnisnote') . "" . $p->t('benotungstool/pruefung') . "
" . $lv_obj->bezeichnung_arr[$sprache] . ($lv_obj->lehrform_kurzbz != "" && $lv_obj->lehrform_kurzbz != " - " ? " (" . $lv_obj->lehrform_kurzbz . ")" : "") . "" . ($row->studiensemester_zeugnis != '' ? $row->studiensemester_zeugnis : $row->studiensemester_lvnote) . ""; + + $tblBody .= ""; + + // Nur freigegebene Noten anzeigen + if ($row->freigabedatum >= $row->lvbenotungsdatum) + { + if (isset($notenarr[$row->lvnote])) + $tblBody .= $notenarr[$row->lvnote]['bezeichnung']; + else + $tblBody .= $row->lvnote; + + // Nur Noten, die aufs Zeugnis gedruckt werden für Durchschnittsberechnung addieren + if ($row->zeugnis == true) + { + $notenSummenArray[$row->lehrveranstaltung_id]['notenwert'] = (isset($notenarr[$row->note]['notenwert']) ? $notenarr[$row->note]['notenwert'] : ''); + $notenSummenArray[$row->lehrveranstaltung_id]['ects'] = $row->ects; + } + } + $tblBody .= "" . $lvpunkte . ""; + + if (isset($notenarr[$row->note])) + $tblBody .= $notenarr[$row->note]['bezeichnung']; + else + $tblBody .= $row->note; + + $tblBody .= "" . $punkte . "' . $datum_obj->formatDatum($row->benotungsdatum, 'Y-m-d') . ''; + foreach ($pruefung->result as $row) + { + if (isset($notenarr[$row->note])) + $note = $notenarr[$row->note]['bezeichnung']; + else + $note = $row->note; + + if ($row->punkte != '') + $punkte = ' (' . (float) $row->punkte . ')'; + else + $punkte = ''; + + $tblBody .= $row->pruefungstyp_beschreibung . ' ' . $datum_obj->formatDatum($row->datum, 'd.m.Y') . ' ' . $note . $punkte . '
'; + } + $tblBody .= '
' . $p->t("tools/notendurchschnittDerZeugnisnote") . ''.$notenDurchschnitt.'
' . $p->t("tools/gewichteterNotendurchschnittDerZeugnisnote") . ''.$notenDurchschnittGewichtet.'
"; + $tbl .= ""; + if ($legende) + { + $tbl .= ""; + } + $tbl .= "
*" . $p->t('tools/legendeNotendurchschnitt') . "
**" . $p->t('tools/legendeGewichteterNotendurchschnitt') . "
" . $p->t('tools/hinweistextMarkierung') . "
"; + if ($i == 0) + echo $p->t('tools/nochKeineBeurteilungEingetragen'); + else + { + $tbl .= "


"; + echo $tbl; + } + } + else + { + $error .= $p->t('tools/fehlerBeimAuslesenDerNoten'); + } +} +echo $error; +echo ' +'; +?> diff --git a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php index 555144a67..a446c73e2 100644 --- a/cis/private/lehre/pruefung/pruefungsanmeldung.json.php +++ b/cis/private/lehre/pruefung/pruefungsanmeldung.json.php @@ -606,9 +606,10 @@ function saveAnmeldung($aktStudiensemester = null, $uid = null) foreach ($prestudent->result as $ps) { - if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch)) + // prüfen ob Student zum Zeitpunkt der LV oder zumindest irgendwann Student im Studiengang war/ist + if ($ps->getLaststatus($ps->prestudent_id, $stdsem_lv_besuch) || $ps->studiengang_kz == $studiengang_kz) { - if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher")) + if (($ps->status_kurzbz == "Student") || ($ps->status_kurzbz == "Unterbrecher") || ($ps->status_kurzbz == "")) { array_push($prestudenten, $ps); } diff --git a/cis/private/lvplan/index.php b/cis/private/lvplan/index.php index ddbddf586..260ee8066 100644 --- a/cis/private/lvplan/index.php +++ b/cis/private/lvplan/index.php @@ -314,8 +314,14 @@ function LoadGruppe(type) - -

'.$p->t("lvplan/saalplan").'

+ '; + + if(!defined('CIS_LVPLAN_SAALPLAN_ANZEIGEN') || CIS_LVPLAN_SAALPLAN_ANZEIGEN) + { + echo '

'.$p->t("lvplan/saalplan").'

'; + } + + echo ' '; @@ -328,21 +334,24 @@ function LoadGruppe(type) - + '; + + if(!defined('CIS_LVPLAN_SAALPLAN_ANZEIGEN') || CIS_LVPLAN_SAALPLAN_ANZEIGEN) + { echo ' '; + } if ($raumres) { diff --git a/cis/private/lvplan/stpl_week.php b/cis/private/lvplan/stpl_week.php index d2c02dece..56b06f292 100644 --- a/cis/private/lvplan/stpl_week.php +++ b/cis/private/lvplan/stpl_week.php @@ -441,7 +441,7 @@ elseif (isset($reserve) && $raumres) $reservierung->insertamum=date('Y-m-d H:i:s'); $reservierung->insertvon=$uid; - if(!empty($_REQUEST['lecturer_uids'] && isset($_REQUEST['studiengang_kz']))) + if(isset($_REQUEST['lecturer_uids']) && !empty($_REQUEST['lecturer_uids'] && isset($_REQUEST['studiengang_kz']))) { $lecturer_uids = $_REQUEST['lecturer_uids']; foreach ($lecturer_uids as $lecturer_uid) diff --git a/cis/private/profile/lva_liste.php b/cis/private/profile/lva_liste.php index 7b394c9d6..33eb7da3b 100644 --- a/cis/private/profile/lva_liste.php +++ b/cis/private/profile/lva_liste.php @@ -223,9 +223,9 @@ require_once('../../../include/benutzerberechtigung.class.php'); echo ''.$row->lehrfach.''; echo ''.$row->le_lehrform_kurzbz.''; if ($row->lehrfach_bez!=$row->lv_bezeichnung) - echo ''.$row->lv_bezeichnung.' ('.$p->t('lvaliste/lehrfach').': '.$row->lehrfach_bez.')'; + echo ''.$row->lv_bezeichnung.' ('.$p->t('lvaliste/lehrfach').': '.$row->lehrfach_bez.')'; else - echo ''.$row->lv_bezeichnung.''; + echo ''.$row->lv_bezeichnung.''; echo ''.$row->lektor.''; echo ''.$row->stg_kurzbz.''; echo ''.$row->semester.''; @@ -304,15 +304,16 @@ require_once('../../../include/benutzerberechtigung.class.php'); tbl_lehrveranstaltung.bezeichnung, tbl_projektarbeit.titel, (SELECT nachname || ' ' || vorname FROM public.tbl_benutzer JOIN public.tbl_person USING(person_id) WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester, - tbl_studiengang.email + tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung FROM - lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang + lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart WHERE tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND + tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER); $stg_obj = new studiengang(); @@ -330,6 +331,7 @@ require_once('../../../include/benutzerberechtigung.class.php'); echo ''.$p->t('lvaliste/semester').''; echo ''.$p->t('lvaliste/lvBezeichnung').''; echo ''.$p->t('lvaliste/student').''; + echo ''.$p->t('lvaliste/betreuungsart').''; echo ''.$p->t('lvaliste/titelProjektarbeit').''; echo ''; while($row = $db->db_fetch_object($result)) @@ -339,6 +341,7 @@ require_once('../../../include/benutzerberechtigung.class.php'); echo ''.$row->semester.''; echo ''.$row->bezeichnung.''; echo ''.$row->student.''; + echo ''.$row->beutreuerart_beschreibung.''; echo ''.$row->titel.''; echo ''; diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index 2261a4e66..f5a1ae591 100644 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -111,7 +111,7 @@ if (!$searchPerson && !$searchOrt && !$searchDms && !$searchContent && !$searchO function searchPerson($searchItems) { - global $db, $p, $noalias; + global $db, $p, $noalias, $uid; $bn = new benutzer(); $bn->search($searchItems, 21); @@ -163,7 +163,19 @@ function searchPerson($searchItems) //echo '',$row->titelpre,''; echo '',$row->anrede,''; echo '',$row->vorname,''; - echo '',$row->nachname,''; + echo ''; + if(!defined('CIS_SUCHE_PROFIL_ANZEIGEN')) + echo '',$row->nachname,''; + else if(!CIS_SUCHE_PROFIL_ANZEIGEN) + { + $mitarbeiter = new Mitarbeiter($uid); + if($mitarbeiter->errormsg === NULL) + echo '',$row->nachname,''; + else + echo $row->nachname; + } + else + echo '',$row->nachname,''; if($row->aktiv==false) echo ' (ausgeschieden)'; elseif($bisverwendung->beschausmasscode=='5') diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 1ab74d1a9..4a13fe2f2 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -50,6 +50,9 @@ define('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN',true); // Anzeige des LV-Plan Links bei globaler Suche define('CIS_SUCHE_LVPLAN_ANZEIGEN',true); +// Anzeige des Links zum Profil von Personen bei globaler Suche +define('CIS_SUCHE_PROFIL_ANZEIGEN',true); + // Soll geprueft werden ob das Passwort innerhalb des letzten Jahres geaendert wurde true|false // Wenn dies nicht geaendert wurde wird nach dem Login auf die Passwort aendern Seite umgeleitet define('CIS_CHECK_PASSWORD_CHANGE',false); @@ -93,6 +96,9 @@ define('FAS_GESAMTNOTE_PRUEFUNGSHONORAR',false); // Aus Datenschutzgründen ist dies per default deaktiviert define('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE', false); +// Gibt an ob in der Notenliste der Studierenden nur offizielle Noten oder alle angezeigt werden +define('CIS_NOTENLISTE_OFFIZIELL_ANZEIGEN', false); + // Grenzwerte für Anwesenheit define('FAS_ANWESENHEIT_ROT', 70); define('FAS_ANWESENHEIT_GELB', 90); @@ -123,6 +129,7 @@ define('CIS_LVPLAN_PERSONENAUSWAHL_ANZEIGEN',true); define('CIS_LVPLAN_LEHRVERBANDAUSWAHL_ANZEIGEN',true); define('CIS_LVPLAN_ARCHIVAUSWAHL_ANZEIGEN',true); define('CIS_LVPLAN_ZUSATZMENUE_ANZEIGEN',true); +define('CIS_LVPLAN_SAALPLAN_ANZEIGEN',true); //Anmerkung bei Unterrichtseinheiten im LV-Plan anzeigen. Anmerkungen bei LV-Plan Sync mitkopieren. define('LVPLAN_ANMERKUNG_ANZEIGEN',true); @@ -238,7 +245,7 @@ define('LOG_CONTENT', false); // ContentID of default content-template for reports. New contents will be childs of this. define('REPORT_CONTENT_TEMPLATE', ''); -// Schwund in %, der bei Arbeitsplätzen herausgerechnet werden soll. +// Schwund in %, der bei Arbeitsplätzen herausgerechnet werden soll. // zB 5. Dann werden bei 20 Plätzen 5% Schwund herausgerechnet und nur 19 Plätze zurückgegeben define('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND', 0); diff --git a/content/fas.xul.php b/content/fas.xul.php index 85deaa818..2aecae047 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -110,7 +110,7 @@ foreach($addon_obj->result as $addon) - + @@ -377,14 +377,14 @@ foreach($addon_obj->result as $addon) label = "&menu-statistic-notenspiegel.label;" command = "menu-statistic-notenspiegel:command" accesskey = "&menu-statistic-notenspiegel.accesskey;"/> - + diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php index 29ec12d4f..bf0da34ae 100644 --- a/content/fasoverlay.js.php +++ b/content/fasoverlay.js.php @@ -1127,7 +1127,7 @@ function StatistikPrintNotenspiegelErweitert(typ) window.open('content/statistik/notenspiegel_erweitert.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel'); } -function StatistikPrintNotenspiegelStudent() +function StatistikPrintStudienverlaufStudent() { var tree = document.getElementById('student-tree'); var data=''; @@ -1144,7 +1144,7 @@ function StatistikPrintNotenspiegelStudent() alert('Markierte Person ist kein Student'); return; } - window.open('index.ci.php/person/gradelist/index/'+student_uid,'Notenspiegel'); + window.open('index.ci.php/person/gradelist/index/'+student_uid,'Studienverlauf'); } // **** diff --git a/content/student/studentoverlay.js.php b/content/student/studentoverlay.js.php index 203bbcb24..ccadaace3 100644 --- a/content/student/studentoverlay.js.php +++ b/content/student/studentoverlay.js.php @@ -1826,10 +1826,17 @@ function StudentPrestudentRolleBestaetigen() var studiensemester_kurzbz = getTreeCellText(tree, 'student-prestudent-tree-rolle-studiensemester_kurzbz', tree.currentIndex); var prestudent_id = getTreeCellText(tree, 'student-prestudent-tree-rolle-prestudent_id', tree.currentIndex); var ausbildungssemester = getTreeCellText(tree, 'student-prestudent-tree-rolle-ausbildungssemester', tree.currentIndex); + var bewerbung_abgeschicktamum = getTreeCellText(tree, 'student-prestudent-tree-rolle-bewerbung_abgeschicktamum', tree.currentIndex); studiengang_kz = document.getElementById('student-prestudent-menulist-studiengang_kz').value; if(confirm('Diesen Status bestaetigen?')) { + // Status darf nur bestaetig werden, wenn Bewerbung schon abgeschickt wurde + if (bewerbung_abgeschicktamum=='') + { + alert('Die Bewerbung wurde noch nicht abgeschickt und kann deshalb nicht bestätigt werden'); + return false; + } var url = 'content/student/studentDBDML.php'; var req = new phpRequest(url,'',''); diff --git a/content/student/studentprojektarbeitoverlay.xul.php b/content/student/studentprojektarbeitoverlay.xul.php index c9f68cc0a..5bceac252 100644 --- a/content/student/studentprojektarbeitoverlay.xul.php +++ b/content/student/studentprojektarbeitoverlay.xul.php @@ -233,7 +233,7 @@ echo ''; @@ -247,7 +247,7 @@ echo ''; diff --git a/include/akte.class.php b/include/akte.class.php index 8a454c0bf..67a6dc71f 100644 --- a/include/akte.class.php +++ b/include/akte.class.php @@ -301,7 +301,7 @@ class akte extends basis_db * @param string $order Sortierreihenfolge im SQL * @return true wenn ok, sonst false */ - public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id = null, $returnInhalt = false, $order = 'erstelltam') + public function getAkten($person_id, $dokument_kurzbz = null, $stg_kz = null, $prestudent_id = null, $returnInhalt = false, $order = 'erstelltam') { $qry = "SELECT akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern, @@ -309,20 +309,28 @@ class akte extends basis_db CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden, nachgereicht_am, ausstellungsnation, formal_geprueft_amum, archiv, signiert, stud_selfservice"; if($returnInhalt === true) - $qry.=",inhalt "; + { + $qry .= ",inhalt "; + } $qry.=" FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($dokument_kurzbz!=null) - $qry.=" AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz); + if($dokument_kurzbz != '') + { + $qry .= " AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz); + } if($stg_kz != null && $prestudent_id != null) - $qry.=" AND dokument_kurzbz not in (SELECT dokument_kurzbz FROM public.tbl_dokument JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz) + { + $qry .= " AND dokument_kurzbz not in (SELECT dokument_kurzbz FROM public.tbl_dokument JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz) WHERE studiengang_kz= ".$this->db_add_param($stg_kz).") AND dokument_kurzbz NOT IN ('Zeugnis','DiplSupp','Bescheid') AND dokument_kurzbz NOT IN (SELECT dokument_kurzbz FROM public.tbl_dokumentprestudent JOIN public.tbl_dokument USING(dokument_kurzbz) WHERE prestudent_id=".$this->db_add_param($prestudent_id).")"; + } if ($order != '') - $qry.=" ORDER BY ".$order; - + { + $qry .= " ORDER BY ".$order; + } + //echo $qry; $this->errormsg = $qry; if($this->db_query($qry)) diff --git a/include/dokument.class.php b/include/dokument.class.php index 05497f744..a353d16c8 100644 --- a/include/dokument.class.php +++ b/include/dokument.class.php @@ -688,7 +688,7 @@ class dokument extends basis_db $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); $dokumentbeschreibung_mehrsprachig = $sprache->getSprachQuery('dokumentbeschreibung_mehrsprachig'); $beschreibung_mehrsprachig = $sprache->getSprachQuery('beschreibung_mehrsprachig'); - $qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, ausstellungsdetails, + $qry = "SELECT distinct on (dokument_kurzbz) dokument_kurzbz, bezeichnung, pflicht, nachreichbar, ausstellungsdetails, stufe, $bezeichnung_mehrsprachig, $dokumentbeschreibung_mehrsprachig, $beschreibung_mehrsprachig FROM public.tbl_dokumentstudiengang JOIN public.tbl_prestudent using (studiengang_kz) diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index b1eee8df3..523a5f89d 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -292,7 +292,7 @@ class dokument_export if($ret!=0) { - $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator'; + $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte versuchen Sie es in einer Minute erneut oder kontaktieren Sie einen Administrator'; return false; } break; @@ -465,7 +465,7 @@ class dokument_export if($ret!=0) { - $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator'; + $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte versuchen Sie es in einer Minute erneut oder kontaktieren Sie einen Administrator'; return false; } diff --git a/include/organisationsform.class.php b/include/organisationsform.class.php index 5497621ad..29f094f2f 100644 --- a/include/organisationsform.class.php +++ b/include/organisationsform.class.php @@ -30,6 +30,8 @@ class organisationsform extends basis_db public $code; public $bezeichnung; public $rolle; + public $bisorgform_kurzbz; + public $bezeichnung_mehrsprachig; public $result = array(); @@ -37,9 +39,12 @@ class organisationsform extends basis_db * * Konstruktor */ - public function __construct() + public function __construct($orgform_kurzbz = null) { parent::__construct(); + + if($orgform_kurzbz != null) + $this->load($orgform_kurzbz); } /** @@ -48,7 +53,16 @@ class organisationsform extends basis_db */ public function load($orgform_kurzbz) { - $qry = "SELECT * FROM bis.tbl_orgform WHERE orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).';'; + $sprache = new sprache(); + $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); + $qry = "SELECT orgform_kurzbz, + code, + bezeichnung, + rolle, + bisorgform_kurzbz, + $bezeichnung_mehrsprachig + FROM bis.tbl_orgform + WHERE orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).';'; if($this->db_query($qry)) { @@ -58,6 +72,8 @@ class organisationsform extends basis_db $this->code = $row->code; $this->bezeichnung = $row->bezeichnung; $this->rolle = $this->db_parse_bool($row->rolle); + $this->bisorgform_kurzbz = $row->bisorgform_kurzbz; + $this->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row); } } else @@ -73,7 +89,15 @@ class organisationsform extends basis_db */ public function getAll() { - $qry = "SELECT * FROM bis.tbl_orgform"; + $sprache = new sprache(); + $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); + $qry = "SELECT orgform_kurzbz, + code, + bezeichnung, + rolle, + bisorgform_kurzbz, + $bezeichnung_mehrsprachig + FROM bis.tbl_orgform"; if($this->db_query($qry)) { @@ -85,6 +109,8 @@ class organisationsform extends basis_db $orgform->code = $row->code; $orgform->bezeichnung = $row->bezeichnung; $orgform->rolle = $this->db_parse_bool($row->rolle); + $orgform->bisorgform_kurzbz = $row->bisorgform_kurzbz; + $orgform->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row); $this->result[] = $orgform; } @@ -133,9 +159,16 @@ class organisationsform extends basis_db */ public function getOrgformLV() { - $qry = "SELECT * - FROM bis.tbl_orgform - WHERE orgform_kurzbz NOT IN ('VBB', 'ZGS') + $sprache = new sprache(); + $bezeichnung_mehrsprachig = $sprache->getSprachQuery('bezeichnung_mehrsprachig'); + $qry = "SELECT orgform_kurzbz, + code, + bezeichnung, + rolle, + bisorgform_kurzbz, + $bezeichnung_mehrsprachig + FROM bis.tbl_orgform + WHERE orgform_kurzbz NOT IN ('VBB', 'ZGS') ORDER BY orgform_kurzbz"; if ($result = $this->db_query($qry)) @@ -148,6 +181,8 @@ class organisationsform extends basis_db $orgform->code = $row->code; $orgform->bezeichnung = $row->bezeichnung; $orgform->rolle = $row->rolle; + $orgform->bisorgform_kurzbz = $row->bisorgform_kurzbz; + $orgform->bezeichnung_mehrsprachig = $sprache->parseSprachResult('bezeichnung_mehrsprachig',$row); $this->result[] = $orgform; } diff --git a/locale/de-AT/fas.dtd b/locale/de-AT/fas.dtd index 6662cb355..86415c024 100644 --- a/locale/de-AT/fas.dtd +++ b/locale/de-AT/fas.dtd @@ -114,9 +114,9 @@ - - - + + + diff --git a/locale/de-AT/lvaliste.php b/locale/de-AT/lvaliste.php index 48189aee6..e51ddcbf5 100644 --- a/locale/de-AT/lvaliste.php +++ b/locale/de-AT/lvaliste.php @@ -1,5 +1,7 @@ phrasen['lvaliste/titel']='Lehrveranstaltungsübersicht'; +$this->phrasen['lvaliste/anwesenheit']='Anwesenheit'; +$this->phrasen['lvaliste/anwesenheit/studenten']='Anwesenheit der Studierenden'; $this->phrasen['lvaliste/hilfeText']='Erklärung\n\nStg-Sem: Studiengang-Semester\nGruppen: Teilnehmende Gruppen\nBlock: Blockung (1->Einzelstunden; 2->Doppelstunden; ...)\nWR: Wochenrhythmus (1->jede Woche; 2->jede 2. Woche; ...)\nStd: gesamte Semesterstunden\nKW: Kalenderwoche in der die Lehrveranstaltung startet'; $this->phrasen['lvaliste/hilfeAnzeigen']='Hilfe anzeigen'; @@ -31,4 +33,5 @@ $this->phrasen['lvaliste/gesamtnote']='Noten eintragen'; $this->phrasen['lvaliste/anzahl']='Anzahl'; $this->phrasen['lvaliste/summe']='Summe'; $this->phrasen['lvaliste/lvinfo']='LV-Info'; -$this->phrasen['lvaliste/id']='ID'; \ No newline at end of file +$this->phrasen['lvaliste/id']='ID'; +$this->phrasen['lvaliste/betreuungsart']='Betreuungsart'; \ No newline at end of file diff --git a/locale/en-US/lvaliste.php b/locale/en-US/lvaliste.php index 20df4f7c2..4560a4182 100644 --- a/locale/en-US/lvaliste.php +++ b/locale/en-US/lvaliste.php @@ -29,6 +29,9 @@ $this->phrasen['lvaliste/keineDatensaetze']='No Entrys for this Semester!'; $this->phrasen['lvaliste/lehrveranstaltungen']='Courses'; $this->phrasen['lvaliste/betreuungen']='Supervisor'; $this->phrasen['lvaliste/koordination']='Coordination'; +$this->phrasen['lvaliste/gesamtnote']='Enter grades'; $this->phrasen['lvaliste/anzahl']='Number'; $this->phrasen['lvaliste/summe']='Total'; +$this->phrasen['lvaliste/lvinfo']='Course-Info'; $this->phrasen['lvaliste/id']='ID'; +$this->phrasen['lvaliste/betreuungsart']='Kind of supervision'; diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php index d52617c10..3621339f0 100644 --- a/rdf/diplomasupplement.xml.php +++ b/rdf/diplomasupplement.xml.php @@ -669,6 +669,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") else { $note_alt = $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note']; + $note_alt_positiv = $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note_positiv']; $note_neu = $row_stud->anmerkung; // alte oder neue note besser @@ -687,6 +688,13 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml") $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'] = $db->db_parse_bool($row_stud->offiziell) ? $row_stud->anmerkung : ""; $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note_positiv'] = $db->db_parse_bool($row_stud->positiv); $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['sort'] = $row_stud->sort; + + // ects dazuzählen wenn alte Note negativ, neue positiv + if ($arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note_positiv'] === true && $note_alt_positiv !== true) + { + $ects_total_positiv += $row_stud->ects; + $semester_ects_positiv += $row_stud->ects; + } } } diff --git a/system/vorlage_zip/DiplSupplementDebug.odt b/system/vorlage_zip/DiplSupplementDebug.odt new file mode 100644 index 000000000..aaee7c600 Binary files /dev/null and b/system/vorlage_zip/DiplSupplementDebug.odt differ diff --git a/system/xsl/LehrveranstaltungszeugnisEng_0.xsl b/system/xsl/LehrveranstaltungszeugnisEng_0.xsl index d36ee25fa..b2f2eb295 100644 --- a/system/xsl/LehrveranstaltungszeugnisEng_0.xsl +++ b/system/xsl/LehrveranstaltungszeugnisEng_0.xsl @@ -282,7 +282,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn - Transcript of Records + COURSE CERTIFICATE @@ -331,30 +331,29 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn Date of Birth: - - - Herr - - - Frau - - - Herr/Frau - - - hat im als - - - ordentlicher Student - - - ordentliche Studentin - - - ordentliche/r Student/in - - - folgende Lehrveranstaltung an der FH Technikum Wien absolviert: + + + Mr. + + + Ms. + + + Mr./Ms. + + + completed the following course at UAS Technikum Wien in the + + + + Summer + + + + + + as a full student: + diff --git a/system/xsl/Lehrveranstaltungszeugnis_Eng_9005.xsl b/system/xsl/Lehrveranstaltungszeugnis_Eng_9005.xsl index 2233842e8..2a3bf5858 100644 --- a/system/xsl/Lehrveranstaltungszeugnis_Eng_9005.xsl +++ b/system/xsl/Lehrveranstaltungszeugnis_Eng_9005.xsl @@ -283,7 +283,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn - Transcript of Records + COURSE CERTIFICATE @@ -317,30 +317,28 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn Date of Birth: - - - Herr - - - Frau - - - Herr/Frau - - - hat im als - - - außerordentlicher Student - - - außerordentliche Studentin - - - außerordentliche/r Student/in - - - folgende Lehrveranstaltung an der FH Technikum Wien absolviert: + + + Mr. + + + Ms. + + + Mr./Ms. + + + completed the following course at UAS Technikum Wien in the + + + + Summer + + + + + + as an external student: diff --git a/system/xsl/ZeugnisEng_0.xsl b/system/xsl/ZeugnisEng_0.xsl index 2d0e6266a..3a6f8b866 100644 --- a/system/xsl/ZeugnisEng_0.xsl +++ b/system/xsl/ZeugnisEng_0.xsl @@ -530,7 +530,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn - + diff --git a/system/xsl/ZeugnisEng_Lehrgaenge.xsl b/system/xsl/ZeugnisEng_Lehrgaenge.xsl index da226877f..82f6d3330 100644 --- a/system/xsl/ZeugnisEng_Lehrgaenge.xsl +++ b/system/xsl/ZeugnisEng_Lehrgaenge.xsl @@ -519,7 +519,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn - + diff --git a/system/xsl/Zeugnis_0.xsl b/system/xsl/Zeugnis_0.xsl index 8fe4a3c43..c11a385bb 100644 --- a/system/xsl/Zeugnis_0.xsl +++ b/system/xsl/Zeugnis_0.xsl @@ -505,7 +505,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn - + diff --git a/system/xsl/Zeugnis_Lehrgaenge.xsl b/system/xsl/Zeugnis_Lehrgaenge.xsl index a8fae63ca..95b40f733 100644 --- a/system/xsl/Zeugnis_Lehrgaenge.xsl +++ b/system/xsl/Zeugnis_Lehrgaenge.xsl @@ -504,7 +504,7 @@ xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn - + diff --git a/system/xsl/bachelorurkunde_Lehrgaenge.xsl b/system/xsl/bachelorurkunde_Lehrgaenge.xsl deleted file mode 100644 index b54153ddb..000000000 --- a/system/xsl/bachelorurkunde_Lehrgaenge.xsl +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Diplom - - Staatsbürgerschaft nicht angegeben - Datum der Abschlussprüfung nicht gesetzt - Kein akademischer Grad ausgewählt - Sponsionsdatum nicht gesetzt - - - - - Gemäß § 10 Abs. 3 Z 9 des Bundesgesetzes über Fachhochschul-Studiengänge - (Fachhochschul-Studiengesetz - FHStG), BGBl. Nr. 340/1993 idgF, - verleiht das Fachhochschulkollegium - - - - geboren am in - - - , - - , Staatsbürgerschaft , - - - - der - - - die - - - die/der - - - den Lehrgang zur Weiterbildung nach §9 FHStG idgF - - - (Lehrgangsnummer ) - - an der Fachhochschule Technikum Wien abgeschlossen hat, - den Abschluss-Grad - - - - - - Wien, - - Für das Fachhochschulkollegium - Der Rektor - - - - - - - - \ No newline at end of file diff --git a/system/xsl/diplomaSuppDebug.xsl b/system/xsl/diplomaSuppDebug.xsl new file mode 100644 index 000000000..6d3feaf42 --- /dev/null +++ b/system/xsl/diplomaSuppDebug.xsl @@ -0,0 +1,2948 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ANHANG ZUM DIPLOM + DIPLOMA SUPPLEMENT + + + + + + -Studiengang + + + + + + + + ’s degree program + + + + + + + Verliehener Titel ist nicht gesetzt + Regelstudiendauer wurde nicht gefunden + ECTS wurden nicht gefunden + Kein Sponsionsdatum gesetzt + Keine Studiengangsleitung eingetragen + Datum der Abschlussprüfung ist nicht gesetzt + Abschlussbeurteilung ist nicht gesetzt + + + + + + + + + + TRANSCRIPT OF RECORDS + + Semester - + + ’s degree program + + + Student ID: + Program Code: + + + First Name/Last Name: + + Date of Birth: + + Within the period of studies at the University of Applied Sciences Technikum Wien from to in the ’s degree program examinations in the following subjects were passed: + + + + + + + + + + + Date + + + Course + + + Type1 + + + SP/W2 + + + ECTS credits + + + Grade³ + + + + + + Total + + + + - + + + + + - + + + + + - + + + + + + + + - + + + + + + ¹ Type: Laboratory (LAB), Lecture (VO), Integrated Course (ILV), Seminar (SE), Tutorial (TUT), Project (PRJ), Exercise (UE), Distance Learning (FL), Other (SO) + ² 1 Semester period per week = 45 minutes + ³ Grading Scheme: excellent (1), good (2), satisfactory (3), sufficient (4), Credit based on previous experience/work (ar), successfully completed (ea), Participated with success (met), participated (tg) + + + + + + + + + Final Examination + + + + + + 's Examination on + + + + + + + + Grading Scheme: Passed with distinction, Passed with merit, Passed + + + + + + + + + + + + + + + Vienna, + Place, Date + + + + + + Program Director + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Σ + + + + + - + + + + + - + + + + + - + + + + + + + + + + - + + + + + + + + + + + + + + + + ID: + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/system/xsl/diplomurkundeEng_Lehrgaenge.xsl b/system/xsl/diplomurkundeEng_Lehrgaenge.xsl deleted file mode 100644 index 29586f247..000000000 --- a/system/xsl/diplomurkundeEng_Lehrgaenge.xsl +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Diploma - - Staatsbürgerschaft nicht angegeben - - Kein akademischer Grad ausgewählt - Sponsionsdatum nicht gesetzt - - - - - Pursuant to paragraph 10 section 3 subsection 9 of the Universities of Applied Sciences Studies Act - (Austrian legal reference: Fachhochschul-Studiengesetz - FHStG, BGBl. Nr. idgF, - the University of Applied Sciences Council (Fachhochschulkollegium) awards - - - - born in - - - , - - , citizen of , - who completed the CVET course - - - (program number ) - - at the University of Applied Sciences Technikum Wien in accordance with §9 FHStG as amended - the title - - - - Vienna, - - On behalf of the University of Applied Sciences Council - The Rector - - - - - - - - \ No newline at end of file diff --git a/system/xsl/diplomurkunde_Lehrgaenge.xsl b/system/xsl/diplomurkunde_Lehrgaenge.xsl deleted file mode 100644 index 8d705be2d..000000000 --- a/system/xsl/diplomurkunde_Lehrgaenge.xsl +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Diplom - - Staatsbürgerschaft nicht angegeben - Kein akademischer Grad ausgewählt - Sponsionsdatum nicht gesetzt - - - - - Gemäß § 10 Abs. 3 Z 9 des Bundesgesetzes über Fachhochschul-Studiengänge - (Fachhochschul-Studiengesetz - FHStG), BGBl. Nr. 340/1993 idgF, - verleiht das Fachhochschulkollegium - - - - geboren am in - - - , - - , Staatsbürgerschaft , - - - - der - - - die - - - die/der - - - den Lehrgang zur Weiterbildung nach §9 FHStG idgF - - - (Lehrgangsnummer ) - - an der Fachhochschule Technikum Wien abgeschlossen hat, - den Abschluss-Grad - - - - - - Wien, - - Für das Fachhochschulkollegium - Der Rektor - - - - - - - - \ No newline at end of file diff --git a/vilesci/lehre/lehrveranstaltung.php b/vilesci/lehre/lehrveranstaltung.php index 92cd5d7de..1011b6d00 100644 --- a/vilesci/lehre/lehrveranstaltung.php +++ b/vilesci/lehre/lehrveranstaltung.php @@ -683,8 +683,7 @@ echo ' 19: {sorter: false, filter: false}, 20: {sorter: false, filter: false}, 21: {sorter: false, filter: false}}, - widgetOptions : {filter_saveFilters : true, - filter_functions : { + widgetOptions : {filter_functions : { // Add select menu to this column 10 : { "True" : function(e, n, f, i, $r, c, data) { return /t/.test(e); }, @@ -704,13 +703,6 @@ echo ' } } } - }); - - $(\'.resetsaved\').click(function() - { - $("#t1").trigger("filterReset"); - location.reload(); - return false; }); }); @@ -990,7 +982,6 @@ if ($result_lv!=0) $num_rows=$db->db_num_rows($result_lv); echo '

Übersicht - '.$num_rows.' LVAs

- '; diff --git a/vilesci/personen/akteupdate.php b/vilesci/personen/akteupdate.php index c38fc64dd..62ca8d056 100644 --- a/vilesci/personen/akteupdate.php +++ b/vilesci/personen/akteupdate.php @@ -24,6 +24,7 @@ require_once('../../config/vilesci.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/basis_db.class.php'); +require_once('../../include/akte.class.php'); $uid = get_uid(); $rechte = new benutzerberechtigung(); @@ -54,9 +55,15 @@ if(isset($_POST['submitdatei'])) //Base64 Codieren $content = base64_encode($content); $akte_id = $_POST['akte_id']; + $signiert = isset($_POST['signiert']); + $selfservice = isset($_POST['selfservice']); $db = new basis_db(); - $qry = "UPDATE public.tbl_akte SET inhalt=".$db->db_add_param($content)." WHERE akte_id=".$db->db_add_param($akte_id, FHC_INTEGER).";"; + $qry = "UPDATE public.tbl_akte + SET inhalt=".$db->db_add_param($content).", + signiert= ".$db->db_add_param($signiert, FHC_BOOLEAN).", + stud_selfservice= ".$db->db_add_param($selfservice, FHC_BOOLEAN)." + WHERE akte_id=".$db->db_add_param($akte_id, FHC_INTEGER).";"; if($db->db_query($qry)) echo 'Saved!'; @@ -66,18 +73,39 @@ if(isset($_POST['submitdatei'])) } if(isset($_GET['akte_id']) && is_numeric($_GET['akte_id'])) +{ $akte_id = $_GET['akte_id']; +} else $akte_id = ''; + +$signiert = false; +$selfservice = false; +$aktetitel = +$akte_obj = new akte(); +if ($akte_obj->load($akte_id)) +{ + $signiert = $akte_obj->signiert; + $selfservice = $akte_obj->stud_selfservice; + $aktetitel = $akte_obj->bezeichnung.' ('.$akte_obj->titel.')'; +} +else +{ + $aktetitel = 'Es wurde keine Akte ID übergeben'; +} + echo '
-Hier können bestehnde Akten die bereits im FAS archiviert mit neuen Dokumenten überschrieben werden.
+Hier können bestehende Akten, die bereits im FAS archiviert wurden, mit neuen Dokumenten überschrieben werden.
Dies ist hilfreich wenn zB Zeugnisse manuell korrigiert wurden.

- + + + + diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index a87260940..685473499 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -834,27 +834,44 @@ if ($punkteUebertragen) // Um einen Bewerberstatus zu setzen, muss "reihungstestangetreten" true sein if ($prestudent->reihungstestangetreten == true) { - $prestudent->new = true; - $prestudent->prestudent_id = $array['prestudent_id']; - $prestudent->status_kurzbz = 'Bewerber'; - $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; - $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; - $prestudent->datum = date('Y-m-d'); - $prestudent->insertamum = date('Y-m-d H:i:s'); - $prestudent->insertvon = $user; - $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; - $prestudent->bestaetigtam = ''; - $prestudent->bestaetigtvon = ''; - $prestudent->bewerbung_abgeschicktamum = ''; - $prestudent->studienplan_id = $prestudentrolle->studienplan_id; - - if (!$prestudent->save_rolle()) + // Um einen Bewerberstatus zu setzen, muss die ZGV ausgefüllt sein + if ($prestudent->zgv_code != '') { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; + $studiengang = new studiengang($prestudent->studiengang_kz); + // Bei Mastern muss auch die ZGV-Master ausgefüllt sein + if ($studiengang->typ == 'm' && $prestudent->zgvmas_code == '') + { + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine Master-ZGV eingetragen sein.'; + } + else + { + $prestudent->new = true; + $prestudent->prestudent_id = $array['prestudent_id']; + $prestudent->status_kurzbz = 'Bewerber'; + $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; + $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; + $prestudent->datum = date('Y-m-d'); + $prestudent->insertamum = date('Y-m-d H:i:s'); + $prestudent->insertvon = $user; + $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; + $prestudent->bestaetigtam = ''; + $prestudent->bestaetigtvon = ''; + $prestudent->bewerbung_abgeschicktamum = ''; + $prestudent->studienplan_id = $prestudentrolle->studienplan_id; + + if (!$prestudent->save_rolle()) + { + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; + } + else + { + $count_success_bewerber++; + } + } } else { - $count_success_bewerber++; + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine ZGV eingetragen sein.'; } } else @@ -1331,7 +1348,7 @@ if (isset($_REQUEST['reihungstest'])) ORDER BY start ASC LIMIT 1 ) ) - AND bewerbung_abgeschicktamum IS NOT NULL + /*AND bewerbung_abgeschicktamum IS NOT NULL*/ /* Leider gibt es bestaetigte Bewerbungen, die nie abgeschickt wurden */ AND bestaetigtam IS NOT NULL AND tbl_gebiet.gebiet_id != 7 "; diff --git a/vilesci/stammdaten/cronjobverwaltung.php b/vilesci/stammdaten/cronjobverwaltung.php index c1d011d98..036f17265 100644 --- a/vilesci/stammdaten/cronjobverwaltung.php +++ b/vilesci/stammdaten/cronjobverwaltung.php @@ -37,15 +37,15 @@ echo ' - - - - - - - - - + '; + + include('../../include/meta/jquery.php'); + include('../../include/meta/jquery-tablesorter.php'); + +echo ' + + + @@ -191,16 +202,18 @@ if(!$cj->getAll(null, 'titel')) echo '
Neuen Cronjob anlegen'; echo '

-
Datei:
Akte:'.$aktetitel.'
Neue Datei:
AkteID:
Signiert:
Selfservice:
  
+
- - - - - - - + + + + + + + + + '; @@ -208,17 +221,25 @@ echo '

foreach ($cj->result as $job) { if($next = $job->getNextExecutionTime()) - $next = date('d.m.Y H:i:s',$next); + { + $next = date('d.m.Y H:i:s', $next); + } + $grau = ''; + if (!$job->aktiv) + { + $grau = 'color: grey !important;'; + } echo " - - - - - - - - + + + + + + + + + "; } diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 8d5b1746f..244cac6d7 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -200,62 +200,92 @@ if(isset($_GET['excel'])) $studienplaene_list = implode(',', array_keys($studienplaene_arr)); $qry = " - SELECT + SELECT DISTINCT rt_person_id, rt_id, - prestudent_id, + '0' AS prestudent_id, tbl_rt_person.person_id, vorname, nachname, - ort_kurzbz, - studienplan_id, - studiengang_kz, + tbl_rt_person.ort_kurzbz, + tbl_rt_person.studienplan_id, + tbl_prestudent.studiengang_kz, gebdatum, geschlecht, - punkte - ,( - SELECT - kontakt - FROM - public.tbl_kontakt - WHERE - kontakttyp = 'email' + punkte, + ( + SELECT kontakt + FROM tbl_kontakt + WHERE kontakttyp = 'email' AND person_id = tbl_rt_person.person_id AND zustellung = true LIMIT 1 - ) AS email - ,( - SELECT - ausbildungssemester - FROM - public.tbl_prestudentstatus - WHERE - prestudent_id = tbl_prestudent.prestudent_id - AND datum = ( - SELECT MAX(datum) - FROM public.tbl_prestudentstatus - WHERE prestudent_id = tbl_prestudent.prestudent_id - AND status_kurzbz = 'Interessent' - ) LIMIT 1 - ) AS ausbildungssemester - ,( - SELECT orgform_kurzbz - FROM public.tbl_prestudentstatus + ) AS email, + ( + SELECT ausbildungssemester + FROM PUBLIC.tbl_prestudentstatus WHERE prestudent_id = tbl_prestudent.prestudent_id AND datum = ( SELECT MAX(datum) - FROM public.tbl_prestudentstatus + FROM PUBLIC.tbl_prestudentstatus WHERE prestudent_id = tbl_prestudent.prestudent_id AND status_kurzbz = 'Interessent' ) LIMIT 1 - ) AS orgform_kurzbz - FROM - public.tbl_rt_person - JOIN public.tbl_person USING (person_id) - JOIN public.tbl_prestudent ON (tbl_rt_person.person_id=tbl_prestudent.person_id) - WHERE - rt_id = ".$db->db_add_param($reihungstest->reihungstest_id, FHC_INTEGER)." - AND tbl_rt_person.studienplan_id IN(SELECT studienplan_id FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_prestudent.prestudent_id) - ORDER BY - ort_kurzbz NULLS FIRST,nachname,vorname + ) AS ausbildungssemester, + ( + SELECT orgform_kurzbz + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND datum = ( + SELECT MAX(datum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = 'Interessent' + ) LIMIT 1 + ) AS orgform_kurzbz + FROM PUBLIC.tbl_rt_person + JOIN PUBLIC.tbl_person USING (person_id) + JOIN PUBLIC.tbl_reihungstest rt ON (rt_id = rt.reihungstest_id) + JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE rt_id = ".$db->db_add_param($reihungstest_id, FHC_INTEGER)." + AND tbl_rt_person.studienplan_id IN ( + SELECT studienplan_id + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + ) + AND tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE ende <= ( + SELECT start + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY ende DESC LIMIT 1 + ) + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE start >= ( + SELECT ende + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY start ASC LIMIT 1 + ) + ) + ORDER BY ort_kurzbz NULLS FIRST, + nachname, + vorname "; $gebietbezeichnungen = array();
IDServerTitelAktivletzter Startnächster StartIDServerTitelDateiAktivletzter Startnächster Start
".htmlspecialchars($job->cronjob_id)."".htmlspecialchars($job->server_kurzbz)."".htmlspecialchars($job->titel)."".($job->aktiv?'Ja':'Nein')."".$datum_obj->formatDatum($job->last_execute,'d.m.Y H:i:s')."".$next." (cronjob_id&type=execute\">jetzt starten)cronjob_id&type=edit\">detailscronjob_id&type=delete\">entfernen".htmlspecialchars($job->cronjob_id)."".htmlspecialchars($job->server_kurzbz)."".htmlspecialchars($job->titel)."".htmlspecialchars($job->file)."".($job->aktiv?'Ja':'Nein')."".$datum_obj->formatDatum($job->last_execute,'d.m.Y H:i:s')."".$next." (cronjob_id&type=execute\">jetzt starten)cronjob_id&type=edit\">detailscronjob_id&type=delete\">entfernen