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

p->t('lehre','notendurchschnitt');?>: + p->t('lehre','gewichteternotendurchschnitt');?>: + diff --git a/cis/infoterminal/index.php b/cis/infoterminal/index.php index acbd7b0e4..1a913c421 100644 --- a/cis/infoterminal/index.php +++ b/cis/infoterminal/index.php @@ -20,14 +20,6 @@ * Rudolf Hangl < rudolf.hangl@technikum-wien.at > * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > */ - -// ------------------------------------------------------------------------------------------ -// Session Starten - Merk Anwenderdaten -// ------------------------------------------------------------------------------------------ - $SESSIONID=trim((isset($_REQUEST['SESSIONID']) ? $_REQUEST['SESSIONID']:'')); - if (session_start($SESSIONID)) - $SESSIONID=@session_id(); - require_once('../../config/cis.config.inc.php'); require_once('../../include/wochenplan.class.php'); require_once('../../include/benutzerberechtigung.class.php'); diff --git a/cis/private/lehre/notenliste.php b/cis/private/lehre/notenliste.php index 5cdea3111..33221ac1a 100644 --- a/cis/private/lehre/notenliste.php +++ b/cis/private/lehre/notenliste.php @@ -1,441 +1,444 @@ -, - * Andreas Oesterreicher - * Rudolf Hangl < rudolf.hangl@technikum-wien.at > - * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at > - */ -/* - * Erstellt eine Liste mit den Noten des eingeloggten Studenten - * das betreffende Studiensemester kann ausgewaehlt werden - */ -require_once('../../../config/cis.config.inc.php'); -require_once('../../../config/global.config.inc.php'); -require_once('../../../include/functions.inc.php'); -require_once('../../../include/studiensemester.class.php'); -require_once('../../../include/datum.class.php'); -require_once('../../../include/note.class.php'); -require_once('../../../include/phrasen.class.php'); -require_once('../../../include/studiengang.class.php'); -require_once('../../../include/studienordnung.class.php'); -require_once('../../../include/lehrveranstaltung.class.php'); -require_once('../../../include/pruefung.class.php'); -require_once('../../../include/benutzerberechtigung.class.php'); -require_once('../../../include/prestudent.class.php'); - -$sprache = getSprache(); -$p = new phrasen($sprache); - -if (! $db = new basis_db()) - die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); - -if (isset($_GET['stsem'])) - $stsem = $_GET['stsem']; -else - $stsem = ''; - -echo ' - - - - - - - - - - - - ' . $p->t('tools/leistungsbeurteilung') . ' - - - - - -

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

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


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

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

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


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

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

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

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

