From 5ff875917cc38158423cfb9ec4d40f6aba706a89 Mon Sep 17 00:00:00 2001 From: Paolo Date: Fri, 15 Sep 2017 14:15:04 +0200 Subject: [PATCH 01/15] Added method getAppliedStudiengangFromNowOE to get all the applied study courses for one person - Starting from the current study semester - For an organisation unit present in the organisation units tree that has as root the given parameter --- .../api/v1/organisation/Studiengang2.php | 65 ++++++++++----- .../models/organisation/Studiengang_model.php | 83 +++++++++++++++++-- 2 files changed, 121 insertions(+), 27 deletions(-) diff --git a/application/controllers/api/v1/organisation/Studiengang2.php b/application/controllers/api/v1/organisation/Studiengang2.php index 097cd64b3..83d60abb1 100644 --- a/application/controllers/api/v1/organisation/Studiengang2.php +++ b/application/controllers/api/v1/organisation/Studiengang2.php @@ -24,15 +24,15 @@ class Studiengang2 extends APIv1_Controller // Load model PersonModel $this->load->model("organisation/studiengang_model", "StudiengangModel"); } - + public function getStudiengang() { $studiengang_kz = $this->get("studiengang_kz"); - + if (isset($studiengang_kz)) { $result = $this->StudiengangModel->load($studiengang_kz); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -40,12 +40,12 @@ class Studiengang2 extends APIv1_Controller $this->response(); } } - + public function getAllForBewerbung() { $this->response($this->StudiengangModel->getAllForBewerbung(), REST_Controller::HTTP_OK); } - + /** * Method getStudiengangStudienplan */ @@ -56,16 +56,16 @@ class Studiengang2 extends APIv1_Controller $ausbildungssemester = $this->get("ausbildungssemester"); $aktiv = $this->get("aktiv"); $onlinebewerbung = $this->get("onlinebewerbung"); - + // If $studiensemester_kurzbz and $ausbildungssemester are present if (isset($studiensemester_kurzbz) && isset($ausbildungssemester)) { // Check & set if (!isset($aktiv)) $aktiv = "TRUE"; if (!isset($onlinebewerbung)) $onlinebewerbung = "TRUE"; - + $result = $this->StudiengangModel->getStudienplan($studiensemester_kurzbz, $ausbildungssemester, $aktiv, $onlinebewerbung); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -73,14 +73,14 @@ class Studiengang2 extends APIv1_Controller $this->response(); } } - + public function getStudiengangBewerbung() { $result = $this->StudiengangModel->getStudiengangBewerbung(); - + $this->response($result, REST_Controller::HTTP_OK); } - + /** * @return void */ @@ -89,17 +89,17 @@ class Studiengang2 extends APIv1_Controller $person_id = $this->get('person_id'); $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); $titel = $this->get('titel'); - + if (isset($person_id) && isset($studiensemester_kurzbz) && isset($titel)) { $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - + $result = $this->StudiengangModel->getAppliedStudiengang( $person_id, $studiensemester_kurzbz, $titel ); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -107,7 +107,7 @@ class Studiengang2 extends APIv1_Controller $this->response(); } } - + /** * @return void */ @@ -115,16 +115,16 @@ class Studiengang2 extends APIv1_Controller { $person_id = $this->get('person_id'); $titel = $this->get('titel'); - + if (isset($person_id) && isset($titel)) { $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); - + $result = $this->StudiengangModel->getAppliedStudiengangFromNow( $person_id, $titel ); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -132,4 +132,31 @@ class Studiengang2 extends APIv1_Controller $this->response(); } } -} \ No newline at end of file + + /** + * @return void + */ + public function getAppliedStudiengangFromNowOE() + { + $person_id = $this->get('person_id'); + $titel = $this->get('titel'); + $oe_kurzbz = $this->get('oe_kurzbz'); + + if (isset($person_id) && isset($titel) && isset($oe_kurzbz)) + { + $this->load->model('organisation/Studiengang_model', 'StudiengangModel'); + + $result = $this->StudiengangModel->getAppliedStudiengangFromNowOE( + $person_id, + $titel, + $oe_kurzbz + ); + + $this->response($result, REST_Controller::HTTP_OK); + } + else + { + $this->response(); + } + } +} diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index a15191eab..4755408be 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -104,7 +104,7 @@ class Studiengang_model extends DB_Model public function getStudienplan($studiensemester_kurzbz, $ausbildungssemester, $aktiv, $onlinebewerbung) { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + // Join table public.tbl_studiengang with table lehre.tbl_studienordnung on column studiengang_kz $this->addJoin('lehre.tbl_studienordnung', 'studiengang_kz'); // Then join with table lehre.tbl_studienplan on column studienordnung_id @@ -141,7 +141,7 @@ class Studiengang_model extends DB_Model public function getStudiengangBewerbung() { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + // Join table public.tbl_studiengang with table lehre.tbl_studienordnung on column studiengang_kz $this->addJoin('lehre.tbl_studienordnung', 'studiengang_kz'); // Join table lehre.tbl_studienordnung with table lehre.tbl_akadgrad on column akadgrad_id @@ -191,7 +191,7 @@ class Studiengang_model extends DB_Model public function getAppliedStudiengang($person_id, $studiensemester_kurzbz, $titel) { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + // Then join with table public.tbl_prestudent $this->addJoin('public.tbl_prestudent', 'studiengang_kz'); // Join table public.tbl_prestudentstatus @@ -233,14 +233,14 @@ class Studiengang_model extends DB_Model return $result; } - + /** * getAppliedStudiengangFromNow */ public function getAppliedStudiengangFromNow($person_id, $titel) { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + // Then join with table public.tbl_prestudent $this->addJoin('public.tbl_prestudent', 'studiengang_kz'); // Join table public.tbl_prestudentstatus @@ -257,10 +257,10 @@ class Studiengang_model extends DB_Model 'prestudent_id', 'LEFT' ); - + // Ordering by studiengang_kz and studienplan_id $this->addOrder('public.tbl_studiengang.bezeichnung'); - + $result = $this->loadTree( 'public.tbl_studiengang', array( @@ -283,7 +283,74 @@ class Studiengang_model extends DB_Model 'notizen' ) ); - + + return $result; + } + + /** + * getAppliedStudiengangFromNowOE + */ + public function getAppliedStudiengangFromNowOE($person_id, $titel, $oe_kurzbz) + { + if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; + + // Then join with table public.tbl_prestudent + $this->addJoin('public.tbl_prestudent', 'studiengang_kz'); + // Join table public.tbl_prestudentstatus + $this->addJoin('public.tbl_prestudentstatus', 'prestudent_id'); + // Then join with table lehre.tbl_studienplan + $this->addJoin('lehre.tbl_studienplan', 'studienplan_id'); + // Then join with table public.tbl_notizzuordnung + public.tbl_notiz + $this->addJoin( + '( + SELECT public.tbl_notiz.*, public.tbl_notizzuordnung.prestudent_id + FROM public.tbl_notiz JOIN public.tbl_notizzuordnung USING(notiz_id) + WHERE titel = '.$this->escape($titel). + ') tbl_notiz', + 'prestudent_id', + 'LEFT' + ); + + // Ordering by studiengang_kz and studienplan_id + $this->addOrder('public.tbl_studiengang.bezeichnung'); + + $result = $this->loadTree( + 'public.tbl_studiengang', + array( + 'public.tbl_prestudent', + 'public.tbl_prestudentstatus', + 'lehre.tbl_studienplan', + 'public.tbl_notiz' + ), + 'public.tbl_prestudent.person_id = '.$this->escape($person_id). + ' AND public.tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM public.tbl_studiensemester + WHERE ende >= NOW() + ) + AND (public.tbl_prestudentstatus.status_kurzbz = \'Interessent\') + AND public.tbl_studiengang.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = '.$this->escape($oe_kurzbz).' + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )', + array( + 'prestudenten', + 'prestudentstatus', + 'studienplaene', + 'notizen' + ) + ); + return $result; } From 030a40fac71fc07fdabc19824f8b9d80ae2c3eab Mon Sep 17 00:00:00 2001 From: Gerry Raab Date: Mon, 18 Sep 2017 10:07:36 -0300 Subject: [PATCH 02/15] update to IT phrases --- locale/it-IT/lehre.php | 4 ++-- locale/it-IT/profil.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/locale/it-IT/lehre.php b/locale/it-IT/lehre.php index c4741a14d..578b01a9f 100755 --- a/locale/it-IT/lehre.php +++ b/locale/it-IT/lehre.php @@ -3,7 +3,7 @@ $this->phrasen['lehre/abmelden']='esci'; $this->phrasen['lehre/abmeldung']='uscita'; $this->phrasen['lehre/AbmeldungAusGruppeNichtMoeglich']='Non è possibile cancellare la propria iscrizione al corso'; $this->phrasen['lehre/AbmeldungErfolgreich']='Cancellamento iscrizione avvenuto con successo'; -$this->phrasen['lehre/anwesenheitsUndNotenlisten']='Elenco frequenze e votazioni'; +$this->phrasen['lehre/anwesenheitsUndNotenlisten']='Elenco studenti'; $this->phrasen['lehre/benotungstoolHandbuch']='Handbook'; $this->phrasen['lehre/confirmAbmeldung']='Cancellare veramente la propria iscrizione al corso "%s" ?'; $this->phrasen['lehre/download']='Download'; @@ -19,7 +19,7 @@ $this->phrasen['lehre/lvInfoBearbeiten']='Modificare'; $this->phrasen['lehre/mail']='E-Mail agli studenti'; $this->phrasen['lehre/newsgroups']='Newsgroups'; $this->phrasen['lehre/nichtzugeteilt']='Lei non è stato/a associato/a a questo insegnamento'; -$this->phrasen['lehre/pinboard']='Bacheca'; +$this->phrasen['lehre/pinboard']='Bacheca notizie'; $this->phrasen['lehre/semesterplan']='Calendario del corso'; $this->phrasen['lehre/semesterplanUpload']='Upload'; $this->phrasen['lehre/semesterplanVorlage']='Schema'; diff --git a/locale/it-IT/profil.php b/locale/it-IT/profil.php index 3b141a687..bf3c0cc7b 100755 --- a/locale/it-IT/profil.php +++ b/locale/it-IT/profil.php @@ -1,6 +1,6 @@ phrasen['profil/AccountInaktiv']='Attenzione: questo account non è più attivo'; -$this->phrasen['profil/adminstration']='Amministrazione'; +$this->phrasen['profil/adminstration']='Gestione notizie'; $this->phrasen['profil/alias']='alias'; $this->phrasen['profil/alleStudentenVon']='Tutti gli studenti di'; $this->phrasen['profil/ausgegebenAm']=''; From 0f68237b9bdde2f00c87a01cfa39099edecd7bb6 Mon Sep 17 00:00:00 2001 From: Gerry Raab Date: Mon, 18 Sep 2017 10:24:36 -0300 Subject: [PATCH 03/15] Phrases it-IT --- locale/it-IT/upload.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/locale/it-IT/upload.php b/locale/it-IT/upload.php index 9f8ff1bec..1c842a4aa 100755 --- a/locale/it-IT/upload.php +++ b/locale/it-IT/upload.php @@ -1,6 +1,6 @@ phrasen['upload/aktionen']='azioni'; -$this->phrasen['upload/auswaehlen']='Sfoglia'; +$this->phrasen['upload/aktionen']='Azione'; +$this->phrasen['upload/auswaehlen']='Selezione'; $this->phrasen['upload/benutzerKonnteNichtZugeordnetWerden']='Non è stato potuto assegnare l’utente %s'; $this->phrasen['upload/dateiAufServerDateiformat']='Errore: il formato del file che si vuole caricare non è supportato'; $this->phrasen['upload/dateien']='File'; @@ -14,7 +14,7 @@ $this->phrasen['upload/esWurdeKeinPfadDefiniert']='Non è stato definito un perc $this->phrasen['upload/fehlerBeimLadenDerLv']='errore di caricamento del corso'; $this->phrasen['upload/fehlerBeimLoeschenDesOrdners']='errore nella cancellazione della cartella'; $this->phrasen['upload/formattributInEinNeues ']='Errore: si è tentato di cambiare il formato del file in un formato non supportato'; -$this->phrasen['upload/kbGespeichert']='KB salvati'; +$this->phrasen['upload/kbGespeichert']='Data salvataggio'; $this->phrasen['upload/keineDateienGefunden']='Nessun file trovtato'; $this->phrasen['upload/keineGegenstaendeDefiniert']='Non è stato possibile definire gli oggetti'; $this->phrasen['upload/keineOrdnerGefunden']='Nessuna cartella trovata'; @@ -28,8 +28,8 @@ $this->phrasen['upload/studentenUploadEinsehen']='Visualizza upload studenti'; $this->phrasen['upload/studentenUploadVerwalten']='Gestisci upload studenti'; $this->phrasen['upload/studentenUploadverzeichnis']='Registro degli upload'; $this->phrasen['upload/studentenUploadverzeichnisLeeren']='Cancella registro degli upload'; -$this->phrasen['upload/umEinenOrdnerOderEineDatei']='Per cancellare o modificare un file/cartella barrare la corrispettiva casella.'; -$this->phrasen['upload/unterordnerVon']='sottocartella di'; +$this->phrasen['upload/umEinenOrdnerOderEineDatei']='Per cancellare o modificare un file o cartella barrare prima la rispettiva casella.'; +$this->phrasen['upload/unterordnerVon']='Sottocartelle di '; $this->phrasen['upload/upload']='Upload'; $this->phrasen['upload/verzeichnisErstellen']='Genera un registro degli upload'; $this->phrasen['upload/verzeichnisname']='Nome cartella'; From f7153aa6f5a7c5675de483a4f65fd7d7d2b867b0 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 19 Sep 2017 17:34:00 +0200 Subject: [PATCH 04/15] - Changed config entry addons_aufnahme_url in fhcomplete.php. Now it's an array having an entry for each organisation unit root - Changed redirectByToken method in controllers/Redirect, now: - Loads the root of the organisation unit tree using the oe_kurzbz present in the message, loaded using a token - Redirect to the related aufnahme using the organisation unit previously found - Changed method send in system/Messages, now retrives the oe_kurzbz of the recipients/prestudents to store these oe_kurzbz in the table tbl_msg_message (used by FAS) - Added method getRoot to library OrganisationseinheitLib to retrive the root of an organisation unit by the given oe_kurzbz - Added method getOrganisationunits to model crm/Prestudent_model, retrives the oe_kurzbz using the given prestudent/s id/s - Added some comments here and there --- application/config/fhcomplete.php | 4 +- application/controllers/Redirect.php | 45 +++++++- .../controllers/api/v1/system/Message.php | 80 +++++++------- application/controllers/system/Messages.php | 103 +++++++++++------- .../libraries/OrganisationseinheitLib.php | 38 +++++-- application/models/crm/Prestudent_model.php | 15 ++- .../Organisationseinheit_model.php | 27 +++-- 7 files changed, 209 insertions(+), 103 deletions(-) diff --git a/application/config/fhcomplete.php b/application/config/fhcomplete.php index 6ed5e93bd..3c540ea65 100755 --- a/application/config/fhcomplete.php +++ b/application/config/fhcomplete.php @@ -243,4 +243,6 @@ $config['fhc_acl'] = array 'PhrasesLib.getPhrase' => 'system/PhrasesLib' ); -$config['addons_aufnahme_url'] = 'http://debian.dev/build/addons/aufnahme/cis/index.php'; +// +$config['addons_aufnahme_url'] = array(); +$config['addons_aufnahme_url']['OE_ROOT'] = 'http://debian.dev/addons/aufnahme/OE_ROOT/cis/index.php'; diff --git a/application/controllers/Redirect.php b/application/controllers/Redirect.php index 136d2fc35..99d459771 100644 --- a/application/controllers/Redirect.php +++ b/application/controllers/Redirect.php @@ -25,13 +25,52 @@ class Redirect extends FHC_Controller // Loads config file fhcomplete $this->config->load('fhcomplete'); + + // Loads message helper + $this->load->helper('message'); + + // Loads model MessageTokenModel + $this->load->model('system/MessageToken_model', 'MessageTokenModel'); + + // Loads library OrganisationseinheitLib + $this->load->library('OrganisationseinheitLib'); } + /** + * redirectByToken + * + * - Loads the message using a token + * - Loads the root of the organisation unit tree using the oe_kurzbz present in the message + * - Redirect to the aufnahme related to the found organisation unit + */ public function redirectByToken($token) { - if (isset($token)) + $msg = $this->MessageTokenModel->getMessageByToken($token); + if ($msg->error) { - redirect($this->config->item('addons_aufnahme_url') . '?token=' . $token); + show_error($msg->retval); + } + + $oe_kurzbz = $msg->retval[0]->oe_kurzbz; + + if ($oe_kurzbz != null && $oe_kurzbz != '') + { + $rootOE = $this->organisationseinheitlib->getRoot($oe_kurzbz); + if ($rootOE->error) + { + show_error($rootOE->retval); + } + + $addonAufnahmeUrls = $this->config->item('addons_aufnahme_url'); + + if (isset($token) + && hasData($msg) + && is_array($addonAufnahmeUrls) + && hasData($rootOE) + && isset($addonAufnahmeUrls[$rootOE->retval[0]->oe_kurzbz])) + { + redirect($addonAufnahmeUrls[$rootOE->retval[0]->oe_kurzbz] . '?token=' . $token); + } } } -} \ No newline at end of file +} diff --git a/application/controllers/api/v1/system/Message.php b/application/controllers/api/v1/system/Message.php index 3302e7c6b..33ccbb202 100644 --- a/application/controllers/api/v1/system/Message.php +++ b/application/controllers/api/v1/system/Message.php @@ -27,17 +27,17 @@ class Message extends APIv1_Controller } /** - * @return void + * getMessagesByPersonID */ public function getMessagesByPersonID() { $person_id = $this->get('person_id'); $all = $this->get('all'); - + if (isset($person_id)) { $result = $this->messagelib->getMessagesByPerson($person_id, $all); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -45,19 +45,19 @@ class Message extends APIv1_Controller $this->response(); } } - + /** - * @return void + * getMessagesByUID */ public function getMessagesByUID() { $uid = $this->get('uid'); $all = $this->get('all'); - + if (isset($uid)) { $result = $this->messagelib->getMessagesByUID($uid, $all); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -65,18 +65,18 @@ class Message extends APIv1_Controller $this->response(); } } - + /** - * @return void + * getMessagesByToken */ public function getMessagesByToken() { $token = $this->get('token'); - + if (isset($token)) { $result = $this->messagelib->getMessageByToken($token); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -84,19 +84,19 @@ class Message extends APIv1_Controller $this->response(); } } - + /** - * @return void + * getSentMessagesByPerson */ public function getSentMessagesByPerson() { $person_id = $this->get('person_id'); $all = $this->get('all'); - + if (isset($person_id)) { $result = $this->messagelib->getSentMessagesByPerson($person_id, $all); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -104,18 +104,18 @@ class Message extends APIv1_Controller $this->response(); } } - + /** - * @return void + * getCountUnreadMessages */ public function getCountUnreadMessages() { $person_id = $this->get('person_id'); - + if (isset($person_id)) { $result = $this->messagelib->getCountUnreadMessages($person_id); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -123,14 +123,14 @@ class Message extends APIv1_Controller $this->response(); } } - + /** - * @return void + * postMessage */ public function postMessage() { $validation = $this->_validatePostMessage($this->post()); - + if (isSuccess($validation)) { $result = $this->messagelib->sendMessage( @@ -140,10 +140,10 @@ class Message extends APIv1_Controller $this->post()['body'], PRIORITY_NORMAL, isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, - isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, + isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // Sender organisation unit isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true ); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -151,27 +151,27 @@ class Message extends APIv1_Controller $this->response($validation, REST_Controller::HTTP_OK); } } - + /** - * @return void + * postMessageVorlage */ public function postMessageVorlage() { $validation = $this->_validatePostMessageVorlage($this->post()); - + if (isSuccess($validation)) { $result = $this->messagelib->sendMessageVorlage( isset($this->post()['sender_id']) ? $this->post()['sender_id'] : null, isset($this->post()['receiver_id']) ? $this->post()['receiver_id'] : null, $this->post()['vorlage_kurzbz'], - isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, + isset($this->post()['oe_kurzbz']) ? $this->post()['oe_kurzbz'] : null, // Sender organisation unit $this->post()['data'], isset($this->post()['relationmessage_id']) ? $this->post()['relationmessage_id'] : null, isset($this->post()['orgform_kurzbz']) ? $this->post()['orgform_kurzbz'] : null, isset($this->post()['multiPartMime']) ? $this->post()['multiPartMime'] : true ); - + $this->response($result, REST_Controller::HTTP_OK); } else @@ -179,16 +179,16 @@ class Message extends APIv1_Controller $this->response($validation, REST_Controller::HTTP_OK); } } - + /** - * @return void + * postChangeStatus */ public function postChangeStatus() { $person_id = $this->post()['person_id']; $message_id = $this->post()['message_id']; $status = $this->post()['status']; - + if (isset($person_id) && isset($message_id) && isset($status) && in_array($status, array(MSG_STATUS_UNREAD, MSG_STATUS_READ, MSG_STATUS_ARCHIVED, MSG_STATUS_DELETED))) { @@ -201,7 +201,10 @@ class Message extends APIv1_Controller $this->response(); } } - + + /** + * _validatePostMessage + */ private function _validatePostMessage($message = null) { if (!isset($message)) @@ -220,10 +223,13 @@ class Message extends APIv1_Controller { return error('If a receiver_id is not given a oe_kurzbz must be specified'); } - + return success('Input data are valid'); } - + + /** + * _validatePostMessageVorlage + */ private function _validatePostMessageVorlage($message = null) { if (!isset($message)) @@ -242,7 +248,7 @@ class Message extends APIv1_Controller { return error('If a receiver_id is not given a oe_kurzbz must be specified'); } - + return success('Input data are valid'); } -} \ No newline at end of file +} diff --git a/application/controllers/system/Messages.php b/application/controllers/system/Messages.php index 472f818d5..73d405dcc 100755 --- a/application/controllers/system/Messages.php +++ b/application/controllers/system/Messages.php @@ -2,29 +2,32 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); -class Messages extends VileSci_Controller +class Messages extends VileSci_Controller { + /** + * + */ public function __construct() { parent::__construct(); - + // Loads the message library $this->load->library('MessageLib'); - + // Loads the widget library $this->load->library('WidgetLib'); - + $this->load->model('person/Person_model', 'PersonModel'); } - + /** - * + * write */ public function write($sender_id, $msg_id = null, $receiver_id = null) { $prestudent_id = $this->input->post('prestudent_id'); $msg = null; - + // Get message data if possible if (is_numeric($msg_id) && is_numeric($receiver_id)) { @@ -38,7 +41,7 @@ class Messages extends VileSci_Controller $msg = $msg->retval[0]; } } - + // Get variables $this->load->model('system/Message_model', 'MessageModel'); $msgVarsDataByPrestudentId = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); @@ -46,7 +49,7 @@ class Messages extends VileSci_Controller { show_error($msgVarsDataByPrestudentId->retval); } - + if (!hasData($variables = $this->MessageModel->getMessageVars())) { unset($variables); @@ -60,11 +63,11 @@ class Messages extends VileSci_Controller $variablesArray['{'.str_replace(" ", "_", strtolower($variables->retval[$i])).'}'] = $variables->retval[$i]; } } - + array_shift($variables->retval); // Remove person_id array_shift($variables->retval); // Remove prestudent_id - - // Organisation units + + // Organisation units used to get the templates $oe_kurzbz = array(); // A person can have more organisation units $this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel'); $benutzerResult = $this->BenutzerfunktionModel->getByPersonId($sender_id); @@ -75,7 +78,7 @@ class Messages extends VileSci_Controller $oe_kurzbz[] = $val->oe_kurzbz; } } - + // Admin or commoner? $this->load->model('system/Benutzerrolle_model', 'BenutzerrolleModel'); $isAdmin = $this->BenutzerrolleModel->isAdminByPersonId($sender_id); @@ -83,38 +86,45 @@ class Messages extends VileSci_Controller { show_error($isAdmin->retval); } - + $data = array ( 'sender_id' => $sender_id, 'receivers' => $msgVarsDataByPrestudentId->retval, 'message' => $msg, 'variables' => $variablesArray, - 'oe_kurzbz' => $oe_kurzbz, + 'oe_kurzbz' => $oe_kurzbz, // used to get the templates 'isAdmin' => $isAdmin->retval ); - + $v = $this->load->view('system/messageWrite', $data); } - + /** - * + * send */ public function send($sender_id) { $error = false; - + $subject = $this->input->post('subject'); $body = $this->input->post('body'); $prestudents = $this->input->post('prestudents'); $relationmessage_id = $this->input->post('relationmessage_id'); - + if (!isset($relationmessage_id) || $relationmessage_id == '') { $relationmessage_id = null; } - + + // $data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudents); - if (hasData($data)) + + // + $this->load->model('crm/Prestudent_model', 'PrestudentModel'); + $prestudentsData = $this->PrestudentModel->getOrganisationunits($prestudents); + + // + if (hasData($data) && hasData($prestudentsData)) { for ($i = 0; $i < count($data->retval); $i++) { @@ -125,10 +135,19 @@ class Messages extends VileSci_Controller $newKey = str_replace(" ", "_", strtolower($key)); $dataArray[$newKey] = $dataArray[$key]; } - + $parsedText = $this->messagelib->parseMessageText($body, $dataArray); - - $msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id); + + $oe_kurzbz = ''; + for ($p = 0; $p < count($prestudentsData->retval); $p++) + { + if ($prestudentsData->retval[$p]->prestudent_id == $data->retval[$i]->prestudent_id) + { + $oe_kurzbz = $prestudentsData->retval[$p]->oe_kurzbz; + } + } + + $msg = $this->messagelib->sendMessage($sender_id, $dataArray['person_id'], $subject, $parsedText, PRIORITY_NORMAL, $relationmessage_id, $oe_kurzbz); if ($msg->error) { show_error($msg->retval); @@ -137,20 +156,20 @@ class Messages extends VileSci_Controller } } } - + if (!$error) { echo "Messages sent successfully"; } } - + /** - * + * getPersonId */ private function getPersonId() { $person_id = null; - + if ($this->input->get('person_id') !== null) { $person_id = $this->input->get('person_id'); @@ -159,45 +178,45 @@ class Messages extends VileSci_Controller { $person_id = $this->input->get('person_id'); } - + if (!is_numeric($person_id)) { show_error('Person_id is not numeric'); } - + return $person_id; } - + /** - * + * getVorlage */ public function getVorlage() { $vorlage_kurzbz = $this->input->get('vorlage_kurzbz'); - + if (isset($vorlage_kurzbz)) { $this->load->model('system/Vorlagestudiengang_model', 'VorlagestudiengangModel'); $result = $this->VorlagestudiengangModel->loadWhere(array('vorlage_kurzbz' => $vorlage_kurzbz)); - + $this->output ->set_content_type('application/json') ->set_output(json_encode($result)); } } - + /** - * + * parseMessageText */ public function parseMessageText() { $prestudent_id = $this->input->get('prestudent_id'); $text = $this->input->get('text'); - + if (isset($prestudent_id)) { $data = $this->MessageModel->getMsgVarsDataByPrestudentId($prestudent_id); - + $parsedText = ""; if (hasData($data)) { @@ -207,13 +226,13 @@ class Messages extends VileSci_Controller $newKey = str_replace(" ", "_", strtolower($key)); $dataArray[$newKey] = $dataArray[$key]; } - + $parsedText = $this->messagelib->parseMessageText($text, $dataArray); } - + $this->output ->set_content_type('application/json') ->set_output(json_encode($parsedText)); } } -} \ No newline at end of file +} diff --git a/application/libraries/OrganisationseinheitLib.php b/application/libraries/OrganisationseinheitLib.php index e70e8cb76..b98e8c2c0 100644 --- a/application/libraries/OrganisationseinheitLib.php +++ b/application/libraries/OrganisationseinheitLib.php @@ -10,14 +10,14 @@ class OrganisationseinheitLib public function __construct() { $this->ci =& get_instance(); - + // Loads model Organisationseinheit_model $this->ci->load->model('organisation/Organisationseinheit_model', 'OrganisationseinheitModel'); - + // Loads helper message to manage returning messages $this->ci->load->helper('Message'); } - + /** * treeSearch * @@ -54,7 +54,7 @@ class OrganisationseinheitLib } $result = $this->ci->OrganisationseinheitModel->getOneLevel($schema, $table, $select, $where, $orderby, $oe_kurzbz); - + if (hasData($result)) { if ($result->retval[0]->_ppk != null && $result->retval[0]->oe_kurzbz == null) @@ -62,12 +62,14 @@ class OrganisationseinheitLib return $this->treeSearch($schema, $table, $select, $where, $orderby, $result->retval[0]->_ppk); } } - + return $result; } - + /** * treeSearchEntire + * + * Like tree search, but it returns all the results found while travelling through the tree structure */ public function treeSearchEntire($table, $alias, $fields, $where, $orderby, $oe_kurzbz) { @@ -89,13 +91,13 @@ class OrganisationseinheitLib } $result = $this->ci->OrganisationseinheitModel->getOneLevelAlias($table, $alias, $select, $where, $orderby, $oe_kurzbz); - + if (hasData($result)) { if ($result->retval[0]->_pk != null && $result->retval[0]->_ppk != null && $result->retval[0]->_jtpk != null) { $tmpResult = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk); - + if (hasData($tmpResult) && $tmpResult->retval[0]->_pk != null && $tmpResult->retval[0]->_ppk != null @@ -109,7 +111,25 @@ class OrganisationseinheitLib $result = $this->treeSearchEntire($table, $alias, $select, $where, $orderby, $result->retval[0]->_ppk); } } - + + return $result; + } + + /** + * getRoot - Get the root of the organisation unit tree which belongs the given organisation unit parameter + */ + public function getRoot($oe_kurzbz) + { + $result = $this->ci->OrganisationseinheitModel->load($oe_kurzbz); + + if (hasData($result)) + { + if ($result->retval[0]->oe_parent_kurzbz != null) + { + $result = $this->getRoot($result->retval[0]->oe_parent_kurzbz); + } + } + return $result; } } diff --git a/application/models/crm/Prestudent_model.php b/application/models/crm/Prestudent_model.php index 7e05eeccd..2919036e9 100644 --- a/application/models/crm/Prestudent_model.php +++ b/application/models/crm/Prestudent_model.php @@ -88,7 +88,7 @@ class Prestudent_model extends DB_Model ) { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $this->addSelect( 'p.person_id, prestudent_id, @@ -179,4 +179,17 @@ class Prestudent_model extends DB_Model return $this->loadWhere($parametersArray); } + + /** + * getOrganisationunits + */ + public function getOrganisationunits($prestudent_id) + { + $query = 'SELECT p.prestudent_id, s.oe_kurzbz + FROM public.tbl_prestudent p + INNER JOIN public.tbl_studiengang s USING(studiengang_kz) + WHERE prestudent_id %s ?'; + + return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id)); + } } diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index 0414cd560..37b269f79 100755 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -1,4 +1,5 @@ pk = 'oe_kurzbz'; } + /** + * getRecursiveList + */ public function getRecursiveList($typ = null) { $qry = "WITH RECURSIVE tree (oe_kurzbz, bezeichnung, path, organisationseinheittyp_kurzbz) AS ( @@ -31,17 +35,17 @@ class Organisationseinheit_model extends DB_Model SELECT oe_kurzbz AS id, SUBSTRING(REGEXP_REPLACE(path, '[A-z]+\|', '-', 'g') || bezeichnung, 2) AS description FROM tree"; - + $parametersArray = array(); - + if (is_array($typ) && count($typ) > 0) { $parametersArray[] = $typ; $qry .= ' WHERE organisationseinheittyp_kurzbz IN ?'; } - + $qry .= ' ORDER BY path'; - + return $this->execQuery($qry, $parametersArray); } @@ -78,12 +82,15 @@ class Organisationseinheit_model extends DB_Model ) _joined_table ON (orgs._pk = _joined_table._pk) WHERE orgs._pk = ? ORDER BY %s"; - + $query = sprintf($query, $table, $fields, $schema, $table, $where, $orderby); - + return $this->execQuery($query, array($oe_kurzbz)); } - + + /** + * getOneLevelAlias + */ public function getOneLevelAlias($table, $alias, $fields, $where, $orderby, $oe_kurzbz) { $query = "WITH RECURSIVE organizations(_pk, _ppk) AS @@ -103,9 +110,9 @@ class Organisationseinheit_model extends DB_Model ) _joined_table ON (orgs._pk = _joined_table._jtpk) WHERE orgs._pk = ? ORDER BY %s"; - + $query = sprintf($query, $alias, $fields, $table, $where, $orderby); - + return $this->execQuery($query, array($oe_kurzbz)); } -} \ No newline at end of file +} From 7c25d6474c43f3e98cc4a36e9ec41b7df5e46be1 Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 19 Sep 2017 19:02:55 +0200 Subject: [PATCH 05/15] Changed methods: - getMessagesByPersonID - getMessagesByUID - getSentMessagesByPerson - getCountUnreadMessages of controller system/Message to get messages also with a given organisation unit --- .../controllers/api/v1/system/Message.php | 12 ++-- application/libraries/MessageLib.php | 16 +++--- application/models/system/Message_model.php | 28 +++++---- application/models/system/Recipient_model.php | 57 +++++++++++++------ 4 files changed, 74 insertions(+), 39 deletions(-) diff --git a/application/controllers/api/v1/system/Message.php b/application/controllers/api/v1/system/Message.php index 33ccbb202..1d400b41e 100644 --- a/application/controllers/api/v1/system/Message.php +++ b/application/controllers/api/v1/system/Message.php @@ -32,11 +32,12 @@ class Message extends APIv1_Controller public function getMessagesByPersonID() { $person_id = $this->get('person_id'); + $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit $all = $this->get('all'); if (isset($person_id)) { - $result = $this->messagelib->getMessagesByPerson($person_id, $all); + $result = $this->messagelib->getMessagesByPerson($person_id, $oe_kurzbz, $all); $this->response($result, REST_Controller::HTTP_OK); } @@ -52,11 +53,12 @@ class Message extends APIv1_Controller public function getMessagesByUID() { $uid = $this->get('uid'); + $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit $all = $this->get('all'); if (isset($uid)) { - $result = $this->messagelib->getMessagesByUID($uid, $all); + $result = $this->messagelib->getMessagesByUID($uid, $oe_kurzbz, $all); $this->response($result, REST_Controller::HTTP_OK); } @@ -91,11 +93,12 @@ class Message extends APIv1_Controller public function getSentMessagesByPerson() { $person_id = $this->get('person_id'); + $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit $all = $this->get('all'); if (isset($person_id)) { - $result = $this->messagelib->getSentMessagesByPerson($person_id, $all); + $result = $this->messagelib->getSentMessagesByPerson($person_id, $oe_kurzbz, $all); $this->response($result, REST_Controller::HTTP_OK); } @@ -111,10 +114,11 @@ class Message extends APIv1_Controller public function getCountUnreadMessages() { $person_id = $this->get('person_id'); + $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit if (isset($person_id)) { - $result = $this->messagelib->getCountUnreadMessages($person_id); + $result = $this->messagelib->getCountUnreadMessages($person_id, $oe_kurzbz); $this->response($result, REST_Controller::HTTP_OK); } diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index 3b18874eb..d5daca634 100755 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -62,12 +62,12 @@ class MessageLib /** * getMessagesByUID() - will return all messages, including the latest status for specified user. It don´t returns Attachments. */ - public function getMessagesByUID($uid, $all = false) + public function getMessagesByUID($uid, $oe_kurzbz = null, $all = false) { if (empty($uid)) return $this->_error('', MSG_ERR_INVALID_MSG_ID); - $msg = $this->ci->RecipientModel->getMessagesByUID($uid, $all); + $msg = $this->ci->RecipientModel->getMessagesByUID($uid, $oe_kurzbz, $all); return $msg; } @@ -75,12 +75,12 @@ class MessageLib /** * getMessagesByPerson() - will return all messages, including the latest status for specified user. It don´t returns Attachments. */ - public function getMessagesByPerson($person_id, $all = false) + public function getMessagesByPerson($person_id, $oe_kurzbz = null, $all = false) { if (empty($person_id)) return $this->_error('', MSG_ERR_INVALID_MSG_ID); - $msg = $this->ci->RecipientModel->getMessagesByPerson($person_id, $all); + $msg = $this->ci->RecipientModel->getMessagesByPerson($person_id, $oe_kurzbz, $all); return $msg; } @@ -88,12 +88,12 @@ class MessageLib /** * getSentMessagesByPerson() - Get all sent messages from a person identified by person_id */ - public function getSentMessagesByPerson($person_id, $all = false) + public function getSentMessagesByPerson($person_id, $oe_kurzbz = null, $all = false) { if (empty($person_id)) return $this->_error('', MSG_ERR_INVALID_MSG_ID); - $msg = $this->ci->MessageModel->getMessagesByPerson($person_id, $all); + $msg = $this->ci->MessageModel->getMessagesByPerson($person_id, $oe_kurzbz, $all); return $msg; } @@ -144,12 +144,12 @@ class MessageLib /** * getCountUnreadMessages */ - public function getCountUnreadMessages($person_id) + public function getCountUnreadMessages($person_id, $oe_kurzbz = null) { if (!is_numeric($person_id)) return $this->_error('', MSG_ERR_INVALID_RECIPIENTS); - $msg = $this->ci->RecipientModel->getCountUnreadMessages($person_id); + $msg = $this->ci->RecipientModel->getCountUnreadMessages($person_id, $oe_kurzbz); return $msg; } diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 76e86b356..6b8b0fbdc 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -1,4 +1,4 @@ -dbTable = 'public.tbl_msg_message'; $this->pk = 'message_id'; } - + /** * Get all sent messages from a person identified by person_id */ - public function getMessagesByPerson($person_id, $all) + public function getMessagesByPerson($person_id, $oe_kurzbz, $all) { // Checks if the operation is permitted by the API caller if (isError($ent = $this->isEntitled('public.tbl_person', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) @@ -26,7 +26,7 @@ class Message_model extends DB_Model return $ent; if (isError($ent = $this->isEntitled('public.tbl_msg_message', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; - + $sql = 'SELECT m.message_id, m.person_id, m.subject, @@ -52,9 +52,9 @@ class Message_model extends DB_Model ORDER BY insertamum DESC ) s ON (m.message_id = s.message_id AND m.person_id = s.person_id) WHERE m.person_id = ?'; - + $parametersArray = array($person_id); - + if ($all == 'true') { $sql = sprintf($sql, ''); @@ -63,17 +63,23 @@ class Message_model extends DB_Model { $sql = sprintf($sql, 'WHERE status >= 3'); } - + + if ($oe_kurzbz != null) + { + array_push($parametersArray, $oe_kurzbz); + $sql .= ' AND m.oe_kurzbz = ?'; + } + return $this->execQuery($sql, $parametersArray); } - + /** * getMessageVars */ public function getMessageVars() { $result = $this->db->query('SELECT * FROM public.vw_msg_vars WHERE 0 = 1'); - + if ($result) { return success($result->list_fields()); @@ -83,14 +89,14 @@ class Message_model extends DB_Model return error($this->db->error(), FHC_DB_ERROR); } } - + /** * getMsgVarsDataByPrestudentId */ public function getMsgVarsDataByPrestudentId($prestudent_id) { $query = 'SELECT * FROM public.vw_msg_vars WHERE prestudent_id %s ?'; - + return $this->execQuery(sprintf($query, is_array($prestudent_id) ? 'IN' : '='), array($prestudent_id)); } } diff --git a/application/models/system/Recipient_model.php b/application/models/system/Recipient_model.php index b8ffecab3..53170a4cc 100644 --- a/application/models/system/Recipient_model.php +++ b/application/models/system/Recipient_model.php @@ -87,7 +87,7 @@ class Recipient_model extends DB_Model /** * Get all received messages for a person identified by person_id */ - public function getMessagesByPerson($person_id, $all) + public function getMessagesByPerson($person_id, $oe_kurzbz, $all) { // Checks if the operation is permitted by the API caller if (isError($ent = $this->isEntitled('public.tbl_msg_recipient', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) @@ -124,8 +124,7 @@ class Recipient_model extends DB_Model %s ORDER BY insertamum DESC ) s ON (m.message_id = s.message_id AND r.person_id = s.person_id) - WHERE r.person_id = ? - ORDER BY r.message_id DESC, s.status DESC'; + WHERE r.person_id = ?'; $parametersArray = array($person_id); @@ -139,16 +138,24 @@ class Recipient_model extends DB_Model $sql = sprintf($sql, 'WHERE person_id = ? AND message_id NOT IN (SELECT message_id FROM public.tbl_msg_status WHERE status >= 3 AND person_id = ?)'); } + if ($oe_kurzbz != null) + { + array_push($parametersArray, $oe_kurzbz); + $sql .= ' AND m.oe_kurzbz = ?'; + } + + $sql .= ' ORDER BY r.message_id DESC, s.status DESC'; + return $this->execQuery($sql, $parametersArray); } /** * Get all received messages for a person identified by uid */ - public function getMessagesByUID($uid, $all) + public function getMessagesByUID($uid, $oe_kurzbz, $all) { // Checks if the operation is permitted by the API caller - // @ToDo: Define the special right for reading own messages 'basis/message:own' + // TODO: Define the special right for reading own messages 'basis/message:own' // if same user if ($uid === getAuthUID()) { @@ -163,15 +170,14 @@ class Recipient_model extends DB_Model } // get Data - $sql = 'SELECT b.uid, + $sql = 'SELECT DISTINCT ON (r.message_id) r.message_id, m.person_id, - m.message_id, m.subject, m.body, m.priority, + m.insertamum, m.relationmessage_id, m.oe_kurzbz, - m.insertamum, p.anrede, p.titelpost, p.titelpre, @@ -185,14 +191,26 @@ class Recipient_model extends DB_Model JOIN public.tbl_person p ON (r.person_id = p.person_id) JOIN public.tbl_benutzer b ON (r.person_id = b.person_id) JOIN ( - SELECT * FROM public.tbl_msg_status ORDER BY insertamum DESC LIMIT 1 - ) s ON (r.message_id = s.message_id AND r.person_id = s.person_id) + SELECT message_id, person_id, status, statusinfo, insertamum + FROM public.tbl_msg_status + ORDER BY insertamum DESC + ) s ON (m.message_id = s.message_id AND r.person_id = s.person_id) WHERE b.uid = ?'; - if (! $all) - $sql .= ' AND (status < 3 OR status IS NULL)'; + $parametersArray = array($uid); - return $this->execQuery($sql, array($uid)); + if ($all == 'true') + { + $sql .= ' AND (status < 3 OR status IS NULL)'; + } + + if ($oe_kurzbz != null) + { + array_push($parametersArray, $oe_kurzbz); + $sql .= ' AND m.oe_kurzbz = ?'; + } + + return $this->execQuery($sql, $parametersArray); } /** @@ -270,7 +288,7 @@ class Recipient_model extends DB_Model /** * Get all unread messages for a person identified by person_id */ - public function getCountUnreadMessages($person_id) + public function getCountUnreadMessages($person_id, $oe_kurzbz) { // Checks if the operation is permitted by the API caller if (isError($ent = $this->isEntitled('public.tbl_msg_recipient', PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) @@ -279,8 +297,9 @@ class Recipient_model extends DB_Model return $ent; $sql = 'SELECT COUNT(r.message_id) AS unreadMessages - FROM public.tbl_msg_recipient r JOIN public.tbl_msg_status s - ON (r.message_id = s.message_id AND r.person_id = s.person_id) + FROM public.tbl_msg_recipient r + JOIN public.tbl_msg_status s ON (r.message_id = s.message_id AND r.person_id = s.person_id) + JOIN public.tbl_msg_message m ON (r.message_id = m.message_id) WHERE r.person_id = ? AND s.status = ? AND r.message_id NOT IN ( @@ -293,6 +312,12 @@ class Recipient_model extends DB_Model $parametersArray = array($person_id, MSG_STATUS_UNREAD, $person_id, MSG_STATUS_UNREAD); + if ($oe_kurzbz != null) + { + array_push($parametersArray, $oe_kurzbz); + $sql .= ' AND m.oe_kurzbz = ?'; + } + return $this->execQuery($sql, $parametersArray); } } From 6fca6e45eb5ec9cd3fd82f20e1504127ef459fe6 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 20 Sep 2017 10:41:20 +0200 Subject: [PATCH 06/15] - Added optional parameter oe_kurzbz to method getStudiengangBewerbung of controller organisation/Studiengang2 - Added optional parameter oe_kurzbz to method getStudiengangBewerbung of model organisation/Studiengang_model --- .../api/v1/organisation/Studiengang2.php | 42 +++++++++++------- .../models/organisation/Studiengang_model.php | 44 ++++++++++++++----- 2 files changed, 61 insertions(+), 25 deletions(-) diff --git a/application/controllers/api/v1/organisation/Studiengang2.php b/application/controllers/api/v1/organisation/Studiengang2.php index 83d60abb1..bea2f218e 100644 --- a/application/controllers/api/v1/organisation/Studiengang2.php +++ b/application/controllers/api/v1/organisation/Studiengang2.php @@ -11,23 +11,27 @@ * @filesource */ // ------------------------------------------------------------------------ -if (!defined("BASEPATH")) exit("No direct script access allowed"); +if (!defined('BASEPATH')) exit('No direct script access allowed'); class Studiengang2 extends APIv1_Controller { /** - * Course API constructor. + * */ public function __construct() { parent::__construct(); + // Load model PersonModel - $this->load->model("organisation/studiengang_model", "StudiengangModel"); + $this->load->model('organisation/studiengang_model', 'StudiengangModel'); } + /** + * getStudiengang + */ public function getStudiengang() { - $studiengang_kz = $this->get("studiengang_kz"); + $studiengang_kz = $this->get('studiengang_kz'); if (isset($studiengang_kz)) { @@ -41,28 +45,31 @@ class Studiengang2 extends APIv1_Controller } } + /** + * getAllForBewerbung + */ public function getAllForBewerbung() { $this->response($this->StudiengangModel->getAllForBewerbung(), REST_Controller::HTTP_OK); } /** - * Method getStudiengangStudienplan + * getStudiengangStudienplan */ public function getStudiengangStudienplan() { // Getting HTTP GET parameters - $studiensemester_kurzbz = $this->get("studiensemester_kurzbz"); - $ausbildungssemester = $this->get("ausbildungssemester"); - $aktiv = $this->get("aktiv"); - $onlinebewerbung = $this->get("onlinebewerbung"); + $studiensemester_kurzbz = $this->get('studiensemester_kurzbz'); + $ausbildungssemester = $this->get('ausbildungssemester'); + $aktiv = $this->get('aktiv'); + $onlinebewerbung = $this->get('onlinebewerbung'); // If $studiensemester_kurzbz and $ausbildungssemester are present if (isset($studiensemester_kurzbz) && isset($ausbildungssemester)) { // Check & set - if (!isset($aktiv)) $aktiv = "TRUE"; - if (!isset($onlinebewerbung)) $onlinebewerbung = "TRUE"; + if (!isset($aktiv)) $aktiv = 'TRUE'; + if (!isset($onlinebewerbung)) $onlinebewerbung = 'TRUE'; $result = $this->StudiengangModel->getStudienplan($studiensemester_kurzbz, $ausbildungssemester, $aktiv, $onlinebewerbung); @@ -74,15 +81,20 @@ class Studiengang2 extends APIv1_Controller } } + /** + * getStudiengangBewerbung + */ public function getStudiengangBewerbung() { - $result = $this->StudiengangModel->getStudiengangBewerbung(); + $oe_kurzbz = $this->get('oe_kurzbz'); + + $result = $this->StudiengangModel->getStudiengangBewerbung($oe_kurzbz); $this->response($result, REST_Controller::HTTP_OK); } /** - * @return void + * getAppliedStudiengang */ public function getAppliedStudiengang() { @@ -109,7 +121,7 @@ class Studiengang2 extends APIv1_Controller } /** - * @return void + * getAppliedStudiengangFromNow */ public function getAppliedStudiengangFromNow() { @@ -134,7 +146,7 @@ class Studiengang2 extends APIv1_Controller } /** - * @return void + * getAppliedStudiengangFromNowOE */ public function getAppliedStudiengangFromNowOE() { diff --git a/application/models/organisation/Studiengang_model.php b/application/models/organisation/Studiengang_model.php index 4755408be..36e4b6992 100644 --- a/application/models/organisation/Studiengang_model.php +++ b/application/models/organisation/Studiengang_model.php @@ -138,7 +138,7 @@ class Studiengang_model extends DB_Model /** * getStudiengangBewerbung */ - public function getStudiengangBewerbung() + public function getStudiengangBewerbung($oe_kurzbz = null) { if (isError($ent = $this->isEntitled($this->dbTable, PermissionLib::SELECT_RIGHT, FHC_NORIGHT, FHC_MODEL_ERROR))) return $ent; @@ -161,21 +161,45 @@ class Studiengang_model extends DB_Model $this->addOrder('public.tbl_studiengang.bezeichnung'); $this->addOrder('lehre.tbl_studienplan.studienplan_id'); + $where = 'public.tbl_studiengang.aktiv = TRUE + AND public.tbl_studiengang.onlinebewerbung = TRUE + AND ( + (tbl_bewerbungstermine.beginn <= NOW() AND tbl_bewerbungstermine.ende >= NOW()) + OR tbl_bewerbungstermine.beginn IS NULL + ) + AND ss.studiensemester_kurzbz IN ( + SELECT DISTINCT studiensemester_kurzbz + FROM public.tbl_bewerbungstermine + WHERE beginn <= NOW() AND ende >= NOW() + ) + AND ss.semester = 1 + AND lehre.tbl_studienplan.aktiv = TRUE'; + + if ($oe_kurzbz != null) + { + $where .= ' AND public.tbl_studiengang.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = '.$this->escape($oe_kurzbz).' + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )'; + } + $result = $this->loadTree( 'public.tbl_studiengang', array( 'lehre.tbl_studienplan', 'lehre.tbl_akadgrad' ), - 'public.tbl_studiengang.aktiv = TRUE - AND public.tbl_studiengang.onlinebewerbung = TRUE - AND ((tbl_bewerbungstermine.beginn <= NOW() AND tbl_bewerbungstermine.ende >= NOW()) OR tbl_bewerbungstermine.beginn IS NULL) - AND ss.studiensemester_kurzbz IN ( - SELECT DISTINCT studiensemester_kurzbz FROM public.tbl_bewerbungstermine WHERE beginn <= NOW() AND ende >= NOW() - ) - AND ss.semester = 1 - AND lehre.tbl_studienplan.aktiv = TRUE' - , + $where, array( 'studienplaene', 'akadgrad' From a456c0838d19ae223ba246b06fb4de395d6e981a Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 20 Sep 2017 10:55:20 +0200 Subject: [PATCH 07/15] - Added property UDFs to UDFLib - UDFLib constructor initialize UDFs property as an empty array --- application/libraries/UDFLib.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/application/libraries/UDFLib.php b/application/libraries/UDFLib.php index ad0e14c03..f3a2ae735 100644 --- a/application/libraries/UDFLib.php +++ b/application/libraries/UDFLib.php @@ -46,6 +46,7 @@ class UDFLib const PHRASES_APP_NAME = 'core'; // Name of the app parameter used to retrive phrases private $_ci; // Code igniter instance + private $UDFs; // Associative array containing names and values of the given UDF parameters /** * Loads fhc helper @@ -55,6 +56,8 @@ class UDFLib $this->_ci =& get_instance(); $this->_ci->load->helper('fhc'); + + $this->UDFs = array(); // by default is an empty array } // ------------------------------------------------------------------------------------------------- From 1d1ca17dc13d7a48c82d81f3ab0e580fe03d4c5c Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 20 Sep 2017 11:33:41 +0200 Subject: [PATCH 08/15] Now the organisation unit parameter for methods: - getMessagesByPersonID - getMessagesByUID - getSentMessagesByPerson - getCountUnreadMessages of controller system/Message must be the root of the organisation unit tree --- .../controllers/api/v1/system/Message.php | 8 ++-- application/models/system/Message_model.php | 15 ++++++- application/models/system/Recipient_model.php | 45 +++++++++++++++++-- 3 files changed, 60 insertions(+), 8 deletions(-) diff --git a/application/controllers/api/v1/system/Message.php b/application/controllers/api/v1/system/Message.php index 1d400b41e..0f3f79855 100644 --- a/application/controllers/api/v1/system/Message.php +++ b/application/controllers/api/v1/system/Message.php @@ -32,7 +32,7 @@ class Message extends APIv1_Controller public function getMessagesByPersonID() { $person_id = $this->get('person_id'); - $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit + $oe_kurzbz = $this->get('oe_kurzbz'); // root organisation unit $all = $this->get('all'); if (isset($person_id)) @@ -53,7 +53,7 @@ class Message extends APIv1_Controller public function getMessagesByUID() { $uid = $this->get('uid'); - $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit + $oe_kurzbz = $this->get('oe_kurzbz'); // root organisation unit $all = $this->get('all'); if (isset($uid)) @@ -93,7 +93,7 @@ class Message extends APIv1_Controller public function getSentMessagesByPerson() { $person_id = $this->get('person_id'); - $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit + $oe_kurzbz = $this->get('oe_kurzbz'); // root organisation unit $all = $this->get('all'); if (isset($person_id)) @@ -114,7 +114,7 @@ class Message extends APIv1_Controller public function getCountUnreadMessages() { $person_id = $this->get('person_id'); - $oe_kurzbz = $this->get('oe_kurzbz'); // prestudent organisation unit + $oe_kurzbz = $this->get('oe_kurzbz'); // root organisation unit if (isset($person_id)) { diff --git a/application/models/system/Message_model.php b/application/models/system/Message_model.php index 6b8b0fbdc..b94bc3861 100644 --- a/application/models/system/Message_model.php +++ b/application/models/system/Message_model.php @@ -67,7 +67,20 @@ class Message_model extends DB_Model if ($oe_kurzbz != null) { array_push($parametersArray, $oe_kurzbz); - $sql .= ' AND m.oe_kurzbz = ?'; + $sql .= ' AND m.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = ? + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )'; } return $this->execQuery($sql, $parametersArray); diff --git a/application/models/system/Recipient_model.php b/application/models/system/Recipient_model.php index 53170a4cc..c0fa75da2 100644 --- a/application/models/system/Recipient_model.php +++ b/application/models/system/Recipient_model.php @@ -141,7 +141,20 @@ class Recipient_model extends DB_Model if ($oe_kurzbz != null) { array_push($parametersArray, $oe_kurzbz); - $sql .= ' AND m.oe_kurzbz = ?'; + $sql .= ' AND m.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = ? + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )'; } $sql .= ' ORDER BY r.message_id DESC, s.status DESC'; @@ -207,7 +220,20 @@ class Recipient_model extends DB_Model if ($oe_kurzbz != null) { array_push($parametersArray, $oe_kurzbz); - $sql .= ' AND m.oe_kurzbz = ?'; + $sql .= ' AND m.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = ? + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )'; } return $this->execQuery($sql, $parametersArray); @@ -315,7 +341,20 @@ class Recipient_model extends DB_Model if ($oe_kurzbz != null) { array_push($parametersArray, $oe_kurzbz); - $sql .= ' AND m.oe_kurzbz = ?'; + $sql .= ' AND m.oe_kurzbz IN ( + WITH RECURSIVE organizations(_pk, _ppk) AS + ( + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o + WHERE o.oe_parent_kurzbz IS NULL + AND o.oe_kurzbz = ? + UNION ALL + SELECT o.oe_kurzbz, o.oe_parent_kurzbz + FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk) + ) + SELECT orgs._pk + FROM organizations orgs + )'; } return $this->execQuery($sql, $parametersArray); From 81864b14b775cd9295e7a1a80cdd5c31fb218484 Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 20 Sep 2017 12:00:07 +0200 Subject: [PATCH 09/15] Now by default the RESTful web services accept calls only from localhost (127.0.0.1) --- application/config/rest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/application/config/rest.php b/application/config/rest.php index 1b6514abf..ec2d6f5ad 100644 --- a/application/config/rest.php +++ b/application/config/rest.php @@ -167,9 +167,9 @@ $config['auth_library_function'] = 'basicAuthentication'; | $config['auth_override_class_method']['accounts']['user'] = 'basic'; | $config['auth_override_class_method']['dashboard']['*'] = 'none|digest|basic'; | -| Here 'deals', 'accounts' and 'dashboard' are controller names, 'view', 'insert' and 'user' are methods within. - * An asterisk may also be used to specify an authentication method for an entire classes methods. - * Ex: $config['auth_override_class_method']['dashboard']['*'] = 'basic'; (NOTE: leave off the '_get' or '_post' from the end +| Here 'deals', 'accounts' and 'dashboard' are controller names, 'view', 'insert' and 'user' are methods within. + * An asterisk may also be used to specify an authentication method for an entire classes methods. + * Ex: $config['auth_override_class_method']['dashboard']['*'] = 'basic'; (NOTE: leave off the '_get' or '_post' from the end * of the method name) | Acceptable values are; 'none', 'digest' and 'basic'. | @@ -223,7 +223,7 @@ $config['auth_library_function'] = 'basicAuthentication'; | restrict certain methods to IPs in your whitelist | */ -$config['rest_ip_whitelist_enabled'] = FALSE; +$config['rest_ip_whitelist_enabled'] = TRUE; /* |-------------------------------------------------------------------------- @@ -238,7 +238,7 @@ $config['rest_ip_whitelist_enabled'] = FALSE; | 127.0.0.1 and 0.0.0.0 are allowed by default | */ -$config['rest_ip_whitelist'] = ''; +$config['rest_ip_whitelist'] = '127.0.0.1'; /* |-------------------------------------------------------------------------- From 51a5bda9235fbfad9428c679236746d910ccaf4d Mon Sep 17 00:00:00 2001 From: cris-technikum <31620366+cris-technikum@users.noreply.github.com> Date: Wed, 20 Sep 2017 13:01:37 +0200 Subject: [PATCH 10/15] =?UTF-8?q?Spalte=20f=C3=BCr=20"bereits=20absolviert?= =?UTF-8?q?e=20Verfahren"=20korrigiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cis/testtool/login.php | 820 +-- vilesci/stammdaten/reihungstestverwaltung.php | 4617 +++++++++-------- 2 files changed, 2761 insertions(+), 2676 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 078830b87..29d733696 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -1,408 +1,412 @@ -, - * Andreas Oesterreicher , - * Rudolf Hangl , - * Manfred Kindl - */ - -require_once('../../config/cis.config.inc.php'); -require_once('../../config/global.config.inc.php'); -require_once('../../include/person.class.php'); -require_once('../../include/prestudent.class.php'); -require_once('../../include/pruefling.class.php'); -require_once('../../include/studiengang.class.php'); -require_once('../../include/reihungstest.class.php'); -require_once('../../include/sprache.class.php'); -require_once '../../include/phrasen.class.php'; -require_once '../../include/datum.class.php'; - -if (!$db = new basis_db()) - die('Fehler beim Oeffnen der Datenbankverbindung'); - -//if(isset($_GET['lang'])) -// setSprache($_GET['lang']); - -$date = new datum(); - -function getSpracheUser() -{ - if(isset($_SESSION['sprache_user'])) - { - $sprache_user=$_SESSION['sprache_user']; - } - else - { - if(isset($_COOKIE['sprache_user'])) - { - $sprache_user=$_COOKIE['sprache_user']; - } - else - { - $sprache_user=DEFAULT_LANGUAGE; - } - setSpracheUser($sprache_user); - } - return $sprache_user; -} - -function setSpracheUser($sprache) -{ - $_SESSION['sprache_user']=$sprache; - setcookie('sprache_user',$sprache,time()+60*60*24*30,'/'); -} - -if(isset($_GET['sprache_user'])) -{ - $sprache_user = new sprache(); - if($sprache_user->load($_GET['sprache_user'])) - { - setSpracheUser($_GET['sprache_user']); - } - else - setSpracheUser(DEFAULT_LANGUAGE); -} - -$sprache_user = getSpracheUser(); -$p = new phrasen($sprache_user); - -$gebdatum=''; - -session_start(); -$reload=false; -$reload_parent=false; - -$sg_var = new studiengang(); - -if (isset($_GET['logout'])) -{ - if(isset($_SESSION['prestudent_id'])) - { - $reload = true; - session_destroy(); - } -} - -if(isset($_POST['gebdatum']) && $_POST['gebdatum']!='') -{ - $gebdatum = $date->formatDatum($_POST['gebdatum'],'Y-m-d'); -} -else - $gebdatum=''; - -if (isset($_POST['prestudent']) && isset($gebdatum)) -{ - $ps=new prestudent($_POST['prestudent']); - - //Geburtsdatum Pruefen - if ($gebdatum==$ps->gebdatum) - { - $reihungstest_id=''; - //Freischaltung fuer zugeteilten Reihungstest pruefen - $rt = new reihungstest(); - - // Wenns der Dummy ist dann extra laden - $prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:''); - if($prestudent_id_dummy_student==$ps->prestudent_id) - { - $rt->getReihungstestPerson($ps->person_id); - if(isset($rt->result[0])) - $reihungstest_id = $rt->result[0]->reihungstest_id; - else - { - echo ''.$p->t('testtool/reihungstestKannNichtGeladenWerden').''; - } - } - else - { - if($rt->getReihungstestPersonDatum($ps->prestudent_id, date('Y-m-d'))) - { - // TODO Was ist wenn da mehrere Zurueckkommen?! - if(isset($rt->result[0])) - $reihungstest_id = $rt->result[0]->reihungstest_id; - else - { - echo ''.$p->t('testtool/reihungstestKannNichtGeladenWerden').''; - } - } - else - { - echo 'Failed:'.$rt->errormsg; - } - } - //echo "Reihungstest $reihungstest_id"; - if($reihungstest_id != '' && $rt->load($reihungstest_id)) - { - if($rt->freigeschaltet) - { - $pruefling = new pruefling(); - if($pruefling->getPruefling($ps->prestudent_id)) - { - $studiengang = $pruefling->studiengang_kz; - $semester = $pruefling->semester; - } - else - { - $studiengang = $ps->studiengang_kz; - $ps->getLastStatus($ps->prestudent_id); - $semester = $ps->ausbildungssemester; - } - if($semester=='') - $semester=1; - - $_SESSION['prestudent_id']=$_POST['prestudent']; - $_SESSION['studiengang_kz']=$studiengang; - $_SESSION['nachname']=$ps->nachname; - $_SESSION['vorname']=$ps->vorname; - $_SESSION['gebdatum']=$ps->gebdatum; - $stg_obj = new studiengang($studiengang); - $_SESSION['sprache']=$stg_obj->sprache; - - $_SESSION['semester']=$semester; - } - else - { - echo ''.$p->t('testtool/reihungstestNichtFreigeschalten').''; - } - } - else - { - echo ''.$p->t('testtool/reihungstestKannNichtGeladenWerden').''; - } - } - else - { - echo ''.$p->t('testtool/geburtsdatumStimmtNichtUeberein').''; - } -} - -if (isset($_SESSION['prestudent_id'])) - $prestudent_id=$_SESSION['prestudent_id']; -else -{ - //$prestudent_id=null; - $ps=new prestudent(); - $datum=date('Y-m-d'); - $ps->getPrestudentRT($datum); -} - -if(isset($_GET['type']) && $_GET['type']=='sprachechange' && isset($_GET['sprache'])) -{ - setSprache($_GET['sprache']); -} - -if(isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id'])) -{ - $pruefling = new pruefling(); - - if(!$pruefling->getPruefling($_SESSION['prestudent_id'])) - { - $pruefling->new = true; - - $pruefling->studiengang_kz = $_SESSION['studiengang_kz']; - $pruefling->semester = $_SESSION['semester']; - - $pruefling->idnachweis = ''; - $pruefling->registriert = date('Y-m-d H:i:s'); - $pruefling->prestudent_id = $_SESSION['prestudent_id']; - if($pruefling->save()) - { - $_SESSION['pruefling_id']=$pruefling->pruefling_id; - $reload_parent=true; - } - } -} - -if(isset($_POST['save']) && isset($_SESSION['prestudent_id'])) -{ - $pruefling = new pruefling(); - if($_POST['pruefling_id']!='') - if(!$pruefling->load($_POST['pruefling_id'])) - die('Pruefling wurde nicht gefunden'); - else - $pruefling->new=false; - else - $pruefling->new=true; - - $pruefling->studiengang_kz = $_SESSION['studiengang_kz']; - $pruefling->idnachweis = isset($_POST['idnachweis'])?$_POST['idnachweis']:''; - $pruefling->registriert = date('Y-m-d H:i:s'); - $pruefling->prestudent_id = $_SESSION['prestudent_id']; - $pruefling->semester = $_POST['semester']; - if($pruefling->save()) - { - $_SESSION['pruefling_id']=$pruefling->pruefling_id; - $_SESSION['semester']=$pruefling->semester; - $reload_parent=true; - } -} -?> - - - - - - - - -parent.menu.location.reload()'; - if($reload) - echo ""; -?> - - - -'.$p->t('testtool/startseite').''; - - if (isset($prestudent_id)) - { - - $prestudent = new prestudent($prestudent_id); - $stg_obj = new studiengang($prestudent->studiengang_kz); - $pruefling = new pruefling(); - $typ = new studiengang($prestudent->studiengang_kz); - $typ->getStudiengangTyp($stg_obj->typ); - - //Sprachwahl des Studiengangs - $qry = "SELECT sprachwahl FROM testtool.tbl_ablauf_vorgaben WHERE studiengang_kz=".$db->db_add_param($prestudent->studiengang_kz)." LIMIT 1"; - $result = $db->db_query($qry); - $sprachwahl = $db->db_fetch_object($result); - $sprachwahl = $db->db_parse_bool($sprachwahl->sprachwahl); - - echo '
'; - echo '
'.$p->t('testtool/begruessungstext').'

