This commit is contained in:
kindlm
2017-10-11 10:25:50 +02:00
22 changed files with 1921 additions and 3441 deletions
+1
View File
@@ -24,6 +24,7 @@
- **[CORE]** Infoscreen wurde umbenannt (informationsbildschirm.php)
- **[CORE]** Moodle Schnittstelle wurde aus dem Core entfernt und in ein eigenes Addon verschoben. Moodle Versionen < 2.4 werden nicht mehr unterstützt
- **[CORE]** Update campus.tbl_templates (contentmittitel and contentohnetitel) with system/templates/contentmittitel_xslt_xhtml.xslt andsystem/templates/contentohnetitel_xslt_xhtml.xslt
- **[CORE]** Neue Style Anweisungen (div.header_logo, td.headerbar, div.cis_logo) müssen in Custom Stylesheet hinzugefügt werden
## [3.2]
@@ -182,8 +182,7 @@ class Studiengang_model extends DB_Model
(
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_parent_kurzbz IS NULL
AND o.oe_kurzbz = '.$this->escape($oe_kurzbz).'
WHERE o.oe_kurzbz = '.$this->escape($oe_kurzbz).'
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk)
@@ -358,8 +357,7 @@ class Studiengang_model extends DB_Model
(
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_parent_kurzbz IS NULL
AND o.oe_kurzbz = '.$this->escape($oe_kurzbz).'
WHERE o.oe_kurzbz = '.$this->escape($oe_kurzbz).'
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk)
+1 -2
View File
@@ -72,8 +72,7 @@ class Message_model extends DB_Model
(
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_parent_kurzbz IS NULL
AND o.oe_kurzbz = ?
WHERE o.oe_kurzbz = ?
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk)
@@ -146,8 +146,7 @@ class Recipient_model extends DB_Model
(
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_parent_kurzbz IS NULL
AND o.oe_kurzbz = ?
WHERE o.oe_kurzbz = ?
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk)
@@ -225,8 +224,7 @@ class Recipient_model extends DB_Model
(
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_parent_kurzbz IS NULL
AND o.oe_kurzbz = ?
WHERE o.oe_kurzbz = ?
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk)
@@ -346,8 +344,7 @@ class Recipient_model extends DB_Model
(
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o
WHERE o.oe_parent_kurzbz IS NULL
AND o.oe_kurzbz = ?
WHERE o.oe_kurzbz = ?
UNION ALL
SELECT o.oe_kurzbz, o.oe_parent_kurzbz
FROM public.tbl_organisationseinheit o INNER JOIN organizations orgs ON (o.oe_parent_kurzbz = orgs._pk)
+6 -15
View File
@@ -1,17 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML>
<html>
<head>
<title>CIS</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../skin/jquery.css" type="text/css">
<meta charset="utf-8">
<link href="../skin/style.css.php" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="../favicon.ico" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../vendor/jquery/sizzle/sizzle.js"></script>
</head>
<body class="main">
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
@@ -20,13 +13,11 @@
<td class="boxshadow">
<table cellspacing="0" cellpadding="0" class="header">
<tr>
<td align="center" valign="middle" style="background-image: url(../skin/styles/default/header.png); background-position: top; background-repeat: repeat-x;">
<img class="header_logo" src="../skin/styles/default/logo_250x130.png" alt="logo">
<img src="../skin/styles/default/cis_logo_text_400x78.png" />
<td align="center" valign="middle" class="headerbar">
<div class="header_logo"></div>
<div class="cis_logo"></div>
<br><br><br>
<!--Herzlich Willkommen im Campus Informationssystem (CIS)-->
<br>
<br>
<br><br>
<form action="index_login.php?login=1" method="POST">
<input class="cis_login" type="submit" value="Login">
</form>
+3 -4
View File
@@ -55,10 +55,9 @@ if(isset($_GET['login']))
<td class="boxshadow">
<table cellspacing="0" cellpadding="0" class="header">
<tr>
<td align="center" valign="middle" style="background-image: url(../skin/styles/default/header.png); background-position: top; background-repeat: repeat-x;">
<img class="header_logo" src="../skin/styles/default/logo_250x130.png" alt="logo">
<center>
<img src="../skin/styles/default/cis_logo_text_400x78.png" width="400px" />
<td align="center" valign="middle" class="headerbar">
<div class="header_logo"></div>
<div class="cis_logo"></div>
<br><br><br>
<br>
<br>
+5 -6
View File
@@ -46,12 +46,11 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www
<link rel="stylesheet" type="text/css" href="../../skin/simplecropper.css">'.
cropCss().'
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css">
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/jquery/jqueryV1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<script type="text/javascript" src="../../vendor/jquery/sizzle/sizzle.js"></script>
<script type="text/javascript" src="../../vendor/tapmodo/Jcrop/js/Jcrop.min.js"></script>
<script type="text/javascript" src="../../vendor/tomazdragar/SimpleCropper/scripts/jquery.SimpleCropper.js"></script>
<script type="text/javascript" src="../../include/js/cropper.js"></script>
+8 -22
View File
@@ -164,10 +164,8 @@ foreach($addon_obj->result as $addon)
<command id="menu-extras-preinteressentenuebernahme:command" oncommand="ExtrasShowPreinteressentenuebernahme();"/>
<command id="menu-extras-projektarbeitsabgaben:command" oncommand="ExtrasShowProjektarbeitsabgaben();"/>
<command id="menu-extras-aliquote_reduktion:command" oncommand="ExtrasShowAliquote_reduktion();"/>
<command id="menu-bis-mitarbeiter-import:command" oncommand="BISMitarbeiterImport();"/>
<command id="menu-bis-mitarbeiter-export:command" oncommand="BISMitarbeiterExport();"/>
<command id="menu-bis-mitarbeiter-checkverwendung:command" oncommand="BISMitarbeiterCheckVerwendung();"/>
<command id="menu-bis-mitarbeiter-checkfunktion:command" oncommand="BISMitarbeiterCheckFunktion();"/>
<command id="menu-bis-mitarbeiter-uebersicht:command" oncommand="BISMitarbeiterUebersicht();"/>
<command id="menu-bis-studenten-export:command" oncommand="BISStudentenExport();"/>
<command id="menu-bis-studenten-checkstudent:command" oncommand="BISStudentenPlausicheck();"/>
<command id="menu-help-about:command" oncommand="OpenAboutDialog()"/>
@@ -272,7 +270,7 @@ foreach($addon_obj->result as $addon)
key ="menu-prefs-number_displayed_past_studiensemester:key"
label ="&menu-prefs-number_displayed_past_studiensemester.label;"
command ="menu-prefs-number_displayed_past_studiensemester:command"
accesskey ="&menu-prefs-number_displayed_past_studiensemester.accesskey;"
accesskey ="&menu-prefs-number_displayed_past_studiensemester.accesskey;"
value ="<?php echo (isset($variable->variable->number_displayed_past_studiensemester)?$variable->variable->number_displayed_past_studiensemester:'');?>"
/>
</menupopup>
@@ -859,30 +857,18 @@ foreach($addon_obj->result as $addon)
<menupopup id="menu-bis-popup">
<menu id="menu-bis-mitarbeiter" label="&menu-bis-mitarbeiter.label;" accesskey="&menu-bis-mitarbeiter.accesskey;">
<menupopup id="menu-bis-mitarbeiter-popup">
<menuitem
id = "menu-bis-mitarbeiter-checkverwendung"
key = "menu-bis-mitarbeiter-checkverwendung:key"
label = "&menu-bis-mitarbeiter-checkverwendung.label;"
command = "menu-bis-mitarbeiter-checkverwendung:command"
accesskey = "&menu-bis-mitarbeiter-checkverwendung.accesskey;"/>
<menuitem
id = "menu-bis-mitarbeiter-checkfunktion"
key = "menu-bis-mitarbeiter-checkfunktion:key"
label = "&menu-bis-mitarbeiter-checkfunktion.label;"
command = "menu-bis-mitarbeiter-checkfunktion:command"
accesskey = "&menu-bis-mitarbeiter-checkfunktion.accesskey;"/>
<menuitem
id = "menu-bis-mitarbeiter-uebersicht"
key = "menu-bis-mitarbeiter-uebersicht:key"
label = "&menu-bis-mitarbeiter-uebersicht.label;"
command = "menu-bis-mitarbeiter-uebersicht:command"
accesskey = "&menu-bis-mitarbeiter-uebersicht.accesskey;"/>
<menuitem
id = "menu-bis-mitarbeiter-export"
key = "menu-bis-mitarbeiter-export:key"
label = "&menu-bis-mitarbeiter-export.label;"
command = "menu-bis-mitarbeiter-export:command"
accesskey = "&menu-bis-mitarbeiter-export.accesskey;"/>
<menuitem
id = "menu-bis-mitarbeiter-import"
key = "menu-bis-mitarbeiter-import:key"
label = "&menu-bis-mitarbeiter-import.label;"
command = "menu-bis-mitarbeiter-import:command"
accesskey = "&menu-bis-mitarbeiter-import.accesskey;"/>
</menupopup>
</menu>
<menu id="menu-bis-studenten" label="&menu-bis-studenten.label;" accesskey="&menu-bis-studenten.accesskey;">
+11 -19
View File
@@ -1203,9 +1203,9 @@ function MessageNew()
else
{
var prestudentIdArray = getMultipleTreeCellText(tree, 'student-treecol-prestudent_id');
var action = '<?php echo APP_ROOT ?>index.ci.php/system/Messages/write/' + <?php echo $benutzer->person_id; ?>;
openWindowPostArray(action, 'prestudent_id', prestudentIdArray);
}
}
@@ -1396,19 +1396,11 @@ function BISMitarbeiterExport()
}
// ****
// * Oeffnet Script zum Checken der Verwendung
// * oeffnet Uebersichtsseite fuer Mitarbeiter BIS Meldung
// ****
function BISMitarbeiterCheckVerwendung()
function BISMitarbeiterUebersicht()
{
window.open('<?php echo APP_ROOT ?>vilesci/bis/checkverwendung.php','CheckVerwendung','');
}
// ****
// * oeffnet Script zum Checken der Funktion
// ****
function BISMitarbeiterCheckFunktion()
{
window.open('<?php echo APP_ROOT ?>vilesci/bis/checkfunktion.php','CheckFunktion','');
window.open('<?php echo APP_ROOT ?>vilesci/bis/personalmeldung_uebersicht.php','Uebersicht','');
}
// ****
@@ -2054,9 +2046,9 @@ function OrganisationseinheitTreeRefresh()
function variableChangeValue(variable)
{
var variablevalue = getvariable(variable);
if(variablevalue = prompt('Bitte geben Sie den neuen Wert fuer '+variable+' ein', variablevalue))
{
{
variableChange(variable, '', variablevalue);
}
}
@@ -2068,7 +2060,7 @@ function variableChange(variable, id, wert)
{
if(id!=null)
item = document.getElementById(id);
if(typeof(wert)==='undefined')
{
if(item.getAttribute('checked')=='true')
@@ -2078,11 +2070,11 @@ function variableChange(variable, id, wert)
}
else
checked=wert;
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// Request absetzen
var url = '<?php echo APP_ROOT ?>content/fasDBDML.php';
var req = new phpRequest(url,'','');
@@ -2090,7 +2082,7 @@ function variableChange(variable, id, wert)
req.add('type', 'variablechange');
req.add('name', variable);
req.add('wert', checked);
var response = req.executePOST();
var val = new ParseReturnValue(response)
File diff suppressed because it is too large Load Diff
+4
View File
@@ -387,6 +387,10 @@
<!ENTITY menu-bis-mitarbeiter-checkfunktion.label "checkFunktion">
<!ENTITY menu-bis-mitarbeiter-checkfunktion.accesskey "F">
<!ENTITY menu-bis-mitarbeiter-uebersicht.key "B">
<!ENTITY menu-bis-mitarbeiter-uebersicht.label "Übersicht">
<!ENTITY menu-bis-mitarbeiter-uebersicht.accesskey "B">
<!ENTITY menu-bis-studenten.key "S">
<!ENTITY menu-bis-studenten.label "Studenten">
<!ENTITY menu-bis-studenten.accesskey "S">
+9 -5
View File
@@ -1,5 +1,5 @@
<!ENTITY window.title "FAS">
<!ENTITY window.version "3.0">
<!ENTITY window.title "FAS">
<!ENTITY window.version "3.0">
<!-- MENUE -->
@@ -362,9 +362,13 @@
<!ENTITY menu-bis-mitarbeiter-checkverwendung.label "checkVerwendung">
<!ENTITY menu-bis-mitarbeiter-checkverwendung.accesskey "V">
<!ENTITY menu-bis-mitarbeiter-checkfunktion.key "F">
<!ENTITY menu-bis-mitarbeiter-checkfunktion.label "checkFunktion">
<!ENTITY menu-bis-mitarbeiter-checkfunktion.accesskey "F">
<!ENTITY menu-bis-mitarbeiter-uebersicht.key "B">
<!ENTITY menu-bis-mitarbeiter-ueberischt.label "Übersicht">
<!ENTITY menu-bis-mitarbeiter-uebersicht.accesskey "B">
<!ENTITY menu-bis-mitarbeiter-uebersicht.key "U">
<!ENTITY menu-bis-mitarbeiter-uebersicht.label "Übersicht">
<!ENTITY menu-bis-mitarbeiter-uebersicht.accesskey "U">
<!ENTITY menu-bis-studenten.key "S">
<!ENTITY menu-bis-studenten.label "Studenten">
+1 -1
View File
@@ -97,4 +97,4 @@ $this->phrasen['lvplan/status']='Status';
$this->phrasen['lvplan/automatischeMail']='This is an automatic email!';
$this->phrasen['lvplan/folgendeAenderungen']='There have been the following changes in your Schedule:';
$this->phrasen['lvplan/reserviertInDev']='not<br>available';
?>
?>
+33 -3
View File
@@ -176,6 +176,7 @@ input.cis_login
width:170px;
height:53px;
}
div.tip
{
position: absolute;
@@ -474,9 +475,9 @@ td:hover.ItemTesttoolBeendet
}
div.TesttoolTitle /* Ueberschrift auf den Titelfolien */
{
font-size: 400%;
font-family: Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-size: 400%;
font-family: Helvetica, Arial, sans-serif;
text-transform: uppercase;
color: #FFFFFF;
display: table;
white-space: nowrap;
@@ -1101,3 +1102,32 @@ body.anwesenheit table {
body.anwesenheit form {
margin: 10px;
}
div.header_logo
{
position: absolute;
left: 16px;
top: 3%;
z-index: 5000;
background-image:url(styles/tw/logo_250x130.png);
background-repeat: no-repeat;
width:170px;
height:51px;
background-size: contain;
}
td.headerbar
{
background-image: url(styles/tw/header.png);
background-position: top;
background-repeat: repeat-x;"
}
div.cis_logo
{
background-image:url(styles/tw/cis_logo_text_400x78.png);
background-repeat: no-repeat;
width: 400px;
height: 78px;
}
File diff suppressed because it is too large Load Diff
+36 -3
View File
@@ -430,6 +430,38 @@ if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname =
}
}
// Add FOREIGN KEY testtool.tbl_pruefling.prestudent_id
if ($result = @$db->db_query("SELECT conname FROM pg_constraint WHERE conname = 'fk_pruefling_prestudent'"))
{
if ($db->db_num_rows($result) == 0)
{
$qry = "SELECT * FROM testtool.tbl_pruefling WHERE prestudent_id is not null AND NOT EXISTS(SELECT 1 FROM public.tbl_prestudent WHERE prestudent_id=tbl_pruefling.prestudent_id)";
if($result = $db->db_query($qry))
{
if($db->db_num_rows($result) == 0)
{
$qry = "ALTER TABLE testtool.tbl_pruefling ADD CONSTRAINT fk_pruefling_prestudent FOREIGN KEY (prestudent_id) REFERENCES public.tbl_prestudent(prestudent_id) ON UPDATE CASCADE ON DELETE RESTRICT;";
if (!$db->db_query($qry))
echo '<strong>testtool.tbl_pruefling: '.$db->db_last_error().'</strong><br>';
else
echo '<br>testtool.tbl_pruefling: added foreign key on column prestudent_id referenced to public.tbl_prestudent(prestudent_id)';
}
else
{
echo '<strong>
Foreign Key für testtool.tbl_pruefling.prestudent_id kann nicht erstellt werden da in tbl_pruefling
'.$db->db_num_rows($result).' Prestudenten eingetragen sind die nicht in tbl_prestudent vorhanden sind.<br>
<br>
Bitte korrigieren Sie die fehlenden Zuordnungen damit der FK erstellt werden kann.
Mit folgendem Befehl können die falschen Zuordnungen entfernt werden:<br>
UPDATE testtool.tbl_pruefling SET prestudent_id=null WHERE NOT EXISTS(SELECT 1 FROM public.tbl_prestudent WHERE prestudent_id=tbl_pruefling.prestudent_id)
</strong>';
}
}
}
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
@@ -693,14 +725,15 @@ $tabellen=array(
"wawi.tbl_betriebsmittelstatus" => array("betriebsmittelstatus_kurzbz","beschreibung"),
"wawi.tbl_betriebsmitteltyp" => array("betriebsmitteltyp","beschreibung","anzahl","kaution","typ_code","mastershapename"),
"wawi.tbl_budget" => array("geschaeftsjahr_kurzbz","kostenstelle_id","budget"),
"wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung"),
"wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id"),
"wawi.tbl_zahlungstyp" => array("zahlungstyp_kurzbz","bezeichnung","reihenfolge"),
"wawi.tbl_konto" => array("konto_id","kontonr","beschreibung","kurzbz","aktiv","person_id","insertamum","insertvon","updateamum","updatevon","ext_id","person_id","hilfe"),
"wawi.tbl_konto_kostenstelle" => array("konto_id","kostenstelle_id","insertamum","insertvon"),
"wawi.tbl_kostenstelle" => array("kostenstelle_id","oe_kurzbz","bezeichnung","kurzbz","aktiv","insertamum","insertvon","updateamum","updatevon","ext_id","kostenstelle_nr","deaktiviertvon","deaktiviertamum"),
"wawi.tbl_bestellungtag" => array("tag","bestellung_id","insertamum","insertvon"),
"wawi.tbl_bestelldetailtag" => array("tag","bestelldetail_id","insertamum","insertvon"),
"wawi.tbl_projekt_bestellung" => array("projekt_kurzbz","bestellung_id","anteil"),
"wawi.tbl_bestellung" => array("bestellung_id","besteller_uid","kostenstelle_id","konto_id","firma_id","lieferadresse","rechnungsadresse","freigegeben","bestell_nr","titel","bemerkung","liefertermin","updateamum","updatevon","insertamum","insertvon","ext_id","zahlungstyp_kurzbz"),
"wawi.tbl_bestellung" => array("bestellung_id","besteller_uid","kostenstelle_id","konto_id","firma_id","lieferadresse","rechnungsadresse","freigegeben","bestell_nr","titel","bemerkung","liefertermin","updateamum","updatevon","insertamum","insertvon","ext_id","zahlungstyp_kurzbz","zuordnung_uid","zuordnung_raum","zuordnung","auftragsbestaetigung","auslagenersatz","iban","wird_geleast","nicht_bestellen","empfehlung_leasing"),
"wawi.tbl_bestellung_angebot" => array("angebot_id","bestellung_id","dms_id"),
"wawi.tbl_bestelldetail" => array("bestelldetail_id","bestellung_id","position","menge","verpackungseinheit","beschreibung","artikelnummer","preisprove","mwst","erhalten","sort","text","updateamum","updatevon","insertamum","insertvon"),
"wawi.tbl_bestellung_bestellstatus" => array("bestellung_bestellstatus_id","bestellung_id","bestellstatus_kurzbz","uid","oe_kurzbz","datum","insertamum","insertvon","updateamum","updatevon"),
"wawi.tbl_bestellstatus" => array("bestellstatus_kurzbz","beschreibung"),
+164 -136
View File
@@ -57,6 +57,10 @@ foreach ($stg_obj->result as $stg)
$stg_arr[$stg->studiengang_kz] = $stg->kuerzel;
}
$stsem = new studiensemester();
$stsemprev = $stsem->getPrevious();
$stsemprevprev = $stsem->getBeforePrevious();
echo '<html>
<head>
<title>Check Funktion</title>
@@ -64,152 +68,176 @@ echo '<html>
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
</head>
<body class="Background_main">
<h2>Mitarbeiter BIS-Funktion Check</h2>
<h2>Mitarbeiter BIS-Funktion Check für '.$stsemprevprev.'/'.$stsemprev.'</h2>
';
$stsem = new studiensemester();
$stsemprev = $stsem->getPrevious();
$stsemprevprev = $stsem->getBeforePrevious();
echo "Generiere Funktionen für $stsemprevprev/$stsemprev<br>";
$qry = "SELECT tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, sum(tbl_lehreinheitmitarbeiter.semesterstunden) as semstd
FROM lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
WHERE
tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
(studiensemester_kurzbz=".$db->db_add_param($stsemprev)." OR studiensemester_kurzbz=".$db->db_add_param($stsemprevprev).") AND
bismelden=true AND tbl_lehreinheitmitarbeiter.semesterstunden>0 GROUP BY mitarbeiter_uid, studiengang_kz";
if($result = $db->db_query($qry))
if(isset($_POST['action']) && $_POST['action'] == 'delete')
{
$lastuid='';
while($row = $db->db_fetch_object($result))
$qry = "DELETE FROM bis.tbl_bisfunktion where (studiengang_kz, bisverwendung_id) in (SELECT studiengang_kz, bisverwendung_id FROM bis.tbl_bisfunktion JOIN bis.tbl_bisverwendung USING(bisverwendung_id)
WHERE (mitarbeiter_uid, studiengang_kz) NOT IN (
SELECT mitarbeiter_uid, studiengang_kz
FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter
WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
(tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprevprev)." OR tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprev)."))
AND (ende>".$db->db_add_param($lastbismeldung)." OR ende is null))";
if($db->db_query($qry))
{
if($lastuid!=$row->mitarbeiter_uid)
{
$lastuid=$row->mitarbeiter_uid;
//Verwendung suchen
$person_error=false;
$qry_verw = "SELECT * FROM bis.tbl_bisverwendung
WHERE
(ende>now() OR ende is null OR ende>".$db->db_add_param($lastbismeldung).")
AND (beginn<".$db->db_add_param($aktbismeldung)." OR beginn is null)
AND mitarbeiter_uid=".$db->db_add_param($row->mitarbeiter_uid)."
ORDER BY beginn DESC";
if($result_verw = $db->db_query($qry_verw))
{
if($db->db_num_rows($result_verw)==0)
{
echo "<br>Es wurde keine Verwendung fuer <b>$row->mitarbeiter_uid</b> gefunden";
$person_error = true;
$verwendung_not_found++;
}
else
{
if($row_verw = $db->db_fetch_object($result_verw))
$verwendung_id = $row_verw->bisverwendung_id;
else
{
echo "<br>Fehler beim Holen der Verwendung von $row->mitarbeiter_uid";
$person_error = true;
}
}
if($db->db_num_rows($result_verw)>1)
{
echo "<br>Es wurde mehr als eine Verwendung bei $row->mitarbeiter_uid gefunden - es wird die Verwendung $verwendung_id verwendet";
$verwendung_multiple++;
}
}
else
{
echo "<br>Fehler beim Ermitteln der Verwendung ".$db->db_last_error();
$person_error = true;
}
}
if(!$person_error)
{
//SWS berechnen
$swsneu = number_format(round($row->semstd/$wochen, 2),2,'.','');
//Funktion fuer diesen Studiengang suchen
$bisfunktion = new bisfunktion();
if($bisfunktion->load($verwendung_id, $row->studiengang_kz))
{
$bisfunktion->new = false;
if($bisfunktion->sws!=$swsneu)
{
echo "<br>$row->mitarbeiter_uid: Funktion bei Studiengang ".$stg_arr[$row->studiengang_kz]." ($row->studiengang_kz) wird von $bisfunktion->sws auf $swsneu geaendert";
$bisfunktion->sws = $swsneu;
$funktion_geaendert++;
}
}
else
{
$bisfunktion->insertamum = date('Y-m-d H:i:s');
$bisfunktion->insertvon = $user;
$bisfunktion->studiengang_kz = $row->studiengang_kz;
$bisfunktion->sws = $swsneu;
$bisfunktion->new = true;
$bisfunktion->bisverwendung_id = $verwendung_id;
$funktion_hinzugefuegt++;
}
$bisfunktion->updateamum = date('Y-m-d H:i:s');
$bisfunktion->updatevon = $user;
if(!$bisfunktion->save())
{
echo "<br>$row->mitarbeiter_uid: Fehler beim Anlegen der Funktion ".$bisfunktion->errormsg;
if($bisfunktion->new)
$funktion_hinzugefuegt--;
else
$funktion_geaendert--;
$funktion_error++;
}
}
echo 'Falsche Funktionszuordnungen wurden entfernt';
}
else
{
echo 'Fehler beim Löschen der Zuordnungen';
}
}
if(isset($_POST['action']) && $_POST['action'] == 'run')
{
$qry = "SELECT tbl_lehreinheitmitarbeiter.mitarbeiter_uid, tbl_lehrveranstaltung.studiengang_kz, sum(tbl_lehreinheitmitarbeiter.semesterstunden) as semstd
FROM lehre.tbl_lehreinheitmitarbeiter, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung
WHERE
tbl_lehreinheitmitarbeiter.lehreinheit_id=tbl_lehreinheit.lehreinheit_id AND
tbl_lehreinheit.lehrveranstaltung_id=tbl_lehrveranstaltung.lehrveranstaltung_id AND
(studiensemester_kurzbz=".$db->db_add_param($stsemprev)." OR studiensemester_kurzbz=".$db->db_add_param($stsemprevprev).") AND
bismelden=true AND tbl_lehreinheitmitarbeiter.semesterstunden>0 GROUP BY mitarbeiter_uid, studiengang_kz";
echo '<br><br>';
echo '<b>Check fuer nicht benoetigte Funktionen</b>';
$qry = "SELECT * FROM bis.tbl_bisfunktion JOIN bis.tbl_bisverwendung USING(bisverwendung_id)
WHERE (mitarbeiter_uid, studiengang_kz) NOT IN (
SELECT mitarbeiter_uid, studiengang_kz
FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter
WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
(tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprev)." OR tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprevprev)."))
AND (ende>".$db->db_add_param($lastbismeldung)." OR ende is null)
ORDER BY mitarbeiter_uid, studiengang_kz";
if($result = $db->db_query($qry))
{
$funktion_ohne_lehrauftrag = $db->db_num_rows($result);
$lastuid='';
while($row = $db->db_fetch_object($result))
{
echo "<br><b>$row->mitarbeiter_uid</b> hat im Studiengang ".$stg_arr[$row->studiengang_kz]." ($row->studiengang_kz) eine Funktion ohne Lehrauftrag";
if($lastuid!=$row->mitarbeiter_uid)
{
$lastuid=$row->mitarbeiter_uid;
//Verwendung suchen
$person_error=false;
$qry_verw = "SELECT * FROM bis.tbl_bisverwendung
WHERE
(ende>now() OR ende is null OR ende>".$db->db_add_param($lastbismeldung).")
AND (beginn<".$db->db_add_param($aktbismeldung)." OR beginn is null)
AND mitarbeiter_uid=".$db->db_add_param($row->mitarbeiter_uid)."
ORDER BY beginn DESC";
if($result_verw = $db->db_query($qry_verw))
{
if($db->db_num_rows($result_verw)==0)
{
echo "<br>Es wurde keine Verwendung fuer <b>$row->mitarbeiter_uid</b> gefunden";
$person_error = true;
$verwendung_not_found++;
}
else
{
if($row_verw = $db->db_fetch_object($result_verw))
$verwendung_id = $row_verw->bisverwendung_id;
else
{
echo "<br>Fehler beim Holen der Verwendung von $row->mitarbeiter_uid";
$person_error = true;
}
}
if($db->db_num_rows($result_verw)>1)
{
echo "<br>Es wurde mehr als eine Verwendung bei $row->mitarbeiter_uid gefunden - es wird die Verwendung $verwendung_id verwendet";
$verwendung_multiple++;
}
}
else
{
echo "<br>Fehler beim Ermitteln der Verwendung ".$db->db_last_error();
$person_error = true;
}
}
if(!$person_error)
{
//SWS berechnen
$swsneu = number_format(round($row->semstd/$wochen, 2),2,'.','');
//Funktion fuer diesen Studiengang suchen
$bisfunktion = new bisfunktion();
if($bisfunktion->load($verwendung_id, $row->studiengang_kz))
{
$bisfunktion->new = false;
if($bisfunktion->sws!=$swsneu)
{
echo "<br>$row->mitarbeiter_uid: Funktion bei Studiengang ".$stg_arr[$row->studiengang_kz]." ($row->studiengang_kz) wird von $bisfunktion->sws auf $swsneu geaendert";
$bisfunktion->sws = $swsneu;
$funktion_geaendert++;
}
}
else
{
$bisfunktion->insertamum = date('Y-m-d H:i:s');
$bisfunktion->insertvon = $user;
$bisfunktion->studiengang_kz = $row->studiengang_kz;
$bisfunktion->sws = $swsneu;
$bisfunktion->new = true;
$bisfunktion->bisverwendung_id = $verwendung_id;
$funktion_hinzugefuegt++;
}
$bisfunktion->updateamum = date('Y-m-d H:i:s');
$bisfunktion->updatevon = $user;
if(!$bisfunktion->save())
{
echo "<br>$row->mitarbeiter_uid: Fehler beim Anlegen der Funktion ".$bisfunktion->errormsg;
if($bisfunktion->new)
$funktion_hinzugefuegt--;
else
$funktion_geaendert--;
$funktion_error++;
}
}
}
echo '<br><br>';
echo '<b>Check fuer nicht benoetigte Funktionen</b>';
$qry = "SELECT * FROM bis.tbl_bisfunktion JOIN bis.tbl_bisverwendung USING(bisverwendung_id)
WHERE (mitarbeiter_uid, studiengang_kz) NOT IN (
SELECT mitarbeiter_uid, studiengang_kz
FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter
WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
(tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprev)." OR tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprevprev)."))
AND (ende>".$db->db_add_param($lastbismeldung)." OR ende is null)
ORDER BY mitarbeiter_uid, studiengang_kz";
if($result = $db->db_query($qry))
{
$funktion_ohne_lehrauftrag = $db->db_num_rows($result);
while($row = $db->db_fetch_object($result))
{
echo "<br><b>$row->mitarbeiter_uid</b> hat im Studiengang ".$stg_arr[$row->studiengang_kz]." ($row->studiengang_kz) eine Funktion ohne Lehrauftrag";
}
}
echo '<br><br>Loeschen der Funktionen:
<form method="POST" action="checkfunktion.php">
<input type="hidden" name="action" value="delete" />
<input type="submit" value="Falsche Funktionen jetzt löschen" />
</form>';
echo '<br><br>';
echo '<h3>Uebersicht</h3>';
echo '<table>';
echo "<tr><td>Nicht vorhandene Verwendungen</td><td>$verwendung_not_found</td></tr>";
echo "<tr><td>Mehrere moegliche Verwendungen vorhanden</td><td>$verwendung_multiple</td></tr>";
echo "<tr><td>Fehler bei Funktionen</td><td>$funktion_error</td></tr>";
echo "<tr><td>Funktionen ohne Lehrauftrag</td><td>$funktion_ohne_lehrauftrag</td></tr>";
echo "<tr><td>&nbsp;</td><td>&nbsp;</td></tr>";
echo "<tr><td>Funktionen hinzugefuegt</td><td>$funktion_hinzugefuegt</td></tr>";
echo "<tr><td>Funktionen geaendert</td><td>$funktion_geaendert</td></tr>";
echo '</table>';
}
echo "<br><br>Loeschen der Funktionen mit: DELETE FROM bis.tbl_bisfunktion where (studiengang_kz, bisverwendung_id) in (SELECT studiengang_kz, bisverwendung_id FROM bis.tbl_bisfunktion JOIN bis.tbl_bisverwendung USING(bisverwendung_id)
WHERE (mitarbeiter_uid, studiengang_kz) NOT IN (
SELECT mitarbeiter_uid, studiengang_kz
FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter
WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND
(tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprevprev)." OR tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($stsemprev)."))
AND (ende>".$db->db_add_param($lastbismeldung)." OR ende is null))";
echo '<br><br>';
echo '<h3>Uebersicht</h3>';
echo '<table>';
echo "<tr><td>Nicht vorhandene Verwendungen</td><td>$verwendung_not_found</td></tr>";
echo "<tr><td>Mehrere moegliche Verwendungen vorhanden</td><td>$verwendung_multiple</td></tr>";
echo "<tr><td>Fehler bei Funktionen</td><td>$funktion_error</td></tr>";
echo "<tr><td>Funktionen ohne Lehrauftrag</td><td>$funktion_ohne_lehrauftrag</td></tr>";
echo "<tr><td>&nbsp;</td><td>&nbsp;</td></tr>";
echo "<tr><td>Funktionen hinzugefuegt</td><td>$funktion_hinzugefuegt</td></tr>";
echo "<tr><td>Funktionen geaendert</td><td>$funktion_geaendert</td></tr>";
echo '</table>';
}
else
{
echo '
<br>
Diese Seite erstellt automatisch die Funktionen der Lektoren aus den Lehraufträgen.
<form method="POST" action="checkfunktion.php">
<input type="hidden" name="action" value="run" />
<input type="submit" value="Funktionen generieren" />
</form>';
}
+7 -7
View File
@@ -122,16 +122,16 @@ if($resultall = $db->db_query($qryall))
}
}
}
//2 - aktive mitarbeiter mit keiner aktuellen verwendung
//2 - aktive fixe mitarbeiter mit keiner aktuellen verwendung
$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id)
FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
WHERE aktiv AND NOT ende>now() AND NOT ende IS NULL
WHERE aktiv AND fixangestellt AND NOT ende>now() AND NOT ende IS NULL
AND uid NOT IN (SELECT uid FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
WHERE aktiv AND (ende>now() OR ende IS NULL)) GROUP BY uid,nachname,vorname ORDER by nachname,vorname;';
WHERE aktiv AND fixangestellt AND (ende>now() OR ende IS NULL)) GROUP BY uid,nachname,vorname ORDER by nachname,vorname;';
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
echo "<br><br><H2>Bei $num_rows_all aktiven Mitarbeitern sind keine aktuellen Verwendungen eingetragen</H2>";
echo "<br><br><H2>Bei $num_rows_all aktiven Fixangestellten Mitarbeitern sind keine aktuellen Verwendungen eingetragen</H2>";
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
@@ -293,10 +293,10 @@ if($resultall = $db->db_query($qryall))
$i=0;
$qryall="SELECT DISTINCT lehre.tbl_lehreinheitmitarbeiter.mitarbeiter_uid, nachname, vorname
FROM lehre.tbl_lehreinheitmitarbeiter join lehre.tbl_lehreinheit USING (lehreinheit_id)
JOIN
JOIN
lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
JOIN campus.vw_mitarbeiter ON (tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid)
WHERE
WHERE
(lehre.tbl_lehreinheit.studiensemester_kurzbz='$lastss' OR lehre.tbl_lehreinheit.studiensemester_kurzbz='$lastws')
AND tbl_lehreinheitmitarbeiter.stundensatz!=0 AND tbl_lehreinheitmitarbeiter.semesterstunden!=0
AND NOT EXISTS (SELECT * FROM bis.tbl_bisverwendung
@@ -374,7 +374,7 @@ if($resultall = $db->db_query($qryall))
{
$i++;
echo "<br><u>Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.":</u><br>";
echo "(ba1code: $rowall->ba1code, ba2code: $rowall->ba2code)";
echo "(ba1code: $rowall->ba1code, ba2code: $rowall->ba2code)";
}
}
echo '<br>';
+308
View File
@@ -0,0 +1,308 @@
<?php
/* Copyright (C) 2017 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/bisfunktion.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/benutzerfunktion.class.php');
require_once('../../include/funktion.class.php');
require_once('../../include/bisverwendung.class.php');
require_once('../../include/benutzer.class.php');
if (!$db = new basis_db())
die ('Es konnte keine Verbindung zum Server aufgebaut werden.');
$uid = get_uid();
$datum_obj = new datum();
$fkt_obj = new funktion();
$fkt_obj->getAll();
$fkt_arr = array();
foreach ($fkt_obj->result as $row_fkt)
$fkt_arr[$row_fkt->funktion_kurzbz] = $row_fkt->beschreibung;
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
$studiensemester = new studiensemester();
$studiensemester->getAll();
$stsem_arr = array();
foreach($studiensemester->studiensemester as $row_stsem)
{
$stsem_arr[$row_stsem->studiensemester_kurzbz]['start']=$row_stsem->start;
$stsem_arr[$row_stsem->studiensemester_kurzbz]['ende']=$row_stsem->ende;
}
if (!$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'suid'))
die ('Sie haben keine Berechtigung für diese Seite');
echo '<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">';
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
echo '
<link href="../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<title>Mitarbeitermeldung</title>
<script>
$(document).ready(function()
{
$( ".datepicker_datum" ).datepicker({
changeMonth: true,
hangeYear: true,
dateFormat: "yy-mm-dd",
});
});
</script>
</head>
<body>
<h2>Freie Lektoren mit Lehrauftrag ohne Verwendung</h2>
Die folgenden freien Lektoren haben einen aktiven Lehrauftrag im Meldezeitraum,
haben jedoch keine aktive Verwendung.<br>
<br>
Beim Klicken auf "Alle Verwendungen generieren/aktualisieren" werden die Verwendungen automatisch verlängert wenn
die letzte Verwendung näher als 10 Monate liegt. Ansonsten wird eine neue Verwendung erstellt. Als neues Ende-Datum
wird das Ende des Semesters letzten Lehrauftrages herangezogen.
<br>
<script type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"]
});
});
</script>';
$qry = "SELECT ma.* FROM
(
SELECT
vorname, nachname, uid, personalnummer, insertamum,anmerkung,
(
SELECT studiensemester_kurzbz FROM (
SELECT
studiensemester_kurzbz, tbl_studiensemester.start
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
tbl_lehreinheitmitarbeiter.mitarbeiter_uid = vw_mitarbeiter.uid
UNION
SELECT
studiensemester_kurzbz, tbl_studiensemester.start
FROM
lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
tbl_projektbetreuer.person_id=vw_mitarbeiter.person_id
) a
ORDER BY start DESC
LIMIT 1
) as letzter_lehrauftrag
FROM
campus.vw_mitarbeiter
WHERE
fixangestellt = false
AND lektor = true
AND bismelden = true
AND personalnummer > 0
AND EXISTS(
SELECT
1
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
tbl_lehreinheitmitarbeiter.mitarbeiter_uid = vw_mitarbeiter.uid
AND tbl_lehreinheit.studiensemester_kurzbz IN(
SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE start <= now()
ORDER BY start DESC
OFFSET 1
LIMIT 2)
UNION
SELECT
1
FROM
lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
tbl_lehreinheit.studiensemester_kurzbz IN(SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE start <= now()
ORDER BY start DESC
OFFSET 1
LIMIT 2)
AND tbl_projektbetreuer.person_id=vw_mitarbeiter.person_id
)
AND NOT EXISTS(
SELECT 1 FROM bis.tbl_bisverwendung
WHERE mitarbeiter_uid=vw_mitarbeiter.uid
AND (ende is null OR ende>=now())
)
) ma
LEFT JOIN public.tbl_studiensemester ON(studiensemester_kurzbz=ma.letzter_lehrauftrag)
WHERE
tbl_studiensemester.start >= (SELECT ende FROM bis.tbl_bisverwendung
WHERE mitarbeiter_uid=ma.uid
ORDER BY ende DESC LIMIT 1)";
if ($result = $db->db_query($qry))
{
echo '<br><br>Anzahl:'.$db->db_num_rows($result);
echo '
<div style="float:right" >
<form method="POST" action="personal_generateverwendung.php">
<input type="hidden" name="action" value="generateall" />
<input type="submit" value="Alle Verwendungen generieren / aktualisieren" />
</form>
</div>';
echo '
<br><br>
<table class="tablesorter" id="t1">
<thead>
<tr>
<th>Nachname</th>
<th>Vorname</th>
<th>UID</th>
<th>Personalnummer</th>
<th>Anlagedatum</th>
<th>Letzer Lehrauftrag</th>
<th>Aktive Funktionen</th>
<th>Letzte Verwendung</th>
<th>Anmerkung</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
';
while ($row = $db->db_fetch_object($result))
{
echo '
<tr>
<td>'.$db->convert_html_chars($row->nachname).'</td>
<td>'.$db->convert_html_chars($row->vorname).'</td>
<td>'.$db->convert_html_chars($row->uid).'</td>
<td>'.$db->convert_html_chars($row->personalnummer).'</td>
<td>'.$db->convert_html_chars($datum_obj->formatDatum($row->insertamum,'d.m.Y')).'</td>
<td>'.$db->convert_html_chars($row->letzter_lehrauftrag).'</td>
<td>
<table>';
$fkt = new benutzerfunktion();
$fkt->getBenutzerFunktionByUid($row->uid, null, date('Y-m-d'));
foreach ($fkt->result as $row_fkt)
{
echo '<tr>
<td width="100px;">'.$fkt_arr[$row_fkt->funktion_kurzbz].'</td>
<td>'.$row_fkt->oe_kurzbz.'</td>
</tr>';
}
echo '</table></td>';
$bisverwendung = new bisverwendung();
$bisverwendung->getLastVerwendung($row->uid);
echo '<td>'.($bisverwendung->beginn != ''?$datum_obj->formatDatum($bisverwendung->beginn,'d.m.Y'):' unbekannt ');
echo ' - '.($bisverwendung->ende != ''?$datum_obj->formatDatum($bisverwendung->ende,'d.m.Y'):' jetzt ').'</td>';
echo '<td>'.($row->anmerkung != ''?'<img src="../../skin/images/sticky.png" title="'.$db->convert_html_chars($row->anmerkung).'" />':'').'</td>';
if(isset($stsem_arr[$row->letzter_lehrauftrag])
&& $stsem_arr[$row->letzter_lehrauftrag]['start'] > $bisverwendung->ende)
{
// wenn das Stsem des letzten Lehrauftrags größer ist als die Verwendung
// Wenn die letzte Verwendung weniger als 10 Monate alt ist, wird die bestehende
// Verwendung aktualisiert auf das neue Datum
// Ansonsten wird eine neue Verwendung erstellt
$dt_verwendungsendeplus10 = new DateTime($bisverwendung->ende);
$dt_now = new DateTime();
$dt_verwendungsendeplus10->add(new DateInterval('P10M'));
if ($dt_verwendungsendeplus10 > $dt_now)
{
$bisverwendung->ende = $stsem_arr[$row->letzter_lehrauftrag]['ende'];
$bisverwendung->updateamum = date('Y-m-d H:i:s');
$bisverwendung->updatevon = $uid;
if(isset($_POST['action']) && $_POST['action']=='generateall')
{
if ($bisverwendung->save(false))
{
echo '<td>Verwendung verlängert</td>';
}
else
{
echo '<td>Failed:'.$bisverwendung->errormsg.'</td>';
}
}
else
echo '<td>Verlängerung bis '.$bisverwendung->ende.'</td>';
}
else
{
$bisverwendung->beginn = $stsem_arr[$row->letzter_lehrauftrag]['start'];
$bisverwendung->ende = $stsem_arr[$row->letzter_lehrauftrag]['ende'];
$bisverwendung->updateamum = date('Y-m-d H:i:s');
$bisverwendung->updatevon = $uid;
$bisverwendung->insertamum = date('Y-m-d H:i:s');
$bisverwendung->insertvon = $uid;
if(isset($_POST['action']) && $_POST['action']=='generateall')
{
if ($bisverwendung->save(true))
{
echo '<td>Neue Verwendung erstellt</td>';
}
else
{
echo '<td>Failed:'.$bisverwendung->errormsg.'</td>';
}
}
else
echo '<td>Neue Verwendung wird erstellt '.$bisverwendung->beginn.' bis '.$bisverwendung->ende.'</td>';
}
}
else
{
echo '<td>passt eigentlich</td>';
}
echo '</tr>';
}
echo '</tbody></table>';
}
echo '
</body>
</html>';
@@ -0,0 +1,284 @@
<?php
/* Copyright (C) 2017 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/bisfunktion.class.php');
require_once('../../include/studiengang.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/benutzerfunktion.class.php');
require_once('../../include/funktion.class.php');
require_once('../../include/bisverwendung.class.php');
require_once('../../include/benutzer.class.php');
if (!$db = new basis_db())
die ('Es konnte keine Verbindung zum Server aufgebaut werden.');
$uid = get_uid();
$datum_obj = new datum();
$fkt_obj = new funktion();
$fkt_obj->getAll();
$fkt_arr = array();
foreach ($fkt_obj->result as $row_fkt)
$fkt_arr[$row_fkt->funktion_kurzbz] = $row_fkt->beschreibung;
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if (!$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'suid'))
die ('Sie haben keine Berechtigung für diese Seite');
if (isset($_POST['action']) && $_POST['action'] == 'deaktivieren')
{
$benutzer = new benutzer();
if ($benutzer->load($_POST['uid']))
{
$benutzer->bnaktiv = false;
$benutzer->updateamum = date('Y-m-d H:i:s');
$benutzer->updatevon = $uid;
if ($benutzer->save(false, false))
{
$bisverwendung = new bisverwendung();
if ($bisverwendung->getLastVerwendung($_POST['uid']))
{
if ($bisverwendung->ende == '')
{
$bisverwendung->ende = $_POST['datum'];
$bisverwendung->updateamum = date('Y-m-d H:i:s');
$bisverwendung->updatevon = $uid;
if ($bisverwendung->save(false))
exit ('true');
}
else
{
exit ('true');
}
}
else
exit ('Fehler beim Laden der Verwendung:'.$bisverwendung->errormsg);
}
else
exit ('Fehler beim Deaktivieren:'.$benutzer->errormsg);
}
else
exit ('Fehler beim Laden des Benutzers');
}
echo '<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">';
include('../../include/meta/jquery.php');
include('../../include/meta/jquery-tablesorter.php');
echo '
<link href="../../skin/jquery-ui-1.9.2.custom.min.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<title>Mitarbeitermeldung</title>
<script>
$(document).ready(function()
{
$( ".datepicker_datum" ).datepicker({
changeMonth: true,
hangeYear: true,
dateFormat: "yy-mm-dd",
});
});
</script>
</head>
<body>
<h2>Aktive freie Lektoren ohne Lehrauftrag</h2>
Die folgenden freien Lektoren haben seit mind. 3 Semestern keinen Lehrauftrag und sind nach wie vor aktiv.
Wählen sie ein Datum und klicken Sie auf den Link "deaktivieren" um den Mitarbeiter zu deaktivieren und
die Verwendung zum angegebenen Datum zu beenden.
<br>
<script type="text/javascript">
$(document).ready(function()
{
$("#t1").tablesorter(
{
sortList: [[0,0]],
widgets: ["zebra"]
});
});
function deaktiviere(uid)
{
var datum = $("#deaktivierungsdatum").val();
$.ajax({
type:"POST",
url:"personal_lektorenohnelehrauftrag.php",
data:{ "action": "deaktivieren", "uid": uid, "datum": datum },
success: function(data)
{
if(data=="true")
{
$("#deaktivierungslink_"+uid).hide();
$("#infobox_"+uid).text("OK");
}
else
{
$("#infobox_"+uid).text("ERROR:"+data);
}
},
error: function() { alert("error"); }
});
}
</script>';
$qry = "SELECT
vorname, nachname, uid, personalnummer, insertamum,anmerkung,
(
SELECT studiensemester_kurzbz FROM (
SELECT
studiensemester_kurzbz, tbl_studiensemester.start
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
tbl_lehreinheitmitarbeiter.mitarbeiter_uid = vw_mitarbeiter.uid
UNION
SELECT
studiensemester_kurzbz, tbl_studiensemester.start
FROM
lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN public.tbl_studiensemester USING(studiensemester_kurzbz)
WHERE
tbl_projektbetreuer.person_id=vw_mitarbeiter.person_id
) a
ORDER BY start DESC
LIMIT 1
) as letzter_lehrauftrag
FROM
campus.vw_mitarbeiter
WHERE
aktiv = true
AND fixangestellt = false
AND lektor = true
AND bismelden = true
AND personalnummer > 0
AND insertamum <= now() - '5 months'::interval
AND NOT EXISTS(
SELECT
1
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
tbl_lehreinheitmitarbeiter.mitarbeiter_uid = vw_mitarbeiter.uid
AND tbl_lehreinheit.studiensemester_kurzbz IN(
SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE start <= now()
ORDER BY start DESC
LIMIT 3)
UNION
SELECT
1
FROM
lehre.tbl_projektbetreuer
JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
tbl_lehreinheit.studiensemester_kurzbz IN(SELECT
studiensemester_kurzbz
FROM
public.tbl_studiensemester
WHERE start <= now()
ORDER BY start DESC
LIMIT 3)
AND tbl_projektbetreuer.person_id=vw_mitarbeiter.person_id
)";
if ($result = $db->db_query($qry))
{
echo '<br><br>Anzahl:'.$db->db_num_rows($result);
echo '
<div style="float:right" >Beendingungsdatum der Verwendung:
<input class="datepicker_datum" type="text" size="10" value="'.date('Y').'-08-31" id="deaktivierungsdatum"/>
</div>
<br><br>
<table class="tablesorter" id="t1">
<thead>
<tr>
<th>Nachname</th>
<th>Vorname</th>
<th>UID</th>
<th>Personalnummer</th>
<th>Anlagedatum</th>
<th>Letzer Lehrauftrag</th>
<th>Aktive Funktionen</th>
<th>Letzte Verwendung</th>
<th>Anmerkung</th>
<th>Aktion</th>
</tr>
</thead>
<tbody>
';
while ($row = $db->db_fetch_object($result))
{
echo '
<tr>
<td>'.$db->convert_html_chars($row->nachname).'</td>
<td>'.$db->convert_html_chars($row->vorname).'</td>
<td>'.$db->convert_html_chars($row->uid).'</td>
<td>'.$db->convert_html_chars($row->personalnummer).'</td>
<td>'.$db->convert_html_chars($datum_obj->formatDatum($row->insertamum,'d.m.Y')).'</td>
<td>'.$db->convert_html_chars($row->letzter_lehrauftrag).'</td>
<td>
<table>';
$fkt = new benutzerfunktion();
$fkt->getBenutzerFunktionByUid($row->uid, null, date('Y-m-d'));
foreach ($fkt->result as $row_fkt)
{
echo '<tr>
<td width="100px;">'.$fkt_arr[$row_fkt->funktion_kurzbz].'</td>
<td>'.$row_fkt->oe_kurzbz.'</td>
</tr>';
}
echo '</table></td>';
$bisverwendung = new bisverwendung();
$bisverwendung->getLastVerwendung($row->uid);
echo '<td>'.($bisverwendung->beginn != ''?$datum_obj->formatDatum($bisverwendung->beginn,'d.m.Y'):' jetzt ');
echo ' - '.($bisverwendung->ende != ''?$datum_obj->formatDatum($bisverwendung->ende,'d.m.Y'):' jetzt ').'</td>';
echo '<td>'.($row->anmerkung != ''?'<img src="../../skin/images/sticky.png" title="'.$db->convert_html_chars($row->anmerkung).'" />':'').'</td>';
echo '
<td>
<span id="deaktivierungslink_'.$row->uid.'">
<a href="#deaktivieren" onclick="deaktiviere(\''.$row->uid.'\');return false;">deaktivieren</a>
</span>
<span id="infobox_'.$row->uid.'"></span>
</td>
</tr>';
}
echo '</tbody></table>';
}
echo '
</body>
</html>';
@@ -0,0 +1,54 @@
<?php
/* Copyright (C) 2017 fhcomplete.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
echo '<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link href="../../skin/vilesci.css" rel="stylesheet" type="text/css">
<title>Mitarbeitermeldung</title>
</head>
<body>
<h2>Personalmeldung Übersicht</h2>
<ul>
<li>
<a href="personal_lektorenohnelehrauftrag.php">Lektoren ohne Lehraufträge</a><br>
Deaktivieren von freien Lektoren die keinen Lehrauftrag mehr haben<br><br>
</li>
<li>
<a href="personal_generateverwendung.php">Verwendungen generieren</a><br>
Verwendungen aktualisieren für freie Lektoren die einen aktuellen Lehrauftrag
haben, jedoch keine aktuelle Verwendung<br><br>
</li>
<li>
<a href="checkverwendung.php">Plausibilitätsprüfungen Verwendungen</a><br>
Diverse Prüfungen auf inkonsistente Daten<br><br>
</li>
<li>
<a href="checkfunktion.php">Funktionen generieren</a><br>
Funktionen zu den Verwendungen generieren (SWS pro Studiengang)<br><br>
</li>
<li>
<a href="personalmeldung.php">Meldung generieren</a><br>
Abschließende Plausibilitätsprüfungen durchführen und Meldung generieren<br><br>
</li>
</ul>
';
@@ -122,23 +122,27 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE" "http://www
headers: {5:{sorter:false}}
});
$(".prestudent_option").click(function ()
{
var elementExists = document.getElementById("input_prestudent");
var e = document.getElementById("pruefling_select");
var strUser = e.options[e.selectedIndex].value;
if (elementExists != null)
if($("#pruefling_select").value == -1)
$("#pruefling_select").after(" <input id=\'input_prestudent\' type=\'text\' name=\'prestudent\'></input>");
$("#pruefling_select").change(
function()
{
elementExists.value=strUser;
console.log(this.value);
if(this.value == -1)//-1 - Option Prestudent ID eingeben
{
//eingabefeld für prestudent id anzeigen wenn nicht vorhanden
if(!$("#input_prestudent").length)
$("#pruefling_select").after(" <input id=\'input_prestudent\' type=\'text\' name=\'prestudent\'></input>");
}
else
{
//eingabefeld für prestudent id entfernen wenn vorhanden
if($("#input_prestudent").length)
$("#input_prestudent").remove();
}
}
$(this).closest("form").submit();
});
$("#prestudent_input").click(function ()
{
$(this).closest("form").submit();
});
);
});
</script>
@@ -288,7 +292,7 @@ foreach($ps->result as $prestd)
echo '<OPTION class="prestudent_option" value="'.$prestd->prestudent_id.'" '.$selected.'>'.$prestd->nachname.' '.$prestd->vorname.', '.(strtoupper($stg->typ.$stg->kurzbz)).'; ID='.$prestd->prestudent_id.'; '.$prestd->gebdatum."</OPTION>\n";
}
echo '</SELECT>';
if($prestudent_id!='' && !in_array($prestudent_id, $prestudent_arr))
if($prestudent_id != '' && !in_array($prestudent_id, $prestudent_arr))
{
echo ' <INPUT id="input_prestudent" type="text" name="prestudent" value="'.($prestudent_id!='-1'?$prestudent_id:'').'">';
}
@@ -323,7 +327,7 @@ if($result = $db->db_query($qry))
echo '</SELECT>';
}
echo '<input type="submit" value="Dieses Teilgebiet l&ouml;schen" name="deleteteilgebiet" onclick="return confirm(\'Antworten dieses Gebietes wirklich löschen?\')">&nbsp;&nbsp;&nbsp;&nbsp;';
echo '&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="Dieses Teilgebiet l&ouml;schen" name="deleteteilgebiet" onclick="return confirm(\'Antworten dieses Gebietes wirklich löschen?\')">&nbsp;&nbsp;&nbsp;&nbsp;';
if(isset($_POST['deleteteilgebiet']))
{
if(!$rechte->isBerechtigt('basis/testtool', null, 'suid'))
@@ -428,7 +432,7 @@ if(isset($_POST['deleteteilgebiet']))
echo '<span class="error">Wählen Sie bitte ein Gebiet, dessen Antworten Sie löschen wollen</span>';
}
echo '<input type="submit" value="! Alle Teilgebiete l&ouml;schen !" name="delete_all" onclick="return confirm(\'Wollen Sie wirklich ALLE Antworten des Prüflings löschen?\')"></form>';
echo '&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="! Alle Teilgebiete l&ouml;schen !" name="delete_all" onclick="return confirm(\'Wollen Sie wirklich ALLE Antworten des Prüflings löschen?\')"></form>';
// Alle Antworten aller Gebiete einer Person löschen und einen Logfile-Eintrag mit Undo-Befehl erstellen
if(isset($_POST['delete_all']))