diff --git a/application/controllers/jobs/IssueResolver.php b/application/controllers/jobs/IssueResolver.php
index 78e867936..cf97b7f68 100755
--- a/application/controllers/jobs/IssueResolver.php
+++ b/application/controllers/jobs/IssueResolver.php
@@ -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',
diff --git a/application/controllers/system/issues/Plausichecks.php b/application/controllers/system/issues/Plausichecks.php
index 748361321..2dd166794 100644
--- a/application/controllers/system/issues/Plausichecks.php
+++ b/application/controllers/system/issues/Plausichecks.php
@@ -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;
}
}
}
diff --git a/application/libraries/issues/PlausicheckLib.php b/application/libraries/issues/PlausicheckLib.php
index 5105169dd..19442de3c 100644
--- a/application/libraries/issues/PlausicheckLib.php
+++ b/application/libraries/issues/PlausicheckLib.php
@@ -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
diff --git a/application/libraries/issues/PlausicheckProducerLib.php b/application/libraries/issues/PlausicheckProducerLib.php
index c1e15151f..dde9b5396 100644
--- a/application/libraries/issues/PlausicheckProducerLib.php
+++ b/application/libraries/issues/PlausicheckProducerLib.php
@@ -18,6 +18,7 @@ class PlausicheckProducerLib
'AbschlussstatusFehlt' => 'AbschlussstatusFehlt',
'AktSemesterNull' => 'AktSemesterNull',
'AktiverStudentOhneStatus' => 'AktiverStudentOhneStatus',
+ 'AktiverStudentstatusOhneKontobuchung' => 'AktiverStudentstatusOhneKontobuchung',
'AusbildungssemPrestudentUngleichAusbildungssemStatus' => 'AusbildungssemPrestudentUngleichAusbildungssemStatus',
'BewerberNichtZumRtAngetreten' => 'BewerberNichtZumRtAngetreten',
'DatumAbschlusspruefungFehlt' => 'DatumAbschlusspruefungFehlt',
diff --git a/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php b/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
new file mode 100644
index 000000000..baa35bc57
--- /dev/null
+++ b/application/libraries/issues/plausichecks/AktiverStudentstatusOhneKontobuchung.php
@@ -0,0 +1,50 @@
+_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);
+ }
+}
diff --git a/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
new file mode 100644
index 000000000..aafee1124
--- /dev/null
+++ b/application/libraries/issues/resolvers/CORE_STUDENTSTATUS_0015.php
@@ -0,0 +1,36 @@
+_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
+ }
+}
diff --git a/cis/private/lehre/abgabe_student.php b/cis/private/lehre/abgabe_student.php
index e2da3f2cb..9b3cec6f6 100644
--- a/cis/private/lehre/abgabe_student.php
+++ b/cis/private/lehre/abgabe_student.php
@@ -108,7 +108,8 @@ $sql_query = "SELECT (SELECT nachname FROM public.tbl_person WHERE person_id=tb
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 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)
@@ -204,11 +205,15 @@ else
$htmlstr .= "".$p->t('abgabetool/projektbeurteilungZweitDownload')." ";
$htmlstr .= "";
- } else
- {
- $htmlstr .= "
".$row->note." ";
}
-
+ elseif (!is_null($row->abgegeben))
+ {
+ $htmlstr .= "".$p->t('abgabetool/abgegeben')." ";
+ }
+ else
+ {
+ $htmlstr .= "- ";
+ }
$htmlstr .= " ".$row->studiensemester_kurzbz." \n";
$htmlstr .= " ".strtoupper($row->typ.$row->kurzbz)." \n";
diff --git a/content/student/studentdetailoverlay.xul.php b/content/student/studentdetailoverlay.xul.php
index ec72ee756..845d48397 100644
--- a/content/student/studentdetailoverlay.xul.php
+++ b/content/student/studentdetailoverlay.xul.php
@@ -783,6 +783,22 @@ echo '';
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/prestudentrolle/rdf#statusgrund" />
+
+
+
+
+
+
+
+
@@ -804,6 +820,10 @@ echo '';
+
+
+
+
diff --git a/include/anwesenheit.class.php b/include/anwesenheit.class.php
index 3365e6d68..2b8389c79 100644
--- a/include/anwesenheit.class.php
+++ b/include/anwesenheit.class.php
@@ -1,659 +1,714 @@
-
- */
-/**
- * Klasse zur Verwaltung der Anwesenheiten der Studierenden
- */
-require_once(dirname(__FILE__).'/basis_db.class.php');
-require_once(dirname(__FILE__).'/../config/global.config.inc.php');
-
-class anwesenheit extends basis_db
-{
- public $new=true; // boolean
- public $result = array();
-
- public $anwesenheit_id; // serial
- public $uid; // varchar(32)
- public $einheiten; // numeric(3,1)
- public $datum; // date
- public $anwesend; // boolean
- public $lehreinheit_id; // bigint
- public $anmerkung; // varchar(256)
-
- /**
- * Konstruktor
- * @param $anwesenheit_id ID des Datensatzes der geladen werden soll (Default=null)
- */
- public function __construct($anwesenheit_id=null)
- {
- parent::__construct();
-
- if(!is_null($anwesenheit_id))
- $this->load($anwesenheit_id);
- }
-
- /**
- * Laedt den Datensatz mit der ID $anwesenheit_id
- * @param $anwesenheit_id ID des Datensatzes
- * @return true wenn ok, false im Fehlerfall
- */
- public function load($anwesenheit_id)
- {
- //Pruefen ob anwesenheit_id eine gueltige Zahl ist
- if(!is_numeric($anwesenheit_id) || $anwesenheit_id == '')
- {
- $this->errormsg = 'Anwesenheit_id muss eine Zahl sein';
- return false;
- }
-
- //Daten aus der Datenbank lesen
- $qry = "SELECT * FROM campus.tbl_anwesenheit WHERE anwesenheit_id=".$this->db_add_param($anwesenheit_id, FHC_INTEGER, false);
-
- if(!$this->db_query($qry))
- {
- $this->errormsg = 'Fehler bei einer Datenbankabfrage';
- return false;
- }
-
- if($row = $this->db_fetch_object())
- {
- $this->anwesenheit_id = $row->anwesenheit_id;
- $this->uid = $row->uid;
- $this->einheiten = $row->einheiten;
- $this->datum = $row->datum;
- $this->anwesend = $this->db_parse_bool($row->anwesend);
- $this->lehreinheit_id = $row->lehreinheit_id;
- $this->anmerkung = $row->anmerkung;
- $this->new=false;
- }
- else
- {
- $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
- return false;
- }
-
- return true;
- }
-
- /**
- * Prueft die Variablen auf Gueltigkeit
- * @return true wenn ok, false im Fehlerfall
- */
- protected function validate()
- {
- //Zahlenfelder pruefen
- if(!is_numeric($this->anwesenheit_id) && $this->anwesenheit_id!='')
- {
- $this->errormsg='anwesenheit_id enthaelt ungueltige Zeichen';
- return false;
- }
-
- //Gesamtlaenge pruefen
- if(mb_strlen($this->anmerkung)>255)
- {
- $this->errormsg = 'Anmerkung darf nicht länger als 255 Zeichen sein';
- return false;
- }
-
- $this->errormsg = '';
- return true;
- }
-
- /**
- * Speichert den aktuellen Datensatz in die Datenbank
- * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
- * andernfalls wird der bestehende Datensatz aktualisiert
- * @return true wenn ok, false im Fehlerfall
- */
- public function save()
- {
- //Variablen pruefen
- if(!$this->validate())
- return false;
-
- if($this->new)
- {
- //Neuen Datensatz einfuegen
- $qry='BEGIN;INSERT INTO campus.tbl_anwesenheit (uid, einheiten, anwesend, datum, lehreinheit_id, anmerkung) VALUES('.
- $this->db_add_param($this->uid).', '.
- $this->db_add_param($this->einheiten).', '.
- $this->db_add_param($this->anwesend, FHC_BOOLEAN).', '.
- $this->db_add_param($this->datum).', '.
- $this->db_add_param($this->lehreinheit_id).', '.
- $this->db_add_param($this->anmerkung).');';
- }
- else
- {
- //Pruefen ob id eine gueltige Zahl ist
- if(!is_numeric($this->anwesenheit_id))
- {
- $this->errormsg = 'anwesenheit_id muss eine gueltige Zahl sein';
- return false;
- }
- $qry='UPDATE campus.tbl_anwesenheit SET'.
- ' uid='.$this->db_add_param($this->uid).', '.
- ' einheiten='.$this->db_add_param($this->einheiten).', '.
- ' anwesend='.$this->db_add_param($this->anwesend,FHC_BOOLEAN).', '.
- ' datum='.$this->db_add_param($this->datum).', '.
- ' lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
- ' anmerkung='.$this->db_add_param($this->anmerkung).' '.
- 'WHERE anwesenheit_id='.$this->db_add_param($this->anwesenheit_id, FHC_INTEGER, false).';';
- }
-
- if($this->db_query($qry))
- {
- if($this->new)
- {
- //naechste ID aus der Sequence holen
- $qry="SELECT currval('campus.seq_anwesenheit_anwesenheit_id') as id;";
- if($this->db_query($qry))
- {
- if($row = $this->db_fetch_object())
- {
- $this->anwesenheit_id = $row->id;
- $this->db_query('COMMIT');
- }
- else
- {
- $this->db_query('ROLLBACK');
- $this->errormsg = "Fehler beim Auslesen der Sequence";
- return false;
- }
- }
- else
- {
- $this->db_query('ROLLBACK');
- $this->errormsg = 'Fehler beim Auslesen der Sequence';
- return false;
- }
- }
-
- }
- else
- {
- $this->errormsg = 'Fehler beim Speichern des Datensatzes';
- return false;
- }
- return $this->anwesenheit_id;
- }
-
- /**
- * Laedt die Anwesenheiten einer Lehreinheit/Datum
- * @param $lehreinheit_id
- * @param $datum
- * @return boolean true wenn ok, false im Fehlerfall
- */
- public function getAnwesenheitLehreinheit($lehreinheit_id, $datum=null)
- {
- $qry = "SELECT * FROM campus.tbl_anwesenheit
- WHERE
- lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
-
- if(!is_null($datum))
- $qry.=" AND datum=".$this->db_add_param($datum);
-
- if($result = $this->db_query($qry))
- {
- while($row = $this->db_fetch_object($result))
- {
- $obj = new anwesenheit();
-
- $obj->anwesenheit_id = $row->anwesenheit_id;
- $obj->uid = $row->uid;
- $obj->einheiten = $row->einheiten;
- $obj->datum = $row->datum;
- $obj->anwesend = $this->db_parse_bool($row->anwesend);
- $obj->lehreinheit_id = $row->lehreinheit_id;
- $obj->anmerkung = $row->anmerkung;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- public function loadAnwesenheitMitarbeiter($mitarbeiter_uid, $lehreinheit_id)
- {
- $qry = "SELECT
- datum, a.einheiten,
- (SELECT true FROM campus.tbl_anwesenheit
- WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id)." AND datum=a.datum LIMIT 1) as anwesend,
- (SELECT stundensatz FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
- AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).") as stundensatz
- FROM
- (SELECT datum, count(distinct stunde) as einheiten FROM lehre.tbl_stundenplan
- WHERE
- lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
- AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)."
- GROUP by datum) as a
- ";
-
- if($result = $this->db_query($qry))
- {
- $this->anzahl_termine=0;
- $this->anzahl_anwesend=0;
- $this->anwesenheit = array();
-
- while($row = $this->db_fetch_object($result))
- {
- $anwesend = $this->db_parse_bool($row->anwesend);
- $key = $lehreinheit_id.'/'.$row->datum;
-
- $this->anwesenheit[$key]['anwesend'] = ($anwesend?true:false);
- $this->anwesenheit[$key]['lehreinheit_id'] = $lehreinheit_id;
- $this->anwesenheit[$key]['datum']=$row->datum;
- $this->anwesenheit[$key]['einheiten']=$row->einheiten;
- $this->anwesenheit[$key]['stundensatz']=$row->stundensatz;
-
- $this->anzahl_termine++;
- if($anwesend)
- $this->anzahl_anwesend++;
- }
- if($this->anzahl_termine>0)
- {
- $this->prozent_anwesend=$this->anzahl_anwesend/$this->anzahl_termine*100;
- }
- return true;
- }
- else
- {
- $this->errormsg='Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Liefert für Student und Einheit wieviel Einheiten als anwesend/abwesend
- * eingetragen sind.
- *
- * @param string $uid
- * @param int $lehreinheit_id
- * @param bool $anwesend
- * @return int
- */
- public function getAnwesenheit($uid, $lehreinheit_id, $anwesend = FALSE)
- {
- $qry = 'SELECT sum(einheiten) AS einheiten '
- . 'FROM campus.tbl_anwesenheit '
- . 'WHERE uid = ' . $this->db_add_param($uid)
- . ' AND lehreinheit_id = ' . $this->db_add_param($lehreinheit_id, FHC_INTEGER)
- . ' AND anwesend = ' . $this->db_add_param($anwesend, FHC_BOOLEAN);
-
- $result = $this->db_query($qry);
- $row = $this->db_fetch_object($result);
-
- return $row->einheiten;
- }
-
- /**
- * Liefert die Anwesenheiten/Abwesenheiten eines Studenten bei einer LV
- *
- * @param string $student_uid
- * @param int $lehrveranstaltung_id
- * @param string $studiensemester_kurzbz
- * @param boolean $anwesend
- * @return boolean
- */
- public function getAnwesenheitLehrveranstaltung($student_uid, $lehrveranstaltung_id, $studiensemester_kurzbz, $anwesend=false)
- {
- $qry = 'SELECT
- distinct tbl_anwesenheit.*
- FROM
- campus.tbl_anwesenheit
- JOIN campus.vw_student_lehrveranstaltung USING(uid)
- WHERE
- uid='.$this->db_add_param($student_uid).'
- AND vw_student_lehrveranstaltung.lehreinheit_id=tbl_anwesenheit.lehreinheit_id
- AND lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).'
- AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).'
- AND anwesend=' . $this->db_add_param($anwesend, FHC_BOOLEAN).'
- ORDER BY datum';
-
- if($result = $this->db_query($qry))
- {
- while($row = $this->db_fetch_object($result))
- {
- $obj = new anwesenheit();
-
- $obj->anwesenheit_id = $row->anwesenheit_id;
- $obj->uid = $row->uid;
- $obj->einheiten = $row->einheiten;
- $obj->datum = $row->datum;
- $obj->anwesend = $this->db_parse_bool($row->anwesend);
- $obj->lehreinheit_id = $row->lehreinheit_id;
- $obj->anmerkung = $row->anmerkung;
-
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Liefert die Termine an denen eine Abwesenheit eingetragen ist.
- *
- * @param string $uid
- * @param int $lehreinheit_id
- * @return array
- */
- public function getAbwesendTermine($uid, $lehreinheit_id)
- {
-
- $qry = 'SELECT datum, einheiten '
- . 'FROM campus.tbl_anwesenheit '
- . 'WHERE uid = ' . $this->db_add_param($uid)
- . ' AND lehreinheit_id = ' . $this->db_add_param($lehreinheit_id)
- . ' AND anwesend = FALSE '
- . 'ORDER BY datum';
-
- $result = $this->db_query($qry);
- $ret_obj = array();
-
- while($row = $this->db_fetch_object($result))
- {
- $ret_obj[] = $row;
- }
-
- return $ret_obj;
- }
-
- public function getAmpel($anwesenheit_relativ)
- {
-
- if($anwesenheit_relativ < FAS_ANWESENHEIT_ROT)
- {
- return 'red';
- }
- elseif($anwesenheit_relativ < FAS_ANWESENHEIT_GELB)
- {
- return 'yellow';
- }
- else
- {
- return 'green';
- }
- }
-
- /**
- * Prueft ob Anwesenheiten erfasst wurden
- * @param $lehreinheit_id ID der Lehreinheit
- * @param $datum Datum
- * @param $uid UID des Studierenden
- * @return boolean true wenn vorhanden, sonst false
- */
- public function AnwesenheitExists($lehreinheit_id, $datum, $uid=null)
- {
- $qry = "SELECT
- 1
- FROM
- campus.tbl_anwesenheit
- WHERE
- anwesend=true
- AND lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
- AND datum=".$this->db_add_param($datum);
-
- if($uid!='')
- $qry.=" AND uid=".$this->db_add_param($uid);
-
- if($result = $this->db_query($qry))
- {
- if($this->db_num_rows($result)>0)
- return true;
- else
- return false;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Prueft ob Anwesenheiten erfasst wurden
- * @param $lehreinheit_id ID der Lehreinheit
- * @param $datum Datum
- * @param $uid UID des Studierenden
- * @return boolean true wenn vorhanden, sonst false
- */
- public function AnwesenheitEntryExists($lehreinheit_id, $datum, $uid=null)
- {
- $qry = "SELECT
- 1
- FROM
- campus.tbl_anwesenheit
- WHERE
- lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
- AND datum=".$this->db_add_param($datum)."
- AND uid=".$this->db_add_param($uid);
-
- if($result = $this->db_query($qry))
- {
- if($this->db_num_rows($result)>0)
- return true;
- else
- return false;
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Laedt die Anwesenheiten in Prozent von Studierenden bei Lehrveranstaltungen
- * Wenn die StudentUID uebergeben wird, werden alle Lehrveranstaltungen zu denen der Studierenden zugeteilt ist inkl Prozent der Anwesenheit
- * Wenn die LehrveranstaltungID uebergeben wird, werden alle Studierenden geholt die zugeteilt sind inkl Prozent der Anwesenheit
- * Es werden pro Student die Anwesenheiten berechnet aufgrund der Lehreinheit zu der sie zugeordnet sind
- * @param $studiensemester_kurzbz
- * @param $student_uid
- * @param $lehrveranstaltung_id
- * @return boolean true wenn ok, false im fehlerfall
- */
- public function loadAnwesenheitStudiensemester($studiensemester_kurzbz, $student_uid=null, $lehrveranstaltung_id=null)
- {
- $qry = "SELECT lehrveranstaltung_id, bezeichnung, vorname, wahlname, nachname,uid, sum(anwesend) as anwesend, sum(nichtanwesend) as nichtanwesend, sum(gesamtstunden) as gesamtstunden FROM (
- SELECT
- lehrveranstaltung_id, bezeichnung, vorname, wahlname, nachname, uid,
- (
- SELECT
- sum(einheiten)
- FROM
- campus.tbl_anwesenheit
- WHERE
- lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
- AND uid=vw_student_lehrveranstaltung.uid
- AND anwesend
- ) as anwesend,
- (
- SELECT
- sum(einheiten)
- FROM
- campus.tbl_anwesenheit
- WHERE
- lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
- AND uid=vw_student_lehrveranstaltung.uid
- AND NOT anwesend
- ) as nichtanwesend,
- (
- SELECT count(*) anzahl FROM
- (SELECT datum, stunde FROM campus.vw_stundenplan
- WHERE lehreinheit_id=vw_student_lehrveranstaltung.lehreinheit_id
- AND (vw_stundenplan.titel not like '%Nebenprüfung%' OR vw_stundenplan.titel is null) GROUP BY datum, stunde) as a
- ) as gesamtstunden
- FROM
- campus.vw_student_lehrveranstaltung
- JOIN public.tbl_benutzer USING(uid)
- JOIN public.tbl_person USING(person_id)
- WHERE
- studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
-
- if(!is_null($lehrveranstaltung_id))
- $qry.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id);
- if(!is_null($student_uid))
- $qry.=" AND uid=".$this->db_add_param($student_uid);
-
- $qry.=") as b GROUP BY lehrveranstaltung_id, bezeichnung, vorname, wahlname, nachname, uid";
-
- if($lehrveranstaltung_id!='')
- $qry.=" order by nachname, vorname ";
- elseif($student_uid!='')
- $qry.=" order by bezeichnung";
-
- if($result = $this->db_query($qry))
- {
- while($row = $this->db_fetch_object($result))
- {
- $obj = new stdClass();
- $obj->bezeichnung = $row->bezeichnung;
- $obj->anwesend = $row->anwesend;
- $obj->nichtanwesend = $row->nichtanwesend;
- $obj->gesamtstunden = $row->gesamtstunden;
-
- $obj->erfassteanwesenheit = $row->anwesend+$row->nichtanwesend;
- if($row->gesamtstunden=='' || $obj->erfassteanwesenheit=='')
- $obj->prozent=100;
- else
- $obj->prozent = number_format(100-(100/$obj->gesamtstunden*$row->nichtanwesend),2);
- $obj->vorname = $row->vorname;
- $obj->wahlname = $row->wahlname;
- $obj->nachname = $row->nachname;
- $obj->uid = $row->uid;
- $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
- $this->result[] = $obj;
- }
- return true;
- }
- else
- {
- $this->errormsg='Fehler beim Laden der Daten';
- return false;
- }
- }
-
- /**
- * Aendert die bestehende Anwesenheit
- * @param $lehreinheit_id ID der Lehreinheit
- * @param $datum Datum
- * @param $uid UID des Studierenden
- * @return boolean true ok, sonst false
- */
- public function AnwesenheitToggle($lehreinheit_id, $datum, $uid)
- {
- if($this->AnwesenheitEntryExists($lehreinheit_id, $datum, $uid))
- {
- $qry = "UPDATE
- campus.tbl_anwesenheit
- SET anwesend= NOT anwesend
- WHERE
- lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
- AND datum=".$this->db_add_param($datum)."
- AND uid=".$this->db_add_param($uid);
-
- if($result = $this->db_query($qry))
- {
- if($this->db_affected_rows($result)>0)
- return true;
- else
- {
- $this->errormsg='Anwesenheitsliste wurde noch nicht erfasst';
- return false;
- }
- }
- else
- {
- $this->errormsg = 'Fehler beim Laden der Daten';
- return false;
- }
- }
- else
- {
- // Anwesenheitsliste wurde noch nicht erfasst. Eintrag neu anlegen
-
- // Einheiten ermitteln
- $qry = "SELECT
- distinct stunde
- FROM
- lehre.tbl_stundenplan
- WHERE
- lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
- AND datum=".$this->db_add_param($datum);
-
- if($result = $this->db_query($qry))
- {
- if($anzahl = $this->db_num_rows($result))
- {
- $einheiten = $anzahl;
- }
- }
- if($einheiten>0)
- {
- $this->lehreinheit_id=$lehreinheit_id;
- $this->datum = $datum;
- $this->uid = $uid;
- $this->anwesend=true;
- $this->new=true;
- $this->einheiten=$einheiten;
- if($this->save())
- return true;
- else
- {
- $this->errormsg = 'Fehler beim Speichern der Daten';
- return true;
- }
- }
- else
- {
- $this->errormsg = 'Anzahl der Einheiten fuer diesen Tag konnte nicht ermittelt werden';
- return false;
- }
- }
- }
-
- /**
- * Loescht eine Anwesenheit
- * @param anwesenheit_id integer ID der Anwesenheit.
- * @return boolean true wenn ok , false im fehlerfall
- */
- public function delete($anwesenheit_id)
- {
- $qry = "DELETE FROM campus.tbl_anwesenheit WHERE anwesenheit_id=".$this->db_add_param($anwesenheit_id, FHC_INTEGER).";";
-
- if($this->db_query($qry))
- {
- return true;
- }
- else
- {
- $this->errormsg = 'Fehler beim Löschen der Anwesenheit';
- return false;
- }
- }
-}
+
+ */
+/**
+ * Klasse zur Verwaltung der Anwesenheiten der Studierenden
+ */
+require_once(dirname(__FILE__).'/basis_db.class.php');
+require_once(dirname(__FILE__).'/../config/global.config.inc.php');
+
+class anwesenheit extends basis_db
+{
+ public $new=true; // boolean
+ public $result = array();
+
+ public $anwesenheit_id; // serial
+ public $uid; // varchar(32)
+ public $einheiten; // numeric(3,1)
+ public $datum; // date
+ public $anwesend; // boolean
+ public $lehreinheit_id; // bigint
+ public $anmerkung; // varchar(256)
+
+ /**
+ * Konstruktor
+ * @param $anwesenheit_id ID des Datensatzes der geladen werden soll (Default=null)
+ */
+ public function __construct($anwesenheit_id=null)
+ {
+ parent::__construct();
+
+ if(!is_null($anwesenheit_id))
+ $this->load($anwesenheit_id);
+ }
+
+ /**
+ * Laedt den Datensatz mit der ID $anwesenheit_id
+ * @param $anwesenheit_id ID des Datensatzes
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function load($anwesenheit_id)
+ {
+ //Pruefen ob anwesenheit_id eine gueltige Zahl ist
+ if(!is_numeric($anwesenheit_id) || $anwesenheit_id == '')
+ {
+ $this->errormsg = 'Anwesenheit_id muss eine Zahl sein';
+ return false;
+ }
+
+ //Daten aus der Datenbank lesen
+ $qry = "SELECT * FROM campus.tbl_anwesenheit WHERE anwesenheit_id=".$this->db_add_param($anwesenheit_id, FHC_INTEGER, false);
+
+ if(!$this->db_query($qry))
+ {
+ $this->errormsg = 'Fehler bei einer Datenbankabfrage';
+ return false;
+ }
+
+ if($row = $this->db_fetch_object())
+ {
+ $this->anwesenheit_id = $row->anwesenheit_id;
+ $this->uid = $row->uid;
+ $this->einheiten = $row->einheiten;
+ $this->datum = $row->datum;
+ $this->anwesend = $this->db_parse_bool($row->anwesend);
+ $this->lehreinheit_id = $row->lehreinheit_id;
+ $this->anmerkung = $row->anmerkung;
+ $this->new=false;
+ }
+ else
+ {
+ $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Prueft die Variablen auf Gueltigkeit
+ * @return true wenn ok, false im Fehlerfall
+ */
+ protected function validate()
+ {
+ //Zahlenfelder pruefen
+ if(!is_numeric($this->anwesenheit_id) && $this->anwesenheit_id!='')
+ {
+ $this->errormsg='anwesenheit_id enthaelt ungueltige Zeichen';
+ return false;
+ }
+
+ //Gesamtlaenge pruefen
+ if(mb_strlen($this->anmerkung)>255)
+ {
+ $this->errormsg = 'Anmerkung darf nicht länger als 255 Zeichen sein';
+ return false;
+ }
+
+ $this->errormsg = '';
+ return true;
+ }
+
+ /**
+ * Speichert den aktuellen Datensatz in die Datenbank
+ * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt
+ * andernfalls wird der bestehende Datensatz aktualisiert
+ * @return true wenn ok, false im Fehlerfall
+ */
+ public function save()
+ {
+ //Variablen pruefen
+ if(!$this->validate())
+ return false;
+
+ if($this->new)
+ {
+ //Neuen Datensatz einfuegen
+ $qry='BEGIN;INSERT INTO campus.tbl_anwesenheit (uid, einheiten, anwesend, datum, lehreinheit_id, anmerkung) VALUES('.
+ $this->db_add_param($this->uid).', '.
+ $this->db_add_param($this->einheiten).', '.
+ $this->db_add_param($this->anwesend, FHC_BOOLEAN).', '.
+ $this->db_add_param($this->datum).', '.
+ $this->db_add_param($this->lehreinheit_id).', '.
+ $this->db_add_param($this->anmerkung).');';
+ }
+ else
+ {
+ //Pruefen ob id eine gueltige Zahl ist
+ if(!is_numeric($this->anwesenheit_id))
+ {
+ $this->errormsg = 'anwesenheit_id muss eine gueltige Zahl sein';
+ return false;
+ }
+ $qry='UPDATE campus.tbl_anwesenheit SET'.
+ ' uid='.$this->db_add_param($this->uid).', '.
+ ' einheiten='.$this->db_add_param($this->einheiten).', '.
+ ' anwesend='.$this->db_add_param($this->anwesend,FHC_BOOLEAN).', '.
+ ' datum='.$this->db_add_param($this->datum).', '.
+ ' lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).', '.
+ ' anmerkung='.$this->db_add_param($this->anmerkung).' '.
+ 'WHERE anwesenheit_id='.$this->db_add_param($this->anwesenheit_id, FHC_INTEGER, false).';';
+ }
+
+ if($this->db_query($qry))
+ {
+ if($this->new)
+ {
+ //naechste ID aus der Sequence holen
+ $qry="SELECT currval('campus.seq_anwesenheit_anwesenheit_id') as id;";
+ if($this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object())
+ {
+ $this->anwesenheit_id = $row->id;
+ $this->db_query('COMMIT');
+ }
+ else
+ {
+ $this->db_query('ROLLBACK');
+ $this->errormsg = "Fehler beim Auslesen der Sequence";
+ return false;
+ }
+ }
+ else
+ {
+ $this->db_query('ROLLBACK');
+ $this->errormsg = 'Fehler beim Auslesen der Sequence';
+ return false;
+ }
+ }
+
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern des Datensatzes';
+ return false;
+ }
+ return $this->anwesenheit_id;
+ }
+
+ /**
+ * Laedt die Anwesenheiten einer Lehreinheit/Datum
+ * @param $lehreinheit_id
+ * @param $datum
+ * @return boolean true wenn ok, false im Fehlerfall
+ */
+ public function getAnwesenheitLehreinheit($lehreinheit_id, $datum=null)
+ {
+ $qry = "SELECT * FROM campus.tbl_anwesenheit
+ WHERE
+ lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
+
+ if(!is_null($datum))
+ $qry.=" AND datum=".$this->db_add_param($datum);
+
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $obj = new anwesenheit();
+
+ $obj->anwesenheit_id = $row->anwesenheit_id;
+ $obj->uid = $row->uid;
+ $obj->einheiten = $row->einheiten;
+ $obj->datum = $row->datum;
+ $obj->anwesend = $this->db_parse_bool($row->anwesend);
+ $obj->lehreinheit_id = $row->lehreinheit_id;
+ $obj->anmerkung = $row->anmerkung;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ public function loadAnwesenheitMitarbeiter($mitarbeiter_uid, $lehreinheit_id)
+ {
+ $qry = "SELECT
+ datum, a.einheiten,
+ (SELECT true FROM campus.tbl_anwesenheit
+ WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id)." AND datum=a.datum LIMIT 1) as anwesend,
+ (SELECT stundensatz FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).") as stundensatz
+ FROM
+ (SELECT datum, count(distinct stunde) as einheiten FROM lehre.tbl_stundenplan
+ WHERE
+ lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)."
+ GROUP by datum) as a
+ ";
+
+ if($result = $this->db_query($qry))
+ {
+ $this->anzahl_termine=0;
+ $this->anzahl_anwesend=0;
+ $this->anwesenheit = array();
+
+ while($row = $this->db_fetch_object($result))
+ {
+ $anwesend = $this->db_parse_bool($row->anwesend);
+ $key = $lehreinheit_id.'/'.$row->datum;
+
+ $this->anwesenheit[$key]['anwesend'] = ($anwesend?true:false);
+ $this->anwesenheit[$key]['lehreinheit_id'] = $lehreinheit_id;
+ $this->anwesenheit[$key]['datum']=$row->datum;
+ $this->anwesenheit[$key]['einheiten']=$row->einheiten;
+ $this->anwesenheit[$key]['stundensatz']=$row->stundensatz;
+
+ $this->anzahl_termine++;
+ if($anwesend)
+ $this->anzahl_anwesend++;
+ }
+ if($this->anzahl_termine>0)
+ {
+ $this->prozent_anwesend=$this->anzahl_anwesend/$this->anzahl_termine*100;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg='Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Liefert für Student und Einheit wieviel Einheiten als anwesend/abwesend
+ * eingetragen sind.
+ *
+ * @param string $uid
+ * @param int $lehreinheit_id
+ * @param bool $anwesend
+ * @return int
+ */
+ public function getAnwesenheit($uid, $lehreinheit_id, $anwesend = FALSE)
+ {
+ $qry = 'SELECT sum(einheiten) AS einheiten '
+ . 'FROM campus.tbl_anwesenheit '
+ . 'WHERE uid = ' . $this->db_add_param($uid)
+ . ' AND lehreinheit_id = ' . $this->db_add_param($lehreinheit_id, FHC_INTEGER)
+ . ' AND anwesend = ' . $this->db_add_param($anwesend, FHC_BOOLEAN);
+
+ $result = $this->db_query($qry);
+ $row = $this->db_fetch_object($result);
+
+ return $row->einheiten;
+ }
+
+ /**
+ * Liefert die Anwesenheiten/Abwesenheiten eines Studenten bei einer LV
+ *
+ * @param string $student_uid
+ * @param int $lehrveranstaltung_id
+ * @param string $studiensemester_kurzbz
+ * @param boolean $anwesend
+ * @return boolean
+ */
+ public function getAnwesenheitLehrveranstaltung($student_uid, $lehrveranstaltung_id, $studiensemester_kurzbz, $anwesend=false)
+ {
+ $qry = 'SELECT
+ distinct tbl_anwesenheit.*
+ FROM
+ campus.tbl_anwesenheit
+ JOIN campus.vw_student_lehrveranstaltung USING(uid)
+ WHERE
+ uid='.$this->db_add_param($student_uid).'
+ AND vw_student_lehrveranstaltung.lehreinheit_id=tbl_anwesenheit.lehreinheit_id
+ AND lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).'
+ AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).'
+ AND anwesend=' . $this->db_add_param($anwesend, FHC_BOOLEAN).'
+ ORDER BY datum';
+
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $obj = new anwesenheit();
+
+ $obj->anwesenheit_id = $row->anwesenheit_id;
+ $obj->uid = $row->uid;
+ $obj->einheiten = $row->einheiten;
+ $obj->datum = $row->datum;
+ $obj->anwesend = $this->db_parse_bool($row->anwesend);
+ $obj->lehreinheit_id = $row->lehreinheit_id;
+ $obj->anmerkung = $row->anmerkung;
+
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Liefert die Termine an denen eine Abwesenheit eingetragen ist.
+ *
+ * @param string $uid
+ * @param int $lehreinheit_id
+ * @return array
+ */
+ public function getAbwesendTermine($uid, $lehreinheit_id)
+ {
+
+ $qry = 'SELECT datum, einheiten '
+ . 'FROM campus.tbl_anwesenheit '
+ . 'WHERE uid = ' . $this->db_add_param($uid)
+ . ' AND lehreinheit_id = ' . $this->db_add_param($lehreinheit_id)
+ . ' AND anwesend = FALSE '
+ . 'ORDER BY datum';
+
+ $result = $this->db_query($qry);
+ $ret_obj = array();
+
+ while($row = $this->db_fetch_object($result))
+ {
+ $ret_obj[] = $row;
+ }
+
+ return $ret_obj;
+ }
+
+ public function getAmpel($anwesenheit_relativ)
+ {
+
+ if($anwesenheit_relativ < FAS_ANWESENHEIT_ROT)
+ {
+ return 'red';
+ }
+ elseif($anwesenheit_relativ < FAS_ANWESENHEIT_GELB)
+ {
+ return 'yellow';
+ }
+ else
+ {
+ return 'green';
+ }
+ }
+
+ /**
+ * Prueft ob Anwesenheiten erfasst wurden
+ * @param $lehreinheit_id ID der Lehreinheit
+ * @param $datum Datum
+ * @param $uid UID des Studierenden
+ * @return boolean true wenn vorhanden, sonst false
+ */
+ public function AnwesenheitExists($lehreinheit_id, $datum, $uid=null)
+ {
+ $qry = "SELECT
+ 1
+ FROM
+ campus.tbl_anwesenheit
+ WHERE
+ anwesend=true
+ AND lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND datum=".$this->db_add_param($datum);
+
+ if($uid!='')
+ $qry.=" AND uid=".$this->db_add_param($uid);
+
+ if($result = $this->db_query($qry))
+ {
+ if($this->db_num_rows($result)>0)
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Prueft ob Anwesenheiten erfasst wurden
+ * @param $lehreinheit_id ID der Lehreinheit
+ * @param $datum Datum
+ * @param $uid UID des Studierenden
+ * @return boolean true wenn vorhanden, sonst false
+ */
+ public function AnwesenheitEntryExists($lehreinheit_id, $datum, $uid=null)
+ {
+ $qry = "SELECT
+ 1
+ FROM
+ campus.tbl_anwesenheit
+ WHERE
+ lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND datum=".$this->db_add_param($datum)."
+ AND uid=".$this->db_add_param($uid);
+
+ if($result = $this->db_query($qry))
+ {
+ if($this->db_num_rows($result)>0)
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Laedt die Anwesenheiten in Prozent von Studierenden bei Lehrveranstaltungen
+ * Wenn die StudentUID uebergeben wird, werden alle Lehrveranstaltungen zu denen der Studierenden zugeteilt ist inkl Prozent der Anwesenheit
+ * Wenn die LehrveranstaltungID uebergeben wird, werden alle Studierenden geholt die zugeteilt sind inkl Prozent der Anwesenheit
+ * Es werden pro Student die Anwesenheiten berechnet aufgrund der Lehreinheit zu der sie zugeordnet sind
+ * @param $studiensemester_kurzbz
+ * @param $student_uid
+ * @param $lehrveranstaltung_id
+ * @return boolean true wenn ok, false im fehlerfall
+ */
+ public function loadAnwesenheitStudiensemester($studiensemester_kurzbz, $student_uid=null, $lehrveranstaltung_id=null)
+ {
+ $qry = "SELECT
+ lehrveranstaltung_id, vorname, nachname, wahlname, student_uid as uid, bezeichnung,
+ gesamt as gesamtstunden, anwesend, nichtanwesend, trunc(100-(nichtanwesend/gesamt)*100,2) as prozent
+ FROM
+ (
+ SELECT
+ vorname, nachname, wahlname, lehrveranstaltung_id, bezeichnung, gruppe, student_uid,
+ count(stundenplan_id) as gesamt,
+ case when anwesend.summe is null then 0 else anwesend.summe end as anwesend,
+ case when nichtanwesend.summe is null then 0 else nichtanwesend.summe end as nichtanwesend
+ FROM
+ (
+ SELECT
+ sum(stundenplan_id) as stundenplan_id, datum, stunde, lehrveranstaltung_id,
+ bezeichnung, studiensemester_kurzbz, studiengang_kz,
+ TRIM(
+ CASE WHEN stp.gruppe_kurzbz is not null then stp.gruppe_kurzbz
+ else stp.semester||(case when verband is null then '' else stp.verband end)||(case when stp.gruppe is null then '' else stp.gruppe end) end) as gruppe
+ FROM
+ lehre.tbl_lehrveranstaltung lv
+ JOIN lehre.tbl_lehreinheit le using (lehrveranstaltung_id)
+ JOIN lehre.tbl_stundenplan stp using (lehreinheit_id,studiengang_kz)
+ WHERE
+ studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+ AND (titel not like '%Nebenprüfung%' OR titel is null)
+
+ group by datum, stunde, lehrveranstaltung_id, bezeichnung, studiensemester_kurzbz, studiengang_kz, stp.gruppe_kurzbz, stp.semester, stp.verband, stp.gruppe
+ )x
+ JOIN (
+ SELECT semester::text as gruppe, public.tbl_studentlehrverband.studiensemester_kurzbz, student_uid, studiengang_kz
+ FROM
+ public.tbl_studentlehrverband
+ WHERE studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+
+ UNION
+
+ SELECT semester||verband as gruppe, public.tbl_studentlehrverband.studiensemester_kurzbz, student_uid, studiengang_kz
+ FROM
+ public.tbl_studentlehrverband
+ WHERE
+ studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+
+ UNION
+
+ SELECT semester||verband||gruppe as gruppe, public.tbl_studentlehrverband.studiensemester_kurzbz, student_uid, studiengang_kz
+ FROM
+ public.tbl_studentlehrverband
+ WHERE
+ studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+
+ UNION
+
+ SELECT gruppe_kurzbz as gruppe, public.tbl_benutzergruppe.studiensemester_kurzbz, uid as student_uid, studiengang_kz
+ FROM
+ public.tbl_benutzergruppe
+ JOIN
+ public.tbl_gruppe using (gruppe_kurzbz)
+ WHERE studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+
+ )a using (gruppe, studiensemester_kurzbz, studiengang_kz)
+ JOIN public.tbl_benutzer b on b.uid = student_uid
+ JOIN public.tbl_person p using(person_id)
+ LEFT JOIN(
+ SELECT
+ lehrveranstaltung_id, studiensemester_kurzbz, uid as student_uid, sum(einheiten) as summe
+ FROM
+ campus.tbl_anwesenheit a
+ JOIN lehre.tbl_lehreinheit le using (lehreinheit_id)
+ JOIN lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id)
+ WHERE
+ anwesend = true AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+ GROUP BY
+ lehrveranstaltung_id, bezeichnung, uid, studiensemester_kurzbz
+ )anwesend using(lehrveranstaltung_id, student_uid, studiensemester_kurzbz)
+ LEFT JOIN(
+ SELECT lehrveranstaltung_id, studiensemester_kurzbz, uid as student_uid, sum(einheiten) as summe
+ FROM
+ campus.tbl_anwesenheit a
+ JOIN lehre.tbl_lehreinheit le using (lehreinheit_id)
+ JOIN lehre.tbl_lehrveranstaltung lv using (lehrveranstaltung_id)
+ WHERE
+ anwesend = false AND studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+ GROUP BY
+ lehrveranstaltung_id, bezeichnung, uid, studiensemester_kurzbz
+ )nichtanwesend using(lehrveranstaltung_id, student_uid, studiensemester_kurzbz)
+ WHERE
+ lehrveranstaltung_id > 0
+ ";
+
+ if(!is_null($student_uid))
+ $qry.=" AND student_uid=".$this->db_add_param($student_uid);
+ if(!is_null($lehrveranstaltung_id))
+ $qry.=" AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id);
+
+ $qry.="group by
+ vorname, nachname, wahlname, lehrveranstaltung_id, bezeichnung, gruppe, student_uid, anwesend.summe, nichtanwesend.summe
+ )m";
+
+ if($lehrveranstaltung_id != '')
+ $qry.=" order by nachname, vorname ";
+ elseif($student_uid != '')
+ $qry.=" order by bezeichnung";
+
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $obj = new stdClass();
+ $obj->bezeichnung = $row->bezeichnung;
+ $obj->anwesend = $row->anwesend;
+ $obj->nichtanwesend = $row->nichtanwesend;
+ $obj->gesamtstunden = $row->gesamtstunden;
+
+ $obj->erfassteanwesenheit = $row->anwesend+$row->nichtanwesend;
+ if($row->gesamtstunden=='' || $obj->erfassteanwesenheit=='')
+ $obj->prozent=100;
+ else
+ $obj->prozent = number_format(100-(100/$obj->gesamtstunden*$row->nichtanwesend),2);
+ $obj->vorname = $row->vorname;
+ $obj->wahlname = $row->wahlname;
+ $obj->nachname = $row->nachname;
+ $obj->uid = $row->uid;
+ $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
+ $this->result[] = $obj;
+ }
+ return true;
+ }
+ else
+ {
+ $this->errormsg='Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
+ /**
+ * Aendert die bestehende Anwesenheit
+ * @param $lehreinheit_id ID der Lehreinheit
+ * @param $datum Datum
+ * @param $uid UID des Studierenden
+ * @return boolean true ok, sonst false
+ */
+ public function AnwesenheitToggle($lehreinheit_id, $datum, $uid)
+ {
+ if($this->AnwesenheitEntryExists($lehreinheit_id, $datum, $uid))
+ {
+ $qry = "UPDATE
+ campus.tbl_anwesenheit
+ SET anwesend= NOT anwesend
+ WHERE
+ lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND datum=".$this->db_add_param($datum)."
+ AND uid=".$this->db_add_param($uid);
+
+ if($result = $this->db_query($qry))
+ {
+ if($this->db_affected_rows($result)>0)
+ return true;
+ else
+ {
+ $this->errormsg='Anwesenheitsliste wurde noch nicht erfasst';
+ return false;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+ else
+ {
+ // Anwesenheitsliste wurde noch nicht erfasst. Eintrag neu anlegen
+
+ // Einheiten ermitteln
+ $qry = "SELECT
+ distinct stunde
+ FROM
+ lehre.tbl_stundenplan
+ WHERE
+ lehreinheit_id=".$this->db_add_param($lehreinheit_id)."
+ AND datum=".$this->db_add_param($datum);
+
+ if($result = $this->db_query($qry))
+ {
+ if($anzahl = $this->db_num_rows($result))
+ {
+ $einheiten = $anzahl;
+ }
+ }
+ if($einheiten>0)
+ {
+ $this->lehreinheit_id=$lehreinheit_id;
+ $this->datum = $datum;
+ $this->uid = $uid;
+ $this->anwesend=true;
+ $this->new=true;
+ $this->einheiten=$einheiten;
+ if($this->save())
+ return true;
+ else
+ {
+ $this->errormsg = 'Fehler beim Speichern der Daten';
+ return true;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Anzahl der Einheiten fuer diesen Tag konnte nicht ermittelt werden';
+ return false;
+ }
+ }
+ }
+
+ /**
+ * Loescht eine Anwesenheit
+ * @param anwesenheit_id integer ID der Anwesenheit.
+ * @return boolean true wenn ok , false im fehlerfall
+ */
+ public function delete($anwesenheit_id)
+ {
+ $qry = "DELETE FROM campus.tbl_anwesenheit WHERE anwesenheit_id=".$this->db_add_param($anwesenheit_id, FHC_INTEGER).";";
+
+ if($this->db_query($qry))
+ {
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Löschen der Anwesenheit';
+ return false;
+ }
+ }
+}
diff --git a/include/berechtigung.class.php b/include/berechtigung.class.php
index 684ad4e81..ab224be4d 100644
--- a/include/berechtigung.class.php
+++ b/include/berechtigung.class.php
@@ -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;
+ }
+ }
}
?>
\ No newline at end of file
diff --git a/include/projektphase.class.php b/include/projektphase.class.php
index 4e3c38b7c..c1cd8322c 100644
--- a/include/projektphase.class.php
+++ b/include/projektphase.class.php
@@ -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)."
diff --git a/include/statistik.class.php b/include/statistik.class.php
index e2b5e1a7a..d8bea89f9 100644
--- a/include/statistik.class.php
+++ b/include/statistik.class.php
@@ -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.= '';
$this->csv=substr($this->csv,0,-1)."\n";
+ $this->countRows++;
}
$this->html.= '';
}
@@ -586,8 +589,7 @@ class statistik extends basis_db
function getHtmlTable($id, $class='')
{
-
- return '';
+ return ''.$this->countRows.' Zeilen
';
}
function getCSV()
diff --git a/locale/de-AT/abgabetool.php b/locale/de-AT/abgabetool.php
index 83cd83a3e..57906695f 100644
--- a/locale/de-AT/abgabetool.php
+++ b/locale/de-AT/abgabetool.php
@@ -92,4 +92,5 @@ $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';
?>
diff --git a/locale/en-US/abgabetool.php b/locale/en-US/abgabetool.php
index ac8cc3789..84a882e94 100644
--- a/locale/en-US/abgabetool.php
+++ b/locale/en-US/abgabetool.php
@@ -92,4 +92,5 @@ $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';
?>
diff --git a/rdf/diplomasupplement.xml.php b/rdf/diplomasupplement.xml.php
index 47da798b7..4f19566d2 100644
--- a/rdf/diplomasupplement.xml.php
+++ b/rdf/diplomasupplement.xml.php
@@ -257,7 +257,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
if($row->typ=='d')
{
echo ' UNESCO ISCED 7 ';
- echo ' ';
+ echo ' ';
echo ' ';
echo ' ';
echo ' ';
@@ -269,7 +269,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
elseif($row->typ=='m')
{
echo ' UNESCO ISCED 7 ';
- echo ' ';
+ echo ' ';
echo ' ';
echo ' ';
echo ' ';
@@ -281,7 +281,7 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
elseif($row->typ=='b')
{
echo ' UNESCO ISCED 6 ';
- echo ' ';
+ echo ' ';
echo ' ';
echo ' ';
echo ' ';
@@ -299,8 +299,8 @@ if (isset($_REQUEST["xmlformat"]) && $_REQUEST["xmlformat"] == "xml")
elseif($row->typ=='l' || $row->typ=='k' || $row->typ=='e')
{
echo ' UNESCO ISCED 7 ';
- echo ' Lehrgang zur Weiterbildung nach §9 FHStG idgF. ';
- echo ' Certificate Program for Further Education subjected to § 9 FHStG ';
+ echo ' Lehrgang zur Weiterbildung nach §9 FHG idgF. ';
+ echo ' Certificate Program for Further Education subjected to § 9 FHG ';
echo ' ';
echo ' ';
echo ' ';
diff --git a/rdf/prestudentrolle.rdf.php b/rdf/prestudentrolle.rdf.php
index f60b93050..7a3dd636b 100644
--- a/rdf/prestudentrolle.rdf.php
+++ b/rdf/prestudentrolle.rdf.php
@@ -119,6 +119,10 @@ foreach($ps->result as $row)
statusgrund_id.']]>
statusgrund_id])?$statusgrund_arr[$row->statusgrund_id]:'').']]>
+ formatDatum($row->insertamum,'d.m.Y H:i:s').']]>
+ insertvon.']]>
+ formatDatum($row->updateamum,'d.m.Y H:i:s').']]>
+ updatevon.']]>
';
diff --git a/system/fehlerupdate.php b/system/fehlerupdate.php
index 98204315a..f29323c7c 100644
--- a/system/fehlerupdate.php
+++ b/system/fehlerupdate.php
@@ -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',
diff --git a/system/templates/contentmittitel_filterwidget_xslt_xhtml.xslt b/system/templates/contentmittitel_filterwidget_xslt_xhtml.xslt
new file mode 100644
index 000000000..e84939286
--- /dev/null
+++ b/system/templates/contentmittitel_filterwidget_xslt_xhtml.xslt
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vilesci/lehre/check/verplanungsuebersicht.php b/vilesci/lehre/check/verplanungsuebersicht.php
index 67b0d847e..90cdd3a37 100644
--- a/vilesci/lehre/check/verplanungsuebersicht.php
+++ b/vilesci/lehre/check/verplanungsuebersicht.php
@@ -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 'Studiensemester ';
+echo '';
+echo ' ';
+echo 'Studiengang ';
+echo '-- Alle Berechtigten -- ';
+foreach($stg->result as $row_stg)
+{
+ echo 'studiengang_kz==$stg_get?'selected':'').'>'.$row_stg->kuerzel.' - '.$row_stg->bezeichnung.' ';
+}
+echo ' ';
+echo ' ';
+echo '';
$gesamt=0;
$gesamt_verplant=0;
@@ -98,24 +139,29 @@ function drawprogress($prozent, $ueberplanung=0)
$content = ' '.$prozent.'%
';
if($ueberplanung>0)
- $content.= '
+'.$ueberplanung.'% Überbuchung
';
+ $content.= '
+'.$ueberplanung.'% zusätzliche Planstunden
';
$content.= '
';
return $content;
}
//Alle Studiengaenge durchlaufen
$content.= "\n";
-$content.= "\nStudiengang/Semester Lehreinheiten Stunden ";
+$content.= "\nStudiengang/Semester Lehreinheiten Planstunden ";
foreach($stg->result as $row_stg)
{
+ if (isset($stg_get) && $stg_get != '' && $stg_get != $row_stg->studiengang_kz)
+ continue;
+
$content.= "\n".$row_stg->kuerzel.' ';
//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.= '';
$content.=drawprogress($prozent, $prozentueber);
- $content.= 'offene Stunden: '.$offen;
+ $content.= 'offene Planstunden: '.$offen;
$content.=' ';
}
$content.=' ';
@@ -259,7 +319,7 @@ if($gesamt_ps==0)
$prozent=0;
else
$prozent = round($gesamt_ps_verplant*100/$gesamt_ps,2);
-echo "Stunden: (".$gesamt_ps_verplant.'/'.$gesamt_ps.')';
+echo "Planstunden: (".$gesamt_ps_verplant.'/'.$gesamt_ps.') ';
echo drawprogress($prozent);
echo "
\n ";
diff --git a/vilesci/stammdaten/benutzerberechtigung_autocomplete.php b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
new file mode 100644
index 000000000..a888a5b67
--- /dev/null
+++ b/vilesci/stammdaten/benutzerberechtigung_autocomplete.php
@@ -0,0 +1,139 @@
+
+ */
+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();
+}
+
+?>
diff --git a/vilesci/stammdaten/benutzerberechtigung_detailliste.php b/vilesci/stammdaten/benutzerberechtigung_detailliste.php
new file mode 100644
index 000000000..a5e352075
--- /dev/null
+++ b/vilesci/stammdaten/benutzerberechtigung_detailliste.php
@@ -0,0 +1,166 @@
+
+ * 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');
+
+?>
+
+
+ Detaillierte Berechtigungsliste
+
+
+
+
+
+
+
+
+
+
+ Detaillierte Berechtigungsliste von vorname.' '.$benutzer->nachname ?>
+
+ 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 '
+
+ Funktion
+ Rolle
+ Recht
+ Art
+ Organisationseinheit
+ Kostenstelle
+ Gültig ab
+ Gültig bis
+ Status
+ ';
+ 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 '';
+ echo ''.($key->funktion_kurzbz != '' ? $funktionsArray[$key->funktion_kurzbz] : '').' ';
+ echo ''.($key->rolle_kurzbz != '' ? $key->rolle_kurzbz : '').' ';
+ echo ''.($key->berechtigung_kurzbz != '' ? $key->berechtigung_kurzbz : '').' ';
+ echo ''.($key->art != '' ? $key->art : '').' ';
+ echo ''.($key->oe_kurzbz != '' ? $oeArray[$key->oe_kurzbz] : '').' ';
+ echo ''.($key->kostenstelle_id != '' ? $kostenstelleArray[$key->kostenstelle_id] : '').' ';
+ echo ''.($key->start != '' ? $key->start : '').' ';
+ echo ''.($key->ende != '' ? $key->ende : '').' ';
+ echo ''.$titel.' ';
+ echo ' ';
+ }
+ echo '
';
+
+ ?>
+
+
+
diff --git a/vilesci/stammdaten/benutzerberechtigung_details.php b/vilesci/stammdaten/benutzerberechtigung_details.php
index 5db140a81..4cee06950 100644
--- a/vilesci/stammdaten/benutzerberechtigung_details.php
+++ b/vilesci/stammdaten/benutzerberechtigung_details.php
@@ -37,21 +37,43 @@ require_once('../../include/person.class.php');
require_once('../../include/benutzer.class.php');
require_once('../../include/funktion.class.php');
require_once('../../include/wawi_kostenstelle.class.php');
+require_once('../../include/log.class.php');
+/*
+ * TODOs
+ *
+
+Checkbox-Range
+Mehrfach-Löschen
+
+
+Wawi und kostenstelle ausblenden
+Checkbox markieren bei (doppel)klick auf Zeile
+
+----------------------
+
+Nach übertragen gleich zu Person springen
+Bug in Kopieren - Verdoppelt alle Einträge
+Sortierreihenfolge. OE wird anscheinend nicht sortiert
+ART prüfen auf schreibweise
+BEschreibungstexte bestehender Rechte
+
+ */
$user = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if (!$db = new basis_db())
- die($p->t("global/fehlerBeimOeffnenDerDatenbankverbindung"));
+ die('Fehler beim öffnen der Datenbankverbindung');
if(!$rechte->isBerechtigt('basis/berechtigung'))
die('Sie haben keine Berechtigung fuer diese Seite');
//$reloadstr = ''; // neuladen der liste im oberen frame
$htmlstr = '';
-$errorstr = ''; //fehler beim insert
+$errorstr = '';
+$successstr = '';
$sel = '';
$chk = '';
$oe_arr = array();
@@ -73,64 +95,161 @@ $neu = false;
$negativ = false;
$filter=(isset($_GET['filter'])?$_GET['filter']:'alle');
-if(isset($_POST['del']))
+if(isset($_POST['delete']) && $_POST['delete'] != '')
{
if(!$rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
- die('Sie haben keine Berechtigung fuer diese Aktion');
+ die($rechte->errormsg);
- $benutzerberechtigung_id = $_POST['benutzerberechtigung_id'];
+ $benutzerberechtigung_id = $_POST['delete'];
$ber = new benutzerberechtigung();
if(!$ber->delete($benutzerberechtigung_id))
$errorstr .= 'Datensatz konnte nicht gelöscht werden!';
- //$reloadstr .= "\n";
+ //$reloadstr .= "";
}
-if(isset($_POST['kopieren']))
+if(isset($_POST['delete_multi']) && $_POST['delete_multi'] != '')
{
+ if(!$rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
+ die($rechte->errormsg);
+
+ if (isset($_POST['dataset']))
+ {
+ $i = 0;
+ foreach ($_POST['dataset'] AS $benutzerberechtigung_id => $value)
+ {
+ // Nur markierte Rechte kopieren
+ if (!isset($value['check']))
+ {
+ continue;
+ }
+
+ $ber = new benutzerberechtigung();
+ if(!$ber->delete($benutzerberechtigung_id))
+ {
+ $errorstr .= 'Datensatz konnte nicht gelöscht werden!';
+ }
+ else
+ {
+ $i ++;
+ //Log schreiben
+ $log = new log();
+
+ $logdata = var_export((array) $ber, true);
+ $log->new = true;
+ $log->sql = $logdata;
+ $log->sqlundo = 'Kein Undo vorhanden';
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->mitarbeiter_uid = $user;
+ $log->beschreibung = 'Berechtigung gelöscht';
+
+ if(!$log->save())
+ {
+ $errorstr .= "Fehler beim schreiben des Log-Eintrags ";
+ }
+ }
+ }
+ if ($errorstr == '')
+ {
+ $successstr .= "".$i." Rechte erfolgreich gelöscht ";
+ }
+ }
+
+
+
+ //$reloadstr .= "";
+
+}
+
+if(isset($_POST['uebertragen']) && $_POST['uebertragen_nach'] != '')
+{
+ //echo '', var_dump($_POST), ' ';exit();
if($rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
{
- $uid = $_POST['uid'];
- $uid_von = $_POST['uid_von'];
+ $uidVon = $_POST['uid'];
+ $copyTo = $_POST['uebertragen_nach'];
- $rechtevon = new benutzerberechtigung();
- if(!$rechtevon->loadBenutzerRollen($uid_von))
- die('Fehler beim Laden der Berechtigung von '.$uid_von);
-
- foreach($rechtevon->berechtigungen AS $row)
+ if (isset($_POST['dataset']))
{
- //Nur aktive Berechtigungen kopieren
- if(($row->start=='' || $row->start<=date('Y-m-d')) && ($row->ende=='' || $row->ende>=date('Y-m-d')))
+ $i = 0;
+ foreach ($_POST['dataset'] AS $key => $value)
{
+ // Nur markierte Rechte kopieren
+ if (!isset($value['check']))
+ {
+ continue;
+ }
+
+ $rolle_kurzbz = (isset($value['rolle_kurzbz']) ? $value['rolle_kurzbz'] : '');
+ $berechtigung_kurzbz = (isset($value['berechtigung_kurzbz']) ? $value['berechtigung_kurzbz'] : '');
+ $art = (isset($value['art']) ? $value['art'] : '');
+ $oe_kurzbz = (isset($value['oe_kurzbz']) ? $value['oe_kurzbz'] : '');
+ $kostenstelle_id = (isset($value['kostenstelle_id']) ? $value['kostenstelle_id'] : '');
+ $start = (isset($value['start']) ? $value['start'] : '');
+ $ende = (isset($value['ende']) ? $value['ende'] : '');
+ $anmerkung = (isset($value['anmerkung']) ? $value['anmerkung'] : '');
+
+ $funktion_kurzbz = (isset($value['funktion_kurzbz']) ? $value['funktion_kurzbz'] : '');
+ $studiensemester_kurzbz = null;
+
$ber = new benutzerberechtigung();
- $ber->new = true;
- //$ber->benutzerberechtigung_id = $benutzerberechtigung_id;
- $ber->art = $row->art;
- $ber->oe_kurzbz = $row->oe_kurzbz;
- $ber->berechtigung_kurzbz = $row->berechtigung_kurzbz;
- $ber->rolle_kurzbz = $row->rolle_kurzbz;
- $ber->uid = $uid;
- $ber->funktion_kurzbz = $row->funktion_kurzbz;
- $ber->studiensemester_kurzbz = $row->studiensemester_kurzbz;
- $ber->start = $row->start;
- $ber->ende = $row->ende;
- $ber->negativ = $row->negativ;
- $ber->insertamum=date('Y-m-d H:i:s');
+ $ber->insertamum = date('Y-m-d H:i:s');
$ber->insertvon = $user;
+ $ber->new = true;
+
+ if (isset($value['negativ']))
+ $ber->negativ = true;
+ else
+ $ber->negativ = false;
+
+ $ber->art = $art;
+ $ber->oe_kurzbz = $oe_kurzbz;
+ $ber->berechtigung_kurzbz = $berechtigung_kurzbz;
+ $ber->rolle_kurzbz = $rolle_kurzbz;
+ $ber->uid = $copyTo;
+ $ber->funktion_kurzbz = $funktion_kurzbz;
+ $ber->studiensemester_kurzbz = $studiensemester_kurzbz;
+ $ber->start = $start;
+ $ber->ende = $ende;
$ber->updateamum = date('Y-m-d H:i:s');
$ber->updatevon = $user;
- $ber->kostenstelle_id = $row->kostenstelle_id;
- $ber->anmerkung = 'Kopiert von UID '.$uid_von.($row->anmerkung!=''?'. Anmerkung von UID '.$uid_von.': '.$row->anmerkung:'');
+ $ber->kostenstelle_id = $kostenstelle_id;
+ $ber->anmerkung = 'Kopiert von UID '.$uidVon.($anmerkung!=''?'. Anmerkung von UID '.$uidVon.': '.$anmerkung:'');
if(!$ber->save())
{
- if (!$ber->new)
- $errorstr .= "Datensatz konnte nicht gespeichert werden!".$ber->errormsg;
+ $errorstr .= "Datensatz konnte nicht gespeichert werden!".$ber->errormsg;
}
+ else
+ {
+ $i ++;
+ //Log schreiben
+ $log = new log();
+
+ $logdata = var_export((array) $ber, true);
+ $log->new = true;
+ $log->sql = $logdata;
+ $log->sqlundo = 'Kein Undo vorhanden';
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->mitarbeiter_uid = $user;
+ $log->beschreibung = 'Berechtigung übertragen von '.$uidVon.' nach '.$copyTo;
+
+ if(!$log->save())
+ {
+ $errorstr .= "Fehler beim schreiben des Log-Eintrags ";
+ }
+ }
+ }
+ if ($errorstr == '')
+ {
+ $successstr .= "".$i." Rechte erfolgreich kopiert ";
+ echo "";
}
}
}
@@ -140,71 +259,220 @@ if(isset($_POST['kopieren']))
}
}
-if(isset($_POST['schick']) || isset($_POST['copy']))
+if(isset($_POST['setDate_multi']) && $_POST['setDate_multi'] != '')
+{
+ if(!$rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
+ die($rechte->errormsg);
+
+ if (isset($_POST['dataset']))
+ {
+ $i = 0;
+ foreach ($_POST['dataset'] AS $benutzerberechtigung_id => $value)
+ {
+ // Nur markierte Einträge bearbeiten
+ if (!isset($value['check']))
+ {
+ continue;
+ }
+
+ $ber = new benutzerberechtigung();
+ if(!$ber->load($benutzerberechtigung_id))
+ {
+ die('Fehler beim Laden der Berechtigung');
+ }
+
+ $ber->ende = date('Y-m-d',strtotime("-1 days"));
+ $ber->updateamum = date('Y-m-d H:i:s');
+ $ber->updatevon = $user;
+
+ if(!$ber->save())
+ {
+ $errorstr .= "Das Ende-Datum des Datensatzes mit der ID ".$benutzerberechtigung_id." konnte nicht gespeichert werden!".$ber->errormsg;
+ }
+ else
+ {
+ $i ++;
+ //Log schreiben
+ $log = new log();
+
+ $logdata = var_export((array) $ber, true);
+ $log->new = true;
+ $log->sql = $logdata;
+ $log->sqlundo = 'Kein Undo vorhanden';
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->mitarbeiter_uid = $user;
+ $log->beschreibung = 'Berechtigung für '.$uid.' beendet';
+
+ if(!$log->save())
+ {
+ $errorstr .= "Fehler beim schreiben des Log-Eintrags ";
+ }
+ }
+ }
+ if ($errorstr == '')
+ {
+ $successstr .= "Ende-Datum bei ".$i." Rechten erfolgreich beendet ";
+ }
+ }
+
+
+
+ //$reloadstr .= "";
+
+}
+
+if(isset($_POST['schick']))
{
if($rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
{
- $benutzerberechtigung_id = $_POST['benutzerberechtigung_id'];
- $art = $_POST['art'];
- $oe_kurzbz = (isset($_POST['oe_kurzbz'])?$_POST['oe_kurzbz']:'');
- $berechtigung_kurzbz = (isset($_POST['berechtigung_kurzbz'])?$_POST['berechtigung_kurzbz']:'');
- $rolle_kurzbz = (isset($_POST['rolle_kurzbz'])?$_POST['rolle_kurzbz']:'');
- $uid = $_POST['uid'];
- $funktion_kurzbz = $_POST['funktion_kurzbz'];
- $studiensemester_kurzbz = null;//$_POST['studiensemester_kurzbz'];
- $start = $_POST['start'];
- $ende = $_POST['ende'];
- $kostenstelle_id = (isset($_POST['kostenstelle_id'])?$_POST['kostenstelle_id']:'');
- $anmerkung = (isset($_POST['anmerkung'])?$_POST['anmerkung']:'');
+ if (isset($_POST['dataset']))
+ {
+ foreach ($_POST['dataset'] AS $benutzerberechtigung_id => $value)
+ {
+ $rolle_kurzbz = (isset($value['rolle_kurzbz']) ? $value['rolle_kurzbz'] : '');
+ $berechtigung_kurzbz = (isset($value['berechtigung_kurzbz']) ? $value['berechtigung_kurzbz'] : '');
+ $art = (isset($value['art']) ? $value['art'] : '');
+ $oe_kurzbz = (isset($value['oe_kurzbz']) ? $value['oe_kurzbz'] : '');
+ //echo '', var_dump($oe_kurzbz), ' ';
+ $kostenstelle_id = (isset($value['kostenstelle_id']) ? $value['kostenstelle_id'] : '');
+ $start = (isset($value['start']) ? $value['start'] : '');
+ $ende = (isset($value['ende']) ? $value['ende'] : '');
+ $uid = $_POST['uid'];
+ $anmerkung = (isset($value['anmerkung']) ? $value['anmerkung'] : '');
+ $funktion_kurzbz = (isset($_POST['funktion_kurzbz']) ? $_POST['funktion_kurzbz'] : '');
+ $studiensemester_kurzbz = null;
+
+ $ber = new benutzerberechtigung();
+ if (isset($_POST['neu']))
+ {
+ $ber->insertamum = date('Y-m-d H:i:s');
+ $ber->insertvon = $user;
+ $ber->new = true;
+ }
+ else
+ {
+ if(!$ber->load($benutzerberechtigung_id))
+ {
+ die('Fehler beim Laden der Berechtigung');
+ }
+ //Nur bei geänderten Datensätzen das Updatedatum setzen
+ if ($ber->berechtigung_kurzbz != $berechtigung_kurzbz
+ || $ber->art != $art
+ || $ber->oe_kurzbz != $oe_kurzbz
+ || $ber->rolle_kurzbz != $rolle_kurzbz
+ || $ber->uid != $uid
+ || $ber->funktion_kurzbz != $funktion_kurzbz
+ || $ber->studiensemester_kurzbz != $studiensemester_kurzbz
+ || $ber->start != $start
+ || $ber->ende != $ende
+ || $ber->kostenstelle_id != $kostenstelle_id
+ || $ber->anmerkung != $anmerkung
+ || $ber->negativ != isset($value['negativ'])
+ )
+ {
+ $ber->updateamum = date('Y-m-d H:i:s');
+ $ber->updatevon = $user;
+ }
+ }
+ if (isset($value['negativ']))
+ $ber->negativ = true;
+ else
+ $ber->negativ = false;
+
+ $ber->benutzerberechtigung_id = $benutzerberechtigung_id;
+ $ber->art = $art;
+ $ber->oe_kurzbz = $oe_kurzbz;
+ $ber->berechtigung_kurzbz = $berechtigung_kurzbz;
+ $ber->rolle_kurzbz = $rolle_kurzbz;
+ $ber->uid = $uid;
+ $ber->funktion_kurzbz = $funktion_kurzbz;
+ $ber->studiensemester_kurzbz = $studiensemester_kurzbz;
+ $ber->start = $start;
+ $ber->ende = $ende;
+ $ber->kostenstelle_id = $kostenstelle_id;
+ $ber->anmerkung = $anmerkung;
+
+ if(!$ber->save())
+ {
+ if (!$ber->new)
+ $errorstr .= "Datensatz konnte nicht upgedatet werden!".$ber->errormsg;
+ else
+ $errorstr .= "Datensatz konnte nicht gespeichert werden!".$ber->errormsg;
+ }
+ else
+ {
+ //Log schreiben
+ $log = new log();
+
+ $logdata = var_export((array) $ber, true);
+ $log->new = true;
+ $log->sql = $logdata;
+ $log->sqlundo = 'Kein Undo vorhanden';
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->mitarbeiter_uid = $user;
+ if (isset($_POST['neu']))
+ $log->beschreibung = 'Neue Berechtigung für '.$uid.' angelegt';
+ else
+ $log->beschreibung = 'Berechtigung für '.$uid.' aktualisiert';
+
+ if(!$log->save())
+ {
+ $errorstr .= "Fehler beim schreiben des Log-Eintrags ";
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ $errorstr.='Fehler beim Speichern: '.$rechte->errormsg;
+ }
+}
+
+if(isset($_POST['copy']) && $_POST['copy'] != '')
+{
+ if($rechte->isBerechtigt('basis/berechtigung', null, 'suid'))
+ {
$ber = new benutzerberechtigung();
- if (isset($_POST['neu']) || isset($_POST['copy']))
- {
- $ber->insertamum=date('Y-m-d H:i:s');
- $ber->insertvon = $user;
- $ber->new = true;
- }
- else
- {
- if(!$ber->load($benutzerberechtigung_id))
- die('Fehler beim Laden der Berechtigung');
- }
- if (isset($_POST['negativ']))
- $ber->negativ = true;
- else
- $ber->negativ = false;
+ if(!$ber->load($_POST['copy']))
+ die('Fehler beim Laden der Berechtigung');
- $ber->benutzerberechtigung_id = $benutzerberechtigung_id;
- $ber->art = $art;
- $ber->oe_kurzbz = $oe_kurzbz;
- $ber->berechtigung_kurzbz = $berechtigung_kurzbz;
- $ber->rolle_kurzbz = $rolle_kurzbz;
- $ber->uid = $uid;
- $ber->funktion_kurzbz = $funktion_kurzbz;
- $ber->studiensemester_kurzbz = $studiensemester_kurzbz;
- $ber->start = $start;
- $ber->ende = $ende;
- $ber->updateamum = date('Y-m-d H:i:s');
- $ber->updatevon = $user;
- $ber->kostenstelle_id = $kostenstelle_id;
- $ber->anmerkung = $anmerkung;
+ $ber->new = true;
+ $ber->insertamum = date('Y-m-d H:i:s');
+ $ber->insertvon = $user;
- if(!$ber->save()){
+ if(!$ber->save())
+ {
if (!$ber->new)
$errorstr .= "Datensatz konnte nicht upgedatet werden!".$ber->errormsg;
else
$errorstr .= "Datensatz konnte nicht gespeichert werden!".$ber->errormsg;
}
- /*if ($ber->new)
+ else
{
- $reloadstr .= "\n";
- }*/
+ //Log schreiben
+ $log = new log();
+
+ $logdata = var_export((array) $ber, true);
+ $log->new = true;
+ $log->sql = $logdata;
+ $log->sqlundo = 'Kein Undo vorhanden';
+ $log->executetime = date('Y-m-d H:i:s');
+ $log->mitarbeiter_uid = $user;
+ $log->beschreibung = 'Berechtigung für '.$uid.' kopiert';
+
+ if(!$log->save())
+ {
+ $errorstr .= "Fehler beim schreiben des Log-Eintrags ";
+ }
+ }
}
else
{
- $errorstr.='Fehler beim Speichern: Sie haben keine Berechtigung zum Speichern';
+ $errorstr.='Fehler beim Speichern: '.$rechte->errormsg;
}
}
@@ -214,16 +482,17 @@ if (!$b = new berechtigung())
$b->getRollen();
foreach($b->result as $berechtigung)
{
- $rolle_arr[] = $berechtigung->rolle_kurzbz;
+ $rolle_arr[$berechtigung->rolle_kurzbz] = $berechtigung->beschreibung;
}
-sort($rolle_arr);
+ksort($rolle_arr, SORT_STRING | SORT_FLAG_CASE);
+
$b->getBerechtigungen();
foreach($b->result as $berechtigung)
{
- $berechtigung_arr[] = $berechtigung->berechtigung_kurzbz;
+ $berechtigung_arr[$berechtigung->berechtigung_kurzbz] = $berechtigung->beschreibung;
$berechtigung_beschreibung_arr[] = $berechtigung->beschreibung;
}
-//var_dump($berechtigung_arr);
+
$st = new studiensemester();
$st->getAll();
foreach($st->studiensemester as $studiensemester)
@@ -233,9 +502,17 @@ foreach($st->studiensemester as $studiensemester)
$oe = new organisationseinheit();
$oe->getAll();
+foreach ($oe->result AS $row)
+{
+ $oe_arr[$row->oe_kurzbz] = $row->organisationseinheittyp_kurzbz.' '.$row->bezeichnung;
+}
$kostenstelle = new wawi_kostenstelle();
$kostenstelle->getAll();
+foreach ($kostenstelle->result AS $row)
+{
+ $kst_arr[$row->kostenstelle_id] = $row->bezeichnung;
+}
if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
{
@@ -259,13 +536,25 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$rights->loadBenutzerRollen($uid);
$name = new benutzer();
$name->load($uid);
- $htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.") \n";
- //Formular zum Kopieren von Berechtigungen
- $htmlstr .= "\n";
+
+ $htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.") ";
+ $message = '';
+ $class = '';
+ if ($errorstr != '' || $successstr != '')
+ {
+ if ($successstr != '')
+ {
+ $class = 'class="alert alert-success"';
+ $message = $successstr;
+ }
+ elseif ($errorstr != '')
+ {
+ $class = 'class="alert alert-danger"';
+ $message = $errorstr;
+ }
+ }
+ $htmlstr .= ' '.$message.'
';
+
$i = 0;
// Zusätzlich jede Funktion mit einer gültigen Berechtigung anzeigen
@@ -284,6 +573,7 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$rechte_funktion = new benutzerberechtigung();
$rechte_funktion->loadBenutzerRollen(null, $recht);
$funktionsrecht = $rechte_funktion->berechtigungen; // Hat die Funktion ein Recht?
+ $anzahlFunktionsrechte = count($funktionsrecht);
$funktion_bezeichnung = new funktion();
$funktion_bezeichnung->load($recht);
if(!empty($funktionsrecht))
@@ -291,11 +581,26 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
$i++;
if ($i==1)
{
- $htmlstr .= "Geerbte Berechtigungen aus Funktion\n";
+ $htmlstr .= "Geerbte Berechtigungen aus Funktion(en): ";
}
- $htmlstr .= ($i>1?", ":" ").$funktion_bezeichnung->beschreibung." ";
+ if ($i > 1)
+ {
+ $htmlstr .= ", ";
+ }
+
+ $htmlstr .= "";
+ $htmlstr .= $funktion_bezeichnung->beschreibung;
+ $htmlstr .= " (".$anzahlFunktionsrechte.")";
}
}
+ if(isset($funktionsrecht))
+ {
+ $htmlstr .= '
';
+ }
+ }
+ if (count($bn) > 0)
+ {
+ $htmlstr .= "Rechte Details
";
}
}
elseif(isset($_REQUEST['funktion_kurzbz']) && $_REQUEST['funktion_kurzbz']!='')
@@ -307,10 +612,10 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
die('Funktion existiert nicht');
$rights->loadBenutzerRollen(null, $funktion_kurzbz);
- $htmlstr .= "Berechtigungen der Funktion ".$funktion->beschreibung." \n";
+ $htmlstr .= "Berechtigungen der Funktion ".$funktion->beschreibung." ";
}
- //$htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.")".$funktion_kurzbz." \n";
+ //$htmlstr .= "Berechtigungen von ".$name->nachname." ".$name->vorname." (".$uid.")".$funktion_kurzbz." ";
/*$htmlstr .= ' Filter:
Alle
| nur WaWi
@@ -318,80 +623,76 @@ if (isset($_REQUEST['uid']) || isset($_REQUEST['funktion_kurzbz']))
';*/
- $htmlstr .= "\n"; //Alternatives styling fuer Tablesorter um Platz zu sparen.
- $htmlstr .= " \n";
+ ////////////////
+ // Neue Berechtigung einfügen
+ ////////////////
+
+ $htmlstr .= "";
+ $htmlstr .= " ";
$htmlstr .= "
Rolle
Berechtigung
Art
- Organisationseinheit
- Kostenstelle
-
+ Organisationseinheit
+ Kostenstelle
Neg
Gültig ab
Gültig bis
Anmerkung
- Info
-
-
- \n";
+ ";
- $htmlstr .= "\n";
- $htmlstr .= "";
+ $htmlstr .= "
";
+
+ $htmlstr .= " ";
+
+ ////////////////
+ // Tabelle für bestehende Berechtigungen
+ ////////////////
+
+ $htmlstr .= "
";
+ $htmlstr .= "";
+
+ $htmlstr .= " ";
+ $htmlstr .= " ";
+ /*$htmlstr .= "
+ ";*/
+ $htmlstr .= "\n";
-
+ $htmlstr .= "
";
+ $htmlstr .= '';
+ $htmlstr .= "";
+ $htmlstr .= " ";
}
-$htmlstr .= "".$errorstr."
\n";
+
?>
@@ -633,60 +992,218 @@ $htmlstr .= "".$errorstr."
\n";
+
-
-
+
+
+
+
+
-
+
-
+
+
- Berechtigung - Rolle - Übersicht
+ Berechtigung - Rolle -
deleteRolleBerechtigung($rolle_kurzbz, $berechtigung_kurzbz)): ?>
Fehler beim Löschen: errormsg ?>
- Berechtigung gelöscht!
+ Berechtigung gelöscht!
-
- Zurück
+ Zurück zur Rollenübersicht
- RolleBerechtigung "":
-
+
getBerechtigungen();
?>
+
-
+
getRolleBerechtigung($rolle_kurzbz);
$berechtigungen_arr = array();
foreach ($berechtigungen->result as $row)
@@ -137,10 +199,10 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
berechtigung_kurzbz,$berechtigungen_arr)!==false ? 'disabled' : '' ?>>
berechtigung_kurzbz ?>
-
-
-
-
+
+
+
+
@@ -154,6 +216,8 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
getRolleBerechtigung($rolle_kurzbz);
foreach($berechtigungen->result as $rolle): ?>
@@ -161,7 +225,7 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
art ?>
beschreibung ?>
-
+
entfernen
@@ -270,24 +334,24 @@ $delete = filter_input(INPUT_GET, 'delete', FILTER_VALIDATE_BOOLEAN);
-
+