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 dbd8eb905..6a2675a04 100644 --- a/application/helpers/hlp_common_helper.php +++ b/application/helpers/hlp_common_helper.php @@ -285,3 +285,19 @@ function terminateWithError($message = null) exit(EXIT_ERROR); } + +/** + * 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/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/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..95b9cf50b 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.''; diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index 2261a4e66..97188553d 100644 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -163,7 +163,11 @@ function searchPerson($searchItems) //echo '',$row->titelpre,''; echo '',$row->anrede,''; echo '',$row->vorname,''; - echo '',$row->nachname,''; + echo ''; + if(!defined('CIS_SUCHE_PROFIL_ANZEIGEN') || CIS_SUCHE_PROFIL_ANZEIGEN) + 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..1386a6199 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); 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/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/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/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/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/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/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..a817614c3 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 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