'; - echo ''.$p->t('zeitaufzeichnung/id').': '.$_SESSION['prestudent_id'].'
'; - echo ''.$p->t('global/name').': '.$_SESSION['vorname'].' '.$_SESSION['nachname'].'
'; - echo ''.$p->t('global/geburtsdatum').': '.$date->formatDatum($_SESSION['gebdatum'],'d.m.Y').'
'; - echo ''.$p->t('global/studiengang').': '.$typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'

'; - echo ''; - echo '
'; - echo '

'; - - if($pruefling->getPruefling($prestudent_id)) - { - - echo '
'; - echo ''; - echo ''; - //echo ''; - //echo ''; - //echo ''; - echo '
'.$p->t('global/semester').': 
ID Nachweis:
'; - echo '
'; - - //Wenn die Sprachwahl fuer diesen Studiengang aktiviert ist, dann die Sprachen anzeigen - if($sprachwahl==true) - { - //Liste der Sprachen, die in den Gebieten vorkommen koennen - $qry = "SELECT distinct sprache - FROM - testtool.tbl_pruefling - JOIN testtool.tbl_ablauf USING(studiengang_kz) - JOIN testtool.tbl_frage USING(gebiet_id) - JOIN testtool.tbl_frage_sprache USING(frage_id) - WHERE - tbl_pruefling.pruefling_id=".$db->db_add_param($pruefling->pruefling_id)." - ORDER BY sprache DESC"; - echo $p->t('testtool/spracheDerTestfragen').':'; - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - if($_SESSION['sprache']==$row->sprache) - $selected='style="border:1px solid black;"'; - else - $selected=''; - echo " sprache' class='Item' $selected>$row->sprache"; - } - } - } - echo '


'.$p->t('testtool/klickenSieAufEinTeilgebiet').''; - if($pruefling->pruefling_id!='') - { - $_SESSION['pruefling_id']=$pruefling->pruefling_id; - echo ''; - } - } - else - { - echo ''.$p->t('testtool/keinPrueflingseintragVorhanden').''; - } - } - else - { - $prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:''); - - echo '
- '; - echo '  '.$p->t('global/geburtsdatum').': '; - echo ''; - echo '  '; - echo '
'; - - echo '


-
- '.$p->t('testtool/willkommenstext').' -
'; - } -?> - - - +, + * Andreas Oesterreicher , + * Rudolf Hangl , + * Manfred Kindl + */ + +require_once('../../config/cis.config.inc.php'); +require_once('../../config/global.config.inc.php'); +require_once('../../include/person.class.php'); +require_once('../../include/prestudent.class.php'); +require_once('../../include/pruefling.class.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/reihungstest.class.php'); +require_once('../../include/sprache.class.php'); +require_once '../../include/phrasen.class.php'; +require_once '../../include/datum.class.php'; + +if (!$db = new basis_db()) + die('Fehler beim Oeffnen der Datenbankverbindung'); + +//if(isset($_GET['lang'])) +// setSprache($_GET['lang']); + +$date = new datum(); + +function getSpracheUser() +{ + if(isset($_SESSION['sprache_user'])) + { + $sprache_user=$_SESSION['sprache_user']; + } + else + { + if(isset($_COOKIE['sprache_user'])) + { + $sprache_user=$_COOKIE['sprache_user']; + } + else + { + $sprache_user=DEFAULT_LANGUAGE; + } + setSpracheUser($sprache_user); + } + return $sprache_user; +} + +function setSpracheUser($sprache) +{ + $_SESSION['sprache_user']=$sprache; + setcookie('sprache_user',$sprache,time()+60*60*24*30,'/'); +} + +if(isset($_GET['sprache_user'])) +{ + $sprache_user = new sprache(); + if($sprache_user->load($_GET['sprache_user'])) + { + setSpracheUser($_GET['sprache_user']); + } + else + setSpracheUser(DEFAULT_LANGUAGE); +} + +$sprache_user = getSpracheUser(); +$p = new phrasen($sprache_user); + +$gebdatum=''; + +session_start(); +$reload=false; +$reload_parent=false; + +$sg_var = new studiengang(); + +if (isset($_GET['logout'])) +{ + if(isset($_SESSION['prestudent_id'])) + { + $reload = true; + session_destroy(); + } +} + +if(isset($_POST['gebdatum']) && $_POST['gebdatum']!='') +{ + $gebdatum = $date->formatDatum($_POST['gebdatum'],'Y-m-d'); +} +else + $gebdatum=''; + +if (isset($_POST['prestudent']) && isset($gebdatum)) +{ + $ps=new prestudent($_POST['prestudent']); + + //Geburtsdatum Pruefen + if ($gebdatum==$ps->gebdatum) + { + $reihungstest_id=''; + //Freischaltung fuer zugeteilten Reihungstest pruefen + $rt = new reihungstest(); + + // Wenns der Dummy ist dann extra laden + $prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:''); + if($prestudent_id_dummy_student==$ps->prestudent_id) + { + $rt->getReihungstestPerson($ps->person_id); + if(isset($rt->result[0])) + $reihungstest_id = $rt->result[0]->reihungstest_id; + else + { + echo ''.$p->t('testtool/reihungstestKannNichtGeladenWerden').''; + } + } + else + { + if($rt->getReihungstestPersonDatum($ps->prestudent_id, date('Y-m-d'))) + { + // TODO Was ist wenn da mehrere Zurueckkommen?! + if(isset($rt->result[0])) + $reihungstest_id = $rt->result[0]->reihungstest_id; + else + { + echo ''.$p->t('testtool/reihungstestKannNichtGeladenWerden').''; + } + } + else + { + echo 'Failed:'.$rt->errormsg; + } + } + //echo "Reihungstest $reihungstest_id"; + if($reihungstest_id != '' && $rt->load($reihungstest_id)) + { + if($rt->freigeschaltet) + { + $pruefling = new pruefling(); + if($pruefling->getPruefling($ps->prestudent_id)) + { + $studiengang = $pruefling->studiengang_kz; + $semester = $pruefling->semester; + } + else + { + $studiengang = $ps->studiengang_kz; + $ps->getLastStatus($ps->prestudent_id); + $semester = $ps->ausbildungssemester; + } + if($semester=='') + $semester=1; + + $_SESSION['prestudent_id']=$_POST['prestudent']; + $_SESSION['studiengang_kz']=$studiengang; + $_SESSION['nachname']=$ps->nachname; + $_SESSION['vorname']=$ps->vorname; + $_SESSION['gebdatum']=$ps->gebdatum; + $stg_obj = new studiengang($studiengang); + $_SESSION['sprache']=$stg_obj->sprache; + + $_SESSION['semester']=$semester; + } + else + { + echo ''.$p->t('testtool/reihungstestNichtFreigeschalten').''; + } + } + else + { + echo ''.$p->t('testtool/reihungstestKannNichtGeladenWerden').''; + } + } + else + { + echo ''.$p->t('testtool/geburtsdatumStimmtNichtUeberein').''; + } +} + +if (isset($_SESSION['prestudent_id'])) + $prestudent_id=$_SESSION['prestudent_id']; +else +{ + //$prestudent_id=null; + $ps=new prestudent(); + $datum=date('Y-m-d'); + $ps->getPrestudentRT($datum); +} + +if(isset($_GET['type']) && $_GET['type']=='sprachechange' && isset($_GET['sprache'])) +{ + setSprache($_GET['sprache']); +} + +if(isset($_SESSION['prestudent_id']) && !isset($_SESSION['pruefling_id'])) +{ + $pruefling = new pruefling(); + + //wenn kein Prüfling geladen werden kann + if(!$pruefling->getPruefling($_SESSION['prestudent_id'])) + $pruefling->new = true; + else + $pruefling->new = false; + + $pruefling->studiengang_kz = $_SESSION['studiengang_kz']; + $pruefling->semester = $_SESSION['semester']; + + $pruefling->idnachweis = ''; + $pruefling->registriert = date('Y-m-d H:i:s'); + $pruefling->prestudent_id = $_SESSION['prestudent_id']; + if($pruefling->save()) + { + $_SESSION['pruefling_id']=$pruefling->pruefling_id; + $reload_parent=true; + } +} + +if(isset($_POST['save']) && isset($_SESSION['prestudent_id'])) +{ + $pruefling = new pruefling(); + if($_POST['pruefling_id']!='') + if(!$pruefling->load($_POST['pruefling_id'])) + die('Pruefling wurde nicht gefunden'); + else + $pruefling->new=false; + else + $pruefling->new=true; + + $pruefling->studiengang_kz = $_SESSION['studiengang_kz']; + $pruefling->idnachweis = isset($_POST['idnachweis'])?$_POST['idnachweis']:''; + $pruefling->registriert = date('Y-m-d H:i:s'); + $pruefling->prestudent_id = $_SESSION['prestudent_id']; + $pruefling->semester = $_POST['semester']; + if($pruefling->save()) + { + $_SESSION['pruefling_id']=$pruefling->pruefling_id; + $_SESSION['semester']=$pruefling->semester; + $reload_parent=true; + } +} +?> + + + + + + + + +parent.menu.location.reload();'; //CRIS: nach reload()ein ; ergänzt + + if($reload) + echo ""; +?> + + + +'.$p->t('testtool/startseite').''; + +//REIHUNGSTEST STARTSEITE (nach Login) + if (isset($prestudent_id)) + { + + $prestudent = new prestudent($prestudent_id); + $stg_obj = new studiengang($prestudent->studiengang_kz); + $pruefling = new pruefling(); + $typ = new studiengang($prestudent->studiengang_kz); + $typ->getStudiengangTyp($stg_obj->typ); + + //Sprachwahl des Studiengangs + $qry = "SELECT sprachwahl FROM testtool.tbl_ablauf_vorgaben WHERE studiengang_kz=".$db->db_add_param($prestudent->studiengang_kz)." LIMIT 1"; + $result = $db->db_query($qry); + $sprachwahl = $db->db_fetch_object($result); + $sprachwahl = $db->db_parse_bool($sprachwahl->sprachwahl); + + //Prestudent Informationen und Logout + echo '
'; + echo '
'.$p->t('testtool/begruessungstext').'

'; + echo ''.$p->t('zeitaufzeichnung/id').': '.$_SESSION['prestudent_id'].'
'; + echo ''.$p->t('global/name').': '.$_SESSION['vorname'].' '.$_SESSION['nachname'].'
'; + echo ''.$p->t('global/geburtsdatum').': '.$date->formatDatum($_SESSION['gebdatum'],'d.m.Y').'
'; + echo ''.$p->t('global/studiengang').': '.$typ->bezeichnung.' '.($sprache_user=='English'?$stg_obj->english:$stg_obj->bezeichnung).'

'; + echo ''; + echo '
'; + echo '

'; + + if($pruefling->getPruefling($prestudent_id)) + { + echo '
'; + echo ''; + echo ''; + //echo ''; + //echo ''; + //echo ''; + echo '
'.$p->t('global/semester').': 
ID Nachweis:
'; + echo '
'; + + //Wenn die Sprachwahl fuer diesen Studiengang aktiviert ist, dann die Sprachen anzeigen + if($sprachwahl==true) + { + //Liste der Sprachen, die in den Gebieten vorkommen koennen + $qry = "SELECT distinct sprache + FROM + testtool.tbl_pruefling + JOIN testtool.tbl_ablauf USING(studiengang_kz) + JOIN testtool.tbl_frage USING(gebiet_id) + JOIN testtool.tbl_frage_sprache USING(frage_id) + WHERE + tbl_pruefling.pruefling_id=".$db->db_add_param($pruefling->pruefling_id)." + ORDER BY sprache DESC"; + echo $p->t('testtool/spracheDerTestfragen').':'; + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + if($_SESSION['sprache']==$row->sprache) + $selected='style="border:1px solid black;"'; + else + $selected=''; + echo " sprache' class='Item' $selected>$row->sprache"; + } + } + } + echo '


'.$p->t('testtool/klickenSieAufEinTeilgebiet').''; + if($pruefling->pruefling_id!='') + { + $_SESSION['pruefling_id']=$pruefling->pruefling_id; + echo ''; + } + } + else + { + echo ''.$p->t('testtool/keinPrueflingseintragVorhanden').''; + } + } + else + { + //LOGIN FORM (Startseite vor Login) + $prestudent_id_dummy_student = (defined('PRESTUDENT_ID_DUMMY_STUDENT')?PRESTUDENT_ID_DUMMY_STUDENT:''); + + echo '
+ '; + echo '  '.$p->t('global/geburtsdatum').': '; + echo ''; + echo '  '; + echo '
'; + + echo '


