Anpassungen fuer Abrechnungsaddon, Diverse Security Fixes

This commit is contained in:
Andreas Österreicher
2014-11-21 08:35:51 +00:00
parent 7bc35de303
commit 2e46b78914
12 changed files with 234 additions and 22 deletions
@@ -53,7 +53,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
<!-- **************** -->
<!-- * MITARBEITER * -->
<!-- **************** -->
<vbox id="MitarbeiterEditor" persist="height">
<vbox id="MitarbeiterEditor" persist="height" flex="1">
<popupset>
<menupopup id="mitarbeiter-tree-popup">
<menuitem label="EMail versenden" oncommand="MitarbeiterSendMail();" id="mitarbeiter-tree-popup-mail" hidden="false"/>
@@ -73,7 +73,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
</toolbar>
</toolbox>
</hbox>
<box style="height: 100px;">
<!-- ************ -->
<!-- * TREE * -->
<!-- ************ -->
@@ -82,7 +82,6 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
onselect="MitarbeiterAuswahl();"
flags="dont-build-content"
enableColumnDrag="true"
style="margin:0px;"
persist="hidden, height"
context="mitarbeiter-tree-popup"
>
@@ -228,7 +227,7 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
</rule>
</template>
</tree>
</box>
<splitter collapse="after" persist="state">
<grippy />
</splitter>
@@ -236,8 +235,8 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/mitarbeiter/mitarbeitervertragover
<!-- ************ -->
<!-- * TABS * -->
<!-- ************ -->
<vbox flex="1" style="overflow:auto;margin:0px;" persist="height">
<tabbox id="mitarbeiter-tabbox" flex="3" orient="vertical">
<vbox persist="height" flex="1">
<tabbox id="mitarbeiter-tabbox" orient="vertical" flex="1">
<tabs orient="horizontal" id="mitarbeiter-tabs">
<tab id="mitarbeiter-tab-detail" label="Stammdaten" />
<tab id="mitarbeiter-tab-kontakt" label="Kontaktdaten" />
+18 -2
View File
@@ -29,14 +29,30 @@ var MitarbeiterVertragLoadedPerson=null
function MitarbeiterVertragLoad(person_id)
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
if(typeof(person_id)=='undefined' && MitarbeiterVertragLoadedPerson!='')
{
person_id = MitarbeiterVertragLoadedPerson;
}
if(person_id=='')
return;
MitarbeiterVertragLoadedPerson=person_id;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Aktiven Filter Eintrag holen
var filterpopup = document.getElementById('mitarbeiter-vertrag-menupopup-filter');
var e = filterpopup.getElementsByTagName("menuitem");
var filter;
for (var i = 0; i < e.length; i++)
{
if (e[i].getAttribute("checked"))
filter=e[i].value
}
// *** Vertrag ***
var treevertrag = document.getElementById('mitarbeiter-vertrag-tree');
url='<?php echo APP_ROOT;?>rdf/vertrag.rdf.php?person_id='+person_id+"&"+gettimestamp();
url='<?php echo APP_ROOT;?>rdf/vertrag.rdf.php?person_id='+person_id+"&filter="+filter+"&"+gettimestamp();
//Alte DS entfernen
var oldDatasources = treevertrag.database.GetDataSources();
@@ -58,9 +58,18 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<vbox flex="1">
<vbox flex="1">
<hbox>
<description>Verträge</description>
<spacer flex="1" />
<button label="Neuen Vertrag erstellen" oncommand="MitarbeiterVertragAddVertrag()" />
<toolbox flex="1">
<toolbar>
<toolbarbutton label="Filter " id="mitarbeiter-vertrag-filter" type="menu">
<menupopup id="mitarbeiter-vertrag-menupopup-filter">
<menuitem type="radio" value="alle" label="Alle Verträge anzeigen" oncommand="MitarbeiterVertragLoad()"/>
<menuitem type="radio" value="offen" label="Offene Verträge anzeigen" checked="true" oncommand="MitarbeiterVertragLoad()"/>
</menupopup>
</toolbarbutton>
<spacer flex="1" />
<toolbarbutton id="mitarbeiter-vertrag-toolbarbutton-neu" tooltiptext="Neu" image="../skin/images/NeuDokument.png" label="Neuen Vertrag erstellen" oncommand="MitarbeiterVertragAddVertrag()" />
</toolbar>
</toolbox>
</hbox>
<tree id="mitarbeiter-vertrag-tree" hidecolumnpicker="false" flex="1"
datasources="rdf:null" ref="http://www.technikum-wien.at/vertrag"
@@ -84,6 +93,10 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<treecol id="mitarbeiter-vertrag-tree-vertragstyp" label="Vertragstyp" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/vertrag/rdf#vertragstyp_bezeichnung" />
<splitter class="tree-splitter"/>
<treecol id="mitarbeiter-vertrag-tree-status" label="Status" flex="2" hidden="false"
class="sortDirectionIndicator"
sort="rdf:http://www.technikum-wien.at/vertrag/rdf#status" />
<splitter class="tree-splitter"/>
<treecol id="mitarbeiter-vertrag-tree-vertragstyp_kurzbz" label="VertragstypKurzbz" flex="2" hidden="true"
class="sortDirectionIndicator"
@@ -102,6 +115,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<treecell label="rdf:http://www.technikum-wien.at/vertrag/rdf#bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/vertrag/rdf#betrag"/>
<treecell label="rdf:http://www.technikum-wien.at/vertrag/rdf#vertragstyp_bezeichnung"/>
<treecell label="rdf:http://www.technikum-wien.at/vertrag/rdf#status"/>
<treecell label="rdf:http://www.technikum-wien.at/vertrag/rdf#vertragstyp_kurzbz"/>
<treecell label="rdf:http://www.technikum-wien.at/vertrag/rdf#vertrag_id"/>
</treerow>
+50
View File
@@ -231,5 +231,55 @@ class anwesenheit extends basis_db
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) 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(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;
}
}
}
?>
+1 -1
View File
@@ -67,7 +67,7 @@ class benutzer extends person
}
else
{
$this->errormsg = "Kein Eintrag gefunden fuer $uid";
$this->errormsg = "Benutzer nicht gefunden";
return false;
}
}
+102 -1
View File
@@ -44,6 +44,7 @@ class bisverwendung extends basis_db
public $insertamum;
public $insertvon;
public $ext_id;
public $dv_art;
public $ba1bez;
public $ba2bez;
@@ -369,5 +370,105 @@ class bisverwendung extends basis_db
return false;
}
}
/**
* Laedt alle Verwendungen eines Mitarbeiters deren Datumsbereich das Datum einschliesst
* @param $uid UID des Mitarbeiters
* @param $monat Monat in dem die Verwendung liegen soll
* @return true wenn ok, false wenn Fehler
*/
public function getVerwendungDatum($uid, $datum)
{
//laden des Datensatzes
$qry = "SELECT
*
FROM
bis.tbl_bisverwendung
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
AND (beginn<=".$this->db_add_param($datum)." OR beginn is null)
AND (ende>=".$this->db_add_param($datum)." OR ende is null)
ORDER BY beginn;";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new bisverwendung();
$obj->bisverwendung_id = $row->bisverwendung_id;
$obj->ba1code = $row->ba1code;
$obj->ba2code = $row->ba2code;
$obj->beschausmasscode = $row->beschausmasscode;
$obj->verwendung_code = $row->verwendung_code;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->hauptberufcode = $row->hauptberufcode;
$obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich);
$obj->habilitation = $this->db_parse_bool($row->habilitation);
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->updatevon = $row->updatevon;
$obj->updateamum = $row->updateamum;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->vertragsstunden = $row->vertragsstunden;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
/**
* Laedt alle Verwendungen eines Mitarbeiters
* @param $uid UID des Mitarbeiters
* @return true wenn ok, false wenn Fehler
*/
public function getLastVerwendung($uid)
{
//laden des Datensatzes
$qry = "SELECT
*
FROM
bis.tbl_bisverwendung
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
ORDER BY beginn DESC LIMIT 1;";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->bisverwendung_id = $row->bisverwendung_id;
$this->ba1code = $row->ba1code;
$this->ba2code = $row->ba2code;
$this->beschausmasscode = $row->beschausmasscode;
$this->verwendung_code = $row->verwendung_code;
$this->mitarbeiter_uid = $row->mitarbeiter_uid;
$this->hauptberufcode = $row->hauptberufcode;
$this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich);
$this->habilitation = $this->db_parse_bool($row->habilitation);
$this->beginn = $row->beginn;
$this->ende = $row->ende;
$this->updatevon = $row->updatevon;
$this->updateamum = $row->updateamum;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->vertragsstunden = $row->vertragsstunden;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
?>
?>
+2 -2
View File
@@ -707,7 +707,7 @@ class studiensemester extends basis_db
}
}
/**
* untersucht das bergebene datum in welchem semester es sich befindet
* untersucht das uebergebene datum in welchem semester es sich befindet
* @param type $datum
* @return boolean
*/
@@ -715,7 +715,7 @@ class studiensemester extends basis_db
{
if($datum == '')
{
$this->errormsg = "Ungueltiges Datum bergeben";
$this->errormsg = "Ungueltiges Datum uebergeben";
return false;
}
$qry = "SELECT * FROM public.tbl_studiensemester WHERE start <=".$this->db_add_param($datum, FHC_STRING)." AND ende >= ".$this->db_add_param($datum).';';
+10 -2
View File
@@ -82,17 +82,24 @@ class vertrag extends basis_db
* @param $person_id
* @return boolean true wenn ok ,false im Fehlerfall
*/
public function loadVertrag($person_id)
public function loadVertrag($person_id, $abgerechnet=null)
{
$qry = "SELECT
*,
tbl_vertrag.bezeichnung as bezeichnung,
tbl_vertragstyp.bezeichnung as vertragstyp_bezeichnung
tbl_vertragstyp.bezeichnung as vertragstyp_bezeichnung,
(SELECT bezeichnung FROM lehre.tbl_vertragsstatus JOIN lehre.tbl_vertrag_vertragsstatus USING(vertragsstatus_kurzbz)
WHERE vertrag_id=tbl_vertrag.vertrag_id ORDER BY datum desc limit 1) as status
FROM
lehre.tbl_vertrag
LEFT JOIN lehre.tbl_vertragstyp USING(vertragstyp_kurzbz)
WHERE person_id=".$this->db_add_param($person_id);
if($abgerechnet===true)
$qry.=" AND EXISTS (SELECT 1 FROM lehre.tbl_vertrag_vertragsstatus WHERE vertrag_id=tbl_vertrag.vertrag_id AND vertragsstatus_kurzbz='abgerechnet')";
if($abgerechnet===false)
$qry.=" AND NOT EXISTS (SELECT 1 FROM lehre.tbl_vertrag_vertragsstatus WHERE vertrag_id=tbl_vertrag.vertrag_id AND vertragsstatus_kurzbz='abgerechnet')";
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
@@ -108,6 +115,7 @@ class vertrag extends basis_db
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->status = $row->status;
$obj->vertragstyp_bezeichnung = $row->vertragstyp_bezeichnung;
+2 -2
View File
@@ -49,7 +49,7 @@ $qry = "SELECT le.lehreinheit_id, le.lehrveranstaltung_id, lv.lvnr, lv.bezeichnu
. "FROM lehre.tbl_lehreinheit le "
. "JOIN lehre.tbl_lehrveranstaltung lv ON lv.lehrveranstaltung_id = le.lehrveranstaltung_id "
. "JOIN public.tbl_studiengang stg ON stg.studiengang_kz = lv.studiengang_kz "
. "JOIN lehre.tbl_stundenplan sp ON (sp.unr = le.unr AND sp.studiengang_kz = " . $db->db_add_param($studiengang) . ") "
. "JOIN lehre.tbl_stundenplan sp ON (sp.lehreinheit_id=le.lehreinheit_id) "
. "JOIN lehre.tbl_stunde stu ON stu.stunde = sp.stunde "
. "WHERE stg.studiengang_kz = " . $db->db_add_param($studiengang) . " ";
@@ -180,4 +180,4 @@ foreach($data as $lehreinheit_id => $value)
echo "</anwesenheitslisten>";
?>
?>
+11 -2
View File
@@ -37,8 +37,16 @@ if(isset($_GET['person_id']))
{
$person_id=$_GET['person_id'];
$vertrag = new vertrag();
if(!$vertrag->loadVertrag($person_id))
die('Fehlgeschlagen:'.$vertrag->errormsg);
if(isset($_GET['filter']) && $_GET['filter']=='offen')
{
if(!$vertrag->loadVertrag($person_id, false))
die('Fehlgeschlagen:'.$vertrag->errormsg);
}
else
{
if(!$vertrag->loadVertrag($person_id))
die('Fehlgeschlagen:'.$vertrag->errormsg);
}
}
elseif(isset($_GET['vertrag_id']))
{
@@ -62,6 +70,7 @@ foreach($vertrag->result as $row)
$oRdf->obj[$i]->setAttribut('vertragstyp_kurzbz',$row->vertragstyp_kurzbz,true);
$oRdf->obj[$i]->setAttribut('vertragstyp_bezeichnung',$row->vertragstyp_bezeichnung,true);
$oRdf->obj[$i]->setAttribut('betrag',$row->betrag,true);
$oRdf->obj[$i]->setAttribut('status',$row->status,true);
$oRdf->addSequence($row->vertrag_id);
}
+1 -1
View File
@@ -73,7 +73,7 @@ foreach($vertrag->result as $row)
}
$i=$oRdf->newObjekt($key);
$oRdf->obj[$i]->setAttribut('type',$row->type,true);
$oRdf->obj[$i]->setAttribut('betrag',number_format($row->betrag,2),true);
$oRdf->obj[$i]->setAttribut('betrag',number_format($row->betrag,2,'.',''),true);
$oRdf->obj[$i]->setAttribut('studiensemester_kurzbz',$row->studiensemester_kurzbz,true);
$oRdf->obj[$i]->setAttribut('lehreinheit_id',$row->lehreinheit_id,true);
$oRdf->obj[$i]->setAttribut('pruefung_id',$row->pruefung_id,true);
+15
View File
@@ -2108,6 +2108,20 @@ if(!$result = @$db->db_query("SELECT sort FROM lehre.tbl_studienplan_lehrveranst
echo ' lehre.tbl_studienplan_lehrveranstaltung: Spalte sort hinzugefuegt!<br>';
}
// Spalte sort in lehre.tbl_studienplan_lehrveranstaltung
if($result = $db->db_query("select * from information_schema.key_column_usage where constraint_name='fk_vertragsstatus_vertrag_vertragsstatus'"))
{
if($db->db_num_rows($result)==0)
{
$qry = "ALTER TABLE lehre.tbl_vertrag_vertragsstatus ADD CONSTRAINT fk_vertragsstatus_vertrag_vertragsstatus FOREIGN KEY (vertragsstatus_kurzbz) REFERENCES lehre.tbl_vertragsstatus(vertragsstatus_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;";
if(!$db->db_query($qry))
echo '<strong>lehre.tbl_vertrag_vertragsstatus: '.$db->db_last_error().'</strong><br>';
else
echo ' lehre.tbl_vertrag_vertragsstatus: fehlenden FK hinzugefuegt!<br>';
}
}
// Spalte sort in fue.tbl_aktivitaet
if(!$result = @$db->db_query("SELECT sort FROM fue.tbl_aktivitaet LIMIT 1;"))
{
@@ -2517,6 +2531,7 @@ $berechtigungen = array(
array('system/loginasuser','Berechtigung zum Einloggen als anderer User'),
array('user','Normale User ohne besonere Rechte'),
array('veranstaltung','Berechtigungen fuer Veranstaltungen wie Jahresplan'),
array('vertrag/mitarbeiter','Verwalten von Vertraegen'),
array('vertrag/typen','Verwalten von Vertragstypen'),
array('wawi/berichte','Alle Berichte anzeigen'),
array('wawi/bestellung','Bestellungen verwalten'),