Anwesenheiten im FAS bei Studenten und Lehrveranstaltungen sichtbar

This commit is contained in:
oesi
2015-07-01 19:33:54 +02:00
parent 9c8ef52229
commit 5751969fcf
13 changed files with 495 additions and 18 deletions
+137
View File
@@ -305,6 +305,54 @@ class anwesenheit extends basis_db
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 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.
*
@@ -384,4 +432,93 @@ class anwesenheit extends basis_db
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, nachname, uid, sum(anwesend) as anwesend, sum(nichtanwesend) as nichtanwesend, sum(gesamtstunden) as gesamtstunden FROM (
SELECT
lehrveranstaltung_id, bezeichnung, vorname, 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 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, 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->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;
}
}
}
+11 -3
View File
@@ -104,13 +104,15 @@ class rdf
* @param $value
* @param $cdata
*/
public function setAttribut($name,$value,$cdata=true)
public function setAttribut($name,$value,$cdata=true, $parsetype=null)
{
if(!isset($this->attr[$this->counter]))
$this->attr[$this->counter] = new stdClass();
$this->attr[$this->counter]->name=$name;
$this->attr[$this->counter]->value=$value;
$this->attr[$this->counter]->cdata=$cdata;
if(!is_null($parsetype))
$this->attr[$this->counter]->parseType=$parsetype;
$this->counter++;
//var_dump($this->attr);
return true;
@@ -122,7 +124,7 @@ class rdf
public function createRdfHeader()
{
$this->rdf_text="\n".'<RDF:RDF'."\n\t"
.'xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n\t".'xmlns:'.$this->xml_ns.'="'.$this->rdf_url.'/rdf#"'."\n".'>'."\n\t";
.'xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'."\n\t".'xmlns:nc="http://home.netscape.com/NC-rdf#"'."\n\t".'xmlns:'.$this->xml_ns.'="'.$this->rdf_url.'/rdf#"'."\n".'>'."\n\t";
}
/**
@@ -134,7 +136,13 @@ class rdf
{
$this->rdf_text.="\n\t\t".'<RDF:Description id="'.$obj->obj_id.'" about="'.$this->rdf_url.'/'.$obj->obj_id.'" >';
foreach ($obj->attr as $attr)
$this->rdf_text.="\n\t\t\t<".$this->xml_ns.':'.$attr->name.'><![CDATA['.$attr->value.']]></'.$this->xml_ns.':'.$attr->name.'>';
{
if(isset($attr->parseType))
$parsetype = 'nc:parseType="'.$attr->parseType.'"';
else
$parsetype='';
$this->rdf_text.="\n\t\t\t<".$this->xml_ns.':'.$attr->name.' '.$parsetype.'><![CDATA['.$attr->value.']]></'.$this->xml_ns.':'.$attr->name.'>';
}
$this->rdf_text.="\n\t\t".'</RDF:Description>';
}
}