+
+ '.$p->t('testtool/willkommenstext').' +
'; + } +?> + + + diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 68b5d59f0..35cfe885d 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -1,2268 +1,2349 @@ - - * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - * Manfred Kindl < manfred.kindl@technikum-wien.at > - */ -/** - * Reihungstest - * - * - Anlegen und Bearbeiten von Terminen - * - Export von Anwesenheitslisten als Excel - * - Uebertragung der Ergebnis-Punkte ins FAS - * - * Parameter: - * excel ... wenn gesetzt, dann wird die Anwesenheitsliste als Excel exportiert - */ -require_once('../../config/vilesci.config.inc.php'); -require_once('../../config/global.config.inc.php'); -require_once('../../include/functions.inc.php'); -require_once('../../include/studiengang.class.php'); -require_once('../../include/reihungstest.class.php'); -require_once('../../include/ort.class.php'); -require_once('../../include/datum.class.php'); -require_once('../../include/benutzerberechtigung.class.php'); -require_once('../../include/pruefling.class.php'); -require_once('../../include/person.class.php'); -require_once('../../include/prestudent.class.php'); -require_once('../../include/Excel/excel.php'); -require_once('../../include/adresse.class.php'); -require_once('../../include/studiensemester.class.php'); -require_once('../../include/benutzer.class.php'); -require_once('../../include/studienplan.class.php'); -require_once('../../include/sprache.class.php'); -require_once('../../include/organisationsform.class.php'); -require_once('../../include/gruppe.class.php'); -require_once('../../include/variable.class.php'); - -// @todo Allgemein: Beim kopieren auch die Studienplanzuordnungen übernehmen -// "Teilgenommen" und "Punkte" werden immer mit false bzw. 0 gespeichert - -define('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND', 5); - -if (!$db = new basis_db()) -{ - die('Es konnte keine Verbindung zum Server aufgebaut werden.'); -} - -//Richtiges Studiensemester zum anzeigen ermitteln - //Mit getAktOrNext das aktuelle oder kommende WINTERsemester auslesen - $stsem_aktorNext = new studiensemester(); - $stsem_aktorNext = $stsem_aktorNext->getaktorNext(1); - //Ergebnis aus $stsem_aktorNext laden und den Timestamp der Semestermitte bestimmen. - $stsem_berechnet = new studiensemester(); - $stsem_berechnet->load($stsem_aktorNext); - $mitte = (strtotime($stsem_berechnet->ende) - strtotime($stsem_berechnet->start)) / 2; - // Wenn die Haelfte des Wintersemesters vorbei ist, das naechste Wintersemester ermitteln, sonst das Aktuelle nehmen - if (strtotime($stsem_berechnet->ende) - $mitte <= time()) - { - $stsem_dropdown = new studiensemester(); - $stsem_dropdown->getNextStudiensemester('WS'); - $stsem_dropdown = $stsem_dropdown->studiensemester_kurzbz; - } - else - $stsem_dropdown = $stsem_aktorNext; - -$user = get_uid(); -$datum_obj = new datum(); -$stg_kz = (isset($_GET['stg_kz']) ? $_GET['stg_kz'] : ''); -$reihungstest_id = (isset($_GET['reihungstest_id']) ? $_GET['reihungstest_id'] : ''); -$studiensemester_kurzbz = (isset($_GET['studiensemester_kurzbz']) ? $_GET['studiensemester_kurzbz'] : $stsem_dropdown); -$studienplan_id = (isset($_GET['studienplan_id']) ? $_GET['studienplan_id'] : ''); -$prestudent_id = (isset($_GET['prestudent_id']) ? $_GET['prestudent_id'] : ''); -$rtpunkte = (isset($_GET['rtpunkte']) ? $_GET['rtpunkte'] : ''); -$neu = (isset($_GET['neu']) ? true : false); -$stg_arr = array(); -$error = false; - -$rechte = new benutzerberechtigung(); -$rechte->getBerechtigungen($user); - -if ($stg_kz == '' && ($reihungstest_id != '' || isset($_POST['reihungstest_id']))) -{ - if ($reihungstest_id != '') - { - $rt = new Reihungstest(); - $rt->load($reihungstest_id); - $stg_kz = $rt->studiengang_kz; - } - elseif (isset($_POST['reihungstest_id'])) - { - $rt = new Reihungstest(); - $rt->load($_POST['reihungstest_id']); - $stg_kz = $rt->studiengang_kz; - } - else - $stg_kz = '-1'; -} - -if(!$rechte->isBerechtigt('lehre/reihungstest')) -{ - die($rechte->errormsg); -} - -$studiengang = new studiengang(); -$studiengang->getAll('typ, kurzbz', false); - -$studiensemester = new Studiensemester(); -$studiensemester->getAll('desc'); - -$sprachen_obj = new sprache(); -$sprachen_obj->getAll(); -$sprachen_arr=array(); - -foreach($sprachen_obj->result as $row) -{ - if(isset($row->bezeichnung_arr[$sprache])) - $sprachen_arr[$row->sprache]=$row->bezeichnung_arr[$sprache]; - else - $sprachen_arr[$row->sprache]=$row->sprache; -} - -$orgform_obj = new organisationsform(); -$orgform_obj->getAll(); -$orgform_arr=array(); -foreach($orgform_obj->result as $row) - $orgform_arr[$row->orgform_kurzbz]=$row->bezeichnung; - -// Pruefen ob Variable fuer Punkteberechnung gesetzt ist, wenn nicht, einen neuen Eintrag anlegen -$variable = new variable(); -if ($variable->load($user, 'reihungstestverwaltung_punkteberechnung')) -{ - if (isset($_GET['punkteberechnung']) && $_GET['punkteberechnung'] != $variable->wert) - { - $variable->new = false; - $variable->uid = $user; - $variable->name = 'reihungstestverwaltung_punkteberechnung'; - $variable->wert = $_GET['punkteberechnung']; - $variable->save(); - - $punkteberechnung = $_GET['punkteberechnung']; - } - else - $punkteberechnung = $variable->wert; - -} -else -{ - $variable->new = true; - $variable->uid = $user; - $variable->name = 'reihungstestverwaltung_punkteberechnung'; - $variable->wert = 'true'; - $variable->save(); - - $punkteberechnung = 'true'; -} - -//Studierende als Excel Exportieren -if(isset($_GET['excel'])) -{ - $reihungstest = new reihungstest(); - if($reihungstest->load($_GET['reihungstest_id'])) - { - $studienplaene_arr = array(); - $studienplaene = new reihungstest(); - $studienplaene->getStudienplaeneReihungstest($reihungstest->reihungstest_id); - foreach ($studienplaene->result AS $row) - { - $studienplan = new studienplan(); - $studienplan->loadStudienplan($row->studienplan_id); - $studienplaene_arr[ $row->studienplan_id] = $studienplan->bezeichnung; - } - - $studienplaene_list = implode(',', array_keys($studienplaene_arr)); - $qry = " - SELECT - rt_id, - prestudent_id, - tbl_rt_person.person_id, - vorname, - nachname, - ort_kurzbz, - studienplan_id, - studiengang_kz, - gebdatum, - geschlecht, - punkte - ,( - SELECT - kontakt - FROM - public.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 - 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_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 - "; - - $gebietbezeichnungen = array(); - $qry_gebiete = "SELECT gebiet_id, reihung, bezeichnung FROM testtool.tbl_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studienplan_id = ".$db->db_add_param($row->studienplan_id)." ORDER BY reihung"; - if($result_gebiete = $db->db_query($qry_gebiete)) - { - while($row_gebiete = $db->db_fetch_object($result_gebiete)) - { - $gebietbezeichnungen[$row_gebiete->gebiet_id] = $row_gebiete->bezeichnung; - } - } - - // Creating a workbook - $workbook = new Spreadsheet_Excel_Writer(); - $workbook->setVersion(8); - // sending HTTP headers - $workbook->send("Anwesenheitsliste_Aufnahmetermin_".$reihungstest->datum.".xls"); - - //Formate Definieren - $format_bold =& $workbook->addFormat(); - $format_bold->setBold(); - - $format_border =& $workbook->addFormat(); - $format_border->setBorder(1); - $format_border->setTextWrap(); - $format_border->setVAlign ('top'); - - $format_border_center =& $workbook->addFormat(); - $format_border_center->setBorder(1); - $format_border_center->setTextWrap(); - $format_border_center->setVAlign ('top'); - $format_border_center->setHAlign ('center'); - - $format_border_left =& $workbook->addFormat(); - $format_border_left->setBorder(1); - $format_border_left->setTextWrap(); - $format_border_left->setVAlign ('top'); - $format_border_left->setHAlign ('left'); - - if($result = $db->db_query($qry)) - { - $ort_kurzbz = '0'; - // Wenn Daten vorhanden - if ($db->db_num_rows($result) > 0) - { - while($row = $db->db_fetch_object($result)) - { - if ($ort_kurzbz == '0' || $ort_kurzbz != $row->ort_kurzbz) - { - // Creating a worksheet - if ($row->ort_kurzbz=='') - $worksheet =& $workbook->addWorksheet("Ohne Raumzuteilung"); - else - $worksheet =& $workbook->addWorksheet("Raum ".$row->ort_kurzbz); - $worksheet->setInputEncoding('utf-8'); - //$worksheet->setZoom (85); - $worksheet->hideScreenGridlines(); - $worksheet->hideGridlines(); - $worksheet->setLandscape(); - $worksheet->centerHorizontally(1); - $worksheet->fitToPages ( 1, 1); - $worksheet->setMargins_LR (0.4); - $worksheet->setMarginTop (0.79); - $worksheet->setMarginBottom (0.59); - - // Titelzeilen - $worksheet->write(0,0,'Anwesenheitsliste Aufnahmetermin vom '.$datum_obj->convertISODate($reihungstest->datum).' '.$reihungstest->uhrzeit.' Uhr, '.$reihungstest->anmerkung.', erstellt am '.date('d.m.Y'), $format_bold); - if ($row->ort_kurzbz=='') - $worksheet->write(1,0,'Ohne Raumzuteilung', $format_bold); - else - $worksheet->write(1,0,'Raum '.$row->ort_kurzbz, $format_bold); - $worksheet->write(2,0,'Studienpläne: '.implode(', ', $studienplaene_arr)); - $worksheet->write(3,0,'Stufe: '.$reihungstest->stufe); - $worksheet->write(4,0,'Testmodule: '.implode(', ', $gebietbezeichnungen)); - - //Ueberschriften - $zeile=6; - $col=0; - $worksheet->write($zeile,$col,"Nachname", $format_bold); - $maxlength[$col] = 8; - $worksheet->write($zeile,++$col,"Vorname", $format_bold); - $maxlength[$col] = 7; - $worksheet->write($zeile,++$col,"G", $format_bold); - $maxlength[$col] = 2; - $worksheet->write($zeile,++$col,"Geburtsdatum", $format_bold); - $maxlength[$col] = 12; - $worksheet->write($zeile,++$col,"Studiengang", $format_bold); - $maxlength[$col] = 11; - $worksheet->write($zeile,++$col,"OrgForm", $format_bold); - $maxlength[$col] = 7; - $worksheet->write($zeile,++$col,"S", $format_bold); - $maxlength[$col] = 2; - $worksheet->write($zeile,++$col,"Bereits absolvierte RTs", $format_bold); - $maxlength[$col] = 20; - $worksheet->write($zeile,++$col,"Sonstige Termine", $format_bold); - $maxlength[$col] = 20; - $worksheet->write($zeile,++$col,"EMail", $format_bold); - $maxlength[$col] = 5; - $worksheet->write($zeile,++$col,"Strasse", $format_bold); - $maxlength[$col] = 6; - $worksheet->write($zeile,++$col,"PLZ", $format_bold); - $maxlength[$col] = 3; - $worksheet->write($zeile,++$col,"Ort", $format_bold); - $maxlength[$col] = 3; - $worksheet->write($zeile,++$col,"Unterschrift", $format_bold); - $maxlength[$col] = 30; - - $ort_kurzbz = $row->ort_kurzbz; - $zeile++; - } - - $pruefling = new pruefling(); - - $prestudent = new prestudent(); - $prestudent->getPrestudenten($row->person_id); - $rt_in_anderen_stg=''; - $erg = ''; - //if($punkteberechnung == 'true') Punktebrechnung im Excel wird immer ausgefuehrt - { - foreach($prestudent->result as $item) - { - if($item->prestudent_id!=$row->prestudent_id) - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true); - else - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id); - if($erg!==false) - { - $rt_in_anderen_stg.=number_format($erg,2).' Punkte im Studiengang '.$studiengang->kuerzel_arr[$item->studiengang_kz]."; "; - } - } - } - } - $weitere_zuteilungen = array(); - $qry_zuteilungen = " - SELECT - DISTINCT tbl_studienplan.bezeichnung, tbl_reihungstest.datum, tbl_rt_person.studienplan_id - FROM - public.tbl_rt_person JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id) - JOIN lehre.tbl_studienplan USING (studienplan_id) - JOIN testtool.tbl_ablauf USING (studienplan_id) - WHERE - person_id=".$db->db_add_param($row->person_id)." - AND studiensemester_kurzbz=".$db->db_add_param($reihungstest->studiensemester_kurzbz)." - ORDER BY bezeichnung"; - - if($result_zuteilungen = $db->db_query($qry_zuteilungen)) - { - while($row_zuteilungen = $db->db_fetch_object($result_zuteilungen)) - { - $testmodule = array(); - $qry_gebiete = "SELECT gebiet_id, bezeichnung, reihung FROM testtool.tbl_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studienplan_id = ".$db->db_add_param($row_zuteilungen->studienplan_id)." ORDER BY reihung"; - if($result_gebiete = $db->db_query($qry_gebiete)) - { - while($row_gebiete = $db->db_fetch_object($result_gebiete)) - { - $testmodule[$row_gebiete->gebiet_id] = $row_gebiete->bezeichnung; - } - } - $weitere_zuteilungen[] = $row_zuteilungen->bezeichnung.' am '.$datum_obj->formatDatum($row_zuteilungen->datum, 'd.m.Y').' ('.implode(', ', $testmodule).')'; - } - } - - $col=0; - - $worksheet->write($zeile,$col,$row->nachname, $format_border); - if(strlen($row->nachname)>$maxlength[$col]) - $maxlength[$col] = strlen($row->nachname); - - $worksheet->write($zeile,++$col, $row->vorname, $format_border); - if(strlen($row->vorname)>$maxlength[$col]) - $maxlength[$col] = strlen($row->vorname); - - $worksheet->write($zeile,++$col, $row->geschlecht, $format_border_center); - if(strlen($row->geschlecht)>$maxlength[$col]) - $maxlength[$col] = strlen($row->geschlecht); - - $worksheet->write($zeile,++$col,$datum_obj->convertISODate($row->gebdatum), $format_border); - if(strlen($row->gebdatum)>$maxlength[$col]) - $maxlength[$col] = strlen($row->gebdatum); - - $worksheet->write($zeile,++$col,$studiengang->kuerzel_arr[$row->studiengang_kz], $format_border); - if(strlen($studiengang->kuerzel_arr[$row->studiengang_kz])>$maxlength[$col]) - $maxlength[$col] = strlen($studiengang->kuerzel_arr[$row->studiengang_kz]); - - $worksheet->write($zeile,++$col,$row->orgform_kurzbz, $format_border); - if(strlen($row->orgform_kurzbz)>$maxlength[$col]) - $maxlength[$col] = strlen($row->orgform_kurzbz); - - $worksheet->write($zeile,++$col,$row->ausbildungssemester, $format_border_center); - if(strlen($row->ausbildungssemester)>$maxlength[$col]) - $maxlength[$col] = strlen($row->ausbildungssemester); - - $worksheet->write($zeile,++$col,$rt_in_anderen_stg, $format_border); - if(strlen($rt_in_anderen_stg)>$maxlength[$col]) - $maxlength[$col] = strlen($rt_in_anderen_stg); - - $worksheet->write($zeile,++$col,implode("\n", $weitere_zuteilungen), $format_border); - foreach ($weitere_zuteilungen as $items) - { - if (strlen($items)>$maxlength[$col]) - $maxlength[$col] = strlen($items); - } - - $worksheet->write($zeile,++$col,$row->email, $format_border); - if(strlen($row->email)>$maxlength[$col]) - $maxlength[$col] = strlen($row->email); - - $adresse = new adresse(); - $adresse->loadZustellAdresse($row->person_id); - - $worksheet->write($zeile,++$col,$adresse->strasse, $format_border); - if(strlen($adresse->strasse)>$maxlength[$col]) - $maxlength[$col] = strlen($adresse->strasse); - - $worksheet->write($zeile,++$col,$adresse->plz, $format_border_left); - if(strlen($adresse->plz)>$maxlength[$col]) - $maxlength[$col] = strlen($adresse->plz); - - $worksheet->write($zeile,++$col,$adresse->ort, $format_border); - if(strlen($adresse->ort)>$maxlength[$col]) - $maxlength[$col] = strlen($adresse->ort); - - $worksheet->write($zeile,++$col,'', $format_border); - - if(count($weitere_zuteilungen)>2) - $worksheet->setRow($zeile, count($weitere_zuteilungen)*14); - else - $worksheet->setRow($zeile, 35); - - $zeile++; - - //Die Breite der Spalten setzen - foreach($maxlength as $col=>$breite) - $worksheet->setColumn($col, $col, $breite+2); - } - } - else - { - // Creating a worksheet - $worksheet =& $workbook->addWorksheet("Keine Daten"); - $worksheet->setInputEncoding('utf-8'); - $worksheet->hideScreenGridlines(); - $worksheet->hideGridlines(); - $worksheet->setLandscape(); - $worksheet->centerHorizontally(1); - $worksheet->fitToPages ( 1, 1); - $worksheet->setMargins_LR (0.4); - $worksheet->setMarginTop (0.79); - $worksheet->setMarginBottom (0.59); - - // Titelzeilen - $worksheet->write(0,0,'Anwesenheitsliste Aufnahmetermin vom '.$datum_obj->convertISODate($reihungstest->datum).' '.$reihungstest->uhrzeit.' Uhr, '.$reihungstest->anmerkung.', erstellt am '.date('d.m.Y'), $format_bold); - - $worksheet->write(3,0,'Keine BewerberInnen zugeteilt', $format_bold); - } - } - $workbook->close(); - } - else - { - echo 'Reihungstest wurde nicht gefunden!'; - } - return; -} ?> - - - - Reihungstest - - - - - - - - - - - - - - - -

Reihungstest - Verwaltung

-isBerechtigt('lehre/reihungstest', null, 'sui')) - { - die($rechte->errormsg); - } - - $reihungstest = new reihungstest(); - - if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='' && !isset($_POST['kopieren'])) - { - //Reihungstest laden - if(!$reihungstest->load($_POST['reihungstest_id'])) - { - die($reihungstest->errormsg); - } - - $reihungstest->new = false; - } - else - { - //Neuen Reihungstest anlegen - $reihungstest->new=true; - $reihungstest->insertvon = $user; - $reihungstest->insertamum = date('Y-m-d H:i:s'); - } - - //Datum und Uhrzeit pruefen - if($_POST['datum']!='' && !$datum_obj->checkDatum($_POST['datum'])) - { - echo 'Datum ist ungueltig. Das Datum muss im Format DD.MM.JJJJ eingegeben werden
'; - $error = true; - } - if($_POST['uhrzeit']!='' && !$datum_obj->checkUhrzeit($_POST['uhrzeit'])) - { - echo 'Uhrzeit ist ungueltig. Die Uhrzeit muss im Format HH:MM angegeben werden!
'; - $error = true; - } - - if(!$error) - { - if (isset($_POST['kopieren'])) - { - $reihungstest->freigeschaltet = false; - $reihungstest->max_teilnehmer = ''; - $reihungstest->oeffentlich = false; - $reihungstest->stufe = filter_input(INPUT_POST, 'stufe', FILTER_VALIDATE_INT); - $reihungstest->aufnahmegruppe_kurzbz = filter_input(INPUT_POST, 'aufnahmegruppe'); - $reihungstest->anmeldefrist = $datum_obj->formatDatum($_POST['anmeldefrist']); - $reihungstest->updateamum = date('Y-m-d H:i:s'); - $reihungstest->updatevon = $user; - } - else - { - $reihungstest->freigeschaltet = isset($_POST['freigeschaltet']); - $reihungstest->max_teilnehmer = filter_input(INPUT_POST, 'max_teilnehmer', FILTER_VALIDATE_INT); - $reihungstest->oeffentlich = filter_input(INPUT_POST, 'oeffentlich', FILTER_VALIDATE_BOOLEAN); - $reihungstest->stufe = filter_input(INPUT_POST, 'stufe', FILTER_VALIDATE_INT); - $reihungstest->aufnahmegruppe_kurzbz = filter_input(INPUT_POST, 'aufnahmegruppe'); - $reihungstest->anmeldefrist = $datum_obj->formatDatum($_POST['anmeldefrist']); - $reihungstest->updateamum = date('Y-m-d H:i:s'); - $reihungstest->updatevon = $user; - } - $reihungstest->studiengang_kz = $_POST['studiengang_kz']; - //$reihungstest->ort_kurzbz = $_POST['ort_kurzbz']; - $reihungstest->studiensemester_kurzbz = filter_input(INPUT_POST, 'studiensemester_kurzbz'); - $reihungstest->anmerkung = $_POST['anmerkung']; - $reihungstest->datum = $datum_obj->formatDatum($_POST['datum']); - $reihungstest->uhrzeit = $_POST['uhrzeit']; - - if($reihungstest->save()) - { - if (isset($_POST['ort_kurzbz']) && $_POST['ort_kurzbz']!='') - { - $ort = new ort(); - - if (!$ort->load($_POST['ort_kurzbz'])) - echo 'Die Bezeichnung des Ortes ist ungueltig oder wurde nicht gefunden'; - else - { - if($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'sui')) - { - $orte_zugeteilt = new reihungstest(); - $orte_zugeteilt->getOrteReihungstest($reihungstest->reihungstest_id); - $zugeteilt = false; - foreach ($orte_zugeteilt->result AS $row) - { - if ($row->ort_kurzbz == $_POST['ort_kurzbz']) - { - $zugeteilt = true; - break; - } - } - // Check, ob der Raum schon diesem RT zugeteilt ist - if ($zugeteilt == false) - { - $add_ort = new reihungstest(); - $add_ort->new = true; - $add_ort->reihungstest_id = $reihungstest->reihungstest_id; - $add_ort->ort_kurzbz = $_POST['ort_kurzbz']; - $add_ort->uid = null; - - if ($add_ort->saveOrtReihungstest()) - { - echo 'Daten wurden erfolgreich gespeichert '; - } - else - echo 'Fehler beim Speichern der Raumzuordnung: '.$db->convert_html_chars($reihungstest->errormsg).''; - } - else - echo 'Der Raum '.$_POST['ort_kurzbz'].' ist bereits diesem Reihungstest zugeteilt'; - } - else - die($rechte->errormsg); - } - } - if (isset($_POST['studienplan_id']) && $_POST['studienplan_id']!='') - { - $rt_stpl = new reihungstest(); - $rt_stpl->new = true; - $rt_stpl->reihungstest_id = $reihungstest->reihungstest_id; - $rt_stpl->studienplan_id = $_POST['studienplan_id']; - - if ($rt_stpl->saveStudienplanReihungstest()) - { - echo 'Daten wurden erfolgreich gespeichert '; - } - else - echo 'Fehler beim Speichern des Studienplans: '.$db->convert_html_chars($rt_stpl->errormsg).''; - } - $reihungstest_id = $reihungstest->reihungstest_id; - $stg_kz = $reihungstest->studiengang_kz; - $studiensemester_kurzbz = $reihungstest->studiensemester_kurzbz; - } - else - { - echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($reihungstest->errormsg).''; - } - } - $neu=false; -} - -if ($reihungstest_id != '' || isset($_POST['reihungstest_id'])) -{ - $orte = new Reihungstest(); - $orte->getOrteReihungstest($reihungstest_id != ''?$reihungstest_id:$_POST['reihungstest_id']); - $orte_array = array(); - foreach ($orte->result AS $row) - { - // Wenn Arbeitsplaetze in DB gepflegt sind, Schwund herausrechnen (wenn gesetzt) sonst max_person verwenden und Schwund herausrechnen (wenn gesetzt) - $raum = new Ort(); - $raum->load($row->ort_kurzbz); - if ($raum->arbeitsplaetze != '') - { - if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) - $orte_array[$row->ort_kurzbz] = $raum->arbeitsplaetze - ceil(($raum->arbeitsplaetze/100)*REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND); - else - $orte_array[$row->ort_kurzbz] = $raum->arbeitsplaetze; - } - else - { - if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) - $orte_array[$row->ort_kurzbz] = $raum->max_person - ceil(($raum->max_person/100)*REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND); - else - $orte_array[$row->ort_kurzbz] = $raum->max_person; - } - } - $arbeitsplaetze_gesamt = array_sum($orte_array); -} - -if(isset($_POST['raumzuteilung_speichern'])) -{ - if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'su')) - { - die($rechte->errormsg); - } - - $raumzuteilung = new reihungstest(); - - if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') - { - //Reihungstest laden - if(!$raumzuteilung->load($_POST['reihungstest_id'])) - { - die($raumzuteilung->errormsg); - } - if (isset($_POST['checkbox'])) - { - $person_ids = $_POST['checkbox']; - - foreach ($person_ids AS $key=>$value) - { - $load_person = new reihungstest(); - if ($load_person->getPersonReihungstest($key, $_POST['reihungstest_id'])) - { - $raumzuteilung->new = false; - $raumzuteilung->rt_person_id = $load_person->rt_person_id; - $raumzuteilung->anmeldedatum = $load_person->anmeldedatum; - $raumzuteilung->teilgenommen = $load_person->teilgenommen; - $raumzuteilung->punkte = $load_person->punkte; - $raumzuteilung->studienplan_id = $load_person->studienplan_id; - - $raumzuteilung->reihungstest_id = $load_person->reihungstest_id; - $raumzuteilung->person_id = $key; - $raumzuteilung->ort_kurzbz = $_POST['raumzuteilung']; - } - else - die('PersonID '.$key.' hat keine korrekte Zuordnung -> Abbruch'); - - if (!$raumzuteilung->savePersonReihungstest()) - { - echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($reihungstest->errormsg).''; - } - } - } - $reihungstest_id = $_POST['reihungstest_id']; - } - $neu=false; -} - -// Uebertraegt die Punkte eines Prestudenten ins FAS -if(isset($_GET['type']) && $_GET['type']=='savertpunkte') -{ - $prestudent = new prestudent(); - $prestudent->load($prestudent_id); - - if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('assistenz', $prestudent->studiengang_kz, 'sui')) - { - $rtperson = new reihungstest(); - $rtperson->loadReihungstestPerson($_GET['rt_person_id']); - $rtperson->punkte = str_replace(',','.',$rtpunkte); - $rtperson->new = false; - $rtperson->teilgenommen = true; - if(!$rtperson->savePersonReihungstest()) - { - echo 'Fehler:'.$rtperson->errormsg.''; - } - } - else - { - echo '
Sie haben keine Berechtigung zur Uebernahme der Punkte fuer '.$db->convert_html_chars($row->nachname).' '.$db->convert_html_chars($row->vorname).'
'; - } -} - -// Uebertraegt alle Punkte eines Reihungstests ins FAS -if(isset($_GET['type']) && $_GET['type']=='saveallrtpunkte') -{ - $errormsg=''; - $qry = "SELECT - prestudent_id, tbl_prestudent.studiengang_kz, nachname, vorname, - tbl_studiengang.oe_kurzbz, rt_person_id, tbl_person.person_id - FROM - public.tbl_prestudent - JOIN public.tbl_person USING(person_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - JOIN public.tbl_rt_person USING(person_id) - JOIN lehre.tbl_studienplan ON(tbl_rt_person.studienplan_id=tbl_studienplan.studienplan_id) - JOIN lehre.tbl_studienordnung ON(tbl_studienplan.studienordnung_id=tbl_studienordnung.studienordnung_id) - WHERE - tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz - AND tbl_rt_person.rt_id=".$db->db_add_param($reihungstest_id, FHC_INTEGER); - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - if($rechte->isBerechtigt('student/stammdaten', $row->oe_kurzbz,'sui')) - { - $prestudent = new prestudent(); - $prestudent->load($row->prestudent_id); - - $reihungstest = new reihungstest(); - if($reihungstest->loadReihungstestPerson($row->rt_person_id)) - { - $pruefling = new pruefling(); - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $rtpunkte = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $reihungstest->reihungstest_id); - else - $rtpunkte = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $reihungstest->reihungstest_id); - - $reihungstest->punkte = str_replace(',','.',$rtpunkte); - $reihungstest->reihungstestangetreten = true; - $reihungstest->save(false); - $reihungstest->new = false; - - if($rtpunkte!==false) - { - $reihungstest->punkte = str_replace(',','.',$rtpunkte); - $reihungstest->teilgenommen = true; - $reihungstest->save(false); - $reihungstest->new = false; - - if(!$reihungstest->savePersonReihungstest()) - { - $errormsg .='
Fehler:'.$reihungstest->errorsmg; - } - } - } - } - else - { - $errormsg .= "
Sie haben keine Berechtigung zur Uebernahme der Punkte fuer $row->nachname $row->vorname"; - } - } - if($errormsg!='') - { - echo ''.$db->convert_html_chars($errormsg).''; - } - } -} - -// Verteilt alle BewerberInnen gleichmaessig auf die Raeume -if(isset($_GET['type']) && $_GET['type']=='verteilen') -{ - if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'sui')) - { - die($rechte->errormsg); - } - - if($reihungstest_id!='') - { - $errormsg=''; - $qry = "SELECT - person_id, - vorname, - nachname, - ort_kurzbz - FROM - public.tbl_prestudent - JOIN public.tbl_person USING (person_id) - LEFT JOIN public.tbl_rt_person USING (person_id) - WHERE - tbl_rt_person.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) - ORDER BY nachname,vorname "; - - $raumzuteilung = new reihungstest(); - if($result = $db->db_query($qry)) - { - $anz_personen = $db->db_num_rows($result); - - if($arbeitsplaetze_gesamt!=0) - { - $multiplikator = $anz_personen/$arbeitsplaetze_gesamt; - foreach ($orte->result AS $ort) - { - $counter = 0; - - $anz_zugeteilte = new Reihungstest(); - $anz_zugeteilte->getPersonReihungstestOrt($reihungstest_id, $ort->ort_kurzbz); - $anz_zugeteilte = count($anz_zugeteilte->result); - - $anteil = round(($orte_array[$ort->ort_kurzbz] * $multiplikator))-$anz_zugeteilte; - - if ($orte_array[$ort->ort_kurzbz] == 0 || ($anteil - $anz_zugeteilte)<=0) - continue; - - while($row = $db->db_fetch_object($result)) - { - //Nur Personen ohne Raumzuteilung verteilen - if ($row->ort_kurzbz == '') - { - $load_person = new reihungstest(); - if ($load_person->getPersonReihungstest($row->person_id, $reihungstest_id)) - { - $raumzuteilung->new = false; - $raumzuteilung->rt_person_id = $load_person->rt_person_id; - $raumzuteilung->anmeldedatum = $load_person->anmeldedatum; - $raumzuteilung->teilgenommen = $load_person->teilgenommen; - $raumzuteilung->punkte = $load_person->punkte; - $raumzuteilung->studienplan_id = $load_person->studienplan_id; - - $raumzuteilung->reihungstest_id = $load_person->reihungstest_id; - $raumzuteilung->person_id = $row->person_id; - $raumzuteilung->ort_kurzbz = $ort->ort_kurzbz; - } - else - { - die('Person zuteilung nicht gefunden'); - } - - if (!$raumzuteilung->savePersonReihungstest()) - { - echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($raumzuteilung->errormsg).''; - } - $counter++; - - //Wenn 0 Arbeitsplaetze vorhanden sind oder die max. Arbeitsplatzanzahl erreicht ist - if ($orte_array[$ort->ort_kurzbz] == 0 || ($anteil - $counter)<=0) - break; - } - } - } - } - else - { - echo 'Nicht genug Raumkapazität vorhanden'; - } - } - - } - $neu=false; -} - -// Fuellt die Raeume aufsteigend mit BewerberInnen an -if(isset($_GET['type']) && $_GET['type']=='auffuellen') -{ - if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'sui')) - { - die($rechte->errormsg); - } - - if($reihungstest_id!='') - { - $orte = new Reihungstest(); - $orte->getOrteReihungstest($reihungstest_id); - - $errormsg=''; - $qry = "SELECT - person_id, - vorname, - nachname, - ort_kurzbz - FROM - public.tbl_prestudent - JOIN - public.tbl_person USING (person_id) - LEFT JOIN public.tbl_rt_person USING (person_id) - WHERE - tbl_rt_person.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_rt_person.ort_kurzbz IS NULL - ORDER BY nachname,vorname "; - - $raumzuteilung = new reihungstest(); - if($result = $db->db_query($qry)) - { - foreach ($orte->result AS $ort) - { - $counter = 0; - - $anz_zugeteilte = new Reihungstest(); - $anz_zugeteilte->getPersonReihungstestOrt($reihungstest_id, $ort->ort_kurzbz); - $anz_zugeteilte = count($anz_zugeteilte->result); - - if ($orte_array[$ort->ort_kurzbz] == 0 || ($orte_array[$ort->ort_kurzbz]-$anz_zugeteilte)<=0) - continue; - - while($row = $db->db_fetch_object($result)) - { - $load_person = new reihungstest(); - - if ($load_person->getPersonReihungstest($row->person_id, $reihungstest_id)) - { - $raumzuteilung->new = false; - $raumzuteilung->rt_person_id = $load_person->rt_person_id; - $raumzuteilung->anmeldedatum = $load_person->anmeldedatum; - $raumzuteilung->teilgenommen = $load_person->teilgenommen; - $raumzuteilung->punkte = $load_person->punkte; - $raumzuteilung->studienplan_id = $load_person->studienplan_id; - - $raumzuteilung->reihungstest_id = $load_person->reihungstest_id; - $raumzuteilung->person_id = $row->person_id; - $raumzuteilung->ort_kurzbz = $ort->ort_kurzbz; - } - else - die('Personen zuteilung nicht gefunden'); - - if (!$raumzuteilung->savePersonReihungstest()) - { - echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($raumzuteilung->errormsg).''; - } - $counter++; - - //Wenn 0 Arbeitsplaetze vorhanden sind oder die max. Arbeitsplatzanzahl erreicht ist - if ($orte_array[$ort->ort_kurzbz] == 0 || ($orte_array[$ort->ort_kurzbz]-($anz_zugeteilte+$counter))<=0) - break; - } - } - } - - } - $neu=false; -} - -if(isset($_POST['aufsicht']) && $_POST['aufsicht']!='' && !isset($_POST['kopieren'])) -{ - - if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'su')) - { - die($rechte->errormsg); - } - - $save_aufsicht = new reihungstest(); - - if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') - { - //Reihungstest laden - if(!$save_aufsicht->load($_POST['reihungstest_id'])) - { - die($save_aufsicht->errormsg); - } - $aufsichtspersonen = $_POST['aufsicht']; - - foreach ($aufsichtspersonen AS $key=>$value) - { - // UID aus POST-String auslesen - $length = (strrpos($value, ')')) - (strpos($value, '(')); - $uid = substr($value,strpos($value, '(')+1, $length-1); - - $benutzer = new benutzer(); - if ($uid!='' && !$benutzer->load($uid)) - echo 'Die UID '.$value.' konnte nicht gefunden werden'; - else - { - $save_aufsicht->new = false; - $save_aufsicht->reihungstest_id = $_POST['reihungstest_id']; - $save_aufsicht->ort_kurzbz = $key; - $save_aufsicht->uid = $uid; - if (!$save_aufsicht->saveOrtReihungstest()) - { - echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($reihungstest->errormsg).''; - } - } - } - $reihungstest_id = $save_aufsicht->reihungstest_id; - $stg_kz = $save_aufsicht->studiengang_kz; - } - $neu=false; -} - -if(isset($_POST['delete_ort'])) -{ - if(!$rechte->isBerechtigt('lehre/reihungstestOrt', null, 'suid')) - { - die($rechte->errormsg); - } - - if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') - { - $delete_ort = new reihungstest(); - $delete_ort->getPersonReihungstestOrt($_POST['reihungstest_id'], $_POST['delete_ort']); - - if (count($delete_ort->result) == 0) - { - if (!$delete_ort->deleteOrtReihungstest($_POST['reihungstest_id'], $_POST['delete_ort'])) - echo 'Fehler beim löschen der Raumzuordnung: '.$db->convert_html_chars($reihungstest->errormsg).''; - } - else - echo 'Dem Raum '.$_POST['delete_ort'].' sind noch '.count($delete_ort->result).' Personen zugeteilt. Bitte entfernen Sie zuerst diese Zuteilungen'; - - $reihungstest_id = $_POST['reihungstest_id']; - $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; - } - $neu=false; -} - -if(isset($_POST['delete_studienplan'])) //@todo: Check, ob Zuordnungen zu diesem Studienplan vorhanden sind. Wenn ja, nicht loeschen! -{ - if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') - { - $delete_studienplan = new reihungstest(); - - if (!$delete_studienplan->deleteStudienplanReihungstest($_POST['reihungstest_id'], $_POST['delete_studienplan'])) - echo 'Fehler beim löschen der Studienplanzuteilung: '.$db->convert_html_chars($delete_studienplan->errormsg).''; - - $reihungstest_id = $_POST['reihungstest_id']; - $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; - } - $neu=false; -} - -if(isset($_POST['deleteReihungstest'])) //@todo: Check, ob Zuordnungen zu diesem Studienplan vorhanden sind. Wenn ja, nicht loeschen! -{ - if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') - { - $deleteReihungstest = new reihungstest(); - - if (!$deleteReihungstest->delete($_POST['reihungstest_id'])) - echo 'Fehler beim löschen des Reihungstests: '.$db->convert_html_chars($deleteReihungstest->errormsg).''; - - $reihungstest_id = ''; - $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; - } - $neu = true; -} - -echo '
'; - -// Studiengang DropDown -echo ""; -$studienplan_obj = new studienplan(); -$studienplan_obj->getStudienplaeneFromSem($stg_kz, $studiensemester_kurzbz); -$studienordnung_arr = array(); -$studienplan_arr = array(); -$studienplaene_verwendet = array(); - -foreach($studienplan_obj->result as $row_sto) -{ - $studienordnung_arr[$row_sto->studienordnung_id]['bezeichnung']=$row_sto->bezeichnung_studienordnung; - $studienplan_arr[$row_sto->studienordnung_id][$row_sto->studienplan_id]['bezeichnung']=$row_sto->bezeichnung_studienplan; - - $studienplan_arr[$row_sto->studienordnung_id][$row_sto->studienplan_id]['orgform_kurzbz']=$row_sto->orgform_kurzbz; - $studienplan_arr[$row_sto->studienordnung_id][$row_sto->studienplan_id]['sprache']=(isset($sprachen_arr[$row_sto->sprache])?$sprachen_arr[$row_sto->sprache]:''); - $studienplaene_verwendet[$row_sto->studienplan_id] = $row_sto->bezeichnung_studienplan; -} - -// Pruefen ob uebergebene StudienplanID in Auswahl enthalten -// ist und ggf auf leer setzen -if($studienplan_id!='') -{ - $studienplan_found=false; - foreach($studienplan_arr as $stoid=>$row_sto) - { - if(array_key_exists($studienplan_id, $studienplan_arr[$stoid])) - { - $studienplan_found=true; - break; - } - } - if(!$studienplan_found) - { - $studienplan_id=''; - } -} -// Studiensemester DropDown -echo ""; - -//Reihungstest DropDown -$reihungstest = new reihungstest(); -if($stg_kz==-1 && $studiensemester_kurzbz=='') - $reihungstest->getAll(date('Y').'-01-01'); //Alle Reihungstests ab diesem Jahr laden -elseif($stg_kz==-1 && $studiensemester_kurzbz!='') - $reihungstest->getReihungstest('','datum DESC,uhrzeit DESC',$studiensemester_kurzbz); -else - $reihungstest->getReihungstest($stg_kz,'datum DESC,uhrzeit DESC',$studiensemester_kurzbz); - - -echo "'; -echo ""; -echo '  '; -echo "
"; - -if($reihungstest_id=='') - $neu=true; -$reihungstest = new reihungstest(); - -if(!$neu) -{ - if(!$reihungstest->load($reihungstest_id)) - die('Reihungstest existiert nicht'); -} -else -{ - if($stg_kz!=-1 && $stg_kz!='') - $reihungstest->studiengang_kz = $stg_kz; - $reihungstest_id=''; - $reihungstest->datum = date('Y-m-d'); - $reihungstest->uhrzeit = date('H:i:s'); - $reihungstest->anmeldefrist = date('Y-m-d', time() - 60 * 60 * 24); -} - -$studienplaene_arr = array(); -$studienplaene = new reihungstest(); -$studienplaene->getStudienplaeneReihungstest($reihungstest->reihungstest_id); -foreach ($studienplaene->result AS $row) -{ - $studienplan = new studienplan(); - $studienplan->loadStudienplan($row->studienplan_id); - $studienplaene_arr[ $row->studienplan_id] = $studienplan->bezeichnung; -} - -$studienplaene_list = implode(',', array_keys($studienplaene_arr)); - -//Formular zum Bearbeiten des Reihungstests -?> -
-
'> - - - - - '; - } - else - { - echo ''; - echo ''; - } - ?> -
- - - - - - - - - - - - - '; - } - - if($neu) - { - echo ''; - echo ''; - echo ''; - } - else - { - echo ''; - - if(!$neu) - { - //echo ''; - } - else - echo ''; - } - - $arbeitsplaetze_sum = 0; - if(!$neu) - { - echo ''; - //echo ''; - echo ''; - } - else - { - echo ''; - } - $orte = new Reihungstest(); - $orte->getOrteReihungstest($reihungstest->reihungstest_id); - foreach ($orte->result AS $row) - { - $person = new Person(); - $person->getPersonFromBenutzer($row->uid); - if ($row->uid != '') - $anzeigename = $person->vorname.' '.$person->nachname.' ('.$row->uid.')'; - else - $anzeigename = ''; - - echo ''; - echo ''; - $arbeitsplaetze_sum = $arbeitsplaetze_sum + $orte_array[$row->ort_kurzbz]; - } - if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) - echo ''; - //echo '
Studiengang - -
Stufe - -   Studiensemester - -
Gruppe - -
Studienplan'; - - // Studienplan DropDown - echo ""; - echo '
Studienpläne'; - echo ''; - echo ''; - - foreach ($studienplaene->result AS $row) - { - $studienplan = new studienplan(); - $studienplan->loadStudienplan($row->studienplan_id); - - echo ''; - echo ''; - echo ''; - echo ''; - } - //echo '
'; - echo ''; - echo ''; - echo '
 '.$studienplan->bezeichnung.' ('.$studienplan->studienplan_id.')
