Merge branch 'master' into StatusabhaengigerDokumentenupload

This commit is contained in:
Manfred Kindl
2019-06-25 11:24:13 +02:00
24 changed files with 3581 additions and 582 deletions
-3
View File
@@ -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);
}
@@ -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;
}
+16
View File
@@ -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;
}
+8 -2
View File
@@ -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');
}
/**
+65 -82
View File
@@ -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(
@@ -37,7 +37,8 @@
<b><?php echo $this->p->t('lehre', 'gewichteternotendurchschnitt'); ?>
<img src="../../../../skin/images/information.png" title="<?php echo htmlentities($this->p->t('lehre', 'info_notendurchschnitt_gewichtet')); ?>" />:</b>
<?php echo $courses['overall']['notendurchschnittgewichtet'] ?><br>
<b><?php echo $this->p->t('lehre', 'ects'); ?>:</b>
<b><?php echo $this->p->t('lehre', 'ects'); ?>
<img src="../../../../skin/images/information.png" title="Summe der positiv absolvierten ECTS" />:</b>
<?php echo $courses['overall']['ectssumme_positiv'] ?><br>
<br>
<?php
+444 -441
View File
@@ -1,441 +1,444 @@
<?php
/*
* Copyright (C) 2008 Technikum-Wien
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* 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 '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<title>' . $p->t('tools/leistungsbeurteilung') . '</title>
<script language="JavaScript" type="text/javascript">
function MM_jumpMenu(targ, selObj, restore)
{
eval(targ + ".location=\'" + selObj.options[selObj.selectedIndex].value + "\'");
if(restore)
{
selObj.selectedIndex = 0;
}
};
// Add parser through the tablesorter addParser method for sorting Studiensemester
$.tablesorter.addParser({
// set a unique id
id: "studiensemester",
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format data for normalization
var result = s.substr(2) + s.substr(0, 2);
return result;
},
// set type, either numeric or text
type: "text"
});
$(document).ready(function()
{
$("#notenliste").tablesorter(
{
headers: {
1: {
sorter:"studiensemester"
}},
' . ($stsem == 'alle' ? 'sortList: [[1,0],[4,0]],' : 'sortList: [[3,0]],') . '
widgets: ["zebra"]
});
});
</script>
</head>
<body>
<h1>' . $p->t('tools/leistungsbeurteilung') . '</h1>';
$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 "<br />";
echo "<b>".$p->t('global/name').":</b> $vorname $nachname<br />";
echo "<b>".$p->t('global/studiengang').":</b> $studiengang_bezeichnung<br />";
echo "<b>".$p->t('global/studiensemester')."</b> <SELECT name='stsem' onChange=\"MM_jumpMenu('self',this,0)\">";
echo "<OPTION value='notenliste.php?stsem=alle".$getParam."'>".$p->t('news/allesemester')."</OPTION>";
$notenImAktuellenStSem = false;
foreach ($stsem_obj->studiensemester as $semrow)
{
if ($stsem == $semrow->studiensemester_kurzbz)
{
echo "<OPTION value='notenliste.php?stsem=" . $semrow->studiensemester_kurzbz . $getParam . "' selected>$semrow->studiensemester_kurzbz</OPTION>";
$notenImAktuellenStSem = true;
}
else
{
echo "<OPTION value='notenliste.php?stsem=" . $semrow->studiensemester_kurzbz . $getParam . "'>$semrow->studiensemester_kurzbz</OPTION>";
}
}
echo "</SELECT><br />";
// echo "Datum: ".date('d.m.Y')."<br />";
echo "<br />";
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 = "<table class='tablesorter' id='notenliste' style='width: auto;'>";
$tblHead = "<thead>
<tr class='liste'>
<th>" . $p->t('global/lehrveranstaltung') . "</th>";
if ($stsem == "alle")
$tblHead .= "<th>" . $p->t('global/studiensemester') . "</th>";
$tblHead .= "<th>" . $p->t('benotungstool/lvNote') . "</th>";
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
$tblHead .= "<th>" . $p->t('benotungstool/punkte') . "</th>";
$tblHead .= " <th>" . $p->t('benotungstool/zeugnisnote') . "</th>";
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
$tblHead .= "<th>" . $p->t('benotungstool/punkte') . "</th>";
$tblHead .= "
<th>" . $p->t('tools/benotungsdatumDerZeugnisnote') . "</th>
<th>" . $p->t('benotungstool/pruefung') . "</th>
</tr>
</thead>";
$tblBody = "<tbody>";
$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 .= "<tr><td>" . $lv_obj->bezeichnung_arr[$sprache] . ($lv_obj->lehrform_kurzbz != "" && $lv_obj->lehrform_kurzbz != " - " ? " (" . $lv_obj->lehrform_kurzbz . ")" : "") . "</td>";
if ($stsem == "alle")
$tblBody .= "<td>" . ($row->studiensemester_zeugnis != '' ? $row->studiensemester_zeugnis : $row->studiensemester_lvnote) . "</th>";
$tblBody .= "<td>";
// 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 .= "</td>";
// LV Gesamtnote Punkte
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
{
$lvpunkte = ($row->lvpunkte != '' ? (float) $row->lvpunkte : '');
$tblBody .= "<td>" . $lvpunkte . "</td>";
}
if ($row->note != $row->lvnote && $row->lvnote != NULL)
{
$markier = " style='background-color: #FFD999;'";
$legende = true;
}
else
$markier = "";
$tblBody .= "<td " . $markier . ">";
if (isset($notenarr[$row->note]))
$tblBody .= $notenarr[$row->note]['bezeichnung'];
else
$tblBody .= $row->note;
$tblBody .= "</td>";
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
{
$punkte = ($row->punkte != '' ? ((float) $row->punkte) : '');
$tblBody .= "<td>" . $punkte . "</td>";
}
$tblBody .= '<td>' . $datum_obj->formatDatum($row->benotungsdatum, 'Y-m-d') . '</td>';
$pruefung = new pruefung();
$pruefung->getPruefungen($user, null, $row->lehrveranstaltung_id, $stsem);
if (count($pruefung->result) > 0)
{
$tblBody .= '<td>';
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 . '<br>';
}
$tblBody .= '</td>';
}
else
$tblBody .= '<td></td>';
$tblBody .= "</tr>";
}
// 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 .= "</tbody>";
$tblFoot = "<tfoot>";
if ($anzahlLv != 0)
$notenDurchschnitt = round($notenSumme / $anzahlLv, 2);
else
$notenDurchschnitt = 0;
if ($ectsSumme != 0)
$notenDurchschnittGewichtet = round($notenSummeGewichtet / $ectsSumme, 2);
else
$notenDurchschnittGewichtet = 0;
$tblFoot .= '<tr>';
$tblFoot .= '<td colspan="'.($stsem == "alle" ? 3 : 2).'" align="right"><b>' . $p->t("tools/notendurchschnittDerZeugnisnote") . '</b></td>';
$tblFoot .= '<td style="background-color: #EEEEEE;">'.$notenDurchschnitt.'</td>';
$tblFoot .= '<td colspan="2"></td>';
$tblFoot .= "</tr>";
$tblFoot .= '<tr>';
$tblFoot .= '<td colspan="'.($stsem == "alle" ? 3 : 2).'" align="right"><b>' . $p->t("tools/gewichteterNotendurchschnittDerZeugnisnote") . '</b></td>';
$tblFoot .= '<td style="background-color: #EEEEEE;">'.$notenDurchschnittGewichtet.'</td>';
$tblFoot .= '<td colspan="2"></td>';
$tblFoot .= "</tr>";
$tblFoot .= "</tfoot>";
$tbl .= $tblHead.$tblFoot.$tblBody;
$tbl .= "<table><tbody><tr><td width='20' style='text-align: right;'>*</td><td>" . $p->t('tools/legendeNotendurchschnitt') . "</td></tr>";
$tbl .= "<tr><td width='20' style='text-align: right;'>**</td><td>" . $p->t('tools/legendeGewichteterNotendurchschnitt') . "</td></tr>";
if ($legende)
{
$tbl .= "<tr><td width='20' style='background-color: #FFD999;'></td><td>" . $p->t('tools/hinweistextMarkierung') . "</td></tr>";
}
$tbl .= "</tbody></table></table>";
if ($i == 0)
echo $p->t('tools/nochKeineBeurteilungEingetragen');
else
{
$tbl .= "</table><br><br><br>";
echo $tbl;
}
}
else
{
$error .= $p->t('tools/fehlerBeimAuslesenDerNoten');
}
}
echo $error;
echo '</body>
</html>';
?>
<?php
/*
* Copyright (C) 2008 Technikum-Wien
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* 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 '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../../vendor/jquery/sizzle/sizzle.js"></script>
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<title>' . $p->t('tools/leistungsbeurteilung') . '</title>
<script language="JavaScript" type="text/javascript">
function MM_jumpMenu(targ, selObj, restore)
{
eval(targ + ".location=\'" + selObj.options[selObj.selectedIndex].value + "\'");
if(restore)
{
selObj.selectedIndex = 0;
}
};
// Add parser through the tablesorter addParser method for sorting Studiensemester
$.tablesorter.addParser({
// set a unique id
id: "studiensemester",
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format data for normalization
var result = s.substr(2) + s.substr(0, 2);
return result;
},
// set type, either numeric or text
type: "text"
});
$(document).ready(function()
{
$("#notenliste").tablesorter(
{
headers: {
1: {
sorter:"studiensemester"
}},
' . ($stsem == 'alle' ? 'sortList: [[1,0],[4,0]],' : 'sortList: [[3,0]],') . '
widgets: ["zebra"]
});
});
</script>
</head>
<body>
<h1>' . $p->t('tools/leistungsbeurteilung') . '</h1>';
$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 "<br />";
echo "<b>".$p->t('global/name').":</b> $vorname $nachname<br />";
echo "<b>".$p->t('global/studiengang').":</b> $studiengang_bezeichnung<br />";
echo "<b>".$p->t('global/studiensemester')."</b> <SELECT name='stsem' onChange=\"MM_jumpMenu('self',this,0)\">";
echo "<OPTION value='notenliste.php?stsem=alle".$getParam."'>".$p->t('news/allesemester')."</OPTION>";
$notenImAktuellenStSem = false;
foreach ($stsem_obj->studiensemester as $semrow)
{
if ($stsem == $semrow->studiensemester_kurzbz)
{
echo "<OPTION value='notenliste.php?stsem=" . $semrow->studiensemester_kurzbz . $getParam . "' selected>$semrow->studiensemester_kurzbz</OPTION>";
$notenImAktuellenStSem = true;
}
else
{
echo "<OPTION value='notenliste.php?stsem=" . $semrow->studiensemester_kurzbz . $getParam . "'>$semrow->studiensemester_kurzbz</OPTION>";
}
}
echo "</SELECT><br />";
// echo "Datum: ".date('d.m.Y')."<br />";
echo "<br />";
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 = "<table class='tablesorter' id='notenliste' style='width: auto;'>";
$tblHead = "<thead>
<tr class='liste'>
<th>" . $p->t('global/lehrveranstaltung') . "</th>";
if ($stsem == "alle")
$tblHead .= "<th>" . $p->t('global/studiensemester') . "</th>";
$tblHead .= "<th>" . $p->t('benotungstool/lvNote') . "</th>";
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
$tblHead .= "<th>" . $p->t('benotungstool/punkte') . "</th>";
$tblHead .= " <th>" . $p->t('benotungstool/zeugnisnote') . "</th>";
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
$tblHead .= "<th>" . $p->t('benotungstool/punkte') . "</th>";
$tblHead .= "
<th>" . $p->t('tools/benotungsdatumDerZeugnisnote') . "</th>
<th>" . $p->t('benotungstool/pruefung') . "</th>
</tr>
</thead>";
$tblBody = "<tbody>";
$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 .= "<tr><td>" . $lv_obj->bezeichnung_arr[$sprache] . ($lv_obj->lehrform_kurzbz != "" && $lv_obj->lehrform_kurzbz != " - " ? " (" . $lv_obj->lehrform_kurzbz . ")" : "") . "</td>";
if ($stsem == "alle")
$tblBody .= "<td>" . ($row->studiensemester_zeugnis != '' ? $row->studiensemester_zeugnis : $row->studiensemester_lvnote) . "</th>";
$tblBody .= "<td>";
// 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 .= "</td>";
// LV Gesamtnote Punkte
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
{
$lvpunkte = ($row->lvpunkte != '' ? (float) $row->lvpunkte : '');
$tblBody .= "<td>" . $lvpunkte . "</td>";
}
if ($row->note != $row->lvnote && $row->lvnote != NULL)
{
$markier = " style='background-color: #FFD999;'";
$legende = true;
}
else
$markier = "";
$tblBody .= "<td " . $markier . ">";
if (isset($notenarr[$row->note]))
$tblBody .= $notenarr[$row->note]['bezeichnung'];
else
$tblBody .= $row->note;
$tblBody .= "</td>";
if (defined('CIS_GESAMTNOTE_PUNKTE') && CIS_GESAMTNOTE_PUNKTE)
{
$punkte = ($row->punkte != '' ? ((float) $row->punkte) : '');
$tblBody .= "<td>" . $punkte . "</td>";
}
$tblBody .= '<td>' . $datum_obj->formatDatum($row->benotungsdatum, 'Y-m-d') . '</td>';
$pruefung = new pruefung();
$pruefung->getPruefungen($user, null, $row->lehrveranstaltung_id, $stsem);
if (count($pruefung->result) > 0)
{
$tblBody .= '<td>';
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 . '<br>';
}
$tblBody .= '</td>';
}
else
$tblBody .= '<td></td>';
$tblBody .= "</tr>";
}
// 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 .= "</tbody>";
$tblFoot = "<tfoot>";
if ($anzahlLv != 0)
$notenDurchschnitt = round($notenSumme / $anzahlLv, 2);
else
$notenDurchschnitt = 0;
if ($ectsSumme != 0)
$notenDurchschnittGewichtet = round($notenSummeGewichtet / $ectsSumme, 2);
else
$notenDurchschnittGewichtet = 0;
$tblFoot .= '<tr>';
$tblFoot .= '<td colspan="'.($stsem == "alle" ? 3 : 2).'" align="right"><b>' . $p->t("tools/notendurchschnittDerZeugnisnote") . '</b></td>';
$tblFoot .= '<td style="background-color: #EEEEEE;">'.$notenDurchschnitt.'</td>';
$tblFoot .= '<td colspan="2"></td>';
$tblFoot .= "</tr>";
$tblFoot .= '<tr>';
$tblFoot .= '<td colspan="'.($stsem == "alle" ? 3 : 2).'" align="right"><b>' . $p->t("tools/gewichteterNotendurchschnittDerZeugnisnote") . '</b></td>';
$tblFoot .= '<td style="background-color: #EEEEEE;">'.$notenDurchschnittGewichtet.'</td>';
$tblFoot .= '<td colspan="2"></td>';
$tblFoot .= "</tr>";
$tblFoot .= "</tfoot>";
$tbl .= $tblHead.$tblFoot.$tblBody;
$tbl .= "<table><tbody><tr><td width='20' style='text-align: right;'>*</td><td>" . $p->t('tools/legendeNotendurchschnitt') . "</td></tr>";
$tbl .= "<tr><td width='20' style='text-align: right;'>**</td><td>" . $p->t('tools/legendeGewichteterNotendurchschnitt') . "</td></tr>";
if ($legende)
{
$tbl .= "<tr><td width='20' style='background-color: #FFD999;'></td><td>" . $p->t('tools/hinweistextMarkierung') . "</td></tr>";
}
$tbl .= "</tbody></table></table>";
if ($i == 0)
echo $p->t('tools/nochKeineBeurteilungEingetragen');
else
{
$tbl .= "</table><br><br><br>";
echo $tbl;
}
}
else
{
$error .= $p->t('tools/fehlerBeimAuslesenDerNoten');
}
}
echo $error;
echo '</body>
</html>';
?>
@@ -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);
}
+20 -11
View File
@@ -314,8 +314,14 @@ function LoadGruppe(type)
</td></tr>
<tr>
<td width="30%">
<h2>'.$p->t("lvplan/saalplan").'</h2>
<td width="30%">';
if(!defined('CIS_LVPLAN_SAALPLAN_ANZEIGEN') || CIS_LVPLAN_SAALPLAN_ANZEIGEN)
{
echo '<h2>'.$p->t("lvplan/saalplan").'</h2>';
}
echo '
</td>
<td>';
@@ -328,21 +334,24 @@ function LoadGruppe(type)
</td>
</tr>
<tr>
<td valign="top">
<td valign="top">';
if(!defined('CIS_LVPLAN_SAALPLAN_ANZEIGEN') || CIS_LVPLAN_SAALPLAN_ANZEIGEN)
{ echo '
<select name="select" style="width:200px;" onChange="MM_jumpMenu(\'self\',this,0)">
<option value="stpl_week.php" selected>'.$p->t('lvplan/raumAuswaehlen').'</option>';
if(defined('CIS_SAALPLAN_ALLERAEUME_OPTION') && CIS_SAALPLAN_ALLERAEUME_OPTION)
echo '<option value="stpl_week.php?type=ort&amp;ort_kurzbz=all" value="all">'.$p->t('lvplan/alleRaeume').'</option>';
if(defined('CIS_SAALPLAN_ALLERAEUME_OPTION') && CIS_SAALPLAN_ALLERAEUME_OPTION)
echo '<option value="stpl_week.php?type=ort&amp;ort_kurzbz=all" value="all">'.$p->t('lvplan/alleRaeume').'</option>';
for ($i=0;$i<$num_rows_ort;$i++)
{
$row=$db->db_fetch_object ($result_ort, $i);
echo "<option value=\"stpl_week.php?type=ort&amp;ort_kurzbz=$row->ort_kurzbz\">$row->ort_kurzbz ($row->bezeichnung)</option>";
}
for ($i=0;$i<$num_rows_ort;$i++)
{
$row=$db->db_fetch_object ($result_ort, $i);
echo "<option value=\"stpl_week.php?type=ort&amp;ort_kurzbz=$row->ort_kurzbz\">$row->ort_kurzbz ($row->bezeichnung)</option>";
}
echo '</select>';
}
if ($raumres)
{
+5 -2
View File
@@ -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 '<th>'.$p->t('lvaliste/semester').'</th>';
echo '<th>'.$p->t('lvaliste/lvBezeichnung').'</th>';
echo '<th>'.$p->t('lvaliste/student').'</th>';
echo '<th>'.$p->t('lvaliste/betreuungsart').'</th>';
echo '<th>'.$p->t('lvaliste/titelProjektarbeit').'</th>';
echo '</tr></thead><tbody>';
while($row = $db->db_fetch_object($result))
@@ -339,6 +341,7 @@ require_once('../../../include/benutzerberechtigung.class.php');
echo '<td>'.$row->semester.'</td>';
echo '<td>'.$row->bezeichnung.'</td>';
echo '<td>'.$row->student.'</td>';
echo '<td>'.$row->beutreuerart_beschreibung.'</td>';
echo '<td>'.$row->titel.'</td>';
echo '</tr>';
+11 -3
View File
@@ -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);
@@ -164,10 +164,18 @@ function searchPerson($searchItems)
echo '<td>',$row->anrede,'</td>';
echo '<td>',$row->vorname,'</td>';
echo '<td>';
if(!defined('CIS_SUCHE_PROFIL_ANZEIGEN') || CIS_SUCHE_PROFIL_ANZEIGEN)
if(!defined('CIS_SUCHE_PROFIL_ANZEIGEN'))
echo '<a href="../profile/index.php?uid=',$row->uid,'" title="',$row->titelpre,' ',$row->vorname,' ',$row->nachname,' ',$row->titelpost,'">',$row->nachname,'</a>';
else if(!CIS_SUCHE_PROFIL_ANZEIGEN)
{
$mitarbeiter = new Mitarbeiter($uid);
if($mitarbeiter->errormsg === NULL)
echo '<a href="../profile/index.php?uid=',$row->uid,'" title="',$row->titelpre,' ',$row->vorname,' ',$row->nachname,' ',$row->titelpost,'">',$row->nachname,'</a>';
else
echo $row->nachname;
}
else
echo $row->nachname;
echo '<a href="../profile/index.php?uid=',$row->uid,'" title="',$row->titelpre,' ',$row->vorname,' ',$row->nachname,' ',$row->titelpost,'">',$row->nachname,'</a>';
if($row->aktiv==false)
echo '<span style="color: red"> (ausgeschieden)</span>';
elseif($bisverwendung->beschausmasscode=='5')
+5 -1
View File
@@ -96,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);
@@ -126,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);
@@ -241,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);
+7 -7
View File
@@ -110,7 +110,7 @@ foreach($addon_obj->result as $addon)
<command id="menu-statistic-notenspiegel:command" oncommand="StatistikPrintNotenspiegel('html');"/>
<command id="menu-statistic-notenspiegel-excel:command" oncommand="StatistikPrintNotenspiegel('xls');"/>
<command id="menu-statistic-notenspiegel-excel-erweitert:command" oncommand="StatistikPrintNotenspiegelErweitert('xls');"/>
<command id="menu-statistic-notenspiegel-student:command" oncommand="StatistikPrintNotenspiegelStudent();"/>
<command id="menu-statistic-studienverlauf-student:command" oncommand="StatistikPrintStudienverlaufStudent();"/>
<command id="menu-statistic-substatistik-studentenprosemester-excel:command" oncommand="StatistikPrintStudentenProSemester('xls');"/>
<command id="menu-statistic-substatistik-studentenprosemester-html:command" oncommand="StatistikPrintStudentenProSemester('');"/>
<command id="menu-statistic-substatistik-alvsstatistik-excel:command" oncommand="StatistikPrintALVSStatistik('xls');"/>
@@ -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;"/>
<menuitem
id = "menu-statistic-notenspiegel-student"
key = "menu-statistic-notenspiegel-student:key"
label = "&menu-statistic-notenspiegel-student.label;"
command = "menu-statistic-notenspiegel-student:command"
accesskey = "&menu-statistic-notenspiegel-student.accesskey;"/>
</menupopup>
</menu>
<menuitem
id = "menu-statistic-studienverlauf-student"
key = "menu-statistic-studienverlauf-student:key"
label = "&menu-statistic-studienverlauf-student.label;"
command = "menu-statistic-studienverlauf-student:command"
accesskey = "&menu-statistic-studienverlauf-student.accesskey;"/>
</menupopup>
</menu>
<!-- *** Statistik *** -->
+2 -2
View File
@@ -1077,7 +1077,7 @@ function StatistikPrintNotenspiegelErweitert(typ)
window.open('<?php echo APP_ROOT ?>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 +1094,7 @@ function StatistikPrintNotenspiegelStudent()
alert('Markierte Person ist kein Student');
return;
}
window.open('<?php echo APP_ROOT ?>index.ci.php/person/gradelist/index/'+student_uid,'Notenspiegel');
window.open('<?php echo APP_ROOT ?>index.ci.php/person/gradelist/index/'+student_uid,'Studienverlauf');
}
// ****
@@ -233,7 +233,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#lehrveranstaltung_id"
label="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#bezeichnung rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#orgform_kurzbz (rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#semester Sem)"
label="rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#bezeichnung rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#orgform_kurzbz (rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#semester Sem) ID: rdf:http://www.technikum-wien.at/lehrveranstaltung/rdf#lehrveranstaltung_id"
uri="rdf:*"/>
</menupopup>
</template>
@@ -247,7 +247,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<template>
<menupopup>
<menuitem value="rdf:http://www.technikum-wien.at/lehreinheit/rdf#lehreinheit_id"
label="rdf:http://www.technikum-wien.at/lehreinheit/rdf#bezeichnung rdf:http://www.technikum-wien.at/lehreinheit/rdf#studiensemester_kurzbz"
label="rdf:http://www.technikum-wien.at/lehreinheit/rdf#bezeichnung rdf:http://www.technikum-wien.at/lehreinheit/rdf#studiensemester_kurzbz ID: rdf:http://www.technikum-wien.at/lehreinheit/rdf#lehreinheit_id"
uri="rdf:*"/>
</menupopup>
</template>
+2 -2
View File
@@ -292,7 +292,7 @@ class dokument_export
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte versuchen Sie es in einer Minute erneut oder kontaktieren Sie einen Administrator';
return false;
}
break;
@@ -465,7 +465,7 @@ class dokument_export
if($ret!=0)
{
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';
$this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte versuchen Sie es in einer Minute erneut oder kontaktieren Sie einen Administrator';
return false;
}
+3 -3
View File
@@ -114,9 +114,9 @@
<!ENTITY menu-statistic-notenspiegel.label "Notenspiegel HTML">
<!ENTITY menu-statistic-notenspiegel.accesskey "H">
<!ENTITY menu-statistic-notenspiegel-student.key "S">
<!ENTITY menu-statistic-notenspiegel-student.label "Notenspiegel Student">
<!ENTITY menu-statistic-notenspiegel-student.accesskey "S">
<!ENTITY menu-statistic-studienverlauf-student.key "S">
<!ENTITY menu-statistic-studienverlauf-student.label "Studienverlauf Student">
<!ENTITY menu-statistic-studienverlauf-student.accesskey "S">
<!ENTITY menu-statistic-substatistik-bewerberstatistik.label "BewerberInnenstatistik">
<!ENTITY menu-statistic-substatistik-bewerberstatistik.accesskey "B">
+4 -1
View File
@@ -1,5 +1,7 @@
<?php
$this->phrasen['lvaliste/titel']='Lehrveranstaltungsübersicht';
$this->phrasen['lvaliste/anwesenheit']='Anwesenheit';
$this->phrasen['lvaliste/anwesenheit/studenten']='Anwesenheit der Studierenden';
$this->phrasen['lvaliste/hilfeText']='Erklärung\n\nStg-Sem: Studiengang-Semester\nGruppen: Teilnehmende Gruppen\nBlock: Blockung (1->Einzelstunden; 2->Doppelstunden; ...)\nWR: Wochenrhythmus (1->jede Woche; 2->jede 2. Woche; ...)\nStd: gesamte Semesterstunden\nKW: Kalenderwoche in der die Lehrveranstaltung startet';
$this->phrasen['lvaliste/hilfeAnzeigen']='Hilfe anzeigen';
@@ -31,4 +33,5 @@ $this->phrasen['lvaliste/gesamtnote']='Noten eintragen';
$this->phrasen['lvaliste/anzahl']='Anzahl';
$this->phrasen['lvaliste/summe']='Summe';
$this->phrasen['lvaliste/lvinfo']='LV-Info';
$this->phrasen['lvaliste/id']='ID';
$this->phrasen['lvaliste/id']='ID';
$this->phrasen['lvaliste/betreuungsart']='Betreuungsart';
+3
View File
@@ -29,6 +29,9 @@ $this->phrasen['lvaliste/keineDatensaetze']='No Entrys for this Semester!';
$this->phrasen['lvaliste/lehrveranstaltungen']='Courses';
$this->phrasen['lvaliste/betreuungen']='Supervisor';
$this->phrasen['lvaliste/koordination']='Coordination';
$this->phrasen['lvaliste/gesamtnote']='Enter grades';
$this->phrasen['lvaliste/anzahl']='Number';
$this->phrasen['lvaliste/summe']='Total';
$this->phrasen['lvaliste/lvinfo']='Course-Info';
$this->phrasen['lvaliste/id']='ID';
$this->phrasen['lvaliste/betreuungsart']='Kind of supervision';
+8
View File
@@ -669,6 +669,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
else
{
$note_alt = $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'];
$note_alt_positiv = $arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note_positiv'];
$note_neu = $row_stud->anmerkung;
// alte oder neue note besser
@@ -687,6 +688,13 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note'] = $db->db_parse_bool($row_stud->offiziell) ? $row_stud->anmerkung : "";
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note_positiv'] = $db->db_parse_bool($row_stud->positiv);
$arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['sort'] = $row_stud->sort;
// ects dazuzählen wenn alte Note negativ, neue positiv
if ($arrayLvAusbildungssemester[$row_stud->lehrveranstaltung_id]['note_positiv'] === true && $note_alt_positiv !== true)
{
$ects_total_positiv += $row_stud->ects;
$semester_ects_positiv += $row_stud->ects;
}
}
}
Binary file not shown.
File diff suppressed because it is too large Load Diff
+1 -10
View File
@@ -683,8 +683,7 @@ echo '
19: {sorter: false, filter: false},
20: {sorter: false, filter: false},
21: {sorter: false, filter: false}},
widgetOptions : {filter_saveFilters : true,
filter_functions : {
widgetOptions : {filter_functions : {
// Add select menu to this column
10 : {
"True" : function(e, n, f, i, $r, c, data) { return /t/.test(e); },
@@ -704,13 +703,6 @@ echo '
}
}
}
});
$(\'.resetsaved\').click(function()
{
$("#t1").trigger("filterReset");
location.reload();
return false;
});
});
@@ -990,7 +982,6 @@ if ($result_lv!=0)
$num_rows=$db->db_num_rows($result_lv);
echo '<h3>&Uuml;bersicht - '.$num_rows.' LVAs</h3>
<button type="button" class="resetsaved" title="Reset Filter">Reset Filter</button>
<table class="tablesorter" id="t1">
<thead>
<tr>';
+1 -1
View File
@@ -1348,7 +1348,7 @@ if (isset($_REQUEST['reihungstest']))
ORDER BY start ASC LIMIT 1
)
)
AND bewerbung_abgeschicktamum IS NOT NULL
/*AND bewerbung_abgeschicktamum IS NOT NULL*/ /* Leider gibt es bestaetigte Bewerbungen, die nie abgeschickt wurden */
AND bestaetigtam IS NOT NULL
AND tbl_gebiet.gebiet_id != 7
";