Merge branch 'master' into feature-27388/Anrechnungen_Zeitfenster-pflegen

This commit is contained in:
Harald Bamberger
2023-04-24 11:20:53 +02:00
44 changed files with 4201 additions and 2029 deletions
@@ -44,6 +44,7 @@ class IssueResolver extends IssueResolver_Controller
'CORE_STUDENTSTATUS_0012' => 'CORE_STUDENTSTATUS_0012',
'CORE_STUDENTSTATUS_0013' => 'CORE_STUDENTSTATUS_0013',
'CORE_STUDENTSTATUS_0014' => 'CORE_STUDENTSTATUS_0014',
'CORE_STUDENTSTATUS_0015' => 'CORE_STUDENTSTATUS_0015',
'CORE_PERSON_0001' => 'CORE_PERSON_0001',
'CORE_PERSON_0002' => 'CORE_PERSON_0002',
'CORE_PERSON_0003' => 'CORE_PERSON_0003',
@@ -4,6 +4,8 @@ if (! defined('BASEPATH')) exit('No direct script access allowed');
class Plausichecks extends Auth_Controller
{
const GENERIC_ISSUE_OCCURED_TEXT = 'Issue aufgetreten';
public function __construct()
{
parent::__construct(
@@ -78,20 +80,27 @@ class Plausichecks extends Auth_Controller
// optionally replace fehler parameters in text, output the fehlertext
if (hasData($fehlerRes))
{
// use issue fehler text from database if present
$fehlerText = getData($fehlerRes)[0]->fehlertext;
if (!isEmptyArray($fehlertext_params))
{
// replace placeholder with params, if present
if (count($fehlertext_params) != substr_count($fehlerText, '%s'))
$this->terminateWithJsonError('Wrong number of parameters for Fehlertext, fehler_kurzbz ' . $fehler_kurzbz);
$fehlerText = vsprintf($fehlerText, $fehlertext_params);
}
if (isset($person_id)) $fehlerText .= "; person_id: $person_id";
if (isset($oe_kurzbz)) $fehlerText .= "; oe_kurzbz: $oe_kurzbz";
$issueTexts[$fehler_kurzbz][] = $fehlerText;
}
else // if no issue text found, use generic text
{
$fehlerText = self::GENERIC_ISSUE_OCCURED_TEXT;
}
// add generic parameters to issue text
if (isset($person_id)) $fehlerText .= "; person_id: $person_id";
if (isset($oe_kurzbz)) $fehlerText .= "; oe_kurzbz: $oe_kurzbz";
$issueTexts[$fehler_kurzbz][] = $fehlerText;
}
}
}
@@ -86,16 +86,22 @@ class PlausicheckLib
JOIN public.tbl_prestudentstatus status USING(prestudent_id)
JOIN public.tbl_benutzer benutzer on(benutzer.uid = student.student_uid)
JOIN public.tbl_studiengang stg ON prestudent.studiengang_kz = stg.studiengang_kz
LEFT JOIN lehre.tbl_studienplan stpl USING (studienplan_id)
WHERE
benutzer.aktiv = true
AND status.status_kurzbz='Student'
AND status.status_kurzbz IN ('Student', 'Unterbrecher', 'Abbrecher', 'Diplomand', 'Absolvent')
AND studiengang.studiengang_kz < 10000
AND status.studiensemester_kurzbz = ?
AND NOT (status.orgform_kurzbz IS NULL AND studiengang.mischform = FALSE)
AND NOT EXISTS(
SELECT 1 FROM lehre.tbl_studienplan
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
SELECT 1
FROM
lehre.tbl_studienplan
JOIN
lehre.tbl_studienordnung USING(studienordnung_id)
WHERE
tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
tbl_studienplan.studienplan_id = stpl.studienplan_id
AND tbl_studienordnung.studiengang_kz = prestudent.studiengang_kz
AND tbl_studienplan.orgform_kurzbz = status.orgform_kurzbz)";
if (isset($prestudent_id))
@@ -106,7 +112,7 @@ class PlausicheckLib
if (isset($studiengang_kz))
{
$qry .= " AND stg.studiengang_kz = ?";
$qry .= " AND studiengang.studiengang_kz = ?";
$params[] = $studiengang_kz;
}
@@ -879,6 +885,57 @@ class PlausicheckLib
return $this->_db->execReadOnlyQuery($qry, $params);
}
/**
* Student with active status should have been charged, i.e. have a Kontobuchung with a negative or zero value.
* @param studiensemester_kurzbz string if check is to be executed for certain Studiensemester
* @param studiengang_kz int if check is to be executed for certain Studiengang
* @param prestudent_id int if check is to be executed only for one prestudent
* @return success with prestudents or error
*/
public function getAktiverStudentstatusOhneKontobuchung($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null)
{
$params = array($studiensemester_kurzbz);
$qry = "
SELECT
DISTINCT ON (pre.prestudent_id)
pre.person_id, pre.prestudent_id, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz, status.studiensemester_kurzbz
FROM
public.tbl_prestudent pre
JOIN public.tbl_person pers USING(person_id)
JOIN public.tbl_prestudentstatus status USING(prestudent_id)
JOIN public.tbl_studiengang stg USING(studiengang_kz)
WHERE
status.studiensemester_kurzbz = ?
AND status.status_kurzbz IN ('Student', 'Incoming')
AND NOT EXISTS (
SELECT 1
FROM
public.tbl_konto
WHERE
person_id = pers.person_id
AND studiensemester_kurzbz = status.studiensemester_kurzbz
AND buchungsnr_verweis IS NULL
AND betrag <= 0
)
AND stg.melderelevant
AND pre.bismelden";
if (isset($studiengang_kz))
{
$qry .= " AND stg.studiengang_kz = ?";
$params[] = $studiengang_kz;
}
if (isset($prestudent_id))
{
$qry .= " AND pre.prestudent_id = ?";
$params[] = $prestudent_id;
}
return $this->_db->execReadOnlyQuery($qry, $params);
}
//------------------------------------------------------------------------------------------------------------------
// Person checks
@@ -18,6 +18,7 @@ class PlausicheckProducerLib
'AbschlussstatusFehlt' => 'AbschlussstatusFehlt',
'AktSemesterNull' => 'AktSemesterNull',
'AktiverStudentOhneStatus' => 'AktiverStudentOhneStatus',
'AktiverStudentstatusOhneKontobuchung' => 'AktiverStudentstatusOhneKontobuchung',
'AusbildungssemPrestudentUngleichAusbildungssemStatus' => 'AusbildungssemPrestudentUngleichAusbildungssemStatus',
'BewerberNichtZumRtAngetreten' => 'BewerberNichtZumRtAngetreten',
'DatumAbschlusspruefungFehlt' => 'DatumAbschlusspruefungFehlt',
@@ -0,0 +1,50 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
require_once('PlausiChecker.php');
/**
* Student with active status should have been charged, i.e. have a Kontobuchung with negative or zero value.
*/
class AktiverStudentstatusOhneKontobuchung extends PlausiChecker
{
public function executePlausiCheck($params)
{
$results = array();
// pass parameters needed for plausicheck
$studiensemester_kurzbz = isset($params['studiensemester_kurzbz']) ? $params['studiensemester_kurzbz'] : null;
$studiengang_kz = isset($params['studiengang_kz']) ? $params['studiengang_kz'] : null;
// get all students failing the plausicheck
$prestudentRes = $this->_ci->plausichecklib->getAktiverStudentstatusOhneKontobuchung($studiensemester_kurzbz, $studiengang_kz);
if (isError($prestudentRes)) return $prestudentRes;
if (hasData($prestudentRes))
{
$prestudents = getData($prestudentRes);
// populate results with data necessary for writing issues
foreach ($prestudents as $prestudent)
{
$results[] = array(
'person_id' => $prestudent->person_id,
'oe_kurzbz' => $prestudent->prestudent_stg_oe_kurzbz,
'fehlertext_params' => array(
'prestudent_id' => $prestudent->prestudent_id,
'studiensemester_kurzbz' => $prestudent->studiensemester_kurzbz
),
'resolution_params' => array(
'prestudent_id' => $prestudent->prestudent_id,
'studiensemester_kurzbz' => $prestudent->studiensemester_kurzbz
)
);
}
}
// return the results
return success($results);
}
}
@@ -0,0 +1,36 @@
<?php
if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Student with active status should have been charged, i.e. have a Kontobuchung with negative or zero value.
*/
class CORE_STUDENTSTATUS_0015 implements IIssueResolvedChecker
{
public function checkIfIssueIsResolved($params)
{
if (!isset($params['prestudent_id']) || !is_numeric($params['prestudent_id']))
return error('Prestudent Id missing, issue_id: '.$params['issue_id']);
if (!isset($params['studiensemester_kurzbz']) || isEmptyString($params['studiensemester_kurzbz']))
return error('Studiensemester missing, issue_id: '.$params['issue_id']);
$this->_ci =& get_instance(); // get code igniter instance
$this->_ci->load->library('issues/PlausicheckLib');
// check if issue persists
$checkRes = $this->_ci->plausichecklib->getAktiverStudentstatusOhneKontobuchung(
$params['studiensemester_kurzbz'],
null,
$params['prestudent_id']
);
if (isError($checkRes)) return $checkRes;
if (hasData($checkRes))
return success(false); // not resolved if issue is still present
else
return success(true); // resolved otherwise
}
}
@@ -1,7 +1,6 @@
<?php
class Paabgabe_model extends DB_Model
{
/**
* Constructor
*/
@@ -11,4 +10,24 @@ class Paabgabe_model extends DB_Model
$this->dbTable = 'campus.tbl_paabgabe';
$this->pk = 'paabgabe_id';
}
/**
* Gets last Endabgabe of a Projektarbeit, including filename.
* @param int $projektarbeit_id
* @return object
*/
public function getEndabgabe($projektarbeit_id)
{
$qry = "SELECT paabgabe_id, student_uid, paabg.datum, paabg.abgabedatum, projekttyp_kurzbz, titel, titel_english,
paabgabe_id || '_' || student_uid || '.pdf' AS filename
FROM campus.tbl_paabgabe paabg
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
WHERE projektarbeit_id = ?
AND paabgabetyp_kurzbz = 'end'
AND paabg.abgabedatum IS NOT NULL
ORDER BY paabg.abgabedatum, paabg.datum DESC
LIMIT 1";
return $this->execQuery($qry, array($projektarbeit_id));
}
}
@@ -54,18 +54,28 @@ class Projektbetreuer_model extends DB_Model
$qry = "SELECT DISTINCT ON (pers.person_id) pers.person_id, betreuerart_kurzbz, vorname, nachname,
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
anrede, titelpre, titelpost, gebdatum, geschlecht, pa.projekttyp_kurzbz,
ben.uid, ben.alias, ma.personalnummer, mitarbeiter_uid, student_uid
FROM lehre.tbl_projektarbeit pa
JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
JOIN public.tbl_person pers USING (person_id)
LEFT JOIN public.tbl_benutzer ben USING (person_id)
LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid
WHERE ben.aktiv
AND projektarbeit_id = ?
AND betreuerart_kurzbz = ?
ORDER BY pers.person_id, CASE WHEN ma.mitarbeiter_uid IS NULL THEN 1 ELSE 0 END, /*Mitarbeiter account first*/
CASE WHEN ben.uid IS NULL THEN 1 ELSE 0 END, /*user with account first*/
ben.insertamum";
ben.uid, ben.alias, ma.personalnummer, mitarbeiter_uid, student_uid,
(
SELECT kontakt
FROM public.tbl_kontakt
WHERE kontakttyp = 'email'
AND person_id = pers.person_id
ORDER BY
CASE WHEN zustellung THEN 0 ELSE 1 END,
insertamum DESC NULLS LAST
LIMIT 1
) AS private_email
FROM lehre.tbl_projektarbeit pa
JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id)
JOIN public.tbl_person pers USING (person_id)
LEFT JOIN public.tbl_benutzer ben USING (person_id)
LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid
WHERE (ben.aktiv OR ben.aktiv IS NULL)
AND projektarbeit_id = ?
AND betreuerart_kurzbz = ?
ORDER BY pers.person_id, CASE WHEN ma.mitarbeiter_uid IS NULL THEN 1 ELSE 0 END, /*Mitarbeiter account first*/
CASE WHEN ben.uid IS NULL THEN 1 ELSE 0 END, /*user with account first*/
ben.insertamum";
return $this->execQuery($qry, array($projektarbeit_id, $betreuerart_kurzbz));
}
@@ -77,14 +87,14 @@ class Projektbetreuer_model extends DB_Model
*/
public function getBetreuerByToken($zugangstoken)
{
$qry = '
$qry = "
SELECT tbl_projektbetreuer.person_id, tbl_projektbetreuer.projektarbeit_id, student_uid
FROM lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
WHERE zugangstoken = ? AND zugangstoken_gueltigbis >= NOW()
ORDER BY tbl_projektbetreuer.insertamum DESC, projektarbeit_id DESC
LIMIT 1
';
";
return $this->execQuery($qry, array($zugangstoken));
}
@@ -96,31 +106,60 @@ class Projektbetreuer_model extends DB_Model
* @param $student_uid string uid des Studenten der Arbeit abgibt
* @return object | bool
*/
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid)
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid, $zweitbegutachter_person_id = null)
{
$qry_betr = "SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt,
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum
FROM lehre.tbl_projektbetreuer betr
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
JOIN public.tbl_person pers ON betr.person_id = pers.person_id
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end'
WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter'
AND betr.projektarbeit_id = ?
AND parb.student_uid = ?
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ?
AND betreuerart_kurzbz = 'Erstbegutachter'
AND projektarbeit_id = betr.projektarbeit_id
)
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
ORDER BY betr.insertamum DESC
LIMIT 1";
$params = array($erstbegutachter_person_id, $erstbegutachter_person_id, $projektarbeit_id, $student_uid);
return $this->execQuery($qry_betr, array($projektarbeit_id, $student_uid, $erstbegutachter_person_id));
$qry_betr = "SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid,
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, kontakt,
abg.abgabedatum, betr.betreuerart_kurzbz
FROM lehre.tbl_projektbetreuer betr
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
JOIN public.tbl_person pers ON betr.person_id = pers.person_id
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end'
WHERE
(
(
betr.betreuerart_kurzbz = 'Zweitbegutachter'
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ?
AND betreuerart_kurzbz = 'Erstbegutachter'
AND projektarbeit_id = betr.projektarbeit_id
)
)
OR /* either Zweitbegutachter of masterarbeit, or Kommissionsprüfer if Kommission */
(
betr.betreuerart_kurzbz = 'Senatsmitglied'
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ?
AND betreuerart_kurzbz = 'Senatsvorsitz'
AND projektarbeit_id = betr.projektarbeit_id
)
)
)
AND betr.projektarbeit_id = ?
AND parb.student_uid = ?
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)";
if (isset($zweitbegutachter_person_id))
{
$qry_betr .= " AND betr.person_id = ?";
$params[] = $zweitbegutachter_person_id;
}
$qry_betr .= " ORDER BY betr.person_id DESC,
(CASE WHEN EXISTS ( /* if multiple accounts, prioritize mitarbeiter */
SELECT 1 FROM public.tbl_mitarbeiter ma
WHERE ma.mitarbeiter_uid = tbl_benutzer.uid
) THEN 0 ELSE 1 END), betr.insertamum DESC
LIMIT 1";
return $this->execQuery($qry_betr, $params);
}
/**
@@ -131,23 +170,23 @@ class Projektbetreuer_model extends DB_Model
*/
public function generateZweitbegutachterToken($zweitbegutachter_person_id, $projektarbeit_id)
{
$betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id
$betreuerUidQry = "SELECT uid, zugangstoken, zugangstoken_gueltigbis, tbl_projektbetreuer.person_id, betreuerart_kurzbz
FROM lehre.tbl_projektbetreuer
JOIN public.tbl_person USING(person_id)
LEFT JOIN public.tbl_benutzer USING(person_id)
WHERE projektarbeit_id = ?
AND tbl_projektbetreuer.person_id = ?
AND betreuerart_kurzbz = 'Zweitbegutachter'
AND betreuerart_kurzbz IN ('Zweitbegutachter', 'Senatsmitglied')
LIMIT 1";
$betreueruidres = $this->execQuery($betreuerUidQry, array($projektarbeit_id, $zweitbegutachter_person_id));
$betreueruidRes = $this->execQuery($betreuerUidQry, array($projektarbeit_id, $zweitbegutachter_person_id));
if (!hasData($betreueruidres))
if (!hasData($betreueruidRes))
return error('Zweitbegutachter nicht gefunden');
$row_betr = getData($betreueruidres)[0];
$zweitbetreuer = getData($betreueruidRes)[0];
if (!isset($row_betr->uid))
if (!isset($zweitbetreuer->uid))
{
do {
$token = generateToken(16);
@@ -156,8 +195,8 @@ class Projektbetreuer_model extends DB_Model
$result = $this->update(
array('projektarbeit_id' => $projektarbeit_id,
'person_id' => $row_betr->person_id,
'betreuerart_kurzbz' => 'Zweitbegutachter'),
'person_id' => $zweitbetreuer->person_id,
'betreuerart_kurzbz' => $zweitbetreuer->betreuerart_kurzbz),
array('zugangstoken' => $token,
'zugangstoken_gueltigbis' => date('Y-m-d', strtotime('+1 year')))
);
@@ -167,4 +206,29 @@ class Projektbetreuer_model extends DB_Model
else
return success("Account vorhanden, kein Token benötigt");
}
/**
* Gets betreuerart of a Betreuer for a Projektarbeit.
* Main Betreuer are prioritized (normally one Betreuer should be assigned to a Projektarbeit another time with a different Betreuerart).
* @param int projektarbeit_id
* @param int betreuer_person_id
* @return object success or error
*/
public function getBetreuerart($projektarbeit_id, $betreuer_person_id)
{
$qry = "SELECT betreuerart_kurzbz
FROM lehre.tbl_projektbetreuer
WHERE projektarbeit_id = ?
AND person_id = ?
ORDER BY CASE WHEN betreuerart_kurzbz = 'Senatsvorsitz' THEN 1 /*Senatsvorsitz has priority*/
WHEN betreuerart_kurzbz = 'Begutachter' THEN 2
WHEN betreuerart_kurzbz = 'Erstbegutachter' THEN 3
WHEN betreuerart_kurzbz = 'Zweitbegutachter' THEN 4
WHEN betreuerart_kurzbz = 'Senatsmitglied' THEN 5
ELSE 5
END, insertamum DESC
LIMIT 1";
return $this->execQuery($qry, array($projektarbeit_id, $betreuer_person_id));
}
}
+11 -10
View File
@@ -61,8 +61,10 @@ $sql_query = "SELECT
FROM
(SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz,
tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id,
tbl_projektbetreuer.betreuerart_kurzbz, tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz
FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id)
tbl_projektbetreuer.betreuerart_kurzbz, tbl_betreuerart.beschreibung AS betreuerart_beschreibung, tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id)
LEFT JOIN lehre.tbl_betreuerart using(betreuerart_kurzbz)
LEFT JOIN public.tbl_benutzer on(uid=student_uid)
LEFT JOIN public.tbl_student on(public.tbl_benutzer.uid=public.tbl_student.student_uid)
LEFT JOIN public.tbl_person on(tbl_benutzer.person_id=tbl_person.person_id)
@@ -75,8 +77,7 @@ $sql_query = "SELECT
WHERE public.tbl_benutzer.person_id=lehre.tbl_projektbetreuer.person_id
AND public.tbl_benutzer.uid=".$db->db_add_param($getuid).")
".($showall?'':' AND public.tbl_benutzer.aktiv AND lehre.tbl_projektarbeit.note IS NULL ')."
AND (betreuerart_kurzbz='Betreuer' OR betreuerart_kurzbz='Begutachter' OR betreuerart_kurzbz='Erstbegutachter'
OR betreuerart_kurzbz='Zweitbegutachter' OR betreuerart_kurzbz='Erstbetreuer')
AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Zweitbegutachter', 'Erstbetreuer', 'Senatsvorsitz', 'Senatsmitglied')
ORDER BY tbl_projektarbeit.projektarbeit_id, betreuerart_kurzbz desc) as xy
ORDER BY nachname";
@@ -112,7 +113,7 @@ else
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->studiensemester_kurzbz)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
$htmlstr .= " <td>".($row->betreuerart_beschreibung == null ? $db->convert_html_chars($row->betreuerart_kurzbz) : $db->convert_html_chars($row->betreuerart_beschreibung))."</td>\n";
$htmlstr .= " </tr>\n";
$i++;
}
@@ -127,11 +128,11 @@ echo '
<title>'.$p->t('abgabetool/abgabetool').'</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" 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/jquery1/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>
<link rel="stylesheet" type="text/css" href="../../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../../vendor/jquery/jquery1/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"/>
<script language="JavaScript" type="text/javascript">
+201 -157
View File
@@ -119,11 +119,12 @@ if(!$projektarbeit_obj->load($projektarbeit_id))
die('Fehler beim Laden der Projektarbeit');
$titel = $projektarbeit_obj->titel;
$student_uid = $projektarbeit_obj->student_uid;
$projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz;
// paarbeit sollte nur ab bestimmten Zeitpunkt online bewertet werden
$num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
$paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id);
if(!is_numeric($num_rows_sem) || $num_rows_sem < 0)
if(!is_numeric($paIsCurrent) || $paIsCurrent < 0)
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerAktualitaetProjektarbeit')."</font><br>&nbsp;";
}
@@ -143,27 +144,28 @@ if($num_rows_endupload < 0)
}
// Zweitbegutachter holen
if($betreuerart=="Erstbegutachter")
if(in_array($betreuerart, array('Erstbegutachter', 'Senatsvorsitz')))
{
$projektbetreuer = new projektbetreuer();
$alleBegutachter = $projektbetreuer->getProjektbetreuer($projektarbeit_id);
$alleBegutachter = new projektbetreuer();
$alleBegutachterRes = $alleBegutachter->getProjektbetreuer($projektarbeit_id);
if ($alleBegutachter)
if ($alleBegutachterRes)
{
$alleBegutachterResults = $projektbetreuer->result;
foreach ($alleBegutachterResults as $begutachter)
$zweitbetreuerArr = array();
foreach ($alleBegutachter->result as $begutachter)
{
if ($begutachter->betreuerart_kurzbz == "Erstbegutachter")
if (in_array($begutachter->betreuerart_kurzbz, array('Erstbegutachter', 'Senatsvorsitz')))
{
// dem Erstbetreuer zugewiesene Zweitbetreuer holen
$erstbetreuer_id = $begutachter->person_id;
$zweitbegutachter = $projektbetreuer->getZweitbegutachterWithToken($erstbetreuer_id, $projektarbeit_id, $student_uid);
break;
$zweitbegutachter = new projektbetreuer();
$zweitbegutachterRes = $zweitbegutachter->getZweitbegutachterWithToken($erstbetreuer_id, $projektarbeit_id, $student_uid);
if ($zweitbegutachterRes) $zweitbetreuerArr = array_merge($zweitbetreuerArr, $zweitbegutachter->result);
}
}
// Mail mit Token an Zweitbegutachter senden
if ($zweitbegutachter && $num_rows_sem >= 1 && isset($_GET['zweitbegutachtertoken']))
if (count($zweitbetreuerArr) > 0 && $paIsCurrent >= 1 && isset($_GET['zweitbegutachtertoken']) && isset($_GET['zweitbetreuer_person_id']))
{
$qry_std="SELECT * FROM campus.vw_benutzer where uid=".$db->db_add_param($uid);
if(!$result_std=$db->db_query($qry_std))
@@ -173,15 +175,24 @@ if($betreuerart=="Erstbegutachter")
else
{
$row_std=@$db->db_fetch_object($result_std);
$mailres = sendZweitbegutachterMail($zweitbegutachter, $erstbetreuer_id, $row_std);
foreach ($zweitbetreuerArr as $zbg)
{
// if Zweitbetreuer is the one for which token was requested, send mail
if ($zbg->person_id == $_GET['zweitbetreuer_person_id'])
{
$mailres = sendZweitbegutachterMail($zbg, $erstbetreuer_id, $row_std, $projekttyp_kurzbz);
if ($mailres)
{
echo "<br><span style='color: green; '>".$p->t('abgabetool/zweitbegutachterMailGesendet', $zweitbegutachter->email)."</span><br>&nbsp;";
}
else
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerMailZweitBegutachter')." Mail: ".$zweitbegutachter->email."</font><br>&nbsp;";
if ($mailres)
{
echo "<br><span style='color: green; '>"
.$p->t('abgabetool/zweitbegutachterMailGesendet', array($zbg->voller_name, $zbg->email))
."</span><br>&nbsp;";
}
else
{
echo "<font color=\"#FF0000\">".$p->t('abgabetool/fehlerMailZweitBegutachter')." Mail: ".$zbg->email."</font><br>&nbsp;";
}
}
}
}
}
@@ -214,12 +225,14 @@ echo '
cursor: pointer;
outline: inherit;
}
#zweitbetrmailicon {
top: 4px;
height: 18px;
width: 18px;
position: relative;
}
#tokenmailicon {
top: 2px;
height: 15px;
@@ -227,6 +240,9 @@ echo '
position: relative;
}
.warningtext {
color: #8a6d3b;
}
</style>
<script language="Javascript">
@@ -465,12 +481,13 @@ $htmlstr .= "<table id='beurteilungheadertable' width=100%>\n";
$htmlstr .= "<tr><td style='font-size:16px'>".$p->t('abgabetool/student').": <b>".$db->convert_html_chars($studentenname)."</b></td>";
$htmlstr .= "<td width=10% align=center>";
$semester_benotbar = $num_rows_sem >= 1;
$semester_benotbar = $paIsCurrent >= 1;
$endupload_vorhanden = $num_rows_endupload >= 1;
if ($semester_benotbar && $endupload_vorhanden)
{
$htmlstr .= "<form action='../../../index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung' title='Benotungsformular' target='_blank' method='GET'>";
$beurtPfad = $betreuerart == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter';
$htmlstr .= "<form action='../../../index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/".$beurtPfad."' title='Benotungsformular' target='_blank' method='GET'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
$htmlstr .= "<input type='submit' name='note' value='".$p->t('abgabetool/benoten')."'></form>";
@@ -496,32 +513,51 @@ else
{
$htmlstr .= "<td>&nbsp;</td></tr>";
}
$htmlstr .= "<tr><td style='font-size:16px'>" . $p->t('abgabetool/titel') . ": <b>".$db->convert_html_chars($titel)."<b></td><td></td><td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
$htmlstr .= "<tr>
<td style='font-size:16px'>" . $p->t('abgabetool/titel') . ": <b>".$db->convert_html_chars($titel)."<b></td>
<td align='center' class='warningtext'>".(isset($quick_info) ? $quick_info : '')."</td>
<td valign=\"right\"><a href='abgabe_student_frameset.php?uid=$uid' target='_blank'>".$p->t('abgabetool/studentenansicht')."</a></td>";
$htmlstr .= "</tr>\n";
if (isset($zweitbegutachter) && $zweitbegutachter) // wenn es Zweitbegutachter gibt
if (isset($zweitbetreuerArr) && is_array($zweitbetreuerArr)) // wenn es Zweitbetreuer gibt
{
// Zweitbegutachter anzeigen
// Zweitbetreuer anzeigen
$htmlstr .= "<tr>\n";
$htmlstr .= "<td style='font-size:16px'>" . $p->t('abgabetool/zweitBegutachter') . ": <b>" . $zweitbegutachter->voller_name . "</b>";
// keine Mail -> Fehler anzeigen
if (!isset($zweitbegutachter->email))
$htmlstr .= "&nbsp;&nbsp;<img src='../../../skin/images/exclamation.png' title='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "' alt='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "'/>";
// Token senden button wenn Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist
if (isset($zweitbegutachter->email) && !isset($zweitbegutachter->uid) && $num_rows_sem >= 1)
$htmlstr .= "<td style='font-size:16px'>";
$bart = '';
foreach($zweitbetreuerArr as $zweitbetreuer)
{
$htmlstr .= "<form action='" . htmlspecialchars($_SERVER['PHP_SELF']) . "' method='GET' style='display: inline'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='" . $student_uid . "'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='" . $projektarbeit_id . "'>";
$htmlstr .= "<input type='hidden' name='betreuerart' value='" . $betreuerart . "'>";
$htmlstr .= "&nbsp;<a href='mailto:".$zweitbegutachter->email."'><img id='zweitbetrmailicon' src='../../../skin/images/email.png'
title='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "' alt='" . $p->t('abgabetool/zweitbetreuerMailSenden', $zweitbegutachter->email) . "'/></a>\n";
$htmlstr .= "&nbsp;<button type='submit' name='zweitbegutachtertoken' title='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'>
<img id='tokenmailicon' src='../../../skin/images/repeat.png' alt='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'/></button>\n";
$htmlstr .= "</form>";
}
if ($bart !== $zweitbetreuer->betreuerart_kurzbz)
{
$htmlstr .= ($zweitbetreuer->betreuerart_kurzbz == 'Senatsmitglied' ? $p->t('abgabetool/senatsMitglied') : $p->t('abgabetool/zweitBegutachter'));
$htmlstr .= ": ";
$bart = $zweitbetreuer->betreuerart_kurzbz;
}
else
$htmlstr .= ", ";
$htmlstr .= "<b>" . $zweitbetreuer->voller_name . "</b>";
// keine Mail -> Fehler anzeigen
if (!isset($zweitbetreuer->email))
$htmlstr .= "&nbsp;&nbsp;<img src='../../../skin/images/exclamation.png' title='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "' alt='" . $p->t('abgabetool/zweitBegutachterEmailFehlt') . "'/>";
// Token senden button wenn Zweitbegutachter extern ist und Projektarbeit nicht für altes Semester ist
if (isset($zweitbetreuer->email) && !isset($zweitbetreuer->uid) && $paIsCurrent >= 1)
{
$htmlstr .= "<form action='" . htmlspecialchars($_SERVER['PHP_SELF']) . "' method='GET' style='display: inline'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='" . $student_uid . "'>";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='" . $projektarbeit_id . "'>";
$htmlstr .= "<input type='hidden' name='betreuerart' value='" . $betreuerart . "'>";
$htmlstr .= "<input type='hidden' name='zweitbetreuer_person_id' value='" . $zweitbetreuer->person_id . "'>";
$htmlstr .= "&nbsp;<a href='mailto:".$zweitbetreuer->email."'><img id='zweitbetrmailicon' src='../../../skin/images/email.png'
title='" . $p->t('abgabetool/zweitbetreuerMailSenden', array($zweitbetreuer->voller_name, $zweitbetreuer->email)) . "'
alt='" . $p->t('abgabetool/zweitbetreuerMailSenden', array($zweitbetreuer->voller_name, $zweitbetreuer->email)) . "'/></a>\n";
$htmlstr .= "&nbsp;<button type='submit' name='zweitbegutachtertoken' title='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'>
<img id='tokenmailicon' src='../../../skin/images/repeat.png' alt='" . $p->t('abgabetool/zweitbetreuerTokenMailSenden') . "'/></button>";
$htmlstr .= "</form>";
}
}
$htmlstr .= "</td>\n";
$htmlstr .= "<td></td>\n";
$htmlstr .= "<td></td>\n";
@@ -545,122 +581,122 @@ $htmlstr .= "<tr>
<td></td>
</tr>\n";
$result=@$db->db_query($qry);
while ($row=@$db->db_fetch_object($result))
while ($row=@$db->db_fetch_object($result))
{
$htmlstr .= "<form action='".$_SERVER['PHP_SELF']."' method='POST' name='".$row->projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$row->projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='paabgabe_id' value='".$row->paabgabe_id."'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
$htmlstr .= "<input type='hidden' name='betreuerart' value='".$betreuerart."'>\n";
$htmlstr .= "<input type='hidden' name='command' value='update'>\n";
$htmlstr .= "<tr id='".$row->projektarbeit_id."'>\n";
if(!$row->abgabedatum)
{
$htmlstr .= "<form action='".$_SERVER['PHP_SELF']."' method='POST' name='".$row->projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='projektarbeit_id' value='".$row->projektarbeit_id."'>\n";
$htmlstr .= "<input type='hidden' name='paabgabe_id' value='".$row->paabgabe_id."'>\n";
$htmlstr .= "<input type='hidden' name='uid' value='".$uid."'>\n";
$htmlstr .= "<input type='hidden' name='betreuerart' value='".$betreuerart."'>\n";
$htmlstr .= "<input type='hidden' name='command' value='update'>\n";
$htmlstr .= "<tr id='".$row->projektarbeit_id."'>\n";
if ($row->datum<date('Y-m-d'))
{
//Termin vorbei - weiß auf rot
$bgcol='#FF0000';
$fcol='#FFFFFF';
}
elseif (($row->datum>=date('Y-m-d')) && ($row->datum<date('Y-m-d',mktime(0, 0, 0, date("m") , date("d")+11, date("Y")))))
{
//Termin nahe - schwarz auf gelb
$bgcol='#FFFF00';
$fcol='#000000';
}
else
{
//"normaler" Termin - schwarz auf weiß
$bgcol='#FFFFFF';
$fcol='#000000';
}
}
else
{
if($row->abgabedatum>$row->datum)
{
//Abgabe nach Termin - weiß auf hellrot
$bgcol='#EA7B7B';
$fcol='#FFFFFF';
}
else
{
//Abgabe vor Termin - schwarz auf grün
$bgcol='#00FF00';
$fcol='#000000';
}
}
//$htmlstr .= "<td><input type='checkbox' name='fixtermin' ".($row->fixtermin=='t'?'checked=\"checked\"':'')." >";
//$htmlstr .= "<td><input type='checkbox' name='fixtermin' ".($row->fixtermin=='t'?'checked="checked" style="background-color:#FF0000;"':'')." disabled>";
if($row->fixtermin=='t')
{
$htmlstr .= "<td><img src='../../../skin/images/bullet_red.png' alt='J' title='".$p->t('abgabetool/fixerAbgabetermin')."' border=0></td>";
}
else
{
$htmlstr .= "<td><img src='../../../skin/images/bullet_green.png' alt='N' title='".$p->t('abgabetool/variablerAbgabetermin')."' border=0></td>";
}
$htmlstr .= " </td>\n";
$htmlstr .= " <td><input type='text' name='datum' style='background-color:".$bgcol.";font-weight:bold; color:".$fcol." ' value='".$datum_obj->formatDatum($row->datum,'d.m.Y')."' size='10' maxlegth='10'></td>\n";
$htmlstr .= " <td><select name='paabgabetyp_kurzbz'>\n";
//$htmlstr .= " <option value=''>&nbsp;</option>";
$qry_typ="SELECT * FROM campus.tbl_paabgabetyp";
$result_typ=@$db->db_query($qry_typ);
while ($row_typ=@$db->db_fetch_object($result_typ))
{
if($row->paabgabetyp_kurzbz==$row_typ->paabgabetyp_kurzbz)
{
$htmlstr .= " <option value='".$row_typ->paabgabetyp_kurzbz."' selected>$row_typ->bezeichnung</option>";
}
else
{
if($row_typ->paabgabetyp_kurzbz!='end' && $row_typ->paabgabetyp_kurzbz!='note' && $row_typ->paabgabetyp_kurzbz!='enda')
{
$htmlstr .= " <option value='".$row_typ->paabgabetyp_kurzbz."'>$row_typ->bezeichnung</option>";
}
}
}
$htmlstr .= " </select></td>\n";
$htmlstr .= " <td><input type='text' name='kurzbz' value='".htmlspecialchars($row->kurzbz,ENT_QUOTES)."' size='60' maxlegth='256'></td>\n";
$htmlstr .= " <td>".($row->abgabedatum==''?'&nbsp;':$datum_obj->formatDatum($row->abgabedatum,'d.m.Y'))."</td>\n";
if($user==$row->insertvon && $betreuerart!="Zweitbegutachter")
{
$htmlstr .= " <td><input type='submit' name='schick' value='".$p->t('global/speichern')."' title='".$p->t('abgabetool/terminaenderungSpeichern')."'></td>";
if(!$row->abgabedatum)
{
if ($row->datum<date('Y-m-d'))
{
//Termin vorbei - weiß auf rot
$bgcol='#FF0000';
$fcol='#FFFFFF';
}
elseif (($row->datum>=date('Y-m-d')) && ($row->datum<date('Y-m-d',mktime(0, 0, 0, date("m") , date("d")+11, date("Y")))))
{
//Termin nahe - schwarz auf gelb
$bgcol='#FFFF00';
$fcol='#000000';
}
else
{
//"normaler" Termin - schwarz auf weiß
$bgcol='#FFFFFF';
$fcol='#000000';
}
$htmlstr .= " <td><input type='submit' name='del' value='".$p->t('global/loeschen')."' onclick='return confdel()' title='".$p->t('abgabetool/terminLoeschen')."'></td>";
}
else
{
if($row->abgabedatum>$row->datum)
{
//Abgabe nach Termin - weiß auf hellrot
$bgcol='#EA7B7B';
$fcol='#FFFFFF';
}
else
{
//Abgabe vor Termin - schwarz auf grün
$bgcol='#00FF00';
$fcol='#000000';
}
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
//$htmlstr .= "<td><input type='checkbox' name='fixtermin' ".($row->fixtermin=='t'?'checked=\"checked\"':'')." >";
//$htmlstr .= "<td><input type='checkbox' name='fixtermin' ".($row->fixtermin=='t'?'checked="checked" style="background-color:#FF0000;"':'')." disabled>";
if($row->fixtermin=='t')
{
$htmlstr .= "<td><img src='../../../skin/images/bullet_red.png' alt='J' title='".$p->t('abgabetool/fixerAbgabetermin')."' border=0></td>";
}
else
{
$htmlstr .= "<td><img src='../../../skin/images/bullet_green.png' alt='N' title='".$p->t('abgabetool/variablerAbgabetermin')."' border=0></td>";
}
$htmlstr .= " </td>\n";
$htmlstr .= " <td><input type='text' name='datum' style='background-color:".$bgcol.";font-weight:bold; color:".$fcol." ' value='".$datum_obj->formatDatum($row->datum,'d.m.Y')."' size='10' maxlegth='10'></td>\n";
$htmlstr .= " <td><select name='paabgabetyp_kurzbz'>\n";
//$htmlstr .= " <option value=''>&nbsp;</option>";
$qry_typ="SELECT * FROM campus.tbl_paabgabetyp";
$result_typ=@$db->db_query($qry_typ);
while ($row_typ=@$db->db_fetch_object($result_typ))
{
if($row->paabgabetyp_kurzbz==$row_typ->paabgabetyp_kurzbz)
{
$htmlstr .= " <option value='".$row_typ->paabgabetyp_kurzbz."' selected>$row_typ->bezeichnung</option>";
}
else
{
if($row_typ->paabgabetyp_kurzbz!='end' && $row_typ->paabgabetyp_kurzbz!='note' && $row_typ->paabgabetyp_kurzbz!='enda')
{
$htmlstr .= " <option value='".$row_typ->paabgabetyp_kurzbz."'>$row_typ->bezeichnung</option>";
}
}
}
$htmlstr .= " </select></td>\n";
$htmlstr .= " <td><input type='text' name='kurzbz' value='".htmlspecialchars($row->kurzbz,ENT_QUOTES)."' size='60' maxlegth='256'></td>\n";
$htmlstr .= " <td>".($row->abgabedatum==''?'&nbsp;':$datum_obj->formatDatum($row->abgabedatum,'d.m.Y'))."</td>\n";
if($user==$row->insertvon && $betreuerart!="Zweitbegutachter")
{
$htmlstr .= " <td><input type='submit' name='schick' value='".$p->t('global/speichern')."' title='".$p->t('abgabetool/terminaenderungSpeichern')."'></td>";
if(!$row->abgabedatum)
{
$htmlstr .= " <td><input type='submit' name='del' value='".$p->t('global/loeschen')."' onclick='return confdel()' title='".$p->t('abgabetool/terminLoeschen')."'></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
if(file_exists(PAABGABE_PATH.$row->paabgabe_id.'_'.$uid.'.pdf'))
{
$htmlstr .= " <td><a href='".$_SERVER['PHP_SELF']."?id=".$row->paabgabe_id."&uid=$uid' target='_blank'><img src='../../../skin/images/pdf.ico' alt='PDF' title='".$p->t('abgabetool/abgegebeneDatei')."' border=0></a></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
if($row->abgabedatum && $row->paabgabetyp_kurzbz=="end")
{
$htmlstr .= " <td><a href='abgabe_lektor_zusatz.php?paabgabe_id=".$row->paabgabe_id."&uid=$uid&projektarbeit_id=$projektarbeit_id' target='_blank'><img src='../../../skin/images/folder.gif' alt='zusätzliche Daten' title='".$p->t('abgabetool/kontrolleZusatzdaten')."' border=0></a></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
$htmlstr .= " </tr>\n";
$htmlstr .= "</form>\n";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
if(file_exists(PAABGABE_PATH.$row->paabgabe_id.'_'.$uid.'.pdf'))
{
$htmlstr .= " <td><a href='".$_SERVER['PHP_SELF']."?id=".$row->paabgabe_id."&uid=$uid' target='_blank'><img src='../../../skin/images/pdf.ico' alt='PDF' title='".$p->t('abgabetool/abgegebeneDatei')."' border=0></a></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
if($row->abgabedatum && $row->paabgabetyp_kurzbz=="end")
{
$htmlstr .= " <td><a href='abgabe_lektor_zusatz.php?paabgabe_id=".$row->paabgabe_id."&uid=$uid&projektarbeit_id=$projektarbeit_id' target='_blank'><img src='../../../skin/images/folder.gif' alt='zusätzliche Daten' title='".$p->t('abgabetool/kontrolleZusatzdaten')."' border=0></a></td>";
}
else
{
$htmlstr .= " <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
}
$htmlstr .= " </tr>\n";
$htmlstr .= "</form>\n";
}
//Eingabezeile fuer neuen Termin
$htmlstr .= '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" method="POST" name="'.$db->convert_html_chars($projektarbeit_id).'">'."\n";
@@ -708,7 +744,7 @@ echo $htmlstr;
* @param object $student
* @return bool|projektbetreuer|void|null
*/
function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $student)
function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id, $student, $projekttyp_kurzbz)
{
if (!isset($zweitbegutachter->email) || $zweitbegutachter->email == '')
return false;
@@ -721,12 +757,20 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id,
if (!$projektbetreuer)
return $projektbetreuer;
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($erstbegutachter_person_id, $zweitbegutachter->projektarbeit_id, $student->uid);
$zweitbetrRes = $projektbetreuer->getZweitbegutachterWithToken(
$erstbegutachter_person_id,
$zweitbegutachter->projektarbeit_id,
$student->uid,
$zweitbegutachter->person_id
);
if ($zweitbetr)
if ($zweitbetrRes && isset($projektbetreuer->result[0]))
{
$zweitbetr = $projektbetreuer->result[0];
$intern = isset($zweitbetr->uid);
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung";
$mail_link_path = $zweitbetr->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter';
$mail_subject = $projekttyp_kurzbz == 'Diplom' ? 'Masterarbeitsbetreuung' : 'Bachelorarbeitsbetreuung';
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$mail_link_path";
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$zweitbegutachter->projektarbeit_id."&uid=".$student->uid;
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
@@ -745,7 +789,7 @@ function sendZweitbegutachterMail($zweitbegutachter, $erstbegutachter_person_id,
'ParbeitsbeurteilungEndupload',
$maildata,
$zweitbetr->email,
"Masterarbeitsbetreuung",
$mail_subject,
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg'
);
+283 -248
View File
@@ -1,248 +1,283 @@
<?php
/* Copyright (C) 2009 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 >
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$getuid=get_uid();
$uid=$getuid;
if(isset($_GET['uid']))
{
//Studentenansicht
$uid = $_GET['uid'];
//Rechte Pruefen
$allowed=false;
$student = new student();
if(!$student->load($uid))
die($p->t('global/fehlerBeimErmittelnDerUID'));
$stg_obj = new studiengang();
if(!$stg_obj->load($student->studiengang_kz))
die($p->t('global/fehlerBeimLesenAusDatenbank'));
//Berechtigung ueber das Berechtigungssystem
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s'))
$allowed=true;
//oder Lektor mit Betreuung dieses Studenten
$qry = "SELECT 1
FROM
lehre.tbl_projektarbeit
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
WHERE
tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND
vw_benutzer.uid=".$db->db_add_param($getuid).";";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>0)
{
$allowed=true;
}
}
if(!$allowed)
{
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
}
}
$htmlstr = '';
$htmlstr1 = '';
$vorname='';
$nachname='';
$zweitbetreuer = '';
$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname,
(SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname,
(SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre,
(SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost,
(SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
tbl_projektbetreuer.person_id AS betreuer_person_id,
tbl_projekttyp.bezeichnung AS prjbez, *,
lehre.tbl_projektbetreuer.note as note,
public.tbl_benutzer.aktiv as aktiv,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND (tbl_projektbetreuer.betreuerart_kurzbz='Betreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz='Begutachter'
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbetreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz='Erstbegutachter')
AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)."
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
if(!$erg=$db->db_query($sql_query))
{
$errormsg=$p->t('global/fehlerBeimLesenAusDatenbank');
}
else
{
$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form><table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr>\n";
$htmlstr .= "
<th>".$p->t('abgabetool/details')."</th>
<th>".$p->t('lvplan/sem')."</th>
<th>".$p->t('lvplan/stg')."</th>
<th>".$p->t('global/mail')."</th>
<th>".$p->t('abgabetool/betreuer')."</th>
<th>".$p->t('abgabetool/typ')."</th>
<th>".$p->t('abgabetool/titel')."</th>
<!--<th>".$p->t('abgabetool/betreuerart')."</th>-->";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
while($row=$db->db_fetch_object($erg))
{
$htmlstr1 = '';
$zweitbetreuer_obj = new person();
if ($zweitbetreuer_obj->load($row->zweitbetreuer_person_id))
{
$zweitbetreuer = ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_kurzbz).'</b>: '.$zweitbetreuer_obj->titelpre.' '.$zweitbetreuer_obj->vorname.' '.$zweitbetreuer_obj->nachname.' '.$zweitbetreuer_obj->titelpost;
}
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_kurzbz).'</b>: ';
$vorname=$row->vorname;
$nachname=$row->nachname;
$uid=$row->uid;
($row->btitelpre!=''?$htmlstr1 .= $row->btitelpre.' ':$htmlstr1 .= '');
$htmlstr1 .= $row->bvorname.' '.$row->bnachname;
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
$htmlstr1 .= $zweitbetreuer;
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
if (is_null($row->note) && $row->aktiv === 't')
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt))
{
$htmlstr .= "<td>";
if (!is_null($row->babgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "/";
if (!is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "</td>";
} else
{
$htmlstr .= "<td></td>";
}
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
$htmlstr .= " <td align= center>";
$qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";";
if($result_betr=$db->db_query($qry_betr))
{
if($row_betr=$db->db_fetch_object($result_betr))
{
$htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>";
}
else
{
$htmlstr.="UID unknown!";
}
}
$htmlstr .= " </td>";
$htmlstr .= " <td>".$htmlstr1." </td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
// $htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
$htmlstr .= " </tr>\n";
$i++;
}
$htmlstr .= "</tbody></table>\n";
}
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Abgabesystem_Studentensicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" 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/jquery1/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"/>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[4,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>';
echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift');
if(trim($uid)!='')
echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>";
echo '</h1>';
echo $htmlstr;
echo '</body>
</html>';
?>
<?php
/* Copyright (C) 2009 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 >
*/
require_once('../../../config/cis.config.inc.php');
require_once('../../../include/functions.inc.php');
require_once('../../../include/datum.class.php');
require_once('../../../include/person.class.php');
require_once('../../../include/benutzer.class.php');
require_once('../../../include/student.class.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/projektbetreuer.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/phrasen.class.php');
$sprache = getSprache();
$p = new phrasen($sprache);
if (!$db = new basis_db())
die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung'));
$getuid=get_uid();
$uid=$getuid;
if(isset($_GET['uid']))
{
//Studentenansicht
$uid = $_GET['uid'];
//Rechte Pruefen
$allowed=false;
$student = new student();
if(!$student->load($uid))
die($p->t('global/fehlerBeimErmittelnDerUID'));
$stg_obj = new studiengang();
if(!$stg_obj->load($student->studiengang_kz))
die($p->t('global/fehlerBeimLesenAusDatenbank'));
//Berechtigung ueber das Berechtigungssystem
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($getuid);
if($rechte->isBerechtigt('lehre/abgabetool',$stg_obj->oe_kurzbz,'s'))
$allowed=true;
//oder Lektor mit Betreuung dieses Studenten
$qry = "SELECT 1
FROM
lehre.tbl_projektarbeit
JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
JOIN campus.vw_benutzer on(vw_benutzer.person_id=tbl_projektbetreuer.person_id)
WHERE
tbl_projektarbeit.student_uid=".$db->db_add_param($uid)." AND
vw_benutzer.uid=".$db->db_add_param($getuid).";";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result)>0)
{
$allowed=true;
}
}
if(!$allowed)
{
die($p->t('abgabetool/keineBerechtigungStudentenansicht'));
}
}
$htmlstr = '';
$htmlstr1 = '';
$vorname='';
$nachname='';
$zweitbetreuer = '';
$senatsmitglied = '';
$sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bnachname,
(SELECT vorname FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS bvorname,
(SELECT titelpre FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpre,
(SELECT titelpost FROM public.tbl_person WHERE person_id=tbl_projektbetreuer.person_id) AS btitelpost,
tbl_betreuerart.beschreibung AS betreuerart_beschreibung,
(SELECT person_id FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_person_id,
(SELECT betreuerart_kurzbz FROM lehre.tbl_projektbetreuer WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_betreuerart_kurzbz,
(SELECT tbl_betreuerart.beschreibung FROM lehre.tbl_projektbetreuer JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz) WHERE projektarbeit_id=tbl_projektarbeit.projektarbeit_id
AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter', 'Senatsmitglied') LIMIT 1) AS zweitbetreuer_betreuerart_beschreibung,
tbl_projektbetreuer.person_id AS betreuer_person_id,
tbl_projekttyp.bezeichnung AS prjbez, *,
lehre.tbl_projektbetreuer.note as note,
public.tbl_benutzer.aktiv as aktiv,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuer_person_id = tbl_projektbetreuer.person_id) AS babgeschickt,
(SELECT abgeschicktvon FROM extension.tbl_projektarbeitsbeurteilung WHERE projektarbeit_id = tbl_projektarbeit.projektarbeit_id AND betreuerart_kurzbz IN ('Zweitbetreuer', 'Zweitbegutachter') LIMIT 1) AS zweitbetreuer_abgeschickt,
(SELECT datum FROM campus.tbl_paabgabe WHERE paabgabetyp_kurzbz = 'end' AND abgabedatum IS NOT NULL AND projektarbeit_id = tbl_projektarbeit.projektarbeit_id LIMIT 1) AS abgegeben
FROM lehre.tbl_projektarbeit
LEFT JOIN lehre.tbl_projektbetreuer USING(projektarbeit_id)
LEFT JOIN public.tbl_benutzer ON(uid=student_uid)
LEFT JOIN public.tbl_person ON(tbl_benutzer.person_id=tbl_person.person_id)
LEFT JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
LEFT JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
LEFT JOIN public.tbl_studiengang USING(studiengang_kz)
LEFT JOIN lehre.tbl_projekttyp USING (projekttyp_kurzbz)
LEFT JOIN lehre.tbl_betreuerart USING(betreuerart_kurzbz)
WHERE (projekttyp_kurzbz='Bachelor' OR projekttyp_kurzbz='Diplom')
AND betreuerart_kurzbz IN ('Betreuer', 'Begutachter', 'Erstbegutachter', 'Senatsvorsitz')
AND tbl_projektarbeit.student_uid=".$db->db_add_param($uid)."
ORDER BY studiensemester_kurzbz desc, tbl_lehrveranstaltung.kurzbz";
//AND tbl_projektarbeit.student_uid='$getuid' 'ie07m102';
if(!$erg=$db->db_query($sql_query))
{
$errormsg=$p->t('global/fehlerBeimLesenAusDatenbank');
}
else
{
$htmlstr .= "<form name='formular'><input type='hidden' name='check' value=''></form><table id='t1' class='tablesorter'>\n";
$htmlstr .= "<thead><tr>\n";
$htmlstr .= "
<th>".$p->t('abgabetool/details')."</th>
<th>".$p->t('lvplan/sem')."</th>
<th>".$p->t('lvplan/stg')."</th>
<th>".$p->t('global/mail')."</th>
<th>".$p->t('abgabetool/betreuer')."</th>
<th>".$p->t('abgabetool/typ')."</th>
<th>".$p->t('abgabetool/titel')."</th>
<!--<th>".$p->t('abgabetool/betreuerart')."</th>-->";
$htmlstr .= "</tr></thead><tbody>\n";
$i = 0;
while($row=$db->db_fetch_object($erg))
{
// get zweitbetreuer, if any
$htmlstr1 = '';
$zweitbetreuer_obj = new person();
if ($zweitbetreuer_obj->load($row->zweitbetreuer_person_id))
{
$zweitbetreuer = ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_kurzbz).'</b>: '.$zweitbetreuer_obj->titelpre.' '.$zweitbetreuer_obj->vorname.' '.$zweitbetreuer_obj->nachname.' '.$zweitbetreuer_obj->titelpost;
}
// get senatsmitglied, if any
if ($row->betreuerart_kurzbz == 'Senatsvorsitz')
{
// write beschreibung of Betreuerart for Senatsvorsitz
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_beschreibung).'</b>: ';
$senatsmitglied_obj = new projektbetreuer();
$senatsmitgliedRes = $senatsmitglied_obj->getZweitbegutachterWithToken($row->betreuer_person_id, $row->projektarbeit_id, $row->uid);
if ($senatsmitgliedRes)
{
$senatsmitglied .= ', <b>'.$db->convert_html_chars($row->zweitbetreuer_betreuerart_beschreibung).'</b>: ';
$first = true;
foreach($senatsmitglied_obj->result as $spr)
{
if (!$first)
$senatsmitglied .= ', ';
$senatsmitglied .= $spr->voller_name;
$first = false;
}
}
}
else
$htmlstr1 = '<b>'.$db->convert_html_chars($row->betreuerart_kurzbz).'</b>: ';
$vorname=$row->vorname;
$nachname=$row->nachname;
$uid=$row->uid;
($row->btitelpre!=''?$htmlstr1 .= $row->btitelpre.' ':$htmlstr1 .= '');
$htmlstr1 .= $row->bvorname.' '.$row->bnachname;
($row->btitelpost!=''?$htmlstr1 .= ' '.$row->btitelpost:$htmlstr1 .= '');
$htmlstr1 .= $zweitbetreuer;
$htmlstr1 .= $senatsmitglied;
$htmlstr .= " <tr>\n"; //class='liste".($i%2)."'
if (is_null($row->note) && $row->aktiv === 't')
$htmlstr .= " <td><a href='abgabe_student_details.php?uid=".$row->uid."&projektarbeit_id=".$row->projektarbeit_id."&bid=".$row->betreuer_person_id."' target='as_detail' title='Details anzeigen'>".$p->t('abgabetool/upload')."</a></td>\n";
elseif (!is_null($row->babgeschickt) || !is_null($row->zweitbetreuer_abgeschickt))
{
$htmlstr .= "<td>";
if (!is_null($row->babgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->betreuer_person_id ."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungErstDownload')."</a>";
if (!is_null($row->babgeschickt) && !is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "/";
if (!is_null($row->zweitbetreuer_abgeschickt))
$htmlstr .= "<a href='../pdfExport.php?xml=projektarbeitsbeurteilung.xml.php&xsl=Projektbeurteilung&betreuerart_kurzbz=" . $row->zweitbetreuer_betreuerart_kurzbz . "&projektarbeit_id=" . $row->projektarbeit_id . "&person_id=" . $row->zweitbetreuer_person_id."' title='".$p->t('abgabetool/projektbeurteilungDownload')."'>".$p->t('abgabetool/projektbeurteilungZweitDownload')."</a>";
$htmlstr .= "</td>";
}
elseif (!is_null($row->abgegeben))
{
$htmlstr .= "<td>".$p->t('abgabetool/abgegeben')."</td>";
}
else
{
$htmlstr .= "<td>-</td>";
}
$htmlstr .= " <td>".$row->studiensemester_kurzbz."</td>\n";
$htmlstr .= " <td>".strtoupper($row->typ.$row->kurzbz)."</td>\n";
$htmlstr .= " <td align= center>";
$qry_betr="SELECT mitarbeiter_uid FROM public.tbl_person
JOIN public.tbl_benutzer USING(person_id)
JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
WHERE person_id=".$db->db_add_param($row->betreuer_person_id, FHC_INTEGER).";";
if($result_betr=$db->db_query($qry_betr))
{
if($row_betr=$db->db_fetch_object($result_betr))
{
$htmlstr.="<a href='mailto:$row_betr->mitarbeiter_uid@".DOMAIN."?subject=Betreuung%20".$row->prjbez."%20von%20".$row->vorname."%20".$row->nachname."'><img src='../../../skin/images/email.png' alt='email' title='".$p->t('abgabetool/emailAnBetreuer')."'></a>";
}
else
{
$htmlstr.="UID unknown!";
}
}
$htmlstr .= " </td>";
$htmlstr .= " <td>".$htmlstr1." </td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->prjbez)."</td>\n";
$htmlstr .= " <td>".$db->convert_html_chars($row->titel)."</td>\n";
// $htmlstr .= " <td>".$db->convert_html_chars($row->betreuerart_kurzbz)."</td>\n";
$htmlstr .= " </tr>\n";
$i++;
}
$htmlstr .= "</tbody></table>\n";
}
echo '
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Abgabesystem_Studentensicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../skin/style.css.php" 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/jquery1/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"/>
<script language="JavaScript" type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[4,0]],
widgets: ["zebra"]
});
});
</script>
</head>
<body>';
echo '<h1><div style="float:left">'.$p->t('abgabetool/ueberschrift');
if(trim($uid)!='')
echo " ($uid $vorname $nachname)</div> <div style='text-align:right'><a href='".$p->t('dms_link/abgabetoolStudentHandbuch')."' target='_blank'><img src='../../../skin/images/information.png' alt='Anleitung' title='Anleitung Abgabetool' border=0>&nbsp;".$p->t('global/handbuch')."</a></div>";
echo '</h1>';
echo $htmlstr;
echo '</body>
</html>';
?>
+60 -40
View File
@@ -433,8 +433,10 @@ if($command=="update" && $error!=true)
$row_std=$db->db_fetch_object($result_std);
// 1. Begutachter mail ohne Token
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/Projektarbeitsbeurteilung";
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter";
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid;
$projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz;
$subject = $projektarbeit_obj->projekttyp_kurzbz == 'Diplom' ? 'Masterarbeitsbetreuung' : 'Bachelorarbeitsbetreuung';
$abgabetyp = $paabgabetyp_kurzbz == 'end' ? 'Endabgabe' : 'Zwischenabgabe';
$maildata = array();
@@ -452,7 +454,7 @@ if($command=="update" && $error!=true)
'ParbeitsbeurteilungEndupload',
$maildata,
$row_betr->mitarbeiter_uid."@".DOMAIN,
"Bachelor-/Masterarbeitsbetreuung",
$subject,
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg',
$user."@".DOMAIN);
@@ -465,48 +467,66 @@ if($command=="update" && $error!=true)
// 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern
if ($paabgabetyp_kurzbz == 'end')
{
$projektbetreuer = new projektbetreuer();
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
// Zweitbegutachter holen
$zweitbegutachter = new projektbetreuer();
$zweitbegutachterRes = $zweitbegutachter->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
if ($zweitbetr)
if ($zweitbegutachterRes)
{
$tokenGenRes = $projektbetreuer->generateZweitbegutachterToken($zweitbetr->person_id, $projektarbeit_id);
$zweitbegutachterResults = $zweitbegutachter->result;
if (!$tokenGenRes)
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
$zweitbetr = $projektbetreuer->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid);
if (!$zweitbetr)
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
$intern = isset($zweitbetr->uid);
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
$zweitbetmaildata = array();
$zweitbetmaildata['geehrt'] = "geehrte" . ($zweitbetr->anrede == "Herr" ? "r" : "");
$zweitbetmaildata['anrede'] = $zweitbetr->anrede;
$zweitbetmaildata['betreuer_voller_name'] = $zweitbetr->voller_name;
$zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
$zweitbetmaildata['abgabetyp'] = $abgabetyp;
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($zweitbetr->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $zweitbetr->zugangstoken . "</p>" : "";
$mailres = sendSanchoMail(
'ParbeitsbeurteilungEndupload',
$zweitbetmaildata,
$zweitbetr->email,
"Masterarbeitsbetreuung",
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg',
$user . "@" . DOMAIN
);
if (!$mailres)
foreach ($zweitbegutachterResults as $begutachter)
{
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
// token generieren, wenn noch nicht vorhanden und notwendig (wird in methode überprüft)
$tokenGenRes = $zweitbegutachter->generateZweitbegutachterToken($begutachter->person_id, $projektarbeit_id);
if (!$tokenGenRes)
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
// Zweitbegutachter (evtl. mit Token) holen
$zweitbegutachterMitToken = new projektbetreuer();
$begutachterMitTokenRes = $zweitbegutachterMitToken->getZweitbegutachterWithToken($bid, $projektarbeit_id, $row_std->uid, $begutachter->person_id);
if (!$begutachterMitTokenRes)
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
// Email an Zweitbegutachter senden
if (isset($zweitbegutachterMitToken->result[0]))
{
$begutachterMitToken = $zweitbegutachterMitToken->result[0];
$path = $begutachterMitToken->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter';
$mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$path";
$mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$row_std->uid;
$intern = isset($begutachterMitToken->uid);
$mail_link = $intern ? $mail_fulllink : $mail_baselink;
$zweitbetmaildata = array();
$zweitbetmaildata['geehrt'] = "geehrte" . ($begutachterMitToken->anrede == "Herr" ? "r" : "");
$zweitbetmaildata['anrede'] = $begutachterMitToken->anrede;
$zweitbetmaildata['betreuer_voller_name'] = $begutachterMitToken->voller_name;
$zweitbetmaildata['student_anrede'] = $maildata['student_anrede'];
$zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name'];
$zweitbetmaildata['abgabetyp'] = $abgabetyp;
$zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : "";
$zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "<p><a href='$mail_link'>Zur Beurteilung der Arbeit</a></p>" : "";
$zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "<p>Zugangstoken: " . $begutachterMitToken->zugangstoken . "</p>" : "";
$mailres = sendSanchoMail(
'ParbeitsbeurteilungEndupload',
$zweitbetmaildata,
$begutachterMitToken->email,
$subject,
'sancho_header_min_bw.jpg',
'sancho_footer_min_bw.jpg',
$user . "@" . DOMAIN
);
if (!$mailres)
{
echo "<font color=\"#FF0000\">" . $p->t('abgabetool/fehlerMailZweitBegutachter') . "</font><br>&nbsp;";
}
}
}
}
}
@@ -922,7 +922,7 @@ if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
$name = $mit->anrede.' '.$mit->vorname.' '.$mit->nachname.' ('.$mit->kurzbz.')';
$betreff = 'Notenfreigabe ' . $lv->bezeichnung . ' ' . $lv->orgform_kurzbz . ' - ' . $studienplan_bezeichnung;
$mail = new mail($adressen, 'vilesci@' . DOMAIN, $betreff, '');
$mail = new mail($adressen, 'no-reply@' . DOMAIN, $betreff, '');
$htmlcontent = "<html>
<body>
$name hat neue Noten für die Lehrveranstaltung\n\n<br>
@@ -931,10 +931,10 @@ if (isset($_REQUEST["freigabe"]) && ($_REQUEST["freigabe"] == 1))
<br>eingetragen.\n<br><br>
Die Noten können jetzt ins Zeugnis übernommen werden.\n";
$htmlcontent .= $studlist;
$htmlcontent .= $studlist;
$htmlcontent.= "
<br>Anzahl der Noten:" . $neuenoten . "
<br>Anzahl der Noten: " . $neuenoten . "
<br><br>" . $p->t('abgabetool/mailVerschicktAn') . ": " . $adressen . "
</body></html>";
$mail->setHTMLContent($htmlcontent);
+1 -1
View File
@@ -290,7 +290,7 @@ if ($result = $db->db_query($qry)) {
'personenkennzeichen' => trim($row->matrikelnr),
'geschlecht' => $row->geschlecht,
'foto_gesperrt' => $row->foto_sperre, // f/t
'foto_url' => $foto_url,
'foto_url' => 'Pictures/' . trim($row->person_id) . '.jpg',
'studiengruppe' => $student_studiengruppe,
'verband' => trim($row->verband),
'gruppe' => trim($row->gruppe),
+3 -2
View File
@@ -150,14 +150,14 @@ if (isset($_GET['betreuerart_kurzbz']))
if (isset($_GET['xsl']) && $_GET['xsl'] == 'Zahlung')
{
$requestdata = $_SERVER['QUERY_STRING'];
$log = new Webservicelog();
$log->webservicetyp_kurzbz = 'content';
$log->request_id = isset($_GET['buchungsnummern']) && !empty($_GET['buchungsnummern']) ? $_GET['buchungsnummern'] : NULL;
$log->beschreibung = 'Zahlungsbestaetigungsdownload';
$log->request_data = $requestdata;
$log->execute_user = get_uid();
$log->save(true);
}
@@ -207,6 +207,7 @@ if (isset($_GET['xsl']) && ($_GET['xsl'] === 'Projektbeurteilung'))
switch ($_GET['betreuerart_kurzbz'])
{
case 'Begutachter' :
case 'Senatsvorsitz' :
$xsl = 'ProjektBeurteilungBA';
break;
case 'Erstbegutachter' :
+342 -338
View File
@@ -1,339 +1,343 @@
<?php
/* Copyright (C) 2009 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: Karl Burkhart <burkhart@technikum-wien.at>,
*/
require_once("../../../config/cis.config.inc.php");
require_once('../../../include/basis_db.class.php');
require_once("../../../include/gebiet.class.php");
require_once("../../../include/frage.class.php");
require_once("../../../include/vorschlag.class.php");
require_once('../../../include/functions.inc.php');
require_once("../../../include/benutzerberechtigung.class.php");
require_once('../../../include/studiengang.class.php');
require_once('../../../include/ablauf.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body style="padding: 10px">
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
$gebiet = new gebiet();
$gebiet->getAll();
$sprache = (isset($_REQUEST['Sprache'])?$_REQUEST['Sprache']:'German');
$Auswahlgebiet = (isset($_REQUEST['AuswahlGebiet'])?$_REQUEST['AuswahlGebiet']:'');
$loesungen = (isset($_REQUEST['loesungen']) && $_REQUEST['loesungen'] != '' ? true:false);
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', false);
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
$gebiet_id = (isset($_GET['gebiet_id'])?$_GET['gebiet_id']:'');
echo '<form action="'.$_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz.'" method="post" name="TesttoolUebersicht">
<table>
<tr>
<td>Studiengang:</td><td>';
//Liste der Studiengänge
echo '<select onchange="window.location.href=this.value">';
echo '<option value="'.$_SERVER['PHP_SELF'].'?" >Alle Studiengänge</option>';
foreach ($studiengang->result as $row)
{
$stg_arr[$row->studiengang_kz] = $row->kuerzel;
if ($stg_kz == '')
$stg_kz = $row->studiengang_kz;
if ($row->studiengang_kz == $stg_kz)
$selected = 'selected="selected"';
else
$selected = '';
echo '<option value="'.$_SERVER['PHP_SELF'].'?stg_kz='.$row->studiengang_kz.'" '.$selected.'>'.$db->convert_html_chars($row->kuerzel).' - '.$db->convert_html_chars($row->bezeichnung).'</option>'."\n";
}
echo '</select>';
echo '</td>
</tr>
<tr>
<td>Gebiet:</td><td>';
//Liste der Gebiete
$qry = "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$db->db_add_param($stg_kz);
$anzahl = $db->db_num_rows($db->db_query($qry));
if ($stg_kz !== "-1" && $anzahl !== 0)
{
$qry = "SELECT * FROM testtool.tbl_gebiet LEFT JOIN testtool.tbl_ablauf USING (gebiet_id)
WHERE studiengang_kz=".$db->db_add_param($stg_kz)." ORDER BY semester,reihung";
}
else
$qry = "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung";
if (($anzahl !== 0) || ($stg_kz == '-1') && ($stg_kz !== ''))
{
if ($result = $db->db_query($qry))
{
echo ' <select name="AuswahlGebiet">';
echo '<option value="auswahl"> - Bitte Auswählen - </option>';
while ($row = $db->db_fetch_object($result))
{
if ($Auswahlgebiet == $row->gebiet_id)
{
$selected = 'selected="selected"';
}
else
{
$selected = '';
}
if ($stg_kz == "-1")
{
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - ID:'.$row->gebiet_id.'</option>'."\n";
}
else
{
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>('.$row->semester.') - '.$row->bezeichnung.' - '.$row->kurzbz.' - ID:'.$row->gebiet_id.'</option>'."\n";
}
}
echo '</select>';
}
}
elseif (($anzahl == 0))
{
echo 'Keine Gebiete für diesen Studiengang';
}
echo '</td>';
/*echo '<td><select name="AuswahlGebiet"><option value="auswahl"> - Bitte Auswählen - </option>';
foreach ($gebiet->result as $gebietResult)
{
$selected ='';
if($Auswahlgebiet == $gebietResult->gebiet_id)
$selected = 'selected';
echo '<option value="'.$gebietResult->gebiet_id.'" '.$selected.'>'.$gebietResult->gebiet_id.' - '.$gebietResult->bezeichnung.' - '.$gebietResult->kurzbz.'</option>';
}
echo '</select></td>';*/
echo '</tr>
<tr>
<td>Sprache: </td>
<td><select name="Sprache">';
if($sprache == 'German')
echo '<option selected value="German">Deutsch</option>';
else
echo '<option value="German">Deutsch</option>';
if($sprache == 'English')
echo '<option selected value="English">Englisch</option>';
else
echo '<option value="English">Englisch</option>';
echo'</select>
</td>
</tr>
<tr>
<td>
Mit Lösungen
</td>
<td><input type="checkbox" name="loesungen" '.($loesungen ? 'checked':'').'></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Anzeigen"></td></tr>
</table><br>';
if(isset($_REQUEST['AuswahlGebiet']))
{
$gebiet_id = $_REQUEST['AuswahlGebiet'];
$gebietdetails = new gebiet();
$gebietdetails->load($gebiet_id);
$qry = "SELECT DISTINCT UPPER(typ||kurzbz) AS studiengang
FROM testtool.tbl_ablauf JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE gebiet_id=".$db->db_add_param($gebiet_id)."
ORDER BY studiengang";
$result = $db->db_query($qry);
if ($gebietdetails)
{
echo '
<table>
<tr>
<td align="right">Gebiet:</td>
<td>'.$gebietdetails->bezeichnung.'</td>
</tr>
<tr>
<td valign="top">Verwendet in den Studiengängen:</td>
<td>';
$i=1;
while ($row = $db->db_fetch_object($result))
{
echo $row->studiengang.($db->db_num_rows($result)>1 && $db->db_num_rows($result)>$i?', ':'');
$i++;
if ($i % 10 == 0)
echo '<br>';
}
echo '</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">Beschreibung:</td>
<td>'.($gebietdetails->beschreibung!=''?$gebietdetails->beschreibung:'-').'</td>
</tr>
<tr>
<td align="right">Zeit:</td>
<td>'.$gebietdetails->zeit.'</td>
</tr>
<tr>
<td align="right">Multipleresponse:</td>
<td>'.($gebietdetails->multipleresponse==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Gestellte Fragen:</td>
<td>'.$gebietdetails->maxfragen.'</td>
</tr>
<tr>
<td align="right">Zufallsfrage:</td>
<td>'.($gebietdetails->zufallfrage==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Zufallsvorschlag:</td>
<td>'.($gebietdetails->zufallvorschlag==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Startlevel:</td>
<td>'.($gebietdetails->level_start!=''?$gebietdetails->level_start:'Keines').'</td>
</tr>
<tr>
<td align="right">Höheres Level nach:</td>
<td>'.($gebietdetails->level_sprung_auf!=''?$gebietdetails->level_sprung_auf.' richtigen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Niedrigeres Level nach:</td>
<td>'.($gebietdetails->level_sprung_ab!=''?$gebietdetails->level_sprung_ab.' falschen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Levelgleichverteilung:</td>
<td>'.($gebietdetails->levelgleichverteilung==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Maximalpunkte:</td>
<td>'.$gebietdetails->maxpunkte.'</td>
</tr>
<tr>
<td align="right">Antworten pro Zeile:</td>
<td>'.$gebietdetails->antwortenprozeile.'</td>
</tr>
</table><br><hr>';
}
$frage = new frage();
$frage->getFragenGebiet($gebiet_id);
foreach($frage->result as $fragen)
{
$sprachevorschlag = new vorschlag();
$spracheFrage = new frage();
$spracheFrage->getFrageSprache($fragen->frage_id, $sprache);
echo "<b>&lt;NR:".$fragen->nummer.($fragen->level!=""?"&nbsp;&nbsp;Level: ".$fragen->level."":"").($fragen->demo=="t"?"&nbsp;&nbsp;Demo":"")."&gt;</b><br> ";
//Sound einbinden
if($spracheFrage->audio!='')
{
echo ' <audio src="../sound.php?src=frage&amp;frage_id='.$spracheFrage->frage_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
// FRAGE anzeigen
echo "$spracheFrage->text<br/><br/>\n";
// Bild einbinden wenn vorhanden
if($spracheFrage->bild!='')
echo "<img class='testtoolfrage' src='../bild.php?src=frage&amp;frage_id=$spracheFrage->frage_id&amp;sprache=".$sprache."' /><br/><br/>\n";
echo"<br><table>";
// ANTWORTEN anzeigen
$sprachevorschlag->getVorschlag($fragen->frage_id, $sprache, $random=false);
$anzahlBild = 0;
foreach($sprachevorschlag->result as $vor)
{
$vorschlag = new vorschlag();
$vorschlag->loadVorschlagSprache($vor->vorschlag_id, $sprache);
if($vorschlag->bild == '')
{
if ($loesungen)
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td></td><td align="right"><b>'.$vor->punkte.'</b></td><td style="border-left:1px solid;">&nbsp;'.$vorschlag->text.'</td></tr>';
}
else
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td><td>&nbsp;'.$vorschlag->text.'</td></tr>';
}
}
if($vorschlag->bild!='')
{
// zeilenumbruch nach 4 bilder
if($anzahlBild%4==0)
echo "</tr>";
echo "<td>";
echo "<img class='testtoolvorschlag' src='../bild.php?src=vorschlag&amp;vorschlag_id=$vor->vorschlag_id&amp;sprache=".$sprache."' /><br/>";
if ($loesungen)
{
echo "<br>".$vor->punkte."</td>";
}
else
{
echo "</td>";
}
$anzahlBild++;
}
if($vorschlag->audio!='')
{
echo ' <audio src="../sound.php?src=vorschlag&amp;vorschlag_id='.$vorschlag->vorschlag_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
}
echo "</table><br><hr>";
}
}
?>
<?php
/* Copyright (C) 2009 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: Karl Burkhart <burkhart@technikum-wien.at>,
*/
require_once("../../../config/cis.config.inc.php");
require_once('../../../include/basis_db.class.php');
require_once("../../../include/gebiet.class.php");
require_once("../../../include/frage.class.php");
require_once("../../../include/vorschlag.class.php");
require_once('../../../include/functions.inc.php');
require_once("../../../include/benutzerberechtigung.class.php");
require_once('../../../include/studiengang.class.php');
require_once('../../../include/ablauf.class.php');
if (!$db = new basis_db())
die('Fehler beim Oeffnen der Datenbankverbindung');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testool Fragen Übersicht</title>
<link href="../../../skin/style.css.php" rel="stylesheet" type="text/css">
</head>
<body style="padding: 10px">
<?php
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('basis/testtool', null, 's'))
die('<span class="error">Sie haben keine Berechtigung für diese Seite</span>');
$gebiet = new gebiet();
$gebiet->getAll();
$sprache = (isset($_REQUEST['Sprache'])?$_REQUEST['Sprache']:'German');
$Auswahlgebiet = (isset($_REQUEST['AuswahlGebiet'])?$_REQUEST['AuswahlGebiet']:'');
$loesungen = (isset($_REQUEST['loesungen']) && $_REQUEST['loesungen'] != '' ? true:false);
$studiengang = new studiengang();
$studiengang->getAll('typ, kurzbz', false);
$stg_kz = (isset($_GET['stg_kz'])?$_GET['stg_kz']:'-1');
$gebiet_id = (isset($_GET['gebiet_id'])?$_GET['gebiet_id']:'');
echo '<form action="'.$_SERVER['PHP_SELF'].'?stg_kz='.$stg_kz.'" method="post" name="TesttoolUebersicht">
<table>
<tr>
<td>Studiengang:</td><td>';
//Liste der Studiengänge
echo '<select onchange="window.location.href=this.value">';
echo '<option value="'.$_SERVER['PHP_SELF'].'?" >Alle Studiengänge</option>';
foreach ($studiengang->result as $row)
{
$stg_arr[$row->studiengang_kz] = $row->kuerzel;
if ($stg_kz == '')
$stg_kz = $row->studiengang_kz;
if ($row->studiengang_kz == $stg_kz)
$selected = 'selected="selected"';
else
$selected = '';
echo '<option value="'.$_SERVER['PHP_SELF'].'?stg_kz='.$row->studiengang_kz.'" '.$selected.'>'.$db->convert_html_chars($row->kuerzel).' - '.$db->convert_html_chars($row->bezeichnung).'</option>'."\n";
}
echo '</select>';
echo '</td>
</tr>
<tr>
<td>Gebiet:</td><td>';
//Liste der Gebiete
$qry = "SELECT * FROM testtool.tbl_ablauf WHERE studiengang_kz=".$db->db_add_param($stg_kz);
$anzahl = $db->db_num_rows($db->db_query($qry));
if ($stg_kz !== "-1" && $anzahl !== 0)
{
$qry = "SELECT * FROM testtool.tbl_gebiet LEFT JOIN testtool.tbl_ablauf USING (gebiet_id)
WHERE studiengang_kz=".$db->db_add_param($stg_kz)." ORDER BY semester,reihung";
}
else
$qry = "SELECT * FROM testtool.tbl_gebiet ORDER BY bezeichnung";
if (($anzahl !== 0) || ($stg_kz == '-1') && ($stg_kz !== ''))
{
if ($result = $db->db_query($qry))
{
echo ' <select name="AuswahlGebiet">';
echo '<option value="auswahl"> - Bitte Auswählen - </option>';
while ($row = $db->db_fetch_object($result))
{
if ($Auswahlgebiet == $row->gebiet_id)
{
$selected = 'selected="selected"';
}
else
{
$selected = '';
}
if ($stg_kz == "-1")
{
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>'.$row->bezeichnung.' - '.$row->kurzbz.' - ID:'.$row->gebiet_id.'</option>'."\n";
}
else
{
echo '<option value="'.$row->gebiet_id.'" '.$selected.'>('.$row->semester.') - '.$row->bezeichnung.' - '.$row->kurzbz.' - ID:'.$row->gebiet_id.'</option>'."\n";
}
}
echo '</select>';
}
}
elseif (($anzahl == 0))
{
echo 'Keine Gebiete für diesen Studiengang';
}
echo '</td>';
/*echo '<td><select name="AuswahlGebiet"><option value="auswahl"> - Bitte Auswählen - </option>';
foreach ($gebiet->result as $gebietResult)
{
$selected ='';
if($Auswahlgebiet == $gebietResult->gebiet_id)
$selected = 'selected';
echo '<option value="'.$gebietResult->gebiet_id.'" '.$selected.'>'.$gebietResult->gebiet_id.' - '.$gebietResult->bezeichnung.' - '.$gebietResult->kurzbz.'</option>';
}
echo '</select></td>';*/
echo '</tr>
<tr>
<td>Sprache: </td>
<td><select name="Sprache">';
if($sprache == 'German')
echo '<option selected value="German">Deutsch</option>';
else
echo '<option value="German">Deutsch</option>';
if($sprache == 'English')
echo '<option selected value="English">Englisch</option>';
else
echo '<option value="English">Englisch</option>';
echo'</select>
</td>
</tr>
<tr>
<td>
Mit Lösungen
</td>
<td><input type="checkbox" name="loesungen" '.($loesungen ? 'checked':'').'></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Anzeigen"></td></tr>
</table><br>';
if(isset($_REQUEST['AuswahlGebiet']))
{
$gebiet_id = $_REQUEST['AuswahlGebiet'];
$gebietdetails = new gebiet();
$gebietdetails->load($gebiet_id);
$qry = "SELECT DISTINCT UPPER(typ||kurzbz) AS studiengang
FROM testtool.tbl_ablauf JOIN public.tbl_studiengang USING (studiengang_kz)
WHERE gebiet_id=".$db->db_add_param($gebiet_id)."
ORDER BY studiengang";
$result = $db->db_query($qry);
if ($gebietdetails)
{
echo '
<table>
<tr>
<td align="right">Gebiet:</td>
<td>'.$gebietdetails->bezeichnung.'</td>
</tr>
<tr>
<td valign="top">Verwendet in den Studiengängen:</td>
<td>';
$i=1;
while ($row = $db->db_fetch_object($result))
{
echo $row->studiengang.($db->db_num_rows($result)>1 && $db->db_num_rows($result)>$i?', ':'');
$i++;
if ($i % 10 == 0)
echo '<br>';
}
echo '</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right">Beschreibung:</td>
<td>'.($gebietdetails->beschreibung!=''?$gebietdetails->beschreibung:'-').'</td>
</tr>
<tr>
<td align="right">Zeit:</td>
<td>'.$gebietdetails->zeit.'</td>
</tr>
<tr>
<td align="right">Multipleresponse:</td>
<td>'.($gebietdetails->multipleresponse==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Gestellte Fragen:</td>
<td>'.$gebietdetails->maxfragen.'</td>
</tr>
<tr>
<td align="right">Zufallsfrage:</td>
<td>'.($gebietdetails->zufallfrage==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Zufallsvorschlag:</td>
<td>'.($gebietdetails->zufallvorschlag==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Startlevel:</td>
<td>'.($gebietdetails->level_start!=''?$gebietdetails->level_start:'Keines').'</td>
</tr>
<tr>
<td align="right">Höheres Level nach:</td>
<td>'.($gebietdetails->level_sprung_auf!=''?$gebietdetails->level_sprung_auf.' richtigen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Niedrigeres Level nach:</td>
<td>'.($gebietdetails->level_sprung_ab!=''?$gebietdetails->level_sprung_ab.' falschen Antwort(en)':'-').'</td>
</tr>
<tr>
<td align="right">Levelgleichverteilung:</td>
<td>'.($gebietdetails->levelgleichverteilung==true?'Ja':'Nein').'</td>
</tr>
<tr>
<td align="right">Maximalpunkte:</td>
<td>'.$gebietdetails->maxpunkte.'</td>
</tr>
<tr>
<td align="right">Offsetpunkte:</td>
<td>'.$gebietdetails->offsetpunkte.'</td>
</tr>
<tr>
<td align="right">Antworten pro Zeile:</td>
<td>'.$gebietdetails->antwortenprozeile.'</td>
</tr>
</table><br><hr>';
}
$frage = new frage();
$frage->getFragenGebiet($gebiet_id);
foreach($frage->result as $fragen)
{
$sprachevorschlag = new vorschlag();
$spracheFrage = new frage();
$spracheFrage->getFrageSprache($fragen->frage_id, $sprache);
echo "<b>&lt;NR:".$fragen->nummer.($fragen->level!=""?"&nbsp;&nbsp;Level: ".$fragen->level."":"").($fragen->demo=="t"?"&nbsp;&nbsp;Demo":"")."&gt;</b><br> ";
//Sound einbinden
if($spracheFrage->audio!='')
{
echo ' <audio src="../sound.php?src=frage&amp;frage_id='.$spracheFrage->frage_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
// FRAGE anzeigen
echo "$spracheFrage->text<br/><br/>\n";
// Bild einbinden wenn vorhanden
if($spracheFrage->bild!='')
echo "<img class='testtoolfrage' src='../bild.php?src=frage&amp;frage_id=$spracheFrage->frage_id&amp;sprache=".$sprache."' /><br/><br/>\n";
echo"<br><table>";
// ANTWORTEN anzeigen
$sprachevorschlag->getVorschlag($fragen->frage_id, $sprache, $random=false);
$anzahlBild = 0;
foreach($sprachevorschlag->result as $vor)
{
$vorschlag = new vorschlag();
$vorschlag->loadVorschlagSprache($vor->vorschlag_id, $sprache);
if($vorschlag->bild == '')
{
if ($loesungen)
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td></td><td align="right"><b>'.$vor->punkte.'</b></td><td style="border-left:1px solid;">&nbsp;'.$vorschlag->text.'</td></tr>';
}
else
{
echo '<tr><td style="border-right:1px solid;">'.$vor->nummer.'</td><td>&nbsp;'.$vorschlag->text.'</td></tr>';
}
}
if($vorschlag->bild!='')
{
// zeilenumbruch nach 4 bilder
if($anzahlBild%4==0)
echo "</tr>";
echo "<td>";
echo "<img class='testtoolvorschlag' src='../bild.php?src=vorschlag&amp;vorschlag_id=$vor->vorschlag_id&amp;sprache=".$sprache."' /><br/>";
if ($loesungen)
{
echo "<br>".$vor->punkte."</td>";
}
else
{
echo "</td>";
}
$anzahlBild++;
}
if($vorschlag->audio!='')
{
echo ' <audio src="../sound.php?src=vorschlag&amp;vorschlag_id='.$vorschlag->vorschlag_id.'&amp;sprache='.$sprache.'" controls="controls">
<div>
<p>Ihr Browser unterstützt dieses Audioelement leider nicht.</p>
</div>
</audio>';
}
}
echo "</table><br><hr>";
}
}
?>
</body>
@@ -783,6 +783,22 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-statusgrund" label="Insertamum" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#insertamum" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-insertvon" label="Insertvon" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#insertvon" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-updateamum" label="Updateamum" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#updateamum" />
<splitter class="tree-splitter"/>
<treecol id="student-prestudent-tree-rolle-updatevon" label="Updatevon" flex="1" hidden="true" persist="hidden, width, ordinal"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#updatevon" />
<splitter class="tree-splitter"/>
</treecols>
<template>
@@ -804,6 +820,10 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bestaetigt_am"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#bewerbung_abgeschicktamum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#insertamum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#insertvon"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#updateamum"/>
<treecell label="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#updatevon"/>
</treerow>
</treeitem>
</treechildren>
File diff suppressed because it is too large Load Diff
+37
View File
@@ -312,5 +312,42 @@ class berechtigung extends basis_db
return false;
}
}
/**
* Sucht nach Berechtigungen
* @param string $searchItem Suchbegriff
* @return boolean
*/
public function searchBerechtigungen($searchItem)
{
$this->result=array();
$qry = 'SELECT * FROM system.tbl_berechtigung WHERE
(
LOWER(berechtigung_kurzbz) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\')
OR
LOWER(beschreibung) LIKE LOWER(\'%'.$this->db_escape(($searchItem)).'%\')
)';
$qry .= ' ORDER BY berechtigung_kurzbz';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new berechtigung();
$obj->berechtigung_kurzbz = $row->berechtigung_kurzbz;
$obj->beschreibung = $row->beschreibung;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Berechtigungen';
return false;
}
}
}
?>
+4 -4
View File
@@ -663,10 +663,10 @@ class lehreinheit extends basis_db
$sql_lkt=mb_substr($sql_lkt,3);
$sql_query="SELECT * FROM campus.tbl_zeitsperre
WHERE ($sql_lkt) AND
( (vondatum<".$this->db_add_param($datum)." AND bisdatum>".$this->db_add_param($datum).")
OR (vondatum=".$this->db_add_param($datum)." AND bisdatum=".$this->db_add_param($datum)." AND vonstunde<=".$this->db_add_param($stunde)." AND bisstunde>=".$this->db_add_param($stunde).")
OR (vondatum=".$this->db_add_param($datum)." AND bisdatum>".$this->db_add_param($datum)." AND vonstunde<=".$this->db_add_param($stunde).")
OR (vondatum<".$this->db_add_param($datum)." AND bisdatum=".$this->db_add_param($datum)." AND bisstunde>=".$this->db_add_param($stunde).") )";
(vondatum <= ".$this->db_add_param($datum)." AND
bisdatum >= ".$this->db_add_param($datum)." AND
(vonstunde <= ". $this->db_add_param($stunde)." OR vonstunde IS NULL) AND
(bisstunde >= ". $this->db_add_param($stunde)." OR bisstunde IS NULL))";
//echo $sql_query.'<br>';
if (!$this->db_query($sql_query))
{
+2
View File
@@ -660,6 +660,8 @@ class lehrstunde extends basis_db
$stunde->titel=$row->titel;
$stunde->anmerkung=$row->beschreibung;
$stunde->anmerkung_lehreinheit=$row->beschreibung;
$stunde->updateamum=$row->insertamum;
$stunde->updatevon=$row->insertvon;
$stunde->farbe='';
$this->lehrstunden[]=$stunde;
}
+55
View File
@@ -472,10 +472,65 @@ class projektarbeit extends basis_db
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester).
* Masterarbeiten sind ab der Änderung zur Gewichtung der Punkte aktuell,
* Bachelorarbeiten schon ab dem Umstieg auf das Online Beurteilungsformular.
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
*/
public function projektarbeitIsCurrent($projektarbeit_id)
{
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
FROM lehre.tbl_projektarbeit
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE projektarbeit_id=".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND
(
(
projekttyp_kurzbz = 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2023'
)::date
)
OR
(
projekttyp_kurzbz <> 'Diplom'
AND tbl_studiensemester.start::date >= (
SELECT start
FROM public.tbl_studiensemester
WHERE studiensemester_kurzbz = 'SS2022'
)::date
)
)
LIMIT 1";
$result_sem=$this->db_query($qry);
if (!$result_sem)
{
$this->errormsg = "Fehler beim Ermitteln der Projektarbeit Aktualität";
return -1;
}
$num_rows = $this->db_num_rows($result_sem);
if ($num_rows < 0)
{
$this->errormsg = "Fehler beim Ermitteln der Anzahl der aktuellen Projektarbeiten";
}
return $num_rows;
}
/**
* Prüft ob Projektarbeit aktuell ist (ab bestimmtem Semester), vor der Änderung zur Gewichtung der Punkte.
* @param $projektarbeit_id
* @return int -1 wenn Fehler, 0 wenn nicht aktuell, 1 wenn aktuell
*/
public function projektarbeitIsCurrentBeforeWeightening($projektarbeit_id)
{
// paarbeit sollte nur ab einem Studiensemester online bewertet werden
$qry="SELECT 1
+47 -21
View File
@@ -395,40 +395,66 @@ class projektbetreuer extends basis_db
* @param $erstbegutachter_person_id int person_id des Erstbegutachters
* @param $projektarbeit_id int
* @param $student_uid string uid des Studenten der Arbeit abgibt
* @param $zweitbegutachter_person_id int person_id des Zweitbegutachters (wenn mehrere Zweitbetreuer zu einem Erstbegutachter erwartet werden)
* @return object | bool
*/
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid)
public function getZweitbegutachterWithToken($erstbegutachter_person_id, $projektarbeit_id, $student_uid, $zweitbegutachter_person_id = null)
{
$qry_betr="SELECT betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis, tbl_benutzer.uid, kontakt,
$qry_betr="SELECT DISTINCT ON (betr.person_id) betr.person_id, betr.projektarbeit_id, pers.anrede, betr.zugangstoken, betr.zugangstoken_gueltigbis,
tbl_benutzer.uid, kontakt, betr.betreuerart_kurzbz,
trim(COALESCE(titelpre,'')||' '||COALESCE(vorname,'')||' '||COALESCE(nachname,'')||' '||COALESCE(titelpost,'')) as voller_name,
CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email, abg.abgabedatum
FROM lehre.tbl_projektbetreuer betr
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
JOIN lehre.tbl_projektarbeit parb ON betr.projektarbeit_id = parb.projektarbeit_id
JOIN public.tbl_person pers ON betr.person_id = pers.person_id
LEFT JOIN public.tbl_kontakt ON pers.person_id = tbl_kontakt.person_id AND kontakttyp = 'email' AND zustellung = true
LEFT JOIN public.tbl_benutzer ON pers.person_id = tbl_benutzer.person_id
LEFT JOIN campus.tbl_paabgabe abg ON betr.projektarbeit_id = abg.projektarbeit_id AND abg.paabgabetyp_kurzbz = 'end'
WHERE betr.betreuerart_kurzbz = 'Zweitbegutachter'
WHERE
(
(
betr.betreuerart_kurzbz = 'Zweitbegutachter'
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, FHC_INTEGER)."
AND betreuerart_kurzbz = 'Erstbegutachter'
AND projektarbeit_id = betr.projektarbeit_id
)
)
OR /* either Zweitbegutachter of masterarbeit, or Kommissionsprüfer if Kommission */
(
betr.betreuerart_kurzbz = 'Senatsmitglied'
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, FHC_INTEGER)."
AND betreuerart_kurzbz = 'Senatsvorsitz'
AND projektarbeit_id = betr.projektarbeit_id
)
)
)
AND betr.projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND parb.student_uid = ".$this->db_add_param($student_uid)."
AND EXISTS (
SELECT 1 FROM lehre.tbl_projektbetreuer
WHERE person_id = ".$this->db_add_param($erstbegutachter_person_id, FHC_INTEGER)."
AND betreuerart_kurzbz = 'Erstbegutachter'
AND projektarbeit_id = betr.projektarbeit_id
)
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)
ORDER BY betr.insertamum DESC
LIMIT 1";
AND (tbl_benutzer.aktiv OR tbl_benutzer.aktiv IS NULL)";
if (isset($zweitbegutachter_person_id))
{
$qry_betr .= " AND betr.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER);
}
$qry_betr .= " ORDER BY betr.person_id DESC,
(CASE WHEN EXISTS ( /* if multiple accounts, prioritize mitarbeiter */
SELECT 1 FROM public.tbl_mitarbeiter ma
WHERE ma.mitarbeiter_uid = tbl_benutzer.uid
) THEN 0 ELSE 1 END), betr.insertamum DESC";
if ($betr=$this->db_query($qry_betr))
{
$row_betr = $this->db_fetch_object($betr);
if ($row_betr)
return $row_betr;
else
return false;
$result = array();
while ($row_betr = $this->db_fetch_object())
{
$this->result[] = $row_betr;
}
return true;
}
else
{
@@ -451,7 +477,7 @@ class projektbetreuer extends basis_db
LEFT JOIN public.tbl_benutzer USING(person_id)
WHERE projektarbeit_id = ".$this->db_add_param($projektarbeit_id, FHC_INTEGER)."
AND tbl_projektbetreuer.person_id = ".$this->db_add_param($zweitbegutachter_person_id, FHC_INTEGER)."
AND betreuerart_kurzbz = 'Zweitbegutachter'
AND betreuerart_kurzbz IN ('Zweitbegutachter', 'Senatsmitglied')
LIMIT 1";
if ($betreueruidres = $this->db_query($betreuerUidQry))
@@ -494,7 +520,7 @@ class projektbetreuer extends basis_db
zugangstoken_gueltigbis = CURRENT_DATE + interval '1 year'
WHERE projektarbeit_id = " . $this->db_add_param($projektarbeit_id, FHC_INTEGER) . "
AND person_id = " . $this->db_add_param($row_betr->person_id, FHC_INTEGER) . "
AND betreuerart_kurzbz = 'Zweitbegutachter'";
AND betreuerart_kurzbz IN ('Zweitbegutachter', 'Senatsmitglied')";
if ($this->db_query($qry_upd))
{
+4 -4
View File
@@ -718,10 +718,10 @@ class projektphase extends basis_db
(
(
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
AND (tbl_projekt.ende + interval '7 month 1 day' >=now() OR tbl_projekt.ende is null)
) AND (
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
AND (tbl_projektphase.ende + interval '7 month 1 day' >=now() OR tbl_projektphase.ende is null)
)
)
AND mitarbeiter_uid=" . $this->db_add_param($mitarbeiter_uid);
@@ -787,10 +787,10 @@ class projektphase extends basis_db
(
(
(tbl_projekt.beginn<=now() or tbl_projekt.beginn is null)
AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null)
AND (tbl_projekt.ende + interval '7 month 1 day' >=now() OR tbl_projekt.ende is null)
) AND (
(tbl_projektphase.start<=now() or tbl_projektphase.start is null)
AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null)
AND (tbl_projektphase.ende + interval '7 month 1 day' >=now() OR tbl_projektphase.ende is null)
)
)
AND mitarbeiter_uid = ".$this->db_add_param($mitarbeiter_uid)."
+4 -2
View File
@@ -52,6 +52,7 @@ class statistik extends basis_db
// Daten der Statistik
public $data; // DB ressource
public $html;
public $countRows;
public $csv;
public $json;
@@ -510,6 +511,7 @@ class statistik extends basis_db
$this->html='';
$this->csv='';
$this->json=array();
$this->countRows=0;
set_time_limit(120);
if($this->sql!='')
@@ -572,6 +574,7 @@ class statistik extends basis_db
$this->json[] = $row;
$this->html.= '</tr>';
$this->csv=substr($this->csv,0,-1)."\n";
$this->countRows++;
}
$this->html.= '</tbody>';
}
@@ -586,8 +589,7 @@ class statistik extends basis_db
function getHtmlTable($id, $class='')
{
return '<table class="'.$class.'" id="'.$id.'">'.$this->html.'</table>';
return '<p>'.$this->countRows.' Zeilen</p><table class="'.$class.'" id="'.$id.'">'.$this->html.'</table>';
}
function getCSV()
+6 -4
View File
@@ -83,12 +83,14 @@ $this->phrasen['abgabetool/gelesenUndAkzeptiert']='Gelesen und akzeptiert';
$this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Erklärung nicht akzeptiert';
$this->phrasen['abgabetool/downloadProjektarbeit']='Dokument herunterladen';
$this->phrasen['abgabetool/zweitBegutachter']='ZweitbegutachterIn';
$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken an ZweitbegutachterIn noch einmal senden';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an ZweitbegutachterIn (%s) gesendet';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Mail an ZweitbegutachterIn (%s) senden';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail für Zweitbegutachter vorhanden!';
$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Zugangstoken noch einmal senden';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail an %s (%s) gesendet';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Mail an %s (%s) senden';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='keine Zustellmail vorhanden!';
$this->phrasen['abgabetool/projektbeurteilungDownload']='Projektbeurteilung herunterladen';
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='Erst-/Begutachter';
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Zweitbegutachter';
$this->phrasen['abgabetool/fehlerErmittelnEndabgabeProjektarbeit']='Fehler beim Ermitteln des Enduplaods der Projektarbeit';
$this->phrasen['abgabetool/senatsMitglied']='Mitglied Prüfungssenat';
$this->phrasen['abgabetool/abgegeben']='Abgegeben, in Beurteilung';
?>
+5 -3
View File
@@ -84,11 +84,13 @@ $this->phrasen['abgabetool/erklaerungNichtAkzeptiert']='Declaration not accepted
$this->phrasen['abgabetool/downloadProjektarbeit']='Download File';
$this->phrasen['abgabetool/zweitBegutachter']='Second assessor';
$this->phrasen['abgabetool/zweitbetreuerTokenMailSenden']='Resend access token to second assessor';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to second assessor (%s)';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to second assessor (%s)';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Second assessor has no delivery mail adress!';
$this->phrasen['abgabetool/zweitbetreuerMailSenden']='Send mail to assessor %s (%s)';
$this->phrasen['abgabetool/zweitbegutachterMailGesendet']='Mail sent to assessor %s (%s)';
$this->phrasen['abgabetool/zweitBegutachterEmailFehlt']='Assessor has no delivery mail adress!';
$this->phrasen['abgabetool/projektbeurteilungDownload']='Thesis-Assessment download';
$this->phrasen['abgabetool/projektbeurteilungErstDownload']='First-/Assessor';
$this->phrasen['abgabetool/projektbeurteilungZweitDownload']='Second Assessor';
$this->phrasen['abgabetool/fehlerErmittelnEndabgabeProjektarbeit']='Error when getting endupload of project work';
$this->phrasen['abgabetool/senatsMitglied']='Examiner';
$this->phrasen['abgabetool/abgegeben']='handed in, in assessment';
?>
+5 -5
View File
@@ -257,7 +257,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
if($row->typ=='d')
{
echo ' <niveau_code>UNESCO ISCED 7</niveau_code>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Allgemeine Universitätsreife (vgl. §4 Abs. 3 FHStG idgF), Berufsreifeprüfung bzw. Studienberechtigungsprüfung oder einschlägige berufliche Qualifikation (Lehrabschluss bzw. Abschluss einer berufsbildenden mittleren Schule mit Zusatzprüfungen). Die Aufnahme erfolgt auf Basis eines Auswahlverfahrens (Werdegang, Eignungstest, Bewerbungsgespräch).]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Allgemeine Universitätsreife (vgl. §4 Abs. 3 FHG idgF), Berufsreifeprüfung bzw. Studienberechtigungsprüfung oder einschlägige berufliche Qualifikation (Lehrabschluss bzw. Abschluss einer berufsbildenden mittleren Schule mit Zusatzprüfungen). Die Aufnahme erfolgt auf Basis eines Auswahlverfahrens (Werdegang, Eignungstest, Bewerbungsgespräch).]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_englisch><![CDATA[Austrian or equivalent foreign school leaving certificate (Reifeprüfung), university entrance examination certificate (Studienberechtigungsprüfung), certificate or equivalent relevant professional qualification (Berufsreifeprüfung) plus entrance examination equal to the university entrance examination. Admission is on the basis of a selection process (including entrance exam and interview, professional background is considered).]]></zulassungsvoraussetzungen_englisch>';
echo ' <anforderungen_deutsch><![CDATA[Das Studium erfordert die positive Absolvierung von Lehrveranstaltungen (Vorlesungen, Übungen, Seminaren, Projekten, integrierten Lehrveranstaltungen) im Ausmaß von jeweils 30 ECTS pro Semester gemäß dem vorgeschriebenen Studienplan. Die Ausbildung integriert technische, wirtschaftliche, organisatorische und persönlichkeitsbildende Elemente. '.$anforderungen_praxis.' Im Rahmen des Studiums ist eine Diplomarbeit zu verfassen und eine abschließende Prüfung (Diplomprüfung) zu absolvieren. Der Studiengang (Kennzahl '.$studiengang_kz.') ist von der AQ Austria akkreditiert.]]></anforderungen_deutsch>';
echo ' <anforderungen_englisch><![CDATA[The program requires the positive completion of all courses (lectures, labs, seminars, project work, and integrated courses) to the extend of 30 ECTS per semester according to the curriculum. The program integrates technical, economical, management and personal study elements. '.$anforderungen_praxiseng.' The degree is awarded upon the successful completion of a diploma theses and the final examination. The program (classification number '.$studiengang_kz.') is accredited by AQ Austria.]]></anforderungen_englisch>';
@@ -269,7 +269,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
elseif($row->typ=='m')
{
echo ' <niveau_code>UNESCO ISCED 7</niveau_code>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Die fachliche Zugangsvoraussetzung (vgl. §4 Abs. 2 FHStG idgF) zu einem FH-Masterstudiengang ist ein abgeschlossener facheinschlägiger FH-Bachelorstudiengang oder der Abschluss eines gleichwertigen Studiums an einer anerkannten inländischen oder ausländischen postsekundären Bildungseinrichtung. Die Aufnahme in den Studiengang erfolgt auf Basis eines Auswahlverfahrens.]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Die fachliche Zugangsvoraussetzung (vgl. §4 Abs. 2 FHG idgF) zu einem FH-Masterstudiengang ist ein abgeschlossener facheinschlägiger FH-Bachelorstudiengang oder der Abschluss eines gleichwertigen Studiums an einer anerkannten inländischen oder ausländischen postsekundären Bildungseinrichtung. Die Aufnahme in den Studiengang erfolgt auf Basis eines Auswahlverfahrens.]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_englisch><![CDATA[ Admission to the master\'s degree program is granted on the basis of the successful completion of a relevant bachelor\'s degree program or a comparable Austrian or foreign post-secondary degree acknowledged to be its equivalent. Admission is on the basis of a selection process. ]]></zulassungsvoraussetzungen_englisch>';
echo ' <anforderungen_deutsch><![CDATA[Das Studium erfordert die positive Absolvierung von Lehrveranstaltungen (Vorlesungen, Übungen, Seminaren, Projekten, integrierten Lehrveranstaltungen) im Ausmaß von jeweils 30 ECTS pro Semester gemäß dem vorgeschriebenen Studienplan. Die Ausbildung integriert technische, wirtschaftliche, organisatorische und persönlichkeitsbildende Elemente. Im Rahmen des Studiums ist eine Masterarbeit zu verfassen und eine abschließende Prüfung (Masterprüfung) zu absolvieren. Der Studiengang (Kennzahl '.$studiengang_kz.') ist von der AQ Austria akkreditiert.]]></anforderungen_deutsch>';
echo ' <anforderungen_englisch><![CDATA[The program requires the positive completion of all courses (lectures, labs, seminars, project work, and integrated courses) to the extend of 30 ECTS per semester according to the curriculum. The program integrates technical, economical, management and personal study elements. The degree is awarded upon the successful completion of a Master´s Thesis and the final examination. The program (classification number '.$studiengang_kz.') is accredited by AQ Austria.]]></anforderungen_englisch>';
@@ -281,7 +281,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
elseif($row->typ=='b')
{
echo ' <niveau_code>UNESCO ISCED 6</niveau_code>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Allgemeine Universitätsreife (vgl. §4 Abs. 3 FHStG idgF), Berufsreifeprüfung bzw. Studienberechtigungsprüfung oder einschlägige berufliche Qualifikation (Lehrabschluss bzw. Abschluss einer berufsbildenden mittleren Schule mit Zusatzprüfungen). Die Aufnahme erfolgt auf Basis eines Auswahlverfahrens (Werdegang, Eignungstest, Bewerbungsgespräch).]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Allgemeine Universitätsreife (vgl. §4 Abs. 3 FHG idgF), Berufsreifeprüfung bzw. Studienberechtigungsprüfung oder einschlägige berufliche Qualifikation (Lehrabschluss bzw. Abschluss einer berufsbildenden mittleren Schule mit Zusatzprüfungen). Die Aufnahme erfolgt auf Basis eines Auswahlverfahrens (Werdegang, Eignungstest, Bewerbungsgespräch).]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_englisch><![CDATA[Austrian or equivalent foreign school leaving certificate (Reifeprüfung), university entrance examination certificate (Studienberechtigungsprüfung), certificate or equivalent relevant professional qualification (Berufsreifeprüfung) plus entrance examination equal to the university entrance examination. Admission is on the basis of a selection process. (including entrance exam and interview, professional background is considered).]]></zulassungsvoraussetzungen_englisch>';
echo ' <anforderungen_deutsch><![CDATA[Das Studium erfordert die positive Absolvierung von Lehrveranstaltungen (Vorlesungen, Übungen, Seminaren, Projekten, integrierten Lehrveranstaltungen) im Ausmaß von jeweils 30 ECTS pro Semester gemäß dem vorgeschriebenen Studienplan. Die Ausbildung integriert technische, wirtschaftliche, organisatorische und persönlichkeitsbildende Elemente. '.$anforderungen_praxis.' Im Rahmen des Studiums ist eine Bachelorarbeit zu verfassen und eine abschließende Prüfung (Bachelorprüfung) zu absolvieren. Der Studiengang (Kennzahl '.$studiengang_kz.') ist von der AQ Austria akkreditiert.]]></anforderungen_deutsch>';
echo ' <anforderungen_englisch><![CDATA[The program requires the positive completion of all courses (lectures, labs, seminars, project work, and integrated courses) to the extend of 30 ECTS per semester according to the curriculum. The program integrates technical, economical, management and personal study elements. '.$anforderungen_praxiseng.' The degree is awarded upon the successful completion of 1 bachelor theses and the final examination. The program (classification number '.$studiengang_kz.') is accredited by AQ Austria.]]></anforderungen_englisch>';
@@ -299,8 +299,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
elseif($row->typ=='l' || $row->typ=='k' || $row->typ=='e')
{
echo ' <niveau_code>UNESCO ISCED 7</niveau_code>';
echo ' <niveau_deutsch>Lehrgang zur Weiterbildung nach §9 FHStG idgF.</niveau_deutsch>';
echo ' <niveau_englisch>Certificate Program for Further Education subjected to § 9 FHStG</niveau_englisch>';
echo ' <niveau_deutsch>Lehrgang zur Weiterbildung nach §9 FHG idgF.</niveau_deutsch>';
echo ' <niveau_englisch>Certificate Program for Further Education subjected to § 9 FHG</niveau_englisch>';
echo ' <zulassungsvoraussetzungen_deutsch><![CDATA[Facheinschlägiger Studienabschluss oder einschlägige Berufserfahrung]]></zulassungsvoraussetzungen_deutsch>';
echo ' <zulassungsvoraussetzungen_englisch><![CDATA[Appropriate university degree or appropriate work experience]]></zulassungsvoraussetzungen_englisch>';
echo ' <anforderungen_deutsch><![CDATA[Das Studium erfordert die positive Absolvierung von Lehrveranstaltungen (Vorlesungen, Übungen, Seminaren, Projekten, integrierten Lehrveranstaltungen) im Ausmaß der laut Studienplan vorgeschriebenen ECTS. Die Ausbildung integriert technische, wirtschaftliche, organisatorische und persönlichkeitsbildende Elemente. Im Rahmen des Master-Lehrgangs ist eine Master Thesis zu verfassen und eine abschließende Prüfung (Masterprüfung) zu absolvieren. Der Lehrgang ist vom Kollegium der FH Technikum Wien genehmigt und der AQ Austria (Kennzahl '.$studiengang_kz.') gemeldet.]]></anforderungen_deutsch>';
+4
View File
@@ -119,6 +119,10 @@ foreach($ps->result as $row)
<ROLLE:statusgrund_id><![CDATA['.$row->statusgrund_id.']]></ROLLE:statusgrund_id>
<ROLLE:statusgrund><![CDATA['.(isset($statusgrund_arr[$row->statusgrund_id])?$statusgrund_arr[$row->statusgrund_id]:'').']]></ROLLE:statusgrund>
<ROLLE:lehrverband><![CDATA['.$lehrverband.']]></ROLLE:lehrverband>
<ROLLE:insertamum><![CDATA['.$datum->formatDatum($row->insertamum,'d.m.Y H:i:s').']]></ROLLE:insertamum>
<ROLLE:insertvon><![CDATA['.$row->insertvon.']]></ROLLE:insertvon>
<ROLLE:updateamum><![CDATA['.$datum->formatDatum($row->updateamum,'d.m.Y H:i:s').']]></ROLLE:updateamum>
<ROLLE:updatevon><![CDATA['.$row->updatevon.']]></ROLLE:updatevon>
</RDF:Description>
</RDF:li>
';
+1
View File
@@ -32,6 +32,7 @@ require_once('dbupdate_3.4/26173_index_webservicelog.php');
require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php');
require_once('dbupdate_3.4/17512_fehlercode_constraints.php');
require_once('dbupdate_3.4/27388_anrechnungen_zeitfenster_pflegen.php');
require_once('dbupdate_3.4/19154_beurteilungsformulare_pruefungssenat.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -0,0 +1,30 @@
<?php
if (! defined('DB_NAME')) exit('No direct script access allowed');
// lehre.tbl_betreuerart: add type Senatsvorsitz
if($result = $db->db_query("SELECT 1 FROM lehre.tbl_betreuerart WHERE betreuerart_kurzbz='Senatsvorsitz'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO lehre.tbl_betreuerart(betreuerart_kurzbz, beschreibung) VALUES('Senatsvorsitz', 'Vorsitz Prüfungssenat');";
if(!$db->db_query($qry))
echo '<strong>Betreuerart: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neue Betreuerart Senatsvorsitz in lehre.tbl_betreuerart hinzugefügt';
}
}
// lehre.tbl_betreuerart: add type Senatsmitglied
if($result = $db->db_query("SELECT 1 FROM lehre.tbl_betreuerart WHERE betreuerart_kurzbz='Senatsmitglied'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "INSERT INTO lehre.tbl_betreuerart(betreuerart_kurzbz, beschreibung) VALUES('Senatsmitglied', 'Mitglied Prüfungssenat');";
if(!$db->db_query($qry))
echo '<strong>Betreuerart: '.$db->db_last_error().'</strong><br>';
else
echo '<br>Neue Betreuerart Senatsmitglied in lehre.tbl_betreuerart hinzugefügt';
}
}
+8
View File
@@ -277,6 +277,14 @@ $fehlerArr = array(
'fehlertyp_kurzbz' => 'error',
'app' => 'core'
),
array(
'fehlercode' => 'CORE_STUDENTSTATUS_0015',
'fehler_kurzbz' => 'AktiverStudentstatusOhneKontobuchung',
'fehlercode_extern' => null,
'fehlertext' => 'Keine Kontobuchung bei aktivem Studentstatus (prestudent_id %s, Studiensemester %s)',
'fehlertyp_kurzbz' => 'error',
'app' => 'core'
),
array(
'fehlercode' => 'CORE_PERSON_0001',
'fehler_kurzbz' => 'GbDatumWeitZurueck',
+6 -7
View File
@@ -1035,7 +1035,6 @@ $filters = array(
{"name": "Note"},
{"name": "ErstNachname"},
{"name": "ErstAbgeschickt"},
{"name": "ZweitNachname"},
{"name": "ZweitAbgeschickt"}
],
"filters": []
@@ -1111,12 +1110,12 @@ $filters = array(
{"name": "Standardkostenstelle"}
],
"filters": [
{
"name": "Nachname",
"option": "",
"condition": "",
"operation": ""
}
{
"name": "Nachname",
"option": "",
"condition": "",
"operation": ""
}
]
}
',
+161 -1
View File
@@ -9326,7 +9326,7 @@ Any unusual occurrences
),
array(
'sprache' => 'English',
'text' => 'Total points',
'text' => 'total points',
'description' => '',
'insertvon' => 'system'
)
@@ -10389,6 +10389,166 @@ Any unusual occurrences
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'senatsvorsitz',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Vorsitz Prüfungssenat',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Assessor',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'parbeitDownload',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Download Projektarbeit',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Download thesis',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'betreuerart',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Betreuerart',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Assessor type',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'nebenBegutachter',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Nebenbegutachter*in',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'secondary assessor',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'notenschluesselHinweisGewichtung',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Die Punkteanzahl der Kriterien "1 - 5" wird mit 70%; die Punkteanzahl der Kriterien "6 - 10" mit 30% gewichtet.',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'The number of points for criteria "1 - 5" is weighted with 70%; the number of points for criteria "6 - 10" is weighted with 30%.',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'gewichtet',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'gewichtete',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'weightened',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'sprache',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Sprache',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'language',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'projektarbeitsbeurteilung',
'category' => 'projektarbeitsbeurteilung',
'phrase' => 'spracheAendernFehler',
'insertvon' => 'system',
'phrases' => array(
array(
'sprache' => 'German',
'text' => 'Fehler beim Ändern der Sprache',
'description' => '',
'insertvon' => 'system'
),
array(
'sprache' => 'English',
'text' => 'Error when changing language',
'description' => '',
'insertvon' => 'system'
)
)
),
array(
'app' => 'core',
'category' => 'anrechnung',
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="content">
<html>
<head>
<title><xsl:value-of select="titel" /></title>
<link rel="stylesheet" href="../skin/style.css.php" type="text/css" />
<link rel="stylesheet" href="../skin/jquery.css" 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/jquery1/jquery-1.12.4.min.js"></script>
<link rel="stylesheet" type="text/css" href="../FHC-vendor/jquery-tablesorter/css/theme.default.css"/>
<script src="../FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.js"></script>
<script src="../FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.widgets.js"></script>
<link rel="stylesheet" type="text/css" href="../include/vendor_custom/jquery-tablesorter/tablesort.css"/>
<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"/>
<script type="text/javascript">
$(document).ready(function()
{
$(".tablesorter").each(function()
{
var col=0;
var sort=0;
var no_sort=1;
var classes = $(this).attr("class");
var class_arr = classes.split(" ");
var headersobj={};
for(i in class_arr)
{
if(class_arr[i].indexOf("tablesorter_col_")!=-1)
{
col = class_arr[i].substr(16);
}
if(class_arr[i].indexOf("tablesorter_sort_")!=-1)
{
sort = class_arr[i].substr(17);
}
if(class_arr[i].indexOf("tablesorter_no_sort_")!=-1)
{
no_sort = class_arr[i].substr(20);
headersobj[no_sort]={sorter:false};
}
}
$(this).tablesorter(
{
sortList: [[col,sort]],
widgets: ["zebra","filter"],
headers: headersobj
});
});
});
</script>
</head>
<body>
<h1><xsl:value-of select="titel" /></h1>
<xsl:value-of select="inhalt" disable-output-escaping="yes" />
</body>
</html>
</xsl:template>
</xsl:stylesheet >
+1 -5
View File
@@ -149,11 +149,7 @@ else
LEFT JOIN PUBLIC.tbl_benutzer ON (PUBLIC.tbl_benutzer.person_id = PUBLIC.tbl_person.person_id)
LEFT JOIN PUBLIC.tbl_mitarbeiter ON (PUBLIC.tbl_benutzer.uid = PUBLIC.tbl_mitarbeiter.mitarbeiter_uid)
WHERE projektarbeit_id = ".$db->db_add_param($row->projektarbeit_id, FHC_INTEGER)."
AND (
tbl_projektbetreuer.betreuerart_kurzbz = 'Erstbegutachter'
OR tbl_projektbetreuer.betreuerart_kurzbz = 'Betreuer'
OR tbl_projektbetreuer.betreuerart_kurzbz = 'Begutachter'
)
AND tbl_projektbetreuer.betreuerart_kurzbz IN ('Erstbegutachter', 'Betreuer', 'Begutachter', 'Senatsvorsitz')
UNION
+73 -13
View File
@@ -30,6 +30,7 @@
require_once('../../../config/vilesci.config.inc.php');
require_once('../../../include/studiengang.class.php');
require_once('../../../include/studiensemester.class.php');
require_once('../../../include/benutzerberechtigung.class.php');
require_once('../../../include/variable.class.php');
require_once('../../../include/functions.inc.php');
@@ -39,8 +40,38 @@ $user = get_uid();
$variable = new variable();
$variable->loadVariables($user);
//Studiengänge ermitteln, auf die die Person Rechte hat
$qryOE = " SELECT
studiengang_kz
FROM
public.tbl_organisationseinheit
JOIN
public.tbl_studiengang USING (oe_kurzbz)
WHERE
oe_kurzbz IN(
SELECT oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='Leitung'
AND uid='$user'
AND (datum_von is null OR datum_von <= now())
AND (datum_bis is null OR datum_bis >= now())
)
OR
tbl_organisationseinheit.oe_kurzbz IN(SELECT oe_kurzbz FROM system.vw_berechtigung WHERE uid='$user' AND berechtigung_kurzbz in('admin','assistenz'))";
if($result_rechte = $db->db_query($qryOE))
{
while($row_rechte = $db->db_fetch_object($result_rechte))
{
$stgBerechtigt[] = $row_rechte->studiengang_kz;
}
}
$stg_get = isset($_GET['stg'])?$_GET['stg'] : '';
$stg = new studiengang();
$stg->getAll('typ, kurzbz');
$stg->loadArray($stgBerechtigt, 'typ, kurzbz');
if(isset($_GET['stsem']))
$stsem = $_GET['stsem'];
@@ -65,12 +96,22 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www
echo '<h2>Übersicht - Verplanung der Lehreinheiten ('.$variable->variable->db_stpl_table.')</h2>';
echo '<form method="GET">Studiensemester <select name="stsem">';
echo '<form method="GET">';
echo 'Studiensemester <select name="stsem">';
foreach ($stsem_obj->studiensemester as $row)
{
echo '<option value="'.$row->studiensemester_kurzbz.'" '.($row->studiensemester_kurzbz==$stsem?'selected':'').'>'.$row->studiensemester_kurzbz.'</option>';
}
echo '</select> <input type="submit" value="Anzeigen"></form>';
echo '</select><br>';
echo 'Studiengang <select name="stg">';
echo '<option value="">-- Alle Berechtigten --</option>';
foreach($stg->result as $row_stg)
{
echo '<option value="'.$row_stg->studiengang_kz.'" '.($row_stg->studiengang_kz==$stg_get?'selected':'').'>'.$row_stg->kuerzel.' - '.$row_stg->bezeichnung.'</option>';
}
echo '</select>';
echo '<input type="submit" value="Anzeigen">';
echo '</form>';
$gesamt=0;
$gesamt_verplant=0;
@@ -98,24 +139,29 @@ function drawprogress($prozent, $ueberplanung=0)
$content = '<div style="border: '.$bordercolor.'; width: 300px"><div style="background-color: '.$color.'; width: '.(intval($prozent*3)).'px">&nbsp;'.$prozent.'%</div>';
if($ueberplanung>0)
$content.= '<div style="background-color: gray; width: '.(intval($ueberplanung*3)).'px">&nbsp;+'.$ueberplanung.'% Überbuchung</div>';
$content.= '<div style="background-color: gray; width: '.(intval($ueberplanung*3)).'px">&nbsp;+'.$ueberplanung.'% zusätzliche Planstunden</div>';
$content.= '</div>';
return $content;
}
//Alle Studiengaenge durchlaufen
$content.= "\n<table>";
$content.= "\n<tr><th>Studiengang/Semester</th><th></th><th colspan='2'>Lehreinheiten</th><th></th><th colspan='2'>Stunden</th></tr>";
$content.= "\n<tr><th>Studiengang/Semester</th><th></th><th colspan='2'>Lehreinheiten</th><th></th><th colspan='2'>Planstunden</th></tr>";
foreach($stg->result as $row_stg)
{
if (isset($stg_get) && $stg_get != '' && $stg_get != $row_stg->studiengang_kz)
continue;
$content.= "\n<tr><td colspan='2'><h3>".$row_stg->kuerzel.'</h3></td></tr>';
//Anzahl der Lehreinheiten holen
$qry = "SELECT count(*) as anzahl, semester
FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehrform ON (tbl_lehreinheit.lehrform_kurzbz=tbl_lehrform.lehrform_kurzbz)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem'
AND lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)
AND lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND tbl_lehreinheitmitarbeiter.planstunden > 0)
AND tbl_lehreinheit.lehre
AND tbl_lehrform.verplanen
GROUP BY semester
ORDER BY semester ASC";
@@ -128,7 +174,9 @@ foreach($stg->result as $row_stg)
//Anzahl der verplanten Lehreinheiten holen
$qry = "SELECT count(*) as verplant FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem' AND semester='$row_sem->semester' AND tbl_lehreinheit.lehre
JOIN lehre.tbl_lehrform ON (tbl_lehreinheit.lehrform_kurzbz=tbl_lehrform.lehrform_kurzbz)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND studiensemester_kurzbz='$stsem' AND semester='$row_sem->semester'
AND tbl_lehreinheit.lehre AND tbl_lehrform.verplanen
AND lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_".$variable->variable->db_stpl_table." WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)
AND lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)";
@@ -152,11 +200,13 @@ foreach($stg->result as $row_stg)
lehre.tbl_lehreinheit
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
JOIN lehre.tbl_lehrform ON (tbl_lehreinheit.lehrform_kurzbz=tbl_lehrform.lehrform_kurzbz)
WHERE
tbl_lehrveranstaltung.studiengang_kz='$row_stg->studiengang_kz' AND
tbl_lehrveranstaltung.semester='$row_sem->semester' AND
tbl_lehreinheit.studiensemester_kurzbz='$stsem' AND
tbl_lehreinheit.lehre";
tbl_lehreinheit.lehre AND
tbl_lehrform.verplanen";
$ps=0;
if($result_ps = $db->db_query($qry))
{
@@ -174,11 +224,13 @@ foreach($stg->result as $row_stg)
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
JOIN lehre.tbl_".$variable->variable->db_stpl_table." USING(lehreinheit_id)
JOIN lehre.tbl_lehrform ON (tbl_lehreinheit.lehrform_kurzbz=tbl_lehrform.lehrform_kurzbz)
WHERE
tbl_lehrveranstaltung.studiengang_kz='$row_stg->studiengang_kz' AND
tbl_lehrveranstaltung.semester='$row_sem->semester' AND
tbl_lehreinheit.studiensemester_kurzbz='$stsem' AND
tbl_lehreinheit.lehre
tbl_lehreinheit.lehre AND
tbl_lehrform.verplanen
) a";
$stdverplant=0;
@@ -192,8 +244,16 @@ foreach($stg->result as $row_stg)
//offene Stunden ermitteln
$qry = "
SELECT distinct lehreinheit_id, planstunden, mitarbeiter_uid FROM lehre.tbl_lehreinheit JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id) JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
WHERE studiengang_kz='$row_stg->studiengang_kz' AND semester='$row_sem->semester' AND studiensemester_kurzbz='$stsem' AND tbl_lehreinheit.lehre";
SELECT distinct lehreinheit_id, planstunden, mitarbeiter_uid
FROM lehre.tbl_lehreinheit
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id)
JOIN lehre.tbl_lehrform ON (tbl_lehreinheit.lehrform_kurzbz=tbl_lehrform.lehrform_kurzbz)
WHERE studiengang_kz='$row_stg->studiengang_kz'
AND semester='$row_sem->semester'
AND studiensemester_kurzbz='$stsem'
AND tbl_lehreinheit.lehre
AND tbl_lehrform.verplanen";
$offen=0;
if($result_std = $db->db_query($qry))
@@ -234,7 +294,7 @@ foreach($stg->result as $row_stg)
$content.= '</td><td nowrap>';
$content.=drawprogress($prozent, $prozentueber);
$content.= 'offene Stunden: '.$offen;
$content.= 'offene Planstunden: '.$offen;
$content.='</td></tr>';
}
$content.='<tr><td>&nbsp;</td><td>&nbsp;</td></tr>';
@@ -259,7 +319,7 @@ if($gesamt_ps==0)
$prozent=0;
else
$prozent = round($gesamt_ps_verplant*100/$gesamt_ps,2);
echo "<b>Stunden:</b> (".$gesamt_ps_verplant.'/'.$gesamt_ps.')</td><td width="20px"></td><td>';
echo "<b>Planstunden:</b> (".$gesamt_ps_verplant.'/'.$gesamt_ps.')</td><td width="20px"></td><td>';
echo drawprogress($prozent);
echo "</td></tr></table>\n<hr>";
@@ -0,0 +1,139 @@
<?php
/*
* Copyright (C) 2010 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: Manfred Kindl <kindlm@technikum-wien.at>
*/
require_once ('../../config/vilesci.config.inc.php');
require_once ('../../include/functions.inc.php');
require_once ('../../include/basis_db.class.php');
require_once ('../../include/ort.class.php');
require_once ('../../include/benutzer.class.php');
require_once ('../../include/studiengang.class.php');
require_once ('../../include/berechtigung.class.php');
require_once ('../../include/organisationseinheit.class.php');
require_once ('../../include/sprache.class.php');
require_once ('../../include/wawi_kostenstelle.class.php');
if (! $db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$uid = get_uid();
$sprache = getSprache();
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'benutzer')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$benutzer = new benutzer();
if ($benutzer->search(array(
$search
)))
{
$result_obj = array();
foreach ($benutzer->result as $row)
{
$item['vorname'] = html_entity_decode($row->vorname);
$item['nachname'] = html_entity_decode($row->nachname);
$item['uid'] = html_entity_decode($row->uid);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'berechtigung')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$berechtigung = new berechtigung();
if ($berechtigung->searchBerechtigungen($search))
{
$result_obj = array();
foreach ($berechtigung->result as $row)
{
$item['berechtigung_kurzbz'] = html_entity_decode($row->berechtigung_kurzbz);
$item['beschreibung'] = html_entity_decode($row->beschreibung);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'oe_kurzbz')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$search = array($search);
$oe = new organisationseinheit();
$oe->search($search);
$stg = new studiengang();
$stg->search($search);
foreach($stg->result as $row)
{
if($row->aktiv===true)
$oe->result[] = new organisationseinheit($row->oe_kurzbz);
}
if(is_array($oe->result) && count($oe->result) > 0)
{
$result_obj = array();
foreach($oe->result as $row)
{
if($row->aktiv==true)
{
$item['oe_kurzbz'] = html_entity_decode($row->oe_kurzbz);
$item['organisationseinheittyp_kurzbz'] = html_entity_decode($row->organisationseinheittyp_kurzbz);
$item['bezeichnung'] = html_entity_decode($row->bezeichnung);
$result_obj[] = $item;
}
}
echo json_encode($result_obj);
}
exit();
}
if (isset($_REQUEST['autocomplete']) && $_REQUEST['autocomplete'] == 'kostenstelle')
{
$search = trim((isset($_REQUEST['term']) ? $_REQUEST['term'] : ''));
if (is_null($search) || $search == '')
exit();
$kst = new wawi_kostenstelle();
if ($kst->getAll($search))
{
$result_obj = array();
foreach ($kst->result as $row)
{
$item['kostenstelle_id'] = html_entity_decode($row->kostenstelle_id);
$item['bezeichnung'] = html_entity_decode($row->bezeichnung);
$result_obj[] = $item;
}
echo json_encode($result_obj);
}
exit();
}
?>
@@ -0,0 +1,166 @@
<?php
/* Copyright (C) 2009 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 >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/berechtigung.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/funktion.class.php');
require_once('../../include/organisationseinheit.class.php');
require_once('../../include/wawi_kostenstelle.class.php');
require_once('../../include/benutzer.class.php');
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
$uid = isset($_GET['uid']) && $_GET['uid']!='' ? $_GET['uid'] : die('UID muss übergeben werden');
$benutzer = new benutzer();
$benutzer->load($uid);
if(!$rechte->isBerechtigt('basis/berechtigung'))
die('Sie habe keine Rechte um diese Seite anzuzeigen');
?>
<html>
<head>
<title>Detaillierte Berechtigungsliste</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link href="../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<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>
$(document).ready(function() {
$("#t1").tablesorter(
{
sortList: [[0, 0], [1, 0], [2, 0]],
widgets: ["zebra", "filter", "stickyHeaders"],
widgetOptions: {
filter_functions: {
// Add select menu to this column
8: {
"Aktive/Wartende": function (e, n, f, i, $r, c, data) {
return e == 'Aktiv' || e == 'Wartend';
},
"Aktive": function (e, n, f, i, $r, c, data) {
return /Aktiv/.test(e);
},
"Wartende": function (e, n, f, i, $r, c, data) {
return /Wartend/.test(e);
},
"Inaktive": function (e, n, f, i, $r, c, data) {
return /Inaktiv/.test(e);
}
}
}
}
});
});
</script>
</head>
<body class="background_main">
<h2>Detaillierte Berechtigungsliste von <?php echo $benutzer->vorname.' '.$benutzer->nachname ?></h2>
<?php
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$funktionsArray = array();
$funktionen = new funktion();
$funktionen->getAll();
foreach ($funktionen->result as $item)
{
$funktionsArray[$item->funktion_kurzbz] = $item->beschreibung;
}
$kostenstelleArray = array();
$kostenstellen = new wawi_kostenstelle();
$kostenstellen->getAll();
foreach ($kostenstellen->result as $item)
{
$kostenstelleArray[$item->kostenstelle_id] = $item->bezeichnung.' ('.$item->kostenstelle_id.')';
}
$oeArray = array();
$oes = new organisationseinheit();
$oes->getAll();
foreach ($oes->result as $item)
{
$oeArray[$item->oe_kurzbz] = $item->organisationseinheittyp_kurzbz.' '.$item->bezeichnung;
}
$heute = strtotime(date('Y-m-d'));
echo '<table id="t1" class="tablesorter">
<thead><tr>
<th>Funktion</th>
<th>Rolle</th>
<th>Recht</th>
<th>Art</th>
<th>Organisationseinheit</th>
<th>Kostenstelle</th>
<th>Gültig ab</th>
<th>Gültig bis</th>
<th data-value="Aktive/Wartende">Status</th>
</tr></thead><tbody>';
foreach ($rechte->berechtigungen AS $key)
{
if ($key->ende!='' && strtotime($key->ende) < $heute)
{
$titel="Inaktiv";
}
elseif ($key->start!='' && strtotime($key->start) > $heute)
{
$titel="Wartend";
}
else
{
$titel="Aktiv";
}
echo '<tr>';
echo '<td>'.($key->funktion_kurzbz != '' ? $funktionsArray[$key->funktion_kurzbz] : '').'</td>';
echo '<td>'.($key->rolle_kurzbz != '' ? $key->rolle_kurzbz : '').'</td>';
echo '<td>'.($key->berechtigung_kurzbz != '' ? $key->berechtigung_kurzbz : '').'</td>';
echo '<td>'.($key->art != '' ? $key->art : '').'</td>';
echo '<td>'.($key->oe_kurzbz != '' ? $oeArray[$key->oe_kurzbz] : '').'</td>';
echo '<td>'.($key->kostenstelle_id != '' ? $kostenstelleArray[$key->kostenstelle_id] : '').'</td>';
echo '<td>'.($key->start != '' ? $key->start : '').'</td>';
echo '<td>'.($key->ende != '' ? $key->ende : '').'</td>';
echo '<td>'.$titel.'</td>';
echo '</tr>';
}
echo '</tbody></table>';
?>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -73,7 +73,7 @@ $(document).ready(function()
{
// Add select menu to this column
6 : {
"Ja" : function(e, n, f, i, $r, c, data) { return /Ja/.test(e); },
"Ja" : function(e, n, f, i, $r, c, data) { return e == "Ja" || e == "" },
"Nein" : function(e, n, f, i, $r, c, data) { return /Nein/.test(e); }
},
7 : {
@@ -361,7 +361,15 @@ if($berechtigung_kurzbz != '')
{
$htmlstr .= "<h3>".$berechtigung_kurzbz."</h3>\n";
$htmlstr .= "<table id='t2' class='tablesorter'><thead><tr>\n";
$htmlstr .= "<th>Rolle</th><th>Funktion</th><th>Nachname</th><th>Vorname</th><th>UID</th><th>Art</th><th>Benutzer Aktiv</th><th>Status</th><th>Aktion</th>";
$htmlstr .= "<th>Rolle</th>
<th>Funktion</th>
<th>Nachname</th>
<th>Vorname</th>
<th>UID</th>
<th>Art</th>
<th data-value='Ja'>Benutzer Aktiv</th>
<th data-value='Aktiv'>Status</th>
<th>Aktion</th>";
$htmlstr .= "</tr></thead><tbody>\n";
foreach($berechtigungen->result as $row)
@@ -554,8 +562,8 @@ if($rolle_kurzbz != '')
<th>Vorname</th>
<th>UID</th>
<th>Art</th>
<th>Benutzer Aktiv</th>
<th>Status</th>
<th data-value='Ja'>Benutzer Aktiv</th>
<th data-value='Aktiv'>Status</th>
<th>Aktion</th>";
$htmlstr .= "</tr></thead><tbody>\n";
+99 -35
View File
@@ -41,27 +41,59 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
<title>Berechtigungen Uebersicht</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
<link href="../../skin/tablesort.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<link href="../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<?php
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
?>
<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 language="Javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {3:{sorter:false}}
});
$("#t2").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {2:{sorter:false}}
});
// Breite des Autocompletes korrigieren um das Springen zu verhindern
$.extend($.ui.autocomplete.prototype.options, {
open: function(event, ui) {
$(this).autocomplete("widget").css({
"width": ($(".ui-menu-item").width()+ 20 + "px"),
"padding-left": "5px"
});
}
});
$(".berechtigung_autocomplete").autocomplete({
source: "benutzerberechtigung_autocomplete.php?autocomplete=berechtigung",
minLength:2,
response: function(event, ui)
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {3:{sorter:false}}
});
$("#t2").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"],
headers: {2:{sorter:false}}
});
});
//Value und Label fuer die Anzeige setzen
for(i in ui.content)
{
ui.content[i].value=ui.content[i].berechtigung_kurzbz;
ui.content[i].label=ui.content[i].berechtigung_kurzbz+" - "+ui.content[i].beschreibung;
}
},
select: function(event, ui)
{
//Ausgewaehlte Ressource zuweisen und Textfeld wieder leeren
$(this).val(ui.item.berechtigung_kurzbz);
}
});
});
function confdel()
{
var value=prompt('Achtung! Sie sind dabei eine Rolle zu löschen. Die Zuordnungen gehen dadurch verloren! Um diese Rolle wirklich zu Löschen tippen Sie "LÖSCHEN" in das untenstehende Feld.');
@@ -71,11 +103,42 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
else
return false;
}
function validateNewData()
{
if($('#berechtigung_neu_autocomplete').val() == '')
{
alert('Berechtigung darf nicht leer sein')
return false;
}
else if ($('#art_neu').val() == '')
{
alert('Art darf nicht leer sein')
return false;
}
else if ($('#art_neu').val() != '')
{
var eingabe, c, erlaubt = 'suid', laenge;
eingabe = $('#art_neu').val();
eingabe = eingabe.toLowerCase();
laenge = eingabe.length;
for (c = 0; c < laenge; c++)
{
d = eingabe.charAt(c);
if (erlaubt.indexOf(d) == -1)
{
alert ('Erlaubte Werte für Art sind s,u,i,d');
return false;
}
}
}
else
return true;
}
</script>
</head>
<body class="background_main">
<h2>Berechtigung - Rolle - Übersicht</h2>
<h2>Berechtigung - Rolle - <?php echo $rolle_kurzbz ?></h2>
<?php
if(isset($rolle_kurzbz))
@@ -107,25 +170,24 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
if(!$berechtigung->deleteRolleBerechtigung($rolle_kurzbz, $berechtigung_kurzbz)): ?>
<b>Fehler beim Löschen: </b><?php echo $berechtigung->errormsg ?>
<?php else: ?>
<b>Berechtigung gelöscht!</b>
<b>Berechtigung <?php echo $berechtigung_kurzbz.' mit '.$art ?> gelöscht!</b>
<?php endif;
} ?>
<br>
<a href="<?php echo basename(__FILE__) ?>">
Zurück
Zurück zur Rollenübersicht
</a>
<h3>RolleBerechtigung "<?php echo $rolle_kurzbz ?>":</h3>
<br><br>
<?php
$berechtigung = new berechtigung();
$berechtigung->getBerechtigungen();
?>
<form action="<?php echo basename(__FILE__) ?>" method="GET">
<input type="text" placeholder="Berechtigung" id="berechtigung_neu_autocomplete" class="berechtigung_autocomplete" name="berechtigung_kurzbz" style="width: 300px">
<input type="hidden" name="rolle_kurzbz" value="<?php echo $rolle_kurzbz ?>">
<SELECT name="berechtigung_kurzbz">
<!-- <SELECT name="berechtigung_kurzbz">-->
<?php
$berechtigungen = new berechtigung();
/*$berechtigungen = new berechtigung();
$berechtigungen->getRolleBerechtigung($rolle_kurzbz);
$berechtigungen_arr = array();
foreach ($berechtigungen->result as $row)
@@ -137,10 +199,10 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
<?php echo array_search($row->berechtigung_kurzbz,$berechtigungen_arr)!==false ? 'disabled' : '' ?>>
<?php echo $row->berechtigung_kurzbz ?>
</OPTION>
<?php endforeach; ?>
</SELECT>
<input type="text" value="suid" size="4" name="art">
<input type="submit" name="save" value="Hinzufügen">
<?php endforeach; */?>
<!-- </SELECT>-->
<input type="text" id="art_neu" value="suid" size="4" name="art">
<input type="submit" name="save" value="Hinzufügen" onclick="return validateNewData()">
</form>
<table id="t1" class="tablesorter">
@@ -154,6 +216,8 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
</thead>
<tbody>
<?php
$berechtigungen = new berechtigung();
$berechtigungen->getRolleBerechtigung($rolle_kurzbz);
foreach($berechtigungen->result as $rolle): ?>
<tr>
@@ -161,7 +225,7 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
<td><?php echo $rolle->art ?></td>
<td><?php echo $rolle->beschreibung ?></td>
<td>
<a href="<?php echo basename(__FILE__) ?>?delete=1&rolle_kurzbz=<?php echo $rolle->rolle_kurzbz ?>&berechtigung_kurzbz=<?php echo $rolle->berechtigung_kurzbz ?>">
<a href="<?php echo basename(__FILE__) ?>?delete=1&rolle_kurzbz=<?php echo $rolle->rolle_kurzbz ?>&berechtigung_kurzbz=<?php echo $rolle->berechtigung_kurzbz ?>&art=<?php echo $rolle->art ?>">
entfernen
</a>
</td>
@@ -270,24 +334,24 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
</tbody>
</table>
<br>
<br><div style="vertical-align: top">
<?php
if($edit):
?>
<form method="POST">
Kurzbz: <input type="text" name="kurzbz" value="<?php echo $rolle_edit->rolle_kurzbz ?>" disabled />
Beschreibung: <input type="text" name="beschreibung" value="<?php echo $rolle_edit->beschreibung ?>" />
Kurzbz: <input type="text" maxlength="32" size="35" name="kurzbz" value="<?php echo $rolle_edit->rolle_kurzbz ?>" disabled />
Beschreibung: <textarea style="vertical-align: top; font-family: inherit; font-size: small;" cols="50" rows="3" type="text" maxlength="256" size="200" name="beschreibung" value="" /><?php echo $rolle_edit->beschreibung ?></textarea>
&nbsp;<input type="submit" name="edit" value="Speichern" />
</form>
<a href="<?php echo basename(__FILE__) ?>">Neue Rolle anlegen</a>
<?php else: ?>
<form method="POST">
Kurzbz: <input type="text" name="kurzbz" value="" />
Beschreibung: <input type="text" name="beschreibung" value="" />
Kurzbz: <input type="text" maxlength="32" size="35" name="kurzbz" value="" />
Beschreibung: <textarea style="vertical-align: top; font-family: inherit; font-size: small;" cols="50" rows="3" type="text" maxlength="256" size="200" name="beschreibung" value="" /></textarea>
&nbsp;<input type="submit" name="save" value="Anlegen" />
</form>
<?php endif; ?>
<?php } ?>
</div>
</body>
</html>
+19 -6
View File
@@ -70,7 +70,7 @@
$neu = "true";
if(isset($_POST["schick"]))
if(isset($_POST["schick"]) || isset($_POST["kopieren"]))
{
if(!$rechte->isBerechtigt('basis/ort', null, 'suid'))
die('Sie haben keine Berechtigung fuer diese Aktion');
@@ -118,7 +118,7 @@
$sg_update->updateamum = date('Y-m-d H:i:s');
$sg_update->updatevon = $user;
if ($_POST["neu"] == "true")
if ($_POST["neu"] == "true" || isset($_POST["kopieren"]))
{
$sg_update->insertamum = date('Y-m-d H:i:s');
$sg_update->insertvon = $user;
@@ -366,18 +366,30 @@
<td>Organisationseinheit</td>
<td colspan="3">';
$oe=new organisationseinheit();
$oe->getAll();
$oe->getAll(null, null, 'organisationseinheittyp_kurzbz, bezeichnung');
$inaktivWarning = false;
$htmlstr.='<select name="oe_kurzbz">';
$htmlstr.='<option value="">-- keine Auswahl --</option>';
foreach($oe->result as $row_oe)
{
if($row_oe->oe_kurzbz==$oe_kurzbz)
$selected='selected';
{
$selected = 'selected';
if ($row_oe->aktiv == false)
{
$inaktivWarning = '&nbsp;<span style="color: red; font-weight: bold">Inaktive OE !</span>';
}
}
else
$selected='';
//Inaktive OEs übersrpingen, außer es ist die gespeicherte
if ($row_oe->aktiv == false && $row_oe->oe_kurzbz != $oe_kurzbz)
continue;
$htmlstr.='<option value="'.$row_oe->oe_kurzbz.'" '.$selected.'>'.$row_oe->organisationseinheittyp_kurzbz.' '.$row_oe->bezeichnung.'</option>';
}
$htmlstr.='</select>';
$htmlstr.='</select>'.$inaktivWarning;
$htmlstr.='
</td>
</tr>
@@ -401,8 +413,9 @@
<div align="right" id="sub">
<span id="submsg" style="color:red; visibility:hidden;">Datensatz ge&auml;ndert!&nbsp;&nbsp;</span>
<input type="hidden" name="neu" value="'.$neu.'">
<input type="submit" value="Speichern" name="schick">
<input type="submit" value="Kopieren" name="kopieren" onclick="return confirm(\'Eintrag kopieren?\')">
<input type="button" value="Reset" onclick="unchanged()">
&nbsp;&nbsp;&nbsp;<input type="submit" value="Speichern" name="schick">
</div>
</form>
<div class="inserterror">'.$errorstr.'</div>';
+3 -3
View File
@@ -81,7 +81,7 @@ if (!$filter->loadAll())
<form name="formular">
<input type="hidden" name="check" value="">
</form>
<table class="tablesorter" id="t1">
<table class="tablesorter" id="t1" style="table-layout: fixed">
<thead>
<tr>
<th onmouseup="document.formular.check.value=0">
@@ -144,8 +144,8 @@ if (!$filter->loadAll())
<td>
<?php echo $db->convert_html_chars($filter->htmlattr) ?>
</td>
<td>
<?php echo $db->convert_html_chars(substr($filter->sql,0,32)) ?>...
<td style="text-overflow: ellipsis; white-space: nowrap; overflow:hidden;">
<?php echo $db->convert_html_chars($filter->sql) ?>
</td>
<td>
<form action="<?php echo basename(__FILE__) ?>" name="form_<?php echo $filter->filter_id ?>" method="POST">