Nach dem Anlegen eines Termins, können Sie weitere Studienpläne zuordnen
Ort'; - if ($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'sui')) - { - echo ''; - echo '
Keine Berechtigung zum zuteilen von Räumen
 '.$row->ort_kurzbz.' ('.$orte_array[$row->ort_kurzbz].' Arbeitsplätze'; - if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) - echo '*'; - echo ')'; - echo ' '; - if ($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'suid')) - echo ''; - echo '
 * Inklusive '.REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND.'% Schwund
OrtNach dem Anlegen eines Termins, können Sie Räume zuordnen
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Anmerkung (max. 64 Zeichen)
Datum
Uhrzeit (Format: HH:MM)
Anmeldefrist
Max TeilnehmerInnen - - (optional; laut Raumkapazität - 0) - echo ' inklusive '.REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND.'% Schwund)'; - else - echo ')'; - ?> -
Öffentlich - - oeffentlich ? 'checked="checked"' : '' ?>> - (Für Bewerber sichtbar/auswählbar) -
Freigeschaltet - freigeschaltet ? 'checked="checked"' : '' ?>> - (Kurz vor Testbeginn aktivieren) -
 
- - Kopie erstellen'; - - if($rechte->isBerechtigt('lehre/reihungstest', null, 'suid')) - { - $anzahl_teilnehmer = new reihungstest(); - $anzahl_teilnehmer = $anzahl_teilnehmer->getTeilnehmerAnzahl($reihungstest_id); - - if (isset($orte) && count($orte->result) == 0 && isset($studienplaene) && count($studienplaene->result) == 0 && $anzahl_teilnehmer == 0 && $reihungstest_id != '') - echo ''; - else - echo ''; - } - ?> -
- - - -
- -
-'; -if($reihungstest_id!='') -{ - echo 'Excel Export'; - echo 'Punkte ins FAS übertragen'; - echo 'Mail an alle senden'; -} -echo 'Auswertung'; -echo 'Anmeldungen zusammenlegen'; -if($rechte->isBerechtigt('basis/testtool', null, 'suid')) -{ - echo 'Administration
'; -} -echo ''; -echo ''; -if($reihungstest_id!='') -{ - //Liste der Interessenten die zum Reihungstest angemeldet sind - $qry = " - SELECT - rt_person_id, - rt_id, - prestudent_id, - tbl_rt_person.person_id, - vorname, - nachname, - ort_kurzbz, - studienplan_id, - studiengang_kz, - gebdatum, - geschlecht, - 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 - 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_prestudent ON (tbl_rt_person.person_id=tbl_prestudent.person_id) - WHERE - rt_id = ".$db->db_add_param($reihungstest_id, FHC_INTEGER); - - $qry .= " 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"; - - $mailto = ''; - $result_arr = array(); - - $orte = new Reihungstest(); - $orte->getOrteReihungstest($reihungstest_id); - $orte_zuteilung_array = array(); - $orte_zuteilung_array['ohne'] = 0; - foreach ($orte->result AS $row) - $orte_zuteilung_array[$row->ort_kurzbz] = 0; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $result_arr[] = $row; - - if (is_null($row->ort_kurzbz)) - $orte_zuteilung_array['ohne']++; - else - $orte_zuteilung_array[$row->ort_kurzbz]++; - } - } - - echo ''; - echo '
'; - echo '
'; - echo 'Anzahl: '.$db->db_num_rows($result).' ('.($reihungstest->max_teilnehmer!=''?$reihungstest->max_teilnehmer:$arbeitsplaetze_sum).' Plätze verfügbar)'; - if ( ($reihungstest->max_teilnehmer!='' && $db->db_num_rows($result) > $reihungstest->max_teilnehmer) - || ($reihungstest->max_teilnehmer=='' && $db->db_num_rows($result) > $arbeitsplaetze_sum) - && !empty($orte_array) - ) - echo '
Achtung! Anzahl Arbeitsplätze überschritten'; - echo '
'; - echo '
Prestudent ID
'; - echo '
Person ID
'; - echo '
Geschlecht
'; - echo '
Studiengang
'; - echo '
OrgForm
'; - echo '
Studienplan
'; - echo '
Einstiegssemester
'; - echo '
Geburtsdatum
'; - echo '
EMail
'; - echo '
Absolvierte Tests
'; - echo '
Ergebnis
'; - echo '
FAS
'; - echo '
'; - echo '
'; - echo ''; - - - $pruefling = new pruefling(); - - $cnt = 0; - if ($orte_zuteilung_array['ohne']>0) - { - echo ''; - } - foreach ($orte->result AS $ort) - { - $cnt++; - - echo ''; - } - - echo '
'; - echo '
Ohne Raumzuteilung ('.$orte_zuteilung_array['ohne'].')
'; - echo ''; - echo '
'; - echo ''; - echo ' - - - - - - - - - - - - - - - - - - - - '; - foreach ($result_arr AS $row) - { - $rt_in_anderen_stg=''; - $rtergebnis = ''; - if($punkteberechnung == 'true') - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id,true, $reihungstest->reihungstest_id); - else - $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $reihungstest->reihungstest_id); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($row->person_id); - $rt_in_anderen_stg=''; - foreach($prestudent->result as $item) - { - if($item->prestudent_id!=$row->prestudent_id) - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true); - else - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id); - if($erg!==false) - { - $rt_in_anderen_stg.=number_format($erg,2).' Punkte im Studiengang '.$studiengang->kuerzel_arr[$item->studiengang_kz].'
'; - } - } - } - } - if ($row->ort_kurzbz == '') - { - if(isset($studienplaene_arr[$row->studienplan_id])) - $studienplan_bezeichnung = $studienplaene_arr[$row->studienplan_id]; - else - { - $studienplan_obj = new studienplan(); - $studienplan_obj->loadStudienplan($row->studienplan_id); - $studienplan_bezeichnung = $studienplan_obj->bezeichnung; - $studienplaene_arr[$row->studienplan_id]=$studienplan_obj->bezeichnung; - } - echo ' - - - - - - - - - - - - - - - - - '; - - $mailto.= ($mailto!=''?',':'').$row->email; - } - } - echo '
- - - - - Prestudent IDPerson IDNachnameVornameGeschlechtStudiengangOrgFormStudienplanEinstiegssemesterGeburtsdatumEMailbereits absolvierte VerfahrenErgebnisFAS
'.$db->convert_html_chars($row->prestudent_id).''.$db->convert_html_chars($row->person_id).''.$db->convert_html_chars($row->nachname).''.$db->convert_html_chars($row->vorname).''.$db->convert_html_chars($row->geschlecht).''.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).''.$db->convert_html_chars($row->orgform_kurzbz!=''?$row->orgform_kurzbz:' ').''.$db->convert_html_chars($studienplan_bezeichnung).' ('.$row->studienplan_id.')'.$db->convert_html_chars($row->ausbildungssemester).''.$db->convert_html_chars($row->gebdatum!=''?$datum_obj->convertISODate($row->gebdatum):' ').''.$rt_in_anderen_stg.''.($rtergebnis == '' || $rtergebnis===false?'-':number_format($rtergebnis,2,'.','')).''; - if($rtergebnis!==false && $rtergebnis != '' && $row->punkte=='') - echo 'übertragen'; - else - { - if($row->punkte!='') - echo number_format($row->punkte,2,'.',''); - } - echo '
'; - - echo ''; - echo ''; - echo '
'; - echo '
'; - if ($orte_array[$ort->ort_kurzbz] - $orte_zuteilung_array[$ort->ort_kurzbz] < 0) - $style = 'text-align: center; margin: 0 5px 0 5px; color: red'; - else - $style = 'text-align: center; margin: 0 5px 0 5px;'; - echo '
'.$ort->ort_kurzbz.' ('.$orte_zuteilung_array[$ort->ort_kurzbz].'/'.$orte_array[$ort->ort_kurzbz].')
'; - - if ($orte_zuteilung_array[$ort->ort_kurzbz]>0) - { - echo '
'; - echo ''; - echo ' - - - - - - - - - - - - - - - - - - - - '; - $cnt_personen = 0; - foreach ($result_arr AS $row) - { - $rt_in_anderen_stg=''; - $rtergebnis = ''; - if($punkteberechnung == 'true') - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id,true, $reihungstest->reihungstest_id); - else - $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $reihungstest->reihungstest_id); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($row->person_id); - $rt_in_anderen_stg=''; - foreach($prestudent->result as $item) - { - if($item->prestudent_id!=$row->prestudent_id) - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true); - else - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id); - if($erg!==false) - { - $rt_in_anderen_stg.=number_format($erg,2).' Punkte im Studiengang '.$studiengang->kuerzel_arr[$item->studiengang_kz].'
'; - } - } - } - } - if ($row->ort_kurzbz == $ort->ort_kurzbz) - { - - if(isset($studienplaene_arr[$row->studienplan_id])) - $studienplan_bezeichnung = $studienplaene_arr[$row->studienplan_id]; - else - { - $studienplan_obj = new studienplan(); - $studienplan_obj->loadStudienplan($row->studienplan_id); - $studienplan_bezeichnung = $studienplan_obj->bezeichnung; - $studienplaene_arr[$row->studienplan_id]=$studienplan_obj->bezeichnung; - } - - $cnt_personen++; - echo ' - - - - - - - - - - - - - - - - - '; - - $mailto.= ($mailto!=''?',':'').$row->email; - } - } - echo '
- - - - - Prestudent IDPerson IDNachnameVornameGeschlechtStudiengangOrgFormStudienplanEinstiegssemesterGeburtsdatumEMailbereits absolvierte VerfahrenErgebnisFAS
'.$db->convert_html_chars($row->prestudent_id).''.$db->convert_html_chars($row->person_id).''.$db->convert_html_chars($row->nachname).''.$db->convert_html_chars($row->vorname).''.$db->convert_html_chars($row->geschlecht).''.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).''.$db->convert_html_chars($row->orgform_kurzbz!=''?$row->orgform_kurzbz:' ').''.$db->convert_html_chars($studienplan_bezeichnung).' ('.$row->studienplan_id.')'.$db->convert_html_chars($row->ausbildungssemester).''.$db->convert_html_chars($row->gebdatum!=''?$datum_obj->convertISODate($row->gebdatum):' ').''.$rt_in_anderen_stg.''.($rtergebnis==0?'-':number_format($rtergebnis,2,'.','')).''.($rtergebnis!=0 && $row->punkte==''?'übertragen':$row->punkte).'
'; - - echo ''; - echo ''; - echo '
'; - } - else - echo '
Leer
'; - - echo '
'; -} ?> - - - + + * Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at > + * Rudolf Hangl < rudolf.hangl@technikum-wien.at > + * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > + * Manfred Kindl < manfred.kindl@technikum-wien.at > + * Cristina Hainberger < hainberg@technikum-wien.at > + */ +/** + * Reihungstest + * + * - Anlegen und Bearbeiten von Terminen + * - Export von Anwesenheitslisten als Excel + * - Uebertragung der Ergebnis-Punkte ins FAS + * + * Parameter: + * excel ... wenn gesetzt, dann wird die Anwesenheitsliste als Excel exportiert + */ +require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/global.config.inc.php'); +require_once('../../include/functions.inc.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/reihungstest.class.php'); +require_once('../../include/ort.class.php'); +require_once('../../include/datum.class.php'); +require_once('../../include/benutzerberechtigung.class.php'); +require_once('../../include/pruefling.class.php'); +require_once('../../include/person.class.php'); +require_once('../../include/prestudent.class.php'); +require_once('../../include/Excel/excel.php'); +require_once('../../include/adresse.class.php'); +require_once('../../include/studiensemester.class.php'); +require_once('../../include/benutzer.class.php'); +require_once('../../include/studienplan.class.php'); +require_once('../../include/sprache.class.php'); +require_once('../../include/organisationsform.class.php'); +require_once('../../include/gruppe.class.php'); +require_once('../../include/variable.class.php'); + +// @todo Allgemein: Beim kopieren auch die Studienplanzuordnungen übernehmen +// "Teilgenommen" und "Punkte" werden immer mit false bzw. 0 gespeichert + +define('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND', 5); + +if (!$db = new basis_db()) +{ + die('Es konnte keine Verbindung zum Server aufgebaut werden.'); +} + +//Richtiges Studiensemester zum anzeigen ermitteln + //Mit getAktOrNext das aktuelle oder kommende WINTERsemester auslesen + $stsem_aktorNext = new studiensemester(); + $stsem_aktorNext = $stsem_aktorNext->getaktorNext(1); + //Ergebnis aus $stsem_aktorNext laden und den Timestamp der Semestermitte bestimmen. + $stsem_berechnet = new studiensemester(); + $stsem_berechnet->load($stsem_aktorNext); + $mitte = (strtotime($stsem_berechnet->ende) - strtotime($stsem_berechnet->start)) / 2; + // Wenn die Haelfte des Wintersemesters vorbei ist, das naechste Wintersemester ermitteln, sonst das Aktuelle nehmen + if (strtotime($stsem_berechnet->ende) - $mitte <= time()) + { + $stsem_dropdown = new studiensemester(); + $stsem_dropdown->getNextStudiensemester('WS'); + $stsem_dropdown = $stsem_dropdown->studiensemester_kurzbz; + } + else + $stsem_dropdown = $stsem_aktorNext; + +$user = get_uid(); +$datum_obj = new datum(); +$stg_kz = (isset($_GET['stg_kz']) ? $_GET['stg_kz'] : ''); +$reihungstest_id = (isset($_GET['reihungstest_id']) ? $_GET['reihungstest_id'] : ''); +$studiensemester_kurzbz = (isset($_GET['studiensemester_kurzbz']) ? $_GET['studiensemester_kurzbz'] : $stsem_dropdown); +$studienplan_id = (isset($_GET['studienplan_id']) ? $_GET['studienplan_id'] : ''); +$prestudent_id = (isset($_GET['prestudent_id']) ? $_GET['prestudent_id'] : ''); +$rtpunkte = (isset($_GET['rtpunkte']) ? $_GET['rtpunkte'] : ''); +$neu = (isset($_GET['neu']) ? true : false); +$stg_arr = array(); +$error = false; + +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + +if ($stg_kz == '' && ($reihungstest_id != '' || isset($_POST['reihungstest_id']))) +{ + if ($reihungstest_id != '') + { + $rt = new Reihungstest(); + $rt->load($reihungstest_id); + $stg_kz = $rt->studiengang_kz; + } + elseif (isset($_POST['reihungstest_id'])) + { + $rt = new Reihungstest(); + $rt->load($_POST['reihungstest_id']); + $stg_kz = $rt->studiengang_kz; + } + else + $stg_kz = '-1'; +} + +if(!$rechte->isBerechtigt('lehre/reihungstest')) +{ + die($rechte->errormsg); +} + +$studiengang = new studiengang(); +$studiengang->getAll('typ, kurzbz', false); + +$studiensemester = new Studiensemester(); +$studiensemester->getAll('desc'); + +$sprachen_obj = new sprache(); +$sprachen_obj->getAll(); +$sprachen_arr=array(); + +foreach($sprachen_obj->result as $row) +{ + if(isset($row->bezeichnung_arr[$sprache])) + $sprachen_arr[$row->sprache]=$row->bezeichnung_arr[$sprache]; + else + $sprachen_arr[$row->sprache]=$row->sprache; +} + +$orgform_obj = new organisationsform(); +$orgform_obj->getAll(); +$orgform_arr=array(); +foreach($orgform_obj->result as $row) + $orgform_arr[$row->orgform_kurzbz]=$row->bezeichnung; + +// Pruefen ob Variable fuer Punkteberechnung gesetzt ist, wenn nicht, einen neuen Eintrag anlegen +$variable = new variable(); +if ($variable->load($user, 'reihungstestverwaltung_punkteberechnung')) +{ + if (isset($_GET['punkteberechnung']) && $_GET['punkteberechnung'] != $variable->wert) + { + $variable->new = false; + $variable->uid = $user; + $variable->name = 'reihungstestverwaltung_punkteberechnung'; + $variable->wert = $_GET['punkteberechnung']; + $variable->save(); + + $punkteberechnung = $_GET['punkteberechnung']; + } + else + $punkteberechnung = $variable->wert; + +} +else +{ + $variable->new = true; + $variable->uid = $user; + $variable->name = 'reihungstestverwaltung_punkteberechnung'; + $variable->wert = 'true'; + $variable->save(); + + $punkteberechnung = 'true'; +} + +//Studierende als Excel Exportieren +if(isset($_GET['excel'])) +{ + $reihungstest = new reihungstest(); + if($reihungstest->load($_GET['reihungstest_id'])) + { + $studienplaene_arr = array(); + $studienplaene = new reihungstest(); + $studienplaene->getStudienplaeneReihungstest($reihungstest->reihungstest_id); + foreach ($studienplaene->result AS $row) + { + $studienplan = new studienplan(); + $studienplan->loadStudienplan($row->studienplan_id); + $studienplaene_arr[ $row->studienplan_id] = $studienplan->bezeichnung; + } + + $studienplaene_list = implode(',', array_keys($studienplaene_arr)); + $qry = " + SELECT + rt_id, + prestudent_id, + tbl_rt_person.person_id, + vorname, + nachname, + ort_kurzbz, + studienplan_id, + studiengang_kz, + gebdatum, + geschlecht, + punkte + ,( + SELECT + kontakt + FROM + public.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 + 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_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 + "; + + $gebietbezeichnungen = array(); + $qry_gebiete = "SELECT gebiet_id, reihung, bezeichnung FROM testtool.tbl_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studienplan_id = ".$db->db_add_param($row->studienplan_id)." ORDER BY reihung"; + if($result_gebiete = $db->db_query($qry_gebiete)) + { + while($row_gebiete = $db->db_fetch_object($result_gebiete)) + { + $gebietbezeichnungen[$row_gebiete->gebiet_id] = $row_gebiete->bezeichnung; + } + } + + // Creating a workbook + $workbook = new Spreadsheet_Excel_Writer(); + $workbook->setVersion(8); + // sending HTTP headers + $workbook->send("Anwesenheitsliste_Aufnahmetermin_".$reihungstest->datum.".xls"); + + //Formate Definieren + $format_bold =& $workbook->addFormat(); + $format_bold->setBold(); + + $format_border =& $workbook->addFormat(); + $format_border->setBorder(1); + $format_border->setTextWrap(); + $format_border->setVAlign ('top'); + + $format_border_center =& $workbook->addFormat(); + $format_border_center->setBorder(1); + $format_border_center->setTextWrap(); + $format_border_center->setVAlign ('top'); + $format_border_center->setHAlign ('center'); + + $format_border_left =& $workbook->addFormat(); + $format_border_left->setBorder(1); + $format_border_left->setTextWrap(); + $format_border_left->setVAlign ('top'); + $format_border_left->setHAlign ('left'); + + if($result = $db->db_query($qry)) + { + $ort_kurzbz = '0'; + // Wenn Daten vorhanden + if ($db->db_num_rows($result) > 0) + { + while($row = $db->db_fetch_object($result)) + { + if ($ort_kurzbz == '0' || $ort_kurzbz != $row->ort_kurzbz) + { + // Creating a worksheet + if ($row->ort_kurzbz=='') + $worksheet =& $workbook->addWorksheet("Ohne Raumzuteilung"); + else + $worksheet =& $workbook->addWorksheet("Raum ".$row->ort_kurzbz); + $worksheet->setInputEncoding('utf-8'); + //$worksheet->setZoom (85); + $worksheet->hideScreenGridlines(); + $worksheet->hideGridlines(); + $worksheet->setLandscape(); + $worksheet->centerHorizontally(1); + $worksheet->fitToPages ( 1, 1); + $worksheet->setMargins_LR (0.4); + $worksheet->setMarginTop (0.79); + $worksheet->setMarginBottom (0.59); + + // Titelzeilen + $worksheet->write(0,0,'Anwesenheitsliste Aufnahmetermin vom '.$datum_obj->convertISODate($reihungstest->datum).' '.$reihungstest->uhrzeit.' Uhr, '.$reihungstest->anmerkung.', erstellt am '.date('d.m.Y'), $format_bold); + if ($row->ort_kurzbz=='') + $worksheet->write(1,0,'Ohne Raumzuteilung', $format_bold); + else + $worksheet->write(1,0,'Raum '.$row->ort_kurzbz, $format_bold); + $worksheet->write(2,0,'Studienpläne: '.implode(', ', $studienplaene_arr)); + $worksheet->write(3,0,'Stufe: '.$reihungstest->stufe); + $worksheet->write(4,0,'Testmodule: '.implode(', ', $gebietbezeichnungen)); + + //Ueberschriften + $zeile=6; + $col=0; + $worksheet->write($zeile,$col,"Nachname", $format_bold); + $maxlength[$col] = 8; + $worksheet->write($zeile,++$col,"Vorname", $format_bold); + $maxlength[$col] = 7; + $worksheet->write($zeile,++$col,"G", $format_bold); + $maxlength[$col] = 2; + $worksheet->write($zeile,++$col,"Geburtsdatum", $format_bold); + $maxlength[$col] = 12; + $worksheet->write($zeile,++$col,"Studiengang", $format_bold); + $maxlength[$col] = 11; + $worksheet->write($zeile,++$col,"OrgForm", $format_bold); + $maxlength[$col] = 7; + $worksheet->write($zeile,++$col,"S", $format_bold); + $maxlength[$col] = 2; + $worksheet->write($zeile,++$col,"Bereits absolvierte RTs", $format_bold); + $maxlength[$col] = 20; + $worksheet->write($zeile,++$col,"Sonstige Termine", $format_bold); + $maxlength[$col] = 20; + $worksheet->write($zeile,++$col,"EMail", $format_bold); + $maxlength[$col] = 5; + $worksheet->write($zeile,++$col,"Strasse", $format_bold); + $maxlength[$col] = 6; + $worksheet->write($zeile,++$col,"PLZ", $format_bold); + $maxlength[$col] = 3; + $worksheet->write($zeile,++$col,"Ort", $format_bold); + $maxlength[$col] = 3; + $worksheet->write($zeile,++$col,"Unterschrift", $format_bold); + $maxlength[$col] = 30; + + $ort_kurzbz = $row->ort_kurzbz; + $zeile++; + } + + $pruefling = new pruefling(); + $rt_in_anderen_stg=''; + $erg = ''; + $rt_prestudent_arr = array(); + + //Daten ermitteln für Spalte absolvierte Verfahren + $qry_absolvierte_Verfahren = "SELECT + distinct tbl_reihungstest.reihungstest_id, + tbl_pruefling.pruefling_id, + tbl_prestudent.prestudent_id, + tbl_rt_person.person_id + FROM + public.tbl_rt_person + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN public.tbl_prestudent USING(person_id) + JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id) + JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id) + LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE + (tbl_rt_person.anmeldedatum is null OR tbl_rt_person.anmeldedatum<=tbl_reihungstest.datum) + AND tbl_reihungstest.datum >=(SELECT min(begintime)::date FROM testtool.tbl_pruefling_frage WHERE pruefling_id=tbl_pruefling.pruefling_id AND tbl_reihungstest.datum>=begintime-'1 days'::interval) AND (tbl_reihungstest.stufe is null or tbl_reihungstest.stufe=1) + AND person_id=".$db->db_add_param($row->person_id, FHC_INTEGER); + + if($result_rt_prestudent = $db->db_query($qry_absolvierte_Verfahren)) + { + while($obj = $db->db_fetch_object($result_rt_prestudent)) + { + array_push($rt_prestudent_arr, $obj); + } + } + + foreach($rt_prestudent_arr as $item) + { + $pruefling->getPruefling($item->prestudent_id); + $rt = new Reihungstest(); + $rt->load($item->reihungstest_id); + $rt_letztes_login = $datum_obj->formatDatum($pruefling->registriert, 'Y-m-d'); + $rt_antrittstermin = $datum_obj->formatDatum($rt->datum, 'Y-m-d'); + + if($item->prestudent_id!=$row->prestudent_id || $rt_letztes_login < $rt_antrittstermin) + { + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true, $item->reihungstest_id); + else + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, false, $item->reihungstest_id); + + if($erg!==false) + { + $rt_in_anderen_stg.=number_format($erg,2).((FAS_REIHUNGSTEST_PUNKTE) ? ' Punkte' : ' %').' im Studiengang '.$studiengang->kuerzel_arr[$pruefling->studiengang_kz]."\n"; + + if ($item->prestudent_id == $row->prestudent_id && $rt_letztes_login < $rt_antrittstermin) + { + $rt_in_anderen_stg .= '(Letzter '.$studiengang->kuerzel_arr[$pruefling->studiengang_kz].'-Antritt: '.$datum_obj->formatDatum($rt_letztes_login, 'd.m.Y').'), '; + } + } + } + } + + $weitere_zuteilungen = array(); + $qry_zuteilungen = " + SELECT + DISTINCT tbl_studienplan.bezeichnung, tbl_reihungstest.datum, tbl_rt_person.studienplan_id + FROM + public.tbl_rt_person JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id) + JOIN lehre.tbl_studienplan USING (studienplan_id) + JOIN testtool.tbl_ablauf USING (studienplan_id) + WHERE + person_id=".$db->db_add_param($row->person_id)." + AND studiensemester_kurzbz=".$db->db_add_param($reihungstest->studiensemester_kurzbz)." + ORDER BY bezeichnung"; + + if($result_zuteilungen = $db->db_query($qry_zuteilungen)) + { + while($row_zuteilungen = $db->db_fetch_object($result_zuteilungen)) + { + $testmodule = array(); + $qry_gebiete = "SELECT gebiet_id, bezeichnung, reihung FROM testtool.tbl_ablauf JOIN testtool.tbl_gebiet USING (gebiet_id) WHERE studienplan_id = ".$db->db_add_param($row_zuteilungen->studienplan_id)." ORDER BY reihung"; + if($result_gebiete = $db->db_query($qry_gebiete)) + { + while($row_gebiete = $db->db_fetch_object($result_gebiete)) + { + $testmodule[$row_gebiete->gebiet_id] = $row_gebiete->bezeichnung; + } + } + $weitere_zuteilungen[] = $row_zuteilungen->bezeichnung.' am '.$datum_obj->formatDatum($row_zuteilungen->datum, 'd.m.Y').' ('.implode(', ', $testmodule).')'; + } + } + + $col=0; + + $worksheet->write($zeile,$col,$row->nachname, $format_border); + if(strlen($row->nachname)>$maxlength[$col]) + $maxlength[$col] = strlen($row->nachname); + + $worksheet->write($zeile,++$col, $row->vorname, $format_border); + if(strlen($row->vorname)>$maxlength[$col]) + $maxlength[$col] = strlen($row->vorname); + + $worksheet->write($zeile,++$col, $row->geschlecht, $format_border_center); + if(strlen($row->geschlecht)>$maxlength[$col]) + $maxlength[$col] = strlen($row->geschlecht); + + $worksheet->write($zeile,++$col,$datum_obj->convertISODate($row->gebdatum), $format_border); + if(strlen($row->gebdatum)>$maxlength[$col]) + $maxlength[$col] = strlen($row->gebdatum); + + $worksheet->write($zeile,++$col,$studiengang->kuerzel_arr[$row->studiengang_kz], $format_border); + if(strlen($studiengang->kuerzel_arr[$row->studiengang_kz])>$maxlength[$col]) + $maxlength[$col] = strlen($studiengang->kuerzel_arr[$row->studiengang_kz]); + + $worksheet->write($zeile,++$col,$row->orgform_kurzbz, $format_border); + if(strlen($row->orgform_kurzbz)>$maxlength[$col]) + $maxlength[$col] = strlen($row->orgform_kurzbz); + + $worksheet->write($zeile,++$col,$row->ausbildungssemester, $format_border_center); + if(strlen($row->ausbildungssemester)>$maxlength[$col]) + $maxlength[$col] = strlen($row->ausbildungssemester); + + $worksheet->write($zeile,++$col,$rt_in_anderen_stg, $format_border); + if(strlen($rt_in_anderen_stg)>$maxlength[$col]) + $maxlength[$col] = strlen($rt_in_anderen_stg); + + $worksheet->write($zeile,++$col,implode("\n", $weitere_zuteilungen), $format_border); + foreach ($weitere_zuteilungen as $items) + { + if (strlen($items)>$maxlength[$col]) + $maxlength[$col] = strlen($items); + } + + $worksheet->write($zeile,++$col,$row->email, $format_border); + if(strlen($row->email)>$maxlength[$col]) + $maxlength[$col] = strlen($row->email); + + $adresse = new adresse(); + $adresse->loadZustellAdresse($row->person_id); + + $worksheet->write($zeile,++$col,$adresse->strasse, $format_border); + if(strlen($adresse->strasse)>$maxlength[$col]) + $maxlength[$col] = strlen($adresse->strasse); + + $worksheet->write($zeile,++$col,$adresse->plz, $format_border_left); + if(strlen($adresse->plz)>$maxlength[$col]) + $maxlength[$col] = strlen($adresse->plz); + + $worksheet->write($zeile,++$col,$adresse->ort, $format_border); + if(strlen($adresse->ort)>$maxlength[$col]) + $maxlength[$col] = strlen($adresse->ort); + + $worksheet->write($zeile,++$col,'', $format_border); + + if(count($weitere_zuteilungen)>2) + $worksheet->setRow($zeile, count($weitere_zuteilungen)*14); + else + $worksheet->setRow($zeile, 35); + + $zeile++; + + //Die Breite der Spalten setzen + foreach($maxlength as $col=>$breite) + $worksheet->setColumn($col, $col, $breite+2); + } + } + else + { + // Creating a worksheet + $worksheet =& $workbook->addWorksheet("Keine Daten"); + $worksheet->setInputEncoding('utf-8'); + $worksheet->hideScreenGridlines(); + $worksheet->hideGridlines(); + $worksheet->setLandscape(); + $worksheet->centerHorizontally(1); + $worksheet->fitToPages ( 1, 1); + $worksheet->setMargins_LR (0.4); + $worksheet->setMarginTop (0.79); + $worksheet->setMarginBottom (0.59); + + // Titelzeilen + $worksheet->write(0,0,'Anwesenheitsliste Aufnahmetermin vom '.$datum_obj->convertISODate($reihungstest->datum).' '.$reihungstest->uhrzeit.' Uhr, '.$reihungstest->anmerkung.', erstellt am '.date('d.m.Y'), $format_bold); + + $worksheet->write(3,0,'Keine BewerberInnen zugeteilt', $format_bold); + } + } + $workbook->close(); + } + else + { + echo 'Reihungstest wurde nicht gefunden!'; + } + return; +} ?> + + + + Reihungstest + + + + + + + + + + + + + + + +