'; + } + + echo ' '; @@ -328,21 +334,24 @@ function LoadGruppe(type) - + '; + + if(!defined('CIS_LVPLAN_SAALPLAN_ANZEIGEN') || CIS_LVPLAN_SAALPLAN_ANZEIGEN) + { echo ' '; + } if ($raumres) { diff --git a/cis/private/lvplan/stpl_reserve_list.php b/cis/private/lvplan/stpl_reserve_list.php index a882b8344..82f70b612 100644 --- a/cis/private/lvplan/stpl_reserve_list.php +++ b/cis/private/lvplan/stpl_reserve_list.php @@ -67,7 +67,7 @@ if(!$rechte->isBerechtigt('lehre/reservierung:begrenzt', null, 'suid')) $reservierung = new reservierung(); if($reservierung->load($id)) { - if($reservierung->uid==$uid || $reservierung->insertvon==$uid || $rechte->isBerechtigt('lehre/reservierung', null, 'suid')) + if(($reservierung->uid==$uid || $reservierung->insertvon==$uid) && $rechte->isBerechtigt('lehre/reservierung', null, 'suid')) { if($reservierung->delete($id)) echo ''.$p->t('lvplan/reservierungWurdeGeloescht').'
'; @@ -135,8 +135,8 @@ if(!$rechte->isBerechtigt('lehre/reservierung:begrenzt', null, 'suid')) echo ''.$db->convert_html_chars($pers_uid).''; echo ''.$db->convert_html_chars($beschreibung).' '; $z=$i-1; - if (($pers_uid==$uid)|| ($insertvon==$uid) || $rechte->isBerechtigt('lehre/reservierung', null, 'suid')) - echo 'Delete'; + if (($pers_uid==$uid || $insertvon==$uid) && $rechte->isBerechtigt('lehre/reservierung', null, 'suid')) + echo 'Delete'; echo ''; } echo ''; @@ -146,67 +146,6 @@ if(!$rechte->isBerechtigt('lehre/reservierung:begrenzt', null, 'suid')) echo '

'; flush(); - if(isset($_GET['alle'])) - { - - //ALLE - $sql_query="SELECT * FROM campus.vw_reservierung - WHERE datum>=".$db->db_add_param($datum)." - ORDER BY datum, titel, ort_kurzbz, stunde"; - if (!$erg_res=$db->db_query($sql_query)) - die($db->db_last_error()); - - $num_rows_res=$db->db_num_rows($erg_res); - if ($num_rows_res>0) - { - echo $p->t('lvplan/alleReservierungen').':
'; - echo ''; - echo ' - - - - - - - - - '; - - for ($i=0; $i<$num_rows_res; $i++) - { - $zeile=$i % 2; - $id=$db->db_result($erg_res,$i,"reservierung_id"); - $datum=$db->db_result($erg_res,$i,"datum"); - $titel=$db->db_result($erg_res,$i,"titel"); - $stunde=$db->db_result($erg_res,$i,"stunde"); - $ort_kurzbz=$db->db_result($erg_res,$i,"ort_kurzbz"); - $pers_uid=$db->db_result($erg_res,$i,"uid"); - $beschreibung=$db->db_result($erg_res,$i,"beschreibung"); - $insertamum=$db->db_result($erg_res,$i,"insertamum"); - $insertvon=$db->db_result($erg_res,$i,"insertvon"); - - $datum = $datum_obj->formatDatum($datum, 'd.m.Y'); - if($insertamum!='') - $insertamum = $datum_obj->formatDatum($insertamum, 'd.m.Y H:i:s'); - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - echo ''; - $z=$i-1; - if (($pers_uid==$uid) || ($insertvon==$uid) || $rechte->isBerechtigt('lehre/reservierung', null, 'suid')) - echo ''; - echo ''; - } - echo '
'.$p->t('global/datum').''.$p->t('global/titel').''.$p->t('global/stunde').''.$p->t('lvplan/raum').''.$p->t('global/person').''.$p->t('global/beschreibung').''.$p->t('global/aktion').'
'.$db->convert_html_chars($datum).''.$db->convert_html_chars($titel).''.$db->convert_html_chars($stunde).''.$db->convert_html_chars($ort_kurzbz).''.$db->convert_html_chars($pers_uid).''.$db->convert_html_chars($beschreibung).' Delete
'; - flush(); - } - } - else - echo ''.$p->t('lvplan/alleReservierungenAnzeigen').''; - ?> diff --git a/cis/private/lvplan/stpl_week.php b/cis/private/lvplan/stpl_week.php index d2c02dece..edc50e8c2 100644 --- a/cis/private/lvplan/stpl_week.php +++ b/cis/private/lvplan/stpl_week.php @@ -368,7 +368,7 @@ if (isset($reservtodelete)) { if ($reservierung->load($delete_id)) { - if ($reservberechtigt || $reservierung->uid==$uid || $reservierung->insertvon==$uid) + if ($reservberechtigt && ($reservierung->insertvon==$uid || $reservierung->uid==$uid)) { if($reservierung->delete($delete_id)) $reservdelcount++; @@ -441,7 +441,7 @@ elseif (isset($reserve) && $raumres) $reservierung->insertamum=date('Y-m-d H:i:s'); $reservierung->insertvon=$uid; - if(!empty($_REQUEST['lecturer_uids'] && isset($_REQUEST['studiengang_kz']))) + if(isset($_REQUEST['lecturer_uids']) && !empty($_REQUEST['lecturer_uids'] && isset($_REQUEST['studiengang_kz']))) { $lecturer_uids = $_REQUEST['lecturer_uids']; foreach ($lecturer_uids as $lecturer_uid) diff --git a/cis/private/profile/lva_liste.php b/cis/private/profile/lva_liste.php index 95b9cf50b..33eb7da3b 100644 --- a/cis/private/profile/lva_liste.php +++ b/cis/private/profile/lva_liste.php @@ -304,15 +304,16 @@ require_once('../../../include/benutzerberechtigung.class.php'); tbl_lehrveranstaltung.bezeichnung, tbl_projektarbeit.titel, (SELECT nachname || ' ' || vorname FROM public.tbl_benutzer JOIN public.tbl_person USING(person_id) WHERE uid=student_uid) as student, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.semester, - tbl_studiengang.email + tbl_studiengang.email, tbl_betreuerart.beschreibung AS beutreuerart_beschreibung FROM - lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang + lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung, lehre.tbl_projektarbeit, lehre.tbl_projektbetreuer, public.tbl_studiengang, lehre.tbl_betreuerart WHERE tbl_lehreinheit.lehreinheit_id=tbl_projektarbeit.lehreinheit_id AND tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stdsem)." AND tbl_projektarbeit.projektarbeit_id=tbl_projektbetreuer.projektarbeit_id AND tbl_lehrveranstaltung.studiengang_kz=tbl_studiengang.studiengang_kz AND + tbl_projektbetreuer.betreuerart_kurzbz=tbl_betreuerart.betreuerart_kurzbz AND tbl_projektbetreuer.person_id=".$db->db_add_param($mitarbeiter->person_id, FHC_INTEGER); $stg_obj = new studiengang(); @@ -330,6 +331,7 @@ require_once('../../../include/benutzerberechtigung.class.php'); echo ''.$p->t('lvaliste/semester').''; echo ''.$p->t('lvaliste/lvBezeichnung').''; echo ''.$p->t('lvaliste/student').''; + echo ''.$p->t('lvaliste/betreuungsart').''; echo ''.$p->t('lvaliste/titelProjektarbeit').''; echo ''; while($row = $db->db_fetch_object($result)) @@ -339,6 +341,7 @@ require_once('../../../include/benutzerberechtigung.class.php'); echo ''.$row->semester.''; echo ''.$row->bezeichnung.''; echo ''.$row->student.''; + echo ''.$row->beutreuerart_beschreibung.''; echo ''.$row->titel.''; echo ''; diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index 2261a4e66..f5a1ae591 100644 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -111,7 +111,7 @@ if (!$searchPerson && !$searchOrt && !$searchDms && !$searchContent && !$searchO function searchPerson($searchItems) { - global $db, $p, $noalias; + global $db, $p, $noalias, $uid; $bn = new benutzer(); $bn->search($searchItems, 21); @@ -163,7 +163,19 @@ function searchPerson($searchItems) //echo '',$row->titelpre,''; echo '',$row->anrede,''; echo '',$row->vorname,''; - echo '',$row->nachname,''; + echo ''; + if(!defined('CIS_SUCHE_PROFIL_ANZEIGEN')) + echo '',$row->nachname,''; + else if(!CIS_SUCHE_PROFIL_ANZEIGEN) + { + $mitarbeiter = new Mitarbeiter($uid); + if($mitarbeiter->errormsg === NULL) + echo '',$row->nachname,''; + else + echo $row->nachname; + } + else + echo '',$row->nachname,''; if($row->aktiv==false) echo ' (ausgeschieden)'; elseif($bisverwendung->beschausmasscode=='5') diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 1ab74d1a9..4a13fe2f2 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -50,6 +50,9 @@ define('CIS_LVALISTE_NOTENEINGABE_ANZEIGEN',true); // Anzeige des LV-Plan Links bei globaler Suche define('CIS_SUCHE_LVPLAN_ANZEIGEN',true); +// Anzeige des Links zum Profil von Personen bei globaler Suche +define('CIS_SUCHE_PROFIL_ANZEIGEN',true); + // Soll geprueft werden ob das Passwort innerhalb des letzten Jahres geaendert wurde true|false // Wenn dies nicht geaendert wurde wird nach dem Login auf die Passwort aendern Seite umgeleitet define('CIS_CHECK_PASSWORD_CHANGE',false); @@ -93,6 +96,9 @@ define('FAS_GESAMTNOTE_PRUEFUNGSHONORAR',false); // Aus Datenschutzgründen ist dies per default deaktiviert define('CIS_GESAMTNOTE_FREIGABEMAIL_NOTE', false); +// Gibt an ob in der Notenliste der Studierenden nur offizielle Noten oder alle angezeigt werden +define('CIS_NOTENLISTE_OFFIZIELL_ANZEIGEN', false); + // Grenzwerte für Anwesenheit define('FAS_ANWESENHEIT_ROT', 70); define('FAS_ANWESENHEIT_GELB', 90); @@ -123,6 +129,7 @@ define('CIS_LVPLAN_PERSONENAUSWAHL_ANZEIGEN',true); define('CIS_LVPLAN_LEHRVERBANDAUSWAHL_ANZEIGEN',true); define('CIS_LVPLAN_ARCHIVAUSWAHL_ANZEIGEN',true); define('CIS_LVPLAN_ZUSATZMENUE_ANZEIGEN',true); +define('CIS_LVPLAN_SAALPLAN_ANZEIGEN',true); //Anmerkung bei Unterrichtseinheiten im LV-Plan anzeigen. Anmerkungen bei LV-Plan Sync mitkopieren. define('LVPLAN_ANMERKUNG_ANZEIGEN',true); @@ -238,7 +245,7 @@ define('LOG_CONTENT', false); // ContentID of default content-template for reports. New contents will be childs of this. define('REPORT_CONTENT_TEMPLATE', ''); -// Schwund in %, der bei Arbeitsplätzen herausgerechnet werden soll. +// Schwund in %, der bei Arbeitsplätzen herausgerechnet werden soll. // zB 5. Dann werden bei 20 Plätzen 5% Schwund herausgerechnet und nur 19 Plätze zurückgegeben define('REIHUNGSTEST_ARBEITSPLAETZE_SCHWUND', 0); diff --git a/content/fas.xul.php b/content/fas.xul.php index 85deaa818..2aecae047 100644 --- a/content/fas.xul.php +++ b/content/fas.xul.php @@ -110,7 +110,7 @@ foreach($addon_obj->result as $addon) - + @@ -377,14 +377,14 @@ foreach($addon_obj->result as $addon) label = "&menu-statistic-notenspiegel.label;" command = "menu-statistic-notenspiegel:command" accesskey = "&menu-statistic-notenspiegel.accesskey;"/> - + diff --git a/content/fasoverlay.js.php b/content/fasoverlay.js.php index 0c80221e9..bf0da34ae 100644 --- a/content/fasoverlay.js.php +++ b/content/fasoverlay.js.php @@ -503,6 +503,56 @@ function onVerbandSelect(event) } } +// **** +// * Wenn im Suchfeld Enter gedrueckt wird, dann die Suchfunktion starten +// **** +function LehrveranstaltungSearchFieldKeyPress(event) +{ + if(event.keyCode==13) //Enter + LehrveranstaltungSuche(); +} + +function LehrveranstaltungSuche() +{ + var filter = document.getElementById("lehrveranstaltung-toolbar-textbox-suche").value; + // Lehrveranstaltung + document.getElementById('statusbar-progressmeter').setAttribute('mode','undetermined'); + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + try + { + url = 'rdf/lehrveranstaltung_einheiten.rdf.php?filter='+encodeURIComponent(filter)+'&'+gettimestamp(); + var treeLV=document.getElementById('lehrveranstaltung-tree'); + + try + { + LvTreeDatasource.removeXMLSinkObserver(LvTreeSinkObserver); + treeLV.builder.removeListener(LvTreeListener); + } + catch(e) + {} + + //Alte DS entfernen + var oldDatasources = treeLV.database.GetDataSources(); + while(oldDatasources.hasMoreElements()) + { + treeLV.database.RemoveDataSource(oldDatasources.getNext()); + } + + var rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); + LvTreeDatasource = rdfService.GetDataSource(url); + LvTreeDatasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + LvTreeDatasource.QueryInterface(Components.interfaces.nsIRDFXMLSink); + treeLV.database.AddDataSource(LvTreeDatasource); + LvTreeDatasource.addXMLSinkObserver(LvTreeSinkObserver); + treeLV.builder.addListener(LvTreeListener); + document.getElementById('lehrveranstaltung-toolbar-lehrauftrag').hidden=true; + } + catch(e) + { + debug(e); + } +} + function onFachbereichSelect(event) { var tree=document.getElementById('tree-fachbereich'); @@ -1077,7 +1127,7 @@ function StatistikPrintNotenspiegelErweitert(typ) window.open('content/statistik/notenspiegel_erweitert.php?studiengang_kz='+studiengang_kz+'&semester='+semester+'&typ='+typ+'&orgform='+orgform,'Notenspiegel'); } -function StatistikPrintNotenspiegelStudent() +function StatistikPrintStudienverlaufStudent() { var tree = document.getElementById('student-tree'); var data=''; @@ -1094,7 +1144,7 @@ function StatistikPrintNotenspiegelStudent() alert('Markierte Person ist kein Student'); return; } - window.open('index.ci.php/person/gradelist/index/'+student_uid,'Notenspiegel'); + window.open('index.ci.php/person/gradelist/index/'+student_uid,'Studienverlauf'); } // **** diff --git a/content/lvplanung/lehrveranstaltungoverlay.xul.php b/content/lvplanung/lehrveranstaltungoverlay.xul.php index 628f80747..a43b5ca33 100644 --- a/content/lvplanung/lehrveranstaltungoverlay.xul.php +++ b/content/lvplanung/lehrveranstaltungoverlay.xul.php @@ -79,6 +79,8 @@ echo ' + + '; diff --git a/vilesci/stammdaten/auswertung_fhtw.php b/vilesci/stammdaten/auswertung_fhtw.php index a87260940..4bae503ca 100644 --- a/vilesci/stammdaten/auswertung_fhtw.php +++ b/vilesci/stammdaten/auswertung_fhtw.php @@ -732,6 +732,7 @@ if ($punkteUebertragen) $msg_error .= '
Sie haben keine Rechte, um für diesen Studiengang Ergebnisse ins FAS zu übertragen'; continue; } + // Checken, ob Person-Reihungstest-Studienplan zuteilung existiert if ($reihungstest->checkPersonRtStudienplanExists($prestudentrolle->person_id, $_POST['reihungstest_id'], $prestudentrolle->studienplan_id)) { @@ -742,7 +743,7 @@ if ($punkteUebertragen) if ($setRTPunkte->punkte == '') { $setRTPunkte->new = false; - $setRTPunkte->punkte = number_format($array['ergebnis'], 4); + $setRTPunkte->punkte = number_format(floatval($array['ergebnis']), 4); $setRTPunkte->updateamum = date('Y-m-d H:i:s'); $setRTPunkte->updatevon = $user; @@ -763,14 +764,18 @@ if ($punkteUebertragen) else { $setRTPunkte = new reihungstest(); - $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $_POST['reihungstest_id']); + $setRTPunkte->getPersonReihungstest($prestudentrolle->person_id, $_POST['reihungstest_id'], $prestudentrolle->studienplan_id); // Check, ob Punkte schon befüllt sind if ($setRTPunkte->punkte == '') { $setRTPunkte->new = true; + $setRTPunkte->person_id = $prestudentrolle->person_id; + $setRTPunkte->reihungstest_id = $_POST['reihungstest_id']; + $setRTPunkte->anmeldedatum = ''; + $setRTPunkte->ort_kurzbz = ''; $setRTPunkte->studienplan_id = $prestudentrolle->studienplan_id; - $setRTPunkte->punkte = number_format($array['ergebnis'], 4); + $setRTPunkte->punkte = number_format(floatval($array['ergebnis']), 4); $setRTPunkte->insertamum = date('Y-m-d H:i:s'); $setRTPunkte->insertvon = $user; @@ -834,27 +839,44 @@ if ($punkteUebertragen) // Um einen Bewerberstatus zu setzen, muss "reihungstestangetreten" true sein if ($prestudent->reihungstestangetreten == true) { - $prestudent->new = true; - $prestudent->prestudent_id = $array['prestudent_id']; - $prestudent->status_kurzbz = 'Bewerber'; - $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; - $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; - $prestudent->datum = date('Y-m-d'); - $prestudent->insertamum = date('Y-m-d H:i:s'); - $prestudent->insertvon = $user; - $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; - $prestudent->bestaetigtam = ''; - $prestudent->bestaetigtvon = ''; - $prestudent->bewerbung_abgeschicktamum = ''; - $prestudent->studienplan_id = $prestudentrolle->studienplan_id; - - if (!$prestudent->save_rolle()) + // Um einen Bewerberstatus zu setzen, muss die ZGV ausgefüllt sein + if ($prestudent->zgv_code != '') { - $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; + $studiengang = new studiengang($prestudent->studiengang_kz); + // Bei Mastern muss auch die ZGV-Master ausgefüllt sein + if ($studiengang->typ == 'm' && $prestudent->zgvmas_code == '') + { + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine Master-ZGV eingetragen sein.'; + } + else + { + $prestudent->new = true; + $prestudent->prestudent_id = $array['prestudent_id']; + $prestudent->status_kurzbz = 'Bewerber'; + $prestudent->studiensemester_kurzbz = $prestudentrolle->studiensemester_kurzbz; + $prestudent->ausbildungssemester = $prestudentrolle->ausbildungssemester; + $prestudent->datum = date('Y-m-d'); + $prestudent->insertamum = date('Y-m-d H:i:s'); + $prestudent->insertvon = $user; + $prestudent->orgform_kurzbz = $prestudentrolle->orgform_kurzbz; + $prestudent->bestaetigtam = ''; + $prestudent->bestaetigtvon = ''; + $prestudent->bewerbung_abgeschicktamum = ''; + $prestudent->studienplan_id = $prestudentrolle->studienplan_id; + + if (!$prestudent->save_rolle()) + { + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].': '.$prestudent->errormsg; + } + else + { + $count_success_bewerber++; + } + } } else { - $count_success_bewerber++; + $msg_error .= '
Fehler beim speichern des Bewerberstatus für Prestudent '.$array['prestudent_id'].'. Es muss zuerst eine ZGV eingetragen sein.'; } } else @@ -1331,7 +1353,7 @@ if (isset($_REQUEST['reihungstest'])) ORDER BY start ASC LIMIT 1 ) ) - AND bewerbung_abgeschicktamum IS NOT NULL + /*AND bewerbung_abgeschicktamum IS NOT NULL*/ /* Leider gibt es bestaetigte Bewerbungen, die nie abgeschickt wurden */ AND bestaetigtam IS NOT NULL AND tbl_gebiet.gebiet_id != 7 "; @@ -2347,6 +2369,7 @@ else error: function(data) { $("#msgbox").attr("class","alert alert-danger"); + $(".loaderIcon").hide(); $("#msgbox").show(); $("#msgbox").html(data["msg"]); } @@ -2434,83 +2457,80 @@ else } else { - //if (confirm("Setzt bei allen markierten Personen \'Zum Reihungstest angetreten\' und informiert die entsprechende Studiengangsassistenz. Wollen Sie fortfahren?")) + $("input.prestudentCheckbox:checked").each(function() { - $("input.prestudentCheckbox:checked").each(function() + if ($("#uebertragenOptionPhysik:checked").length === 1) { - if ($("#uebertragenOptionPhysik:checked").length === 1) - { - prestudentPunkteArr.push({ - prestudent_id: $(this).attr("name"), - ergebnis: $(this).parents("tr").find(".erg_gesamt_mit_physik").text() - }); - } - else - { - prestudentPunkteArr.push({ - prestudent_id: $(this).attr("name"), - ergebnis: $(this).parents("tr").find(".erg_gesamt_ohne_physik").text() - }); - } - }); - - $(".loaderIcon").show(); - if ($("#uebertragenOptionGesamtpunkte:checked").length === 1) - { - gesamtpunkteSetzen = true; + prestudentPunkteArr.push({ + prestudent_id: $(this).attr("name"), + ergebnis: $(this).parents("tr").find(".erg_gesamt_mit_physik").text() + }); } - if ($("#uebertragenOptionBewerber:checked").length === 1) + else { - zuBewerberMachen = true; + prestudentPunkteArr.push({ + prestudent_id: $(this).attr("name"), + ergebnis: $(this).parents("tr").find(".erg_gesamt_ohne_physik").text() + }); } - - data = { - reihungstest_id: reihungstest, - prestudentPunkteArr: prestudentPunkteArr, - gesamtpunkteSetzen: gesamtpunkteSetzen, - zuBewerberMachen: zuBewerberMachen, - punkteUebertragen: true - }; + }); + + $(".loaderIcon").show(); + if ($("#uebertragenOptionGesamtpunkte:checked").length === 1) + { + gesamtpunkteSetzen = true; + } + if ($("#uebertragenOptionBewerber:checked").length === 1) + { + zuBewerberMachen = true; + } + + data = { + reihungstest_id: reihungstest, + prestudentPunkteArr: prestudentPunkteArr, + gesamtpunkteSetzen: gesamtpunkteSetzen, + zuBewerberMachen: zuBewerberMachen, + punkteUebertragen: true + }; - $.ajax({ - url: "auswertung_fhtw.php", - data: data, - type: "POST", - dataType: "json", - success: function(data) + $.ajax({ + url: "auswertung_fhtw.php", + data: data, + type: "POST", + dataType: "json", + success: function(data) + { + $("#msgbox").html(""); + if(data["msg_success"] !== "") { - $("#msgbox").html(""); - if(data["msg_success"] !== "") - { - $("#msgbox").attr("class","alert alert-success"); - $(".loaderIcon").hide(); - $("#msgbox").show(); - $("#msgbox").append(data["msg_success"]); - } - if(data["msg_warning"] !== "") - { - $("#msgbox").attr("class","alert alert-warning"); - $(".loaderIcon").hide(); - $("#msgbox").show(); - $("#msgbox").append(data["msg_warning"]); - //$("#msgbox").html(data["msg"]).delay(2000).fadeOut(); - } - if(data["msg_error"] !== "") - { - $("#msgbox").attr("class","alert alert-danger"); - $(".loaderIcon").hide(); - $("#msgbox").show(); - $("#msgbox").append(data["msg_error"]); - } - }, - error: function(data) + $("#msgbox").attr("class","alert alert-success"); + $(".loaderIcon").hide(); + $("#msgbox").show(); + $("#msgbox").append(data["msg_success"]); + } + if(data["msg_warning"] !== "") + { + $("#msgbox").attr("class","alert alert-warning"); + $(".loaderIcon").hide(); + $("#msgbox").show(); + $("#msgbox").append(data["msg_warning"]); + //$("#msgbox").html(data["msg"]).delay(2000).fadeOut(); + } + if(data["msg_error"] !== "") { $("#msgbox").attr("class","alert alert-danger"); + $(".loaderIcon").hide(); $("#msgbox").show(); - $("#msgbox").html(data["msg"]); + $("#msgbox").append(data["msg_error"]); } - }); - } + }, + error: function(data) + { + $("#msgbox").attr("class","alert alert-danger"); + $("#msgbox").show(); + $("#msgbox").html(data["msg"]); + } + }); } }