Reihungstest - Verwaltung

+isBerechtigt('lehre/reihungstest', null, 'sui')) + { + die($rechte->errormsg); + } + + $reihungstest = new reihungstest(); + + if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='' && !isset($_POST['kopieren'])) + { + //Reihungstest laden + if(!$reihungstest->load($_POST['reihungstest_id'])) + { + die($reihungstest->errormsg); + } + + $reihungstest->new = false; + } + else + { + //Neuen Reihungstest anlegen + $reihungstest->new=true; + $reihungstest->insertvon = $user; + $reihungstest->insertamum = date('Y-m-d H:i:s'); + } + + //Datum und Uhrzeit pruefen + if($_POST['datum']!='' && !$datum_obj->checkDatum($_POST['datum'])) + { + echo 'Datum ist ungueltig. Das Datum muss im Format DD.MM.JJJJ eingegeben werden
'; + $error = true; + } + if($_POST['uhrzeit']!='' && !$datum_obj->checkUhrzeit($_POST['uhrzeit'])) + { + echo 'Uhrzeit ist ungueltig. Die Uhrzeit muss im Format HH:MM angegeben werden!
'; + $error = true; + } + + if(!$error) + { + if (isset($_POST['kopieren'])) + { + $reihungstest->freigeschaltet = false; + $reihungstest->max_teilnehmer = ''; + $reihungstest->oeffentlich = false; + $reihungstest->stufe = filter_input(INPUT_POST, 'stufe', FILTER_VALIDATE_INT); + $reihungstest->aufnahmegruppe_kurzbz = filter_input(INPUT_POST, 'aufnahmegruppe'); + $reihungstest->anmeldefrist = $datum_obj->formatDatum($_POST['anmeldefrist']); + $reihungstest->updateamum = date('Y-m-d H:i:s'); + $reihungstest->updatevon = $user; + } + else + { + $reihungstest->freigeschaltet = isset($_POST['freigeschaltet']); + $reihungstest->max_teilnehmer = filter_input(INPUT_POST, 'max_teilnehmer', FILTER_VALIDATE_INT); + $reihungstest->oeffentlich = filter_input(INPUT_POST, 'oeffentlich', FILTER_VALIDATE_BOOLEAN); + $reihungstest->stufe = filter_input(INPUT_POST, 'stufe', FILTER_VALIDATE_INT); + $reihungstest->aufnahmegruppe_kurzbz = filter_input(INPUT_POST, 'aufnahmegruppe'); + $reihungstest->anmeldefrist = $datum_obj->formatDatum($_POST['anmeldefrist']); + $reihungstest->updateamum = date('Y-m-d H:i:s'); + $reihungstest->updatevon = $user; + } + $reihungstest->studiengang_kz = $_POST['studiengang_kz']; + //$reihungstest->ort_kurzbz = $_POST['ort_kurzbz']; + $reihungstest->studiensemester_kurzbz = filter_input(INPUT_POST, 'studiensemester_kurzbz'); + $reihungstest->anmerkung = $_POST['anmerkung']; + $reihungstest->datum = $datum_obj->formatDatum($_POST['datum']); + $reihungstest->uhrzeit = $_POST['uhrzeit']; + + if($reihungstest->save()) + { + if (isset($_POST['ort_kurzbz']) && $_POST['ort_kurzbz']!='') + { + $ort = new ort(); + + if (!$ort->load($_POST['ort_kurzbz'])) + echo 'Die Bezeichnung des Ortes ist ungueltig oder wurde nicht gefunden'; + else + { + if($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'sui')) + { + $orte_zugeteilt = new reihungstest(); + $orte_zugeteilt->getOrteReihungstest($reihungstest->reihungstest_id); + $zugeteilt = false; + foreach ($orte_zugeteilt->result AS $row) + { + if ($row->ort_kurzbz == $_POST['ort_kurzbz']) + { + $zugeteilt = true; + break; + } + } + // Check, ob der Raum schon diesem RT zugeteilt ist + if ($zugeteilt == false) + { + $add_ort = new reihungstest(); + $add_ort->new = true; + $add_ort->reihungstest_id = $reihungstest->reihungstest_id; + $add_ort->ort_kurzbz = $_POST['ort_kurzbz']; + $add_ort->uid = null; + + if ($add_ort->saveOrtReihungstest()) + { + echo 'Daten wurden erfolgreich gespeichert '; + } + else + echo 'Fehler beim Speichern der Raumzuordnung: '.$db->convert_html_chars($reihungstest->errormsg).''; + } + else + echo 'Der Raum '.$_POST['ort_kurzbz'].' ist bereits diesem Reihungstest zugeteilt'; + } + else + die($rechte->errormsg); + } + } + if (isset($_POST['studienplan_id']) && $_POST['studienplan_id']!='') + { + $rt_stpl = new reihungstest(); + $rt_stpl->new = true; + $rt_stpl->reihungstest_id = $reihungstest->reihungstest_id; + $rt_stpl->studienplan_id = $_POST['studienplan_id']; + + if ($rt_stpl->saveStudienplanReihungstest()) + { + echo 'Daten wurden erfolgreich gespeichert '; + } + else + echo 'Fehler beim Speichern des Studienplans: '.$db->convert_html_chars($rt_stpl->errormsg).''; + } + $reihungstest_id = $reihungstest->reihungstest_id; + $stg_kz = $reihungstest->studiengang_kz; + $studiensemester_kurzbz = $reihungstest->studiensemester_kurzbz; + } + else + { + echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($reihungstest->errormsg).''; + } + } + $neu=false; +} + +if ($reihungstest_id != '' || isset($_POST['reihungstest_id'])) +{ + $orte = new Reihungstest(); + $orte->getOrteReihungstest($reihungstest_id != ''?$reihungstest_id:$_POST['reihungstest_id']); + $orte_array = array(); + foreach ($orte->result AS $row) + { + // Wenn Arbeitsplaetze in DB gepflegt sind, Schwund herausrechnen (wenn gesetzt) sonst max_person verwenden und Schwund herausrechnen (wenn gesetzt) + $raum = new Ort(); + $raum->load($row->ort_kurzbz); + if ($raum->arbeitsplaetze != '') + { + if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) + $orte_array[$row->ort_kurzbz] = $raum->arbeitsplaetze - ceil(($raum->arbeitsplaetze/100)*REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND); + else + $orte_array[$row->ort_kurzbz] = $raum->arbeitsplaetze; + } + else + { + if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) + $orte_array[$row->ort_kurzbz] = $raum->max_person - ceil(($raum->max_person/100)*REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND); + else + $orte_array[$row->ort_kurzbz] = $raum->max_person; + } + } + $arbeitsplaetze_gesamt = array_sum($orte_array); +} + +if(isset($_POST['raumzuteilung_speichern'])) +{ + if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'su')) + { + die($rechte->errormsg); + } + + $raumzuteilung = new reihungstest(); + + if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') + { + //Reihungstest laden + if(!$raumzuteilung->load($_POST['reihungstest_id'])) + { + die($raumzuteilung->errormsg); + } + if (isset($_POST['checkbox'])) + { + $person_ids = $_POST['checkbox']; + + foreach ($person_ids AS $key=>$value) + { + $load_person = new reihungstest(); + if ($load_person->getPersonReihungstest($key, $_POST['reihungstest_id'])) + { + $raumzuteilung->new = false; + $raumzuteilung->rt_person_id = $load_person->rt_person_id; + $raumzuteilung->anmeldedatum = $load_person->anmeldedatum; + $raumzuteilung->teilgenommen = $load_person->teilgenommen; + $raumzuteilung->punkte = $load_person->punkte; + $raumzuteilung->studienplan_id = $load_person->studienplan_id; + + $raumzuteilung->reihungstest_id = $load_person->reihungstest_id; + $raumzuteilung->person_id = $key; + $raumzuteilung->ort_kurzbz = $_POST['raumzuteilung']; + } + else + die('PersonID '.$key.' hat keine korrekte Zuordnung -> Abbruch'); + + if (!$raumzuteilung->savePersonReihungstest()) + { + echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($reihungstest->errormsg).''; + } + } + } + $reihungstest_id = $_POST['reihungstest_id']; + } + $neu=false; +} + +// Uebertraegt die Punkte eines Prestudenten ins FAS +if(isset($_GET['type']) && $_GET['type']=='savertpunkte') +{ + $prestudent = new prestudent(); + $prestudent->load($prestudent_id); + + if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('assistenz', $prestudent->studiengang_kz, 'sui')) + { + $rtperson = new reihungstest(); + $rtperson->loadReihungstestPerson($_GET['rt_person_id']); + $rtperson->punkte = str_replace(',','.',$rtpunkte); + $rtperson->new = false; + $rtperson->teilgenommen = true; + if(!$rtperson->savePersonReihungstest()) + { + echo 'Fehler:'.$rtperson->errormsg.''; + } + } + else + { + echo '
Sie haben keine Berechtigung zur Uebernahme der Punkte fuer '.$db->convert_html_chars($row->nachname).' '.$db->convert_html_chars($row->vorname).'
'; + } +} + +// Uebertraegt alle Punkte eines Reihungstests ins FAS +if(isset($_GET['type']) && $_GET['type']=='saveallrtpunkte') +{ + $errormsg=''; + $qry = "SELECT + prestudent_id, tbl_prestudent.studiengang_kz, nachname, vorname, + tbl_studiengang.oe_kurzbz, rt_person_id, tbl_person.person_id + FROM + public.tbl_prestudent + JOIN public.tbl_person USING(person_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + JOIN public.tbl_rt_person USING(person_id) + JOIN lehre.tbl_studienplan ON(tbl_rt_person.studienplan_id=tbl_studienplan.studienplan_id) + JOIN lehre.tbl_studienordnung ON(tbl_studienplan.studienordnung_id=tbl_studienordnung.studienordnung_id) + WHERE + tbl_studienordnung.studiengang_kz=tbl_prestudent.studiengang_kz + AND tbl_rt_person.rt_id=".$db->db_add_param($reihungstest_id, FHC_INTEGER); + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + if($rechte->isBerechtigt('student/stammdaten', $row->oe_kurzbz,'sui')) + { + $prestudent = new prestudent(); + $prestudent->load($row->prestudent_id); + + $reihungstest = new reihungstest(); + if($reihungstest->loadReihungstestPerson($row->rt_person_id)) + { + $pruefling = new pruefling(); + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $rtpunkte = $pruefling->getReihungstestErgebnisPerson($row->person_id, true, $reihungstest->reihungstest_id); + else + $rtpunkte = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $reihungstest->reihungstest_id); + + $reihungstest->punkte = str_replace(',','.',$rtpunkte); + $reihungstest->reihungstestangetreten = true; + $reihungstest->save(false); + $reihungstest->new = false; + + if($rtpunkte!==false) + { + $reihungstest->punkte = str_replace(',','.',$rtpunkte); + $reihungstest->teilgenommen = true; + $reihungstest->save(false); + $reihungstest->new = false; + + if(!$reihungstest->savePersonReihungstest()) + { + $errormsg .='
Fehler:'.$reihungstest->errorsmg; + } + } + } + } + else + { + $errormsg .= "
Sie haben keine Berechtigung zur Uebernahme der Punkte fuer $row->nachname $row->vorname"; + } + } + if($errormsg!='') + { + echo ''.$db->convert_html_chars($errormsg).''; + } + } +} + +// Verteilt alle BewerberInnen gleichmaessig auf die Raeume +if(isset($_GET['type']) && $_GET['type']=='verteilen') +{ + if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'sui')) + { + die($rechte->errormsg); + } + + if($reihungstest_id!='') + { + $errormsg=''; + $qry = "SELECT + person_id, + vorname, + nachname, + ort_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_person USING (person_id) + LEFT JOIN public.tbl_rt_person USING (person_id) + WHERE + tbl_rt_person.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) + ORDER BY nachname,vorname "; + + $raumzuteilung = new reihungstest(); + if($result = $db->db_query($qry)) + { + $anz_personen = $db->db_num_rows($result); + + if($arbeitsplaetze_gesamt!=0) + { + $multiplikator = $anz_personen/$arbeitsplaetze_gesamt; + foreach ($orte->result AS $ort) + { + $counter = 0; + + $anz_zugeteilte = new Reihungstest(); + $anz_zugeteilte->getPersonReihungstestOrt($reihungstest_id, $ort->ort_kurzbz); + $anz_zugeteilte = count($anz_zugeteilte->result); + + $anteil = round(($orte_array[$ort->ort_kurzbz] * $multiplikator))-$anz_zugeteilte; + + if ($orte_array[$ort->ort_kurzbz] == 0 || ($anteil - $anz_zugeteilte)<=0) + continue; + + while($row = $db->db_fetch_object($result)) + { + //Nur Personen ohne Raumzuteilung verteilen + if ($row->ort_kurzbz == '') + { + $load_person = new reihungstest(); + if ($load_person->getPersonReihungstest($row->person_id, $reihungstest_id)) + { + $raumzuteilung->new = false; + $raumzuteilung->rt_person_id = $load_person->rt_person_id; + $raumzuteilung->anmeldedatum = $load_person->anmeldedatum; + $raumzuteilung->teilgenommen = $load_person->teilgenommen; + $raumzuteilung->punkte = $load_person->punkte; + $raumzuteilung->studienplan_id = $load_person->studienplan_id; + + $raumzuteilung->reihungstest_id = $load_person->reihungstest_id; + $raumzuteilung->person_id = $row->person_id; + $raumzuteilung->ort_kurzbz = $ort->ort_kurzbz; + } + else + { + die('Person zuteilung nicht gefunden'); + } + + if (!$raumzuteilung->savePersonReihungstest()) + { + echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($raumzuteilung->errormsg).''; + } + $counter++; + + //Wenn 0 Arbeitsplaetze vorhanden sind oder die max. Arbeitsplatzanzahl erreicht ist + if ($orte_array[$ort->ort_kurzbz] == 0 || ($anteil - $counter)<=0) + break; + } + } + } + } + else + { + echo 'Nicht genug Raumkapazität vorhanden'; + } + } + + } + $neu=false; +} + +// Fuellt die Raeume aufsteigend mit BewerberInnen an +if(isset($_GET['type']) && $_GET['type']=='auffuellen') +{ + if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'sui')) + { + die($rechte->errormsg); + } + + if($reihungstest_id!='') + { + $orte = new Reihungstest(); + $orte->getOrteReihungstest($reihungstest_id); + + $errormsg=''; + $qry = "SELECT + person_id, + vorname, + nachname, + ort_kurzbz + FROM + public.tbl_prestudent + JOIN + public.tbl_person USING (person_id) + LEFT JOIN public.tbl_rt_person USING (person_id) + WHERE + tbl_rt_person.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_rt_person.ort_kurzbz IS NULL + ORDER BY nachname,vorname "; + + $raumzuteilung = new reihungstest(); + if($result = $db->db_query($qry)) + { + foreach ($orte->result AS $ort) + { + $counter = 0; + + $anz_zugeteilte = new Reihungstest(); + $anz_zugeteilte->getPersonReihungstestOrt($reihungstest_id, $ort->ort_kurzbz); + $anz_zugeteilte = count($anz_zugeteilte->result); + + if ($orte_array[$ort->ort_kurzbz] == 0 || ($orte_array[$ort->ort_kurzbz]-$anz_zugeteilte)<=0) + continue; + + while($row = $db->db_fetch_object($result)) + { + $load_person = new reihungstest(); + + if ($load_person->getPersonReihungstest($row->person_id, $reihungstest_id)) + { + $raumzuteilung->new = false; + $raumzuteilung->rt_person_id = $load_person->rt_person_id; + $raumzuteilung->anmeldedatum = $load_person->anmeldedatum; + $raumzuteilung->teilgenommen = $load_person->teilgenommen; + $raumzuteilung->punkte = $load_person->punkte; + $raumzuteilung->studienplan_id = $load_person->studienplan_id; + + $raumzuteilung->reihungstest_id = $load_person->reihungstest_id; + $raumzuteilung->person_id = $row->person_id; + $raumzuteilung->ort_kurzbz = $ort->ort_kurzbz; + } + else + die('Personen zuteilung nicht gefunden'); + + if (!$raumzuteilung->savePersonReihungstest()) + { + echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($raumzuteilung->errormsg).''; + } + $counter++; + + //Wenn 0 Arbeitsplaetze vorhanden sind oder die max. Arbeitsplatzanzahl erreicht ist + if ($orte_array[$ort->ort_kurzbz] == 0 || ($orte_array[$ort->ort_kurzbz]-($anz_zugeteilte+$counter))<=0) + break; + } + } + } + + } + $neu=false; +} + +if(isset($_POST['aufsicht']) && $_POST['aufsicht']!='' && !isset($_POST['kopieren'])) +{ + + if(!$rechte->isBerechtigt('lehre/reihungstest', null, 'su')) + { + die($rechte->errormsg); + } + + $save_aufsicht = new reihungstest(); + + if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') + { + //Reihungstest laden + if(!$save_aufsicht->load($_POST['reihungstest_id'])) + { + die($save_aufsicht->errormsg); + } + $aufsichtspersonen = $_POST['aufsicht']; + + foreach ($aufsichtspersonen AS $key=>$value) + { + // UID aus POST-String auslesen + $length = (strrpos($value, ')')) - (strpos($value, '(')); + $uid = substr($value,strpos($value, '(')+1, $length-1); + + $benutzer = new benutzer(); + if ($uid!='' && !$benutzer->load($uid)) + echo 'Die UID '.$value.' konnte nicht gefunden werden'; + else + { + $save_aufsicht->new = false; + $save_aufsicht->reihungstest_id = $_POST['reihungstest_id']; + $save_aufsicht->ort_kurzbz = $key; + $save_aufsicht->uid = $uid; + if (!$save_aufsicht->saveOrtReihungstest()) + { + echo 'Fehler beim Speichern der Daten: '.$db->convert_html_chars($reihungstest->errormsg).''; + } + } + } + $reihungstest_id = $save_aufsicht->reihungstest_id; + $stg_kz = $save_aufsicht->studiengang_kz; + } + $neu=false; +} + +if(isset($_POST['delete_ort'])) +{ + if(!$rechte->isBerechtigt('lehre/reihungstestOrt', null, 'suid')) + { + die($rechte->errormsg); + } + + if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') + { + $delete_ort = new reihungstest(); + $delete_ort->getPersonReihungstestOrt($_POST['reihungstest_id'], $_POST['delete_ort']); + + if (count($delete_ort->result) == 0) + { + if (!$delete_ort->deleteOrtReihungstest($_POST['reihungstest_id'], $_POST['delete_ort'])) + echo 'Fehler beim löschen der Raumzuordnung: '.$db->convert_html_chars($reihungstest->errormsg).''; + } + else + echo 'Dem Raum '.$_POST['delete_ort'].' sind noch '.count($delete_ort->result).' Personen zugeteilt. Bitte entfernen Sie zuerst diese Zuteilungen'; + + $reihungstest_id = $_POST['reihungstest_id']; + $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; + } + $neu=false; +} + +if(isset($_POST['delete_studienplan'])) //@todo: Check, ob Zuordnungen zu diesem Studienplan vorhanden sind. Wenn ja, nicht loeschen! +{ + if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') + { + $delete_studienplan = new reihungstest(); + + if (!$delete_studienplan->deleteStudienplanReihungstest($_POST['reihungstest_id'], $_POST['delete_studienplan'])) + echo 'Fehler beim löschen der Studienplanzuteilung: '.$db->convert_html_chars($delete_studienplan->errormsg).''; + + $reihungstest_id = $_POST['reihungstest_id']; + $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; + } + $neu=false; +} + +if(isset($_POST['deleteReihungstest'])) //@todo: Check, ob Zuordnungen zu diesem Studienplan vorhanden sind. Wenn ja, nicht loeschen! +{ + if(isset($_POST['reihungstest_id']) && $_POST['reihungstest_id']!='') + { + $deleteReihungstest = new reihungstest(); + + if (!$deleteReihungstest->delete($_POST['reihungstest_id'])) + echo 'Fehler beim löschen des Reihungstests: '.$db->convert_html_chars($deleteReihungstest->errormsg).''; + + $reihungstest_id = ''; + $studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; + } + $neu = true; +} + +echo '
'; + +// Studiengang DropDown +echo ""; +$studienplan_obj = new studienplan(); +$studienplan_obj->getStudienplaeneFromSem($stg_kz, $studiensemester_kurzbz); +$studienordnung_arr = array(); +$studienplan_arr = array(); +$studienplaene_verwendet = array(); + +foreach($studienplan_obj->result as $row_sto) +{ + $studienordnung_arr[$row_sto->studienordnung_id]['bezeichnung']=$row_sto->bezeichnung_studienordnung; + $studienplan_arr[$row_sto->studienordnung_id][$row_sto->studienplan_id]['bezeichnung']=$row_sto->bezeichnung_studienplan; + + $studienplan_arr[$row_sto->studienordnung_id][$row_sto->studienplan_id]['orgform_kurzbz']=$row_sto->orgform_kurzbz; + $studienplan_arr[$row_sto->studienordnung_id][$row_sto->studienplan_id]['sprache']=(isset($sprachen_arr[$row_sto->sprache])?$sprachen_arr[$row_sto->sprache]:''); + $studienplaene_verwendet[$row_sto->studienplan_id] = $row_sto->bezeichnung_studienplan; +} + +// Pruefen ob uebergebene StudienplanID in Auswahl enthalten +// ist und ggf auf leer setzen +if($studienplan_id!='') +{ + $studienplan_found=false; + foreach($studienplan_arr as $stoid=>$row_sto) + { + if(array_key_exists($studienplan_id, $studienplan_arr[$stoid])) + { + $studienplan_found=true; + break; + } + } + if(!$studienplan_found) + { + $studienplan_id=''; + } +} +// Studiensemester DropDown +echo ""; + +//Reihungstest DropDown +$reihungstest = new reihungstest(); +if($stg_kz==-1 && $studiensemester_kurzbz=='') + $reihungstest->getAll(date('Y').'-01-01'); //Alle Reihungstests ab diesem Jahr laden +elseif($stg_kz==-1 && $studiensemester_kurzbz!='') + $reihungstest->getReihungstest('','datum DESC,uhrzeit DESC',$studiensemester_kurzbz); +else + $reihungstest->getReihungstest($stg_kz,'datum DESC,uhrzeit DESC',$studiensemester_kurzbz); + + +echo "'; +echo ""; +echo '  '; +echo "
"; + +if($reihungstest_id=='') + $neu=true; +$reihungstest = new reihungstest(); + +if(!$neu) +{ + if(!$reihungstest->load($reihungstest_id)) + die('Reihungstest existiert nicht'); +} +else +{ + if($stg_kz!=-1 && $stg_kz!='') + $reihungstest->studiengang_kz = $stg_kz; + $reihungstest_id=''; + $reihungstest->datum = date('Y-m-d'); + $reihungstest->uhrzeit = date('H:i:s'); + $reihungstest->anmeldefrist = date('Y-m-d', time() - 60 * 60 * 24); +} + +$studienplaene_arr = array(); +$studienplaene = new reihungstest(); +$studienplaene->getStudienplaeneReihungstest($reihungstest->reihungstest_id); +foreach ($studienplaene->result AS $row) +{ + $studienplan = new studienplan(); + $studienplan->loadStudienplan($row->studienplan_id); + $studienplaene_arr[ $row->studienplan_id] = $studienplan->bezeichnung; +} + +$studienplaene_list = implode(',', array_keys($studienplaene_arr)); + +//Formular zum Bearbeiten des Reihungstests +?> +
+
'> + + + + + '; + } + else + { + echo ''; + echo ''; + } + ?> +
+ + + + + + + + + + + + + '; + } + + if($neu) + { + echo ''; + echo ''; + echo ''; + } + else + { + echo ''; + + if(!$neu) + { + //echo ''; + } + else + echo ''; + } + + $arbeitsplaetze_sum = 0; + if(!$neu) + { + echo ''; + //echo ''; + echo ''; + } + else + { + echo ''; + } + $orte = new Reihungstest(); + $orte->getOrteReihungstest($reihungstest->reihungstest_id); + foreach ($orte->result AS $row) + { + $person = new Person(); + $person->getPersonFromBenutzer($row->uid); + if ($row->uid != '') + $anzeigename = $person->vorname.' '.$person->nachname.' ('.$row->uid.')'; + else + $anzeigename = ''; + + echo ''; + echo ''; + $arbeitsplaetze_sum = $arbeitsplaetze_sum + $orte_array[$row->ort_kurzbz]; + } + if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) + echo ''; + //echo '
Studiengang + +
Stufe + +   Studiensemester + +
Gruppe + +
Studienplan'; + + // Studienplan DropDown + echo ""; + echo '
Studienpläne'; + echo ''; + echo ''; + + foreach ($studienplaene->result AS $row) + { + $studienplan = new studienplan(); + $studienplan->loadStudienplan($row->studienplan_id); + + echo ''; + echo ''; + echo ''; + echo ''; + } + //echo '
'; + echo ''; + echo ''; + echo '
 '.$studienplan->bezeichnung.' ('.$studienplan->studienplan_id.')
Nach dem Anlegen eines Termins, können Sie weitere Studienpläne zuordnen
Ort'; + if ($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'sui')) + { + echo ''; + echo '
Keine Berechtigung zum zuteilen von Räumen
 '.$row->ort_kurzbz.' ('.$orte_array[$row->ort_kurzbz].' Arbeitsplätze'; + if(defined('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND') && REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND > 0) + echo '*'; + echo ')'; + echo ' '; + if ($rechte->isBerechtigt('lehre/reihungstestOrt', null, 'suid')) + echo ''; + echo '
 * Inklusive '.REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND.'% Schwund
OrtNach dem Anlegen eines Termins, können Sie Räume zuordnen
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Anmerkung (max. 64 Zeichen)
Datum
Uhrzeit (Format: HH:MM)
Anmeldefrist
Max TeilnehmerInnen + + (optional; laut Raumkapazität + 0) + echo ' inklusive '.REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND.'% Schwund)'; + else + echo ')'; + ?> +
Öffentlich + + oeffentlich ? 'checked="checked"' : '' ?>> + (Für Bewerber sichtbar/auswählbar) +
Freigeschaltet + freigeschaltet ? 'checked="checked"' : '' ?>> + (Kurz vor Testbeginn aktivieren) +
 
+ + Kopie erstellen'; + + if($rechte->isBerechtigt('lehre/reihungstest', null, 'suid')) + { + $anzahl_teilnehmer = new reihungstest(); + $anzahl_teilnehmer = $anzahl_teilnehmer->getTeilnehmerAnzahl($reihungstest_id); + + if (isset($orte) && count($orte->result) == 0 && isset($studienplaene) && count($studienplaene->result) == 0 && $anzahl_teilnehmer == 0 && $reihungstest_id != '') + echo ''; + else + echo ''; + } + ?> +
+ + + +
+ +
+'; +if($reihungstest_id!='') +{ + echo 'Excel Export'; + echo 'Punkte ins FAS übertragen'; + echo 'Mail an alle senden'; +} +echo 'Auswertung'; +echo 'Anmeldungen zusammenlegen'; +if($rechte->isBerechtigt('basis/testtool', null, 'suid')) +{ + echo 'Administration
'; +} +echo ''; +echo ''; +if($reihungstest_id!='') +{ + //Liste der Interessenten die zum Reihungstest angemeldet sind + $qry = " + SELECT + rt_person_id, + rt_id, + prestudent_id, + tbl_rt_person.person_id, + vorname, + nachname, + ort_kurzbz, + studienplan_id, + studiengang_kz, + gebdatum, + geschlecht, + 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 + 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_prestudent ON (tbl_rt_person.person_id=tbl_prestudent.person_id) + WHERE + rt_id = ".$db->db_add_param($reihungstest_id, FHC_INTEGER); + + $qry .= " 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"; + + $mailto = ''; + $result_arr = array(); + + $orte = new Reihungstest(); + $orte->getOrteReihungstest($reihungstest_id); + $orte_zuteilung_array = array(); + $orte_zuteilung_array['ohne'] = 0; + foreach ($orte->result AS $row) + $orte_zuteilung_array[$row->ort_kurzbz] = 0; + + if($result = $db->db_query($qry)) + { + while($row = $db->db_fetch_object($result)) + { + $result_arr[] = $row; + + if (is_null($row->ort_kurzbz)) + $orte_zuteilung_array['ohne']++; + else + $orte_zuteilung_array[$row->ort_kurzbz]++; + } + } + + echo ''; + echo '
'; + echo '
'; + echo 'Anzahl: '.$db->db_num_rows($result).' ('.($reihungstest->max_teilnehmer!=''?$reihungstest->max_teilnehmer:$arbeitsplaetze_sum).' Plätze verfügbar)'; + if ( ($reihungstest->max_teilnehmer!='' && $db->db_num_rows($result) > $reihungstest->max_teilnehmer) + || ($reihungstest->max_teilnehmer=='' && $db->db_num_rows($result) > $arbeitsplaetze_sum) + && !empty($orte_array) + ) + echo '
Achtung! Anzahl Arbeitsplätze überschritten'; + echo '
'; + echo '
Prestudent ID
'; + echo '
Person ID
'; + echo '
Geschlecht
'; + echo '
Studiengang
'; + echo '
OrgForm
'; + echo '
Studienplan
'; + echo '
Einstiegssemester
'; + echo '
Geburtsdatum
'; + echo '
EMail
'; + echo '
Absolvierte Tests
'; + echo '
Ergebnis
'; + echo '
FAS
'; + echo '
'; + echo '
'; + echo ''; + + + $pruefling = new pruefling(); + + $cnt = 0; + if ($orte_zuteilung_array['ohne']>0) + { + echo ''; + } + foreach ($orte->result AS $ort) + { + $cnt++; + + echo ''; + } + + echo '
'; + echo '
Ohne Raumzuteilung ('.$orte_zuteilung_array['ohne'].')
'; + echo ''; + echo '
'; + echo ''; + echo ' + + + + + + + + + + + + + + + + + + + + '; + + foreach ($result_arr AS $row) + { + $rt_in_anderen_stg=''; + $rtergebnis = ''; + $rt_prestudent_arr = array(); + + if($punkteberechnung == 'true') + { + //Daten für Spalte bereits absolvierte Verfahren + $qry = "SELECT + distinct tbl_reihungstest.reihungstest_id, + tbl_pruefling.pruefling_id, + tbl_prestudent.prestudent_id, + tbl_rt_person.person_id + FROM + public.tbl_rt_person + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN public.tbl_prestudent USING(person_id) + JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id) + JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id) + LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE + (tbl_rt_person.anmeldedatum is null OR tbl_rt_person.anmeldedatum<=tbl_reihungstest.datum) + AND tbl_reihungstest.datum >=(SELECT min(begintime)::date FROM testtool.tbl_pruefling_frage WHERE pruefling_id=tbl_pruefling.pruefling_id AND tbl_reihungstest.datum>=begintime-'1 days'::interval) AND (tbl_reihungstest.stufe is null or tbl_reihungstest.stufe=1) + AND person_id=".$db->db_add_param($row->person_id, FHC_INTEGER); + + if($result = $db->db_query($qry)) + { + while($obj = $db->db_fetch_object($result)) + { + array_push($rt_prestudent_arr, $obj); + } + } + + //Ergebnis ermitteln + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $rtergebnis = $pruefling->getReihungstestErgebnisPrestudent($row->prestudent_id, true, $reihungstest->reihungstest_id); + else + $rtergebnis = $pruefling->getReihungstestErgebnisPrestudent($row->prestudent_id, false, $reihungstest->reihungstest_id); + + + //Ausgabe für bereits absolvierte Verfahren + foreach($rt_prestudent_arr as $item) + { + $pruefling->getPruefling($item->prestudent_id); + $rt = new Reihungstest(); + $rt->load($item->reihungstest_id); + $rt_letztes_login = $datum_obj->formatDatum($pruefling->registriert, 'Y-m-d'); + $rt_antrittstermin = $datum_obj->formatDatum($rt->datum, 'Y-m-d'); + + //Wenn bereits absolvierte Verfahren vorhanden + if($item->prestudent_id != $row->prestudent_id || $rt_letztes_login < $rt_antrittstermin) + { + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true, $item->reihungstest_id); + else + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, false, $item->reihungstest_id); + + if($erg !== false) + { + $rt_in_anderen_stg .= number_format($erg, 2).((FAS_REIHUNGSTEST_PUNKTE) ? ' Punkte' : ' %').' im Studiengang '.$studiengang->kuerzel_arr[$pruefling->studiengang_kz].'
'; + + if ($item->prestudent_id == $row->prestudent_id && $rt_letztes_login < $rt_antrittstermin) + { + $rt_in_anderen_stg .= '(Letzter '.$studiengang->kuerzel_arr[$pruefling->studiengang_kz].'-Antritt: '.$datum_obj->formatDatum($rt_letztes_login, 'd.m.Y').',
'; + $rt_in_anderen_stg .= 'absolvierte RT-Gebiete entsperren)
'; + } + } + } + } + } + + if ($row->ort_kurzbz == '') + { + if(isset($studienplaene_arr[$row->studienplan_id])) + $studienplan_bezeichnung = $studienplaene_arr[$row->studienplan_id]; + else + { + $studienplan_obj = new studienplan(); + $studienplan_obj->loadStudienplan($row->studienplan_id); + $studienplan_bezeichnung = $studienplan_obj->bezeichnung; + $studienplaene_arr[$row->studienplan_id]=$studienplan_obj->bezeichnung; + } + echo ' + + + + + + + + + + + + + + + + + '; + + $mailto.= ($mailto!=''?',':'').$row->email; + } + } + echo '
+ + + + + Prestudent IDPerson IDNachnameVornameGeschlechtStudiengangOrgFormStudienplanEinstiegssemesterGeburtsdatumEMailbereits absolvierte VerfahrenErgebnisFAS
'.$db->convert_html_chars($row->prestudent_id).''.$db->convert_html_chars($row->person_id).''.$db->convert_html_chars($row->nachname).''.$db->convert_html_chars($row->vorname).''.$db->convert_html_chars($row->geschlecht).''.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).''.$db->convert_html_chars($row->orgform_kurzbz!=''?$row->orgform_kurzbz:' ').''.$db->convert_html_chars($studienplan_bezeichnung).' ('.$row->studienplan_id.')'.$db->convert_html_chars($row->ausbildungssemester).''.$db->convert_html_chars($row->gebdatum!=''?$datum_obj->convertISODate($row->gebdatum):' ').''.$rt_in_anderen_stg.''.($rtergebnis == '' || $rtergebnis===false?'-':number_format($rtergebnis,2,'.','')).' %'; + if($rtergebnis!==false && $rtergebnis != '' && $row->punkte=='') + echo 'übertragen'; + else + { + if($row->punkte!='') + echo number_format($row->punkte,2,'.',''); + } + echo '
'; + + echo ''; + echo ''; + echo '
'; + echo '
'; + if ($orte_array[$ort->ort_kurzbz] - $orte_zuteilung_array[$ort->ort_kurzbz] < 0) + $style = 'text-align: center; margin: 0 5px 0 5px; color: red'; + else + $style = 'text-align: center; margin: 0 5px 0 5px;'; + echo '
'.$ort->ort_kurzbz.' ('.$orte_zuteilung_array[$ort->ort_kurzbz].'/'.$orte_array[$ort->ort_kurzbz].')
'; + + if ($orte_zuteilung_array[$ort->ort_kurzbz]>0) + { + echo '
'; + echo ''; + echo ' + + + + + + + + + + + + + + + + + + + + '; + $cnt_personen = 0; + foreach ($result_arr AS $row) + { + $rt_in_anderen_stg=''; + $rtergebnis = ''; + if($punkteberechnung == 'true') + { + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id,true, $reihungstest->reihungstest_id); + else + $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $reihungstest->reihungstest_id); + $prestudent = new prestudent(); + $prestudent->getPrestudenten($row->person_id); + $rt_in_anderen_stg=''; + foreach($prestudent->result as $item) + { + if($item->prestudent_id!=$row->prestudent_id) + { + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true); + else + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id); + if($erg!==false) + { + $rt_in_anderen_stg.=number_format($erg,2).' Punkte im Studiengang '.$studiengang->kuerzel_arr[$item->studiengang_kz].'
'; + } + } + } + } + if ($row->ort_kurzbz == $ort->ort_kurzbz) + { + + if(isset($studienplaene_arr[$row->studienplan_id])) + $studienplan_bezeichnung = $studienplaene_arr[$row->studienplan_id]; + else + { + $studienplan_obj = new studienplan(); + $studienplan_obj->loadStudienplan($row->studienplan_id); + $studienplan_bezeichnung = $studienplan_obj->bezeichnung; + $studienplaene_arr[$row->studienplan_id]=$studienplan_obj->bezeichnung; + } + + $cnt_personen++; + echo ' + + + + + + + + + + + + + + + + + '; + + $mailto.= ($mailto!=''?',':'').$row->email; + } + } + echo '
+ + + + + Prestudent IDPerson IDNachnameVornameGeschlechtStudiengangOrgFormStudienplanEinstiegssemesterGeburtsdatumEMailbereits absolvierte VerfahrenErgebnisFAS
'.$db->convert_html_chars($row->prestudent_id).''.$db->convert_html_chars($row->person_id).''.$db->convert_html_chars($row->nachname).''.$db->convert_html_chars($row->vorname).''.$db->convert_html_chars($row->geschlecht).''.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).''.$db->convert_html_chars($row->orgform_kurzbz!=''?$row->orgform_kurzbz:' ').''.$db->convert_html_chars($studienplan_bezeichnung).' ('.$row->studienplan_id.')'.$db->convert_html_chars($row->ausbildungssemester).''.$db->convert_html_chars($row->gebdatum!=''?$datum_obj->convertISODate($row->gebdatum):' ').''.$rt_in_anderen_stg.''.($rtergebnis==0?'-':number_format($rtergebnis,2,'.','')).''.($rtergebnis!=0 && $row->punkte==''?'übertragen':$row->punkte).'
'; + + echo ''; + echo ''; + echo '
'; + } + else + echo '
Leer
'; + + echo '
'; +} ?> + + + From e623b3ad0bfc1005f73ee9fa8865c71aedf171fe Mon Sep 17 00:00:00 2001 From: cris-technikum <31620366+cris-technikum@users.noreply.github.com> Date: Wed, 20 Sep 2017 13:27:54 +0200 Subject: [PATCH 11/15] relative URL set change static to relative URL --- vilesci/stammdaten/reihungstestverwaltung.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 77b32db44..480084f4a 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -2147,7 +2147,7 @@ if($reihungstest_id!='') if ($item->prestudent_id == $row->prestudent_id && $rt_letztes_login < $rt_antrittstermin) { $rt_in_anderen_stg .= '(Letzter '.$studiengang->kuerzel_arr[$pruefling->studiengang_kz].'-Antritt: '.$datum_obj->formatDatum($rt_letztes_login, 'd.m.Y').',
'; - $rt_in_anderen_stg .= 'absolvierte RT-Gebiete entsperren)
'; + $rt_in_anderen_stg .= 'absolvierte RT-Gebiete entsperren)
'; } } } From 35e35b4110c649874a3dcddcbf8a1a0e0627b50f Mon Sep 17 00:00:00 2001 From: Paolo Date: Wed, 20 Sep 2017 17:58:46 +0200 Subject: [PATCH 12/15] - Now UDFLib->_popUDFParameters returns the result without storing it in UDFs property - UDFs property has been removed --- application/libraries/UDFLib.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/application/libraries/UDFLib.php b/application/libraries/UDFLib.php index f3a2ae735..1e16c11ac 100644 --- a/application/libraries/UDFLib.php +++ b/application/libraries/UDFLib.php @@ -46,7 +46,6 @@ class UDFLib const PHRASES_APP_NAME = 'core'; // Name of the app parameter used to retrive phrases private $_ci; // Code igniter instance - private $UDFs; // Associative array containing names and values of the given UDF parameters /** * Loads fhc helper @@ -56,8 +55,6 @@ class UDFLib $this->_ci =& get_instance(); $this->_ci->load->helper('fhc'); - - $this->UDFs = array(); // by default is an empty array } // ------------------------------------------------------------------------------------------------- @@ -213,7 +210,7 @@ class UDFLib { // Get udf values from $data & clean udf values from $data // NOTE: Must be performed here because the load method populates the property UDFs too - $this->_popUDFParameters($data); + $udfsParameters = $this->_popUDFParameters($data); $requiredUDFsArray = array(); // contains a list of required UDFs // Contains the UDFs values to be stored @@ -231,7 +228,7 @@ class UDFLib $decodedUDFDefinition = $decodedUDFDefinitions[$i]; // Definition of a single UDF // Loops through the UDFs values that should be stored - foreach ($this->UDFs as $key => $val) + foreach ($udfsParameters as $key => $val) { $tmpValidate = success(true); // temporary variable used to store the returned value from _validateUDFs @@ -381,14 +378,18 @@ class UDFLib */ private function _popUDFParameters(&$data) { + $udfsParameters = array(); + foreach ($data as $key => $val) { if (substr($key, 0, 4) == UDFLib::COLUMN_PREFIX) { - $this->UDFs[$key] = $val; // stores UDF value into property UDFs + $udfsParameters[$key] = $val; // stores UDF value into property UDFs unset($data[$key]); // remove from data } } + + return $udfsParameters; } /** From 903e296bcb903be2591b11785c37307ac30a8b64 Mon Sep 17 00:00:00 2001 From: oesi Date: Thu, 21 Sep 2017 10:24:43 +0200 Subject: [PATCH 13/15] =?UTF-8?q?Studierendenstatistik=20angepasst=20damit?= =?UTF-8?q?=20dynamisch=20alle=20Organisationsformen=20bei=20Mischformstud?= =?UTF-8?q?ieng=C3=A4ngen=20angezeigt=20werden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/statistik/studentenstatistik.php | 329 +++++++++-------------- include/organisationsform.class.php | 114 ++++---- 2 files changed, 180 insertions(+), 263 deletions(-) diff --git a/content/statistik/studentenstatistik.php b/content/statistik/studentenstatistik.php index 959cf951d..330e67995 100644 --- a/content/statistik/studentenstatistik.php +++ b/content/statistik/studentenstatistik.php @@ -21,7 +21,7 @@ */ /* * Erstellt eine Liste der Studenten eines Studiensemesters - * Aufteilung in + * Aufteilung in * - Anzahl Gesamt * - Prozent Anteil * - Vollzeit/Berufsbegleitend @@ -32,6 +32,7 @@ require_once('../../config/vilesci.config.inc.php'); require_once('../../include/studiensemester.class.php'); require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/functions.inc.php'); +require_once('../../include/organisationsform.class.php'); $db = new basis_db(); $stsem_obj = new studiensemester(); @@ -42,10 +43,19 @@ else $stsem = $stsem_obj->getaktorNext(); } $stsem_obj->load($stsem); -echo ' + +$orgform = new organisationsform(); +$orgform->getAll(); +$orgform_arr = array(); + +foreach($orgform->result as $row_orgform) + if($row_orgform->rolle==true) + $orgform_arr[] = $row_orgform->orgform_kurzbz; + +echo ' - + @@ -64,9 +74,9 @@ echo 'studiensemester_kurzbz==$stsem) $selected='selected'; - else + else $selected=''; - + echo ''; } echo ' @@ -81,7 +91,7 @@ if($stsem!='') Anteil an Gesamt Extern - Studienart + Studienart Geschlecht Staatsbürgerschaft @@ -91,8 +101,10 @@ if($stsem!='') Bachelor Studiengänge Absolut / % - In / Out - BB / VZ / DL / DDP / PT + In / Out"; + foreach($orgform_arr as $row_orgform) + echo "".$row_orgform.""; + echo " m w Österreich @@ -105,45 +117,38 @@ if($stsem!='') (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='$stsem' ) a) AS gesamt_stg, - + (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND typ='b' + WHERE status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND typ='b' ) a) AS gesamt_alle, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Incoming' AND studiensemester_kurzbz='".addslashes($stsem)."' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Incoming' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." ) a) AS inc, (SELECT count(*) FROM (SELECT distinct student_uid FROM public.tbl_student JOIN bis.tbl_bisio USING (student_uid) - WHERE studiengang_kz=stg.studiengang_kz AND (bis>='".addslashes($stsem_obj->start)."' OR bis is null) AND von<='".addslashes($stsem_obj->ende)."' - ) a) AS out, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='BB' - ) a) AS bb, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='VZ' - ) a) AS vz, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='DL' - ) a) AS fs, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='DDP' - ) a) AS ddp, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='PT' - ) a) AS pt, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND geschlecht='w' + WHERE studiengang_kz=stg.studiengang_kz AND (bis>=".$db->db_add_param($stsem_obj->start)." OR bis is null) AND von<=".$db->db_add_param($stsem_obj->ende)." + ) a) AS out,"; + + foreach($orgform_arr as $row_orgform) + { + $qry.=" (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND orgform_kurzbz=".$db->db_add_param($row_orgform)." + ) a) AS orgform_".$row_orgform.","; + } + + $qry.=" (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND geschlecht='w' ) a) AS w, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND geschlecht='m' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND geschlecht='m' ) a) AS m, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) JOIN bis.tbl_nation on(staatsbuergerschaft=nation_code) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND nation_code='A' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND nation_code='A' ) a) AS herkunft_at, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) JOIN bis.tbl_nation on(staatsbuergerschaft=nation_code) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND eu AND nation_code<>'A' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND eu AND nation_code<>'A' ) a) AS herkunft_eu, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) JOIN bis.tbl_nation on(staatsbuergerschaft=nation_code) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND NOT eu + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND NOT eu ) a) AS herkunft_noteu, true FROM @@ -151,17 +156,14 @@ if($stsem!='') WHERE studiengang_kz>0 AND studiengang_kz<10000 AND aktiv AND typ='b' ORDER BY typ, kurzbzlang; "; - + if($result = $db->db_query($qry)) { - + $gesamt=0; $gesamt_prozent=0; - $gesamt_bb=0; - $gesamt_vz=0; - $gesamt_fs=0; - $gesamt_ddp=0; - $gesamt_pt=0; + foreach($orgform_arr as $row_orgform) + $gesamt_orgform[$row_orgform] = 0; $gesamt_m=0; $gesamt_w=0; $gesamt_at=0; @@ -177,65 +179,23 @@ if($stsem!='') $prozent = ($row->gesamt_alle!=0?$row->gesamt_stg/$row->gesamt_alle*100:0); echo "$row->gesamt_stg / ".sprintf('%0.2f', $prozent)." %"; echo "$row->inc / $row->out"; - if($row->orgform_kurzbz=='BB' && $db->db_parse_bool($row->mischform)==false) + + foreach($orgform_arr as $row_orgform) { - //berufsbegleitend: gesamtzahl in spalte bb - echo "$row->gesamt_stg / $row->vz / $row->fs / $row->ddp / $row->pt"; - $gesamt_bb += $row->gesamt_stg; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='VZ' && $db->db_parse_bool($row->mischform)==false) - { - //vollzeit: gesamtzahl in spalte vz - echo "$row->bb / $row->gesamt_stg / $row->fs / $row->ddp / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->gesamt_stg; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='DL' && $db->db_parse_bool($row->mischform)==false) - { - //fernlehre: gesamtzahl in spalte DL - echo "$row->bb / $row->vz / $row->gesamt_stg / $row->ddp / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->gesamt_stg; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='DDP' && $db->db_parse_bool($row->mischform)==false) - { - //doubledegree: gesamtzahl in spalte DDP - echo "$row->bb / $row->vz / $row->fs / $row->gesamt_stg / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_pt += $row->gesamt_stg; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='PT' && $db->db_parse_bool($row->mischform)==false) - { - //parttime: gesamtzahl in spalte PT - echo "$row->bb / $row->vz / $row->fs / $row->ddp / $row->gesamt_stg"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->gesamt_stg; - } - else - { - echo "$row->bb / $row->vz / $row->fs / $row->ddp / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; + echo ""; + if($row->orgform_kurzbz == $row_orgform && $db->db_parse_bool($row->mischform) == false) + { + echo $row->gesamt_stg; + $gesamt_orgform[$row_orgform] += $row->gesamt_stg; + } + else + { + echo $row->{'orgform_'.mb_strtolower($row_orgform)}; + $gesamt_orgform[$row_orgform] += $row->{'orgform_'.mb_strtolower($row_orgform)}; + } + echo ""; } + echo "$row->m"; echo "$row->w"; echo "$row->herkunft_at"; @@ -257,23 +217,25 @@ if($stsem!='') echo " "; echo "$gesamt / ".sprintf('%0.2f', $gesamt_prozent)." %"; echo "$gesamt_inc / $gesamt_out"; - echo "$gesamt_bb / $gesamt_vz / $gesamt_fs / $gesamt_ddp / $gesamt_pt"; + foreach($orgform_arr as $row_orgform) + echo "".$gesamt_orgform[$row_orgform].""; echo "$gesamt_m"; echo "$gesamt_w"; echo "$gesamt_at"; echo "$gesamt_eu"; echo "$gesamt_noteu"; echo ""; - + } - + $gesamtsumme = $gesamt; $gesamtsumme_prozent = $gesamt_prozent; - $gesamtsumme_bb = $gesamt_bb; - $gesamtsumme_vz = $gesamt_vz; - $gesamtsumme_fs = $gesamt_fs; - $gesamtsumme_ddp = $gesamt_ddp; - $gesamtsumme_pt = $gesamt_pt; + $gesamtsumme_orgform = array(); + + foreach($orgform_arr as $row_orgform) + { + $gesamtsumme_orgform[$row_orgform] = $gesamt_orgform[$row_orgform]; + } $gesamtsumme_m = $gesamt_m; $gesamtsumme_w = $gesamt_w; $gesamtsumme_at = $gesamt_at; @@ -281,15 +243,18 @@ if($stsem!='') $gesamtsumme_noteu = $gesamt_noteu; $gesamtsumme_inc = $gesamt_inc; $gesamtsumme_out = $gesamt_out; - + //Master echo ' Master Studiengänge Absolut / % - In / Out - BB / VZ / DL / DDP / PT + In / Out'; + foreach($orgform_arr as $row_orgform) + echo ''.$row_orgform.''; + + echo ' m w Österreich @@ -300,45 +265,39 @@ if($stsem!='') (SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' ) AS gesamt_stg, - + (SELECT count(*) FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND typ='m' + WHERE status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND typ='m' ) AS gesamt_alle, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Incoming' AND studiensemester_kurzbz='".addslashes($stsem)."' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Incoming' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." ) a) AS inc, (SELECT count(*) FROM (SELECT distinct student_uid FROM public.tbl_student JOIN bis.tbl_bisio USING (student_uid) - WHERE studiengang_kz=stg.studiengang_kz AND (bis>='".addslashes($stsem_obj->start)."' OR bis is null) AND von<='".addslashes($stsem_obj->ende)."' - ) a) AS out, + WHERE studiengang_kz=stg.studiengang_kz AND (bis>=".$db->db_add_param($stsem_obj->start)." OR bis is null) AND von<=".$db->db_add_param($stsem_obj->ende)." + ) a) AS out,"; + + foreach($orgform_arr as $row_orgform) + { + $qry .= " (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='BB' - ) a) AS bb, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='VZ' - ) a) AS vz, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='DL' - ) a) AS fs, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='DDP' - ) a) AS ddp, - (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND orgform_kurzbz='PT' - ) a) AS pt, + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND orgform_kurzbz=".$db->db_add_param($row_orgform)." + ) a) AS orgform_".$row_orgform.","; + } + $qry .= " (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND geschlecht='w' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND geschlecht='w' ) a) AS w, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND geschlecht='m' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND geschlecht='m' ) a) AS m, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) JOIN bis.tbl_nation on(staatsbuergerschaft=nation_code) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND nation_code='A' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND nation_code='A' ) a) AS herkunft_at, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) JOIN bis.tbl_nation on(staatsbuergerschaft=nation_code) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND eu AND nation_code<>'A' + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND eu AND nation_code<>'A' ) a) AS herkunft_eu, (SELECT count(*) FROM (SELECT distinct prestudent_id FROM public.tbl_prestudent JOIN public.tbl_prestudentstatus USING (prestudent_id) JOIN public.tbl_person USING(person_id) JOIN bis.tbl_nation on(staatsbuergerschaft=nation_code) - WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz='".addslashes($stsem)."' AND NOT eu + WHERE studiengang_kz=stg.studiengang_kz AND status_kurzbz='Student' AND studiensemester_kurzbz=".$db->db_add_param($stsem)." AND NOT eu ) a) AS herkunft_noteu, true FROM @@ -346,17 +305,14 @@ if($stsem!='') WHERE studiengang_kz>0 AND studiengang_kz<10000 AND aktiv AND typ='m' ORDER BY typ, kurzbzlang; "; - + if($result = $db->db_query($qry)) { - + $gesamt=0; $gesamt_prozent=0; - $gesamt_bb=0; - $gesamt_vz=0; - $gesamt_fs=0; - $gesamt_ddp=0; - $gesamt_pt=0; + foreach($orgform_arr as $row_orgform) + $gesamt_orgform[$row_orgform] = 0; $gesamt_m=0; $gesamt_w=0; $gesamt_at=0; @@ -372,65 +328,23 @@ if($stsem!='') $prozent = ($row->gesamt_alle!=0?$row->gesamt_stg/$row->gesamt_alle*100:0); echo "$row->gesamt_stg / ".sprintf('%0.2f', $prozent)." %"; echo "$row->inc / $row->out"; - if($row->orgform_kurzbz=='BB' && $db->db_parse_bool($row->mischform)==false) + + foreach($orgform_arr as $row_orgform) { - //berufsbegleitend: gesamtzahl in spalte bb - echo "$row->gesamt_stg / $row->vz / $row->fs / $row->ddp / $row->pt"; - $gesamt_bb += $row->gesamt_stg; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='VZ' && $db->db_parse_bool($row->mischform)==false) - { - //vollzeit: gesamtzahl in spalte vz - echo "$row->bb / $row->gesamt_stg / $row->fs / $row->ddp / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->gesamt_stg; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='DL' && $db->db_parse_bool($row->mischform)==false) - { - //fernlehre: gesamtzahl in spalte DL - echo "$row->bb / $row->vz / $row->gesamt_stg / $row->ddp / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->gesamt_stg; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='DDP' && $db->db_parse_bool($row->mischform)==false) - { - //doubledegree: gesamtzahl in spalte DDP - echo "$row->bb / $row->vz / $row->fs / $row->gesamt_stg / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_pt += $row->gesamt_stg; - $gesamt_pt += $row->pt; - } - else if($row->orgform_kurzbz=='PT' && $db->db_parse_bool($row->mischform)==false) - { - //parttime: gesamtzahl in spalte PT - echo "$row->bb / $row->vz / $row->fs / $row->ddp / $row->gesamt_stg"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->gesamt_stg; - } - else - { - echo "$row->bb / $row->vz / $row->fs / $row->ddp / $row->pt"; - $gesamt_bb += $row->bb; - $gesamt_vz += $row->vz; - $gesamt_fs += $row->fs; - $gesamt_ddp += $row->ddp; - $gesamt_pt += $row->pt; + echo ""; + if($row->orgform_kurzbz == $row_orgform && $db->db_parse_bool($row->mischform) == false) + { + echo $row->gesamt_stg; + $gesamt_orgform[$row_orgform] += $row->gesamt_stg; + } + else + { + echo $row->{'orgform_'.mb_strtolower($row_orgform)}; + $gesamt_orgform[$row_orgform] += $row->{'orgform_'.mb_strtolower($row_orgform)}; + } + echo ""; } + echo "$row->m"; echo "$row->w"; echo "$row->herkunft_at"; @@ -452,22 +366,24 @@ if($stsem!='') echo " "; echo "$gesamt / ".sprintf('%0.2f', $gesamt_prozent)." %"; echo "$gesamt_inc / $gesamt_out"; - echo "$gesamt_bb / $gesamt_vz / $gesamt_fs / $gesamt_ddp / $gesamt_pt"; + foreach($orgform_arr as $row_orgform) + { + echo "".$gesamt_orgform[$row_orgform].""; + } echo "$gesamt_m"; echo "$gesamt_w"; echo "$gesamt_at"; echo "$gesamt_eu"; echo "$gesamt_noteu"; echo ""; - + } $gesamtsumme += $gesamt; $gesamtsumme_prozent = 100; - $gesamtsumme_bb += $gesamt_bb; - $gesamtsumme_vz += $gesamt_vz; - $gesamtsumme_fs += $gesamt_fs; - $gesamtsumme_ddp += $gesamt_ddp; - $gesamtsumme_pt += $gesamt_pt; + + foreach($orgform_arr as $row_orgform) + $gesamtsumme_orgform[$row_orgform] += $gesamt_orgform[$row_orgform]; + $gesamtsumme_m += $gesamt_m; $gesamtsumme_w += $gesamt_w; $gesamtsumme_at += $gesamt_at; @@ -480,7 +396,8 @@ if($stsem!='') echo " "; echo "$gesamtsumme / ".sprintf('%0.2f', $gesamtsumme_prozent)." %"; echo "$gesamtsumme_inc / $gesamtsumme_out"; - echo "$gesamtsumme_bb / $gesamtsumme_vz / $gesamtsumme_fs / $gesamtsumme_ddp / $gesamtsumme_pt"; + foreach($orgform_arr as $row_orgform) + echo "".$gesamtsumme_orgform[$row_orgform].""; echo "$gesamtsumme_m"; echo "$gesamtsumme_w"; echo "$gesamtsumme_at"; @@ -491,4 +408,4 @@ if($stsem!='') } ?> - \ No newline at end of file + diff --git a/include/organisationsform.class.php b/include/organisationsform.class.php index d288bfeef..5497621ad 100644 --- a/include/organisationsform.class.php +++ b/include/organisationsform.class.php @@ -19,111 +19,111 @@ * Andreas Oesterreicher and * Karl Burkhart . */ - + /** * Klasse Organisationsform */ class organisationsform extends basis_db { - public $orgform_kurzbz; - public $code; - public $bezeichnung; - public $rolle; - - public $result = array(); - + public $orgform_kurzbz; + public $code; + public $bezeichnung; + public $rolle; + + public $result = array(); + /** - * - * Konstruktor + * + * Konstruktor */ - public function __construct() + public function __construct() { - parent::__construct(); + parent::__construct(); } - + /** * Laedt eine Organisationsform * @param $orgform_kurzbz */ public function load($orgform_kurzbz) { - $qry = "SELECT * FROM bis.tbl_orgform WHERE orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).';'; - + $qry = "SELECT * FROM bis.tbl_orgform WHERE orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).';'; + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) - { - $this->orgform_kurzbz = $row->orgform_kurzbz; - $this->code = $row->code; - $this->bezeichnung = $row->bezeichnung; - $this->rolle = $row->rolle; + { + $this->orgform_kurzbz = $row->orgform_kurzbz; + $this->code = $row->code; + $this->bezeichnung = $row->bezeichnung; + $this->rolle = $this->db_parse_bool($row->rolle); } } else { - $this->errormsg ="Fehler bei der Abfrage aufgetreten"; - return false; + $this->errormsg ="Fehler bei der Abfrage aufgetreten"; + return false; } } - + /** - * + * * Liefert alle Organisationsformen zurück */ public function getAll() { - $qry = "SELECT * FROM bis.tbl_orgform"; - + $qry = "SELECT * FROM bis.tbl_orgform"; + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) { - $orgform = new organisationsform(); - - $orgform->orgform_kurzbz = $row->orgform_kurzbz; - $orgform->code = $row->code; - $orgform->bezeichnung = $row->bezeichnung; - $orgform->rolle = $row->rolle; - - $this->result[] = $orgform; + $orgform = new organisationsform(); + + $orgform->orgform_kurzbz = $row->orgform_kurzbz; + $orgform->code = $row->code; + $orgform->bezeichnung = $row->bezeichnung; + $orgform->rolle = $this->db_parse_bool($row->rolle); + + $this->result[] = $orgform; } return true; } else { - $this->errormsg ="Fehler bei der Abfrage aufgetreten"; - return false; + $this->errormsg ="Fehler bei der Abfrage aufgetreten"; + return false; } } /** - * + * * Orgform Kurzbezeichnung wird übergeben und alle passenden Kurzbezeichnungen werden zurückgegeben * @param $orgform_kurzbz */ public function checkOrgForm($orgform_kurzbz) - { + { if(is_null($orgform_kurzbz)) { - $this->errormsg ="Kein gültiger Wert für Orgform Kurzbz."; - return false; + $this->errormsg ="Kein gültiger Wert für Orgform Kurzbz."; + return false; } - - switch ($orgform_kurzbz) + + switch ($orgform_kurzbz) { case "VZ": $vzArray= array('VZ', ''); - return $vzArray; + return $vzArray; case "BB": $bbArray=array('BB','DL','DDP',''); - return $bbArray; + return $bbArray; case "VBB": $vbbArray = array('VZ','BB','DDP','DL'); - return $vbbArray; + return $vbbArray; default: - return false; + return false; } } @@ -137,19 +137,19 @@ class organisationsform extends basis_db FROM bis.tbl_orgform WHERE orgform_kurzbz NOT IN ('VBB', 'ZGS') ORDER BY orgform_kurzbz"; - + if ($result = $this->db_query($qry)) { - while ($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { - $orgform = new organisationsform(); - - $orgform->orgform_kurzbz = $row->orgform_kurzbz; - $orgform->code = $row->code; - $orgform->bezeichnung = $row->bezeichnung; - $orgform->rolle = $row->rolle; - - $this->result[] = $orgform; + $orgform = new organisationsform(); + + $orgform->orgform_kurzbz = $row->orgform_kurzbz; + $orgform->code = $row->code; + $orgform->bezeichnung = $row->bezeichnung; + $orgform->rolle = $row->rolle; + + $this->result[] = $orgform; } return true; } @@ -159,4 +159,4 @@ class organisationsform extends basis_db return false; } } -} \ No newline at end of file +} From 59722d7c3b3a384490e9d635a71144d03e9f2ae0 Mon Sep 17 00:00:00 2001 From: cris-technikum <31620366+cris-technikum@users.noreply.github.com> Date: Thu, 21 Sep 2017 11:57:49 +0200 Subject: [PATCH 14/15] Reihungstool: Table "Mit Raumzuteilung" corrected - column "bereits absovlierte Verfahren": correct data & percentages - column "Ergebnisse": correct result by Prestudent - table "Mit Raumzuteilung": position corrected --- vilesci/stammdaten/reihungstestverwaltung.php | 311 ++++++++++-------- 1 file changed, 181 insertions(+), 130 deletions(-) diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 480084f4a..63e8d3142 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -2040,16 +2040,18 @@ if($reihungstest_id!='') echo '
Ergebnis
'; echo '
FAS
'; echo ''; + echo ''; echo '
'; - echo ''; - - + + $pruefling = new pruefling(); $cnt = 0; + + //TABLE OHNE RAUMZUTEILUNG if ($orte_zuteilung_array['ohne']>0) { - echo ''; + + echo ''; + echo ''; + + echo '
'; } - foreach ($orte->result AS $ort) - { - $cnt++; + + foreach ($orte->result AS $ort) + { + $cnt++; + if ($orte_array[$ort->ort_kurzbz] - $orte_zuteilung_array[$ort->ort_kurzbz] < 0) + $style = 'text-align: center; margin: 0 5px 0 5px; color: red'; + else + $style = 'text-align: center; margin: 0 5px 0 5px;'; + + //TABLE MIT RAUMZUTEILUNG + if ($orte_zuteilung_array[$ort->ort_kurzbz] > 0) + { + echo '
'; + echo '
Mit Raumzuteilung in '.$ort->ort_kurzbz.' ('.$orte_zuteilung_array[$ort->ort_kurzbz].'/'.$orte_array[$ort->ort_kurzbz].')
'; + echo '
'; + echo ''; + echo '
'; + echo '
'; echo '
Ohne Raumzuteilung ('.$orte_zuteilung_array['ohne'].')
'; echo ''; @@ -2153,7 +2155,7 @@ if($reihungstest_id!='') } } } - + if ($row->ort_kurzbz == '') { if(isset($studienplaene_arr[$row->studienplan_id])) @@ -2199,7 +2201,6 @@ if($reihungstest_id!='') echo ''; echo ''; - echo ''; - echo '
+ + + + + + + + + + + + + + + + + + + + '; + + $cnt_personen = 0; + + foreach ($result_arr AS $row) + { + $rt_in_anderen_stg=''; + $rtergebnis = ''; + $rt_prestudent_arr = array(); - echo ' + + + + + + + + + + + + + + + + '; - echo ''; - } + $mailto.= ($mailto!=''?',':'').$row->email; + } + } + echo '
+ + + + + Prestudent IDPerson IDNachnameVornameGeschlechtStudiengangOrgFormStudienplanEinstiegssemesterGeburtsdatumEMailbereits absolvierte VerfahrenErgebnisFAS
'; - if ($orte_array[$ort->ort_kurzbz] - $orte_zuteilung_array[$ort->ort_kurzbz] < 0) - $style = 'text-align: center; margin: 0 5px 0 5px; color: red'; - else - $style = 'text-align: center; margin: 0 5px 0 5px;'; - echo '
'.$ort->ort_kurzbz.' ('.$orte_zuteilung_array[$ort->ort_kurzbz].'/'.$orte_array[$ort->ort_kurzbz].')
'; + if($punkteberechnung == 'true') + { + //Daten für Spalte bereits absolvierte Verfahren + $qry = "SELECT + distinct tbl_reihungstest.reihungstest_id, + tbl_pruefling.pruefling_id, + tbl_prestudent.prestudent_id, + tbl_rt_person.person_id + FROM + public.tbl_rt_person + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN public.tbl_prestudent USING(person_id) + JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id) + JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id) + LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE + (tbl_rt_person.anmeldedatum is null OR tbl_rt_person.anmeldedatum<=tbl_reihungstest.datum) + AND tbl_reihungstest.datum >=(SELECT min(begintime)::date FROM testtool.tbl_pruefling_frage WHERE pruefling_id=tbl_pruefling.pruefling_id AND tbl_reihungstest.datum>=begintime-'1 days'::interval) AND (tbl_reihungstest.stufe is null or tbl_reihungstest.stufe=1) + AND person_id=".$db->db_add_param($row->person_id, FHC_INTEGER); - if ($orte_zuteilung_array[$ort->ort_kurzbz]>0) - { - echo ''; - echo ''; - echo ' - - - - - - - - - - - - - - - - - - - - '; - $cnt_personen = 0; - foreach ($result_arr AS $row) - { - $rt_in_anderen_stg=''; - $rtergebnis = ''; - if($punkteberechnung == 'true') - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id,true, $reihungstest->reihungstest_id); - else - $rtergebnis = $pruefling->getReihungstestErgebnisPerson($row->person_id, false, $reihungstest->reihungstest_id); - $prestudent = new prestudent(); - $prestudent->getPrestudenten($row->person_id); - $rt_in_anderen_stg=''; - foreach($prestudent->result as $item) - { - if($item->prestudent_id!=$row->prestudent_id) - { - if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true); - else - $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id); - if($erg!==false) - { - $rt_in_anderen_stg.=number_format($erg,2).' Punkte im Studiengang '.$studiengang->kuerzel_arr[$item->studiengang_kz].'
'; - } - } - } - } - if ($row->ort_kurzbz == $ort->ort_kurzbz) - { + if($result = $db->db_query($qry)) + { + while($obj = $db->db_fetch_object($result)) + { + array_push($rt_prestudent_arr, $obj); + } + } - if(isset($studienplaene_arr[$row->studienplan_id])) - $studienplan_bezeichnung = $studienplaene_arr[$row->studienplan_id]; - else - { - $studienplan_obj = new studienplan(); - $studienplan_obj->loadStudienplan($row->studienplan_id); - $studienplan_bezeichnung = $studienplan_obj->bezeichnung; - $studienplaene_arr[$row->studienplan_id]=$studienplan_obj->bezeichnung; - } + //Ergebnis ermitteln + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $rtergebnis = $pruefling->getReihungstestErgebnisPrestudent($row->prestudent_id, true, $reihungstest->reihungstest_id); + else + $rtergebnis = $pruefling->getReihungstestErgebnisPrestudent($row->prestudent_id, false, $reihungstest->reihungstest_id); + + //Ausgabe für bereits absolvierte Verfahren + foreach($rt_prestudent_arr as $item) + { + $pruefling->getPruefling($item->prestudent_id); + $rt = new Reihungstest(); + $rt->load($item->reihungstest_id); + $rt_letztes_login = $datum_obj->formatDatum($pruefling->registriert, 'Y-m-d'); + $rt_antrittstermin = $datum_obj->formatDatum($rt->datum, 'Y-m-d'); - $cnt_personen++; - echo ' - - - - - - - - - - - - - - - - - '; + //Wenn bereits absolvierte Verfahren vorhanden + if($item->prestudent_id != $row->prestudent_id || $rt_letztes_login < $rt_antrittstermin) + { + if(defined('FAS_REIHUNGSTEST_PUNKTE') && FAS_REIHUNGSTEST_PUNKTE) + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, true, $item->reihungstest_id); + else + $erg = $pruefling->getReihungstestErgebnisPrestudent($item->prestudent_id, false, $item->reihungstest_id); - $mailto.= ($mailto!=''?',':'').$row->email; - } - } - echo '
- - - - - Prestudent IDPerson IDNachnameVornameGeschlechtStudiengangOrgFormStudienplanEinstiegssemesterGeburtsdatumEMailbereits absolvierte VerfahrenErgebnisFAS
'.$db->convert_html_chars($row->prestudent_id).''.$db->convert_html_chars($row->person_id).''.$db->convert_html_chars($row->nachname).''.$db->convert_html_chars($row->vorname).''.$db->convert_html_chars($row->geschlecht).''.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).''.$db->convert_html_chars($row->orgform_kurzbz!=''?$row->orgform_kurzbz:' ').''.$db->convert_html_chars($studienplan_bezeichnung).' ('.$row->studienplan_id.')'.$db->convert_html_chars($row->ausbildungssemester).''.$db->convert_html_chars($row->gebdatum!=''?$datum_obj->convertISODate($row->gebdatum):' ').''.$rt_in_anderen_stg.''.($rtergebnis==0?'-':number_format($rtergebnis,2,'.','')).''.($rtergebnis!=0 && $row->punkte==''?'übertragen':$row->punkte).'
'; + if($erg!==false) + { + $rt_in_anderen_stg .= number_format($erg, 2).((FAS_REIHUNGSTEST_PUNKTE) ? ' Punkte' : ' %').' im Studiengang '.$studiengang->kuerzel_arr[$pruefling->studiengang_kz].'
'; - echo ''; - echo ''; - echo ''; - } - else - echo '
Leer
'; + $cnt_personen++; + echo ' +
'.$db->convert_html_chars($row->prestudent_id).''.$db->convert_html_chars($row->person_id).''.$db->convert_html_chars($row->nachname).''.$db->convert_html_chars($row->vorname).''.$db->convert_html_chars($row->geschlecht).''.$db->convert_html_chars($stg_arr[$row->studiengang_kz]).''.$db->convert_html_chars($row->orgform_kurzbz!=''?$row->orgform_kurzbz:' ').''.$db->convert_html_chars($studienplan_bezeichnung).' ('.$row->studienplan_id.')'.$db->convert_html_chars($row->ausbildungssemester).''.$db->convert_html_chars($row->gebdatum!=''?$datum_obj->convertISODate($row->gebdatum):' ').''.$rt_in_anderen_stg.''.($rtergebnis==0?'-':number_format($rtergebnis,2,'.','')).' %'; + if($rtergebnis!==false && $rtergebnis != '' && $row->punkte=='') + echo 'übertragen'; + else + { + if($row->punkte!='') + echo number_format($row->punkte,2,'.',''); + } + echo '
'; - echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + } + } } ?> - + \ No newline at end of file From 76dc935117d40c7154f7b7c26e0c65eea915ce34 Mon Sep 17 00:00:00 2001 From: Andreas Oesterreicher Date: Thu, 21 Sep 2017 16:25:15 +0200 Subject: [PATCH 15/15] Fixed wrong JQuery Include Path Fixed broken HTML Tags --- vilesci/stammdaten/reihungstestverwaltung.php | 198 +++++++++--------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index 63e8d3142..830554753 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -291,9 +291,9 @@ if(isset($_GET['excel'])) // Wenn Daten vorhanden if ($db->db_num_rows($result) > 0) { - while($row = $db->db_fetch_object($result)) - { - if ($ort_kurzbz == '0' || $ort_kurzbz != $row->ort_kurzbz) + while($row = $db->db_fetch_object($result)) + { + if ($ort_kurzbz == '0' || $ort_kurzbz != $row->ort_kurzbz) { // Creating a worksheet if ($row->ort_kurzbz=='') @@ -363,34 +363,34 @@ if(isset($_GET['excel'])) $rt_prestudent_arr = array(); //Daten ermitteln für Spalte absolvierte Verfahren - $qry_absolvierte_Verfahren = "SELECT - distinct tbl_reihungstest.reihungstest_id, + $qry_absolvierte_Verfahren = "SELECT + distinct tbl_reihungstest.reihungstest_id, tbl_pruefling.pruefling_id, tbl_prestudent.prestudent_id, tbl_rt_person.person_id - FROM - public.tbl_rt_person - JOIN lehre.tbl_studienplan USING(studienplan_id) - JOIN lehre.tbl_studienordnung USING(studienordnung_id) - JOIN public.tbl_prestudent USING(person_id) - JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id) - JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id) - LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE + FROM + public.tbl_rt_person + JOIN lehre.tbl_studienplan USING(studienplan_id) + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN public.tbl_prestudent USING(person_id) + JOIN public.tbl_prestudentstatus USING(studienplan_id, prestudent_id) + JOIN public.tbl_reihungstest ON(tbl_reihungstest.reihungstest_id=tbl_rt_person.rt_id) + LEFT JOIN testtool.tbl_pruefling using(prestudent_id) WHERE (tbl_rt_person.anmeldedatum is null OR tbl_rt_person.anmeldedatum<=tbl_reihungstest.datum) AND tbl_reihungstest.datum >=(SELECT min(begintime)::date FROM testtool.tbl_pruefling_frage WHERE pruefling_id=tbl_pruefling.pruefling_id AND tbl_reihungstest.datum>=begintime-'1 days'::interval) AND (tbl_reihungstest.stufe is null or tbl_reihungstest.stufe=1) AND person_id=".$db->db_add_param($row->person_id, FHC_INTEGER); - + if($result_rt_prestudent = $db->db_query($qry_absolvierte_Verfahren)) - { + { while($obj = $db->db_fetch_object($result_rt_prestudent)) - { - array_push($rt_prestudent_arr, $obj); + { + array_push($rt_prestudent_arr, $obj); } } foreach($rt_prestudent_arr as $item) { - $pruefling->getPruefling($item->prestudent_id); + $pruefling->getPruefling($item->prestudent_id); $rt = new Reihungstest(); $rt->load($item->reihungstest_id); $rt_letztes_login = $datum_obj->formatDatum($pruefling->registriert, 'Y-m-d'); @@ -413,7 +413,7 @@ if(isset($_GET['excel'])) } } } - } + } $weitere_zuteilungen = array(); $qry_zuteilungen = " @@ -553,14 +553,20 @@ if(isset($_GET['excel'])) Reihungstest - + + + + + + + - - + + - - + +