, * Andreas Oesterreicher and * Rudolf Hangl . * Cristina Hainberger */ /** * @brief bietet die Moeglichkeit zur Anzeige und * Aenderung der Zeitwuensche */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/basis_db.class.php'); require_once('../../../include/globals.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/zeitwunsch.class.php'); require_once('../../../include/zeitwunsch_gueltigkeit.class.php'); require_once('../../../include/studiensemester.class.php'); require_once('../../../include/studiengang.class.php'); require_once('../../../include/zeitaufzeichnung_gd.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/lehrveranstaltung.class.php'); require_once('../../../include/lehreinheit.class.php'); require_once('../../../include/lehrstunde.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/sprache.class.php'); $sprache = getSprache(); $lang = new sprache(); $lang->load($sprache); $p = new phrasen($sprache); if (!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); $uid = get_uid(); if(!check_lektor($uid)) die($p->t('global/keineBerechtigungFuerDieseSeite')); $datum_obj = new datum(); // Nächstes Studiensemester $next_ss = new Studiensemester(); $next_ss->getNextStudiensemester(); // Aktuelles Studiensemester $akt_ss = new Studiensemester(); $akt_ss->load($akt_ss->getAkt()); // Dropdown: Aktuelles/naechstes Studiensemester zum Bearbeiten $selected_ss = (isset($_GET['stsem']) && is_string($_GET['stsem'])) ? $_GET['stsem'] : $next_ss->studiensemester_kurzbz; // Default: Nächstes Studiensemester // Dropdown: Vergangene Studiensemester zum Kopieren $selected_past_ss = (isset($_GET['pastStsem']) && is_string($_GET['pastStsem'])) ? $_GET['pastStsem'] : null; // Default: null //Stundentabelleholen if(! $result_stunde=$db->db_query('SELECT * FROM lehre.tbl_stunde ORDER BY stunde')) die($db->db_last_error()); $num_rows_stunde=$db->db_num_rows($result_stunde); // Personendaten $person = new benutzer(); if(!$person->load($uid)) die($person->errormsg); $ma = new mitarbeiter($uid); $fixangestellt = $ma->fixangestellt; // Check, ob Bearbeitung des ZW gesperrt ist. // Gesperrt, wenn Lektor bereits zugewiesene LVs hat. // Sperre in jeden Fall aufgehoben, wenn ein ZW kopiert wird. (denn ist eine eventuelle Sperre bereits manuell aufgehoben worden) $isGesperrt = checkIsVerplant($uid, $selected_ss) && is_null($selected_past_ss); // boolean // Erklärung zu Pausen bei geteilten Arbeitszeiten speichern if (isset($_GET['selbstverwaltete-pause-akt']) && !empty($_GET['submit-akt'])) { $selbstverwaltete_pause = ($_GET['selbstverwaltete-pause-akt'] == 'yes') ? true : false; $zeitaufzeichnung_gd = new Zeitaufzeichnung_gd(); $zeitaufzeichnung_gd->uid = $uid; $zeitaufzeichnung_gd->studiensemester_kurzbz = $akt_ss->studiensemester_kurzbz; $zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause; $za_gd = new Zeitaufzeichnung_gd(); $za_gd->load($uid, $akt_ss->studiensemester_kurzbz); if ($za_gd->uid) { echo 'Bereits eingetragen'; } else if (!$zeitaufzeichnung_gd->save()) { echo $zeitaufzeichnung_gd->errormsg; } } if (isset($_GET['selbstverwaltete-pause']) && !empty($_GET['submit'])) { $selbstverwaltete_pause = ($_GET['selbstverwaltete-pause'] == 'yes') ? true : false; $zeitaufzeichnung_gd = new Zeitaufzeichnung_gd(); $zeitaufzeichnung_gd->uid = $uid; $zeitaufzeichnung_gd->studiensemester_kurzbz = $next_ss->studiensemester_kurzbz; $zeitaufzeichnung_gd->selbstverwaltete_pause = $selbstverwaltete_pause; $za_gd = new Zeitaufzeichnung_gd(); $za_gd->load($uid, $next_ss->studiensemester_kurzbz); if ($za_gd->uid) { echo 'Bereits eingetragen'; } else if (!$zeitaufzeichnung_gd->save()) { echo $zeitaufzeichnung_gd->errormsg; } } // Zeitwuensche speichern if (isset($_GET['type']) && $_GET['type'] == 'save') { // Letzte Zeitwunschgueltigkeit (ZWG) holen $zwg = new Zeitwunsch_gueltigkeit(); $zwg->getByUID($uid, 1); $lastZwg = !empty($zwg->result) ? $zwg->result[0] : null; // Check, ob letzte ZWG im nächsten Studiensemester startet. D.h. es existiert ein neuer Zeitwunsch in der Zukunft $lastZwgStartsNextSemester = (!is_null($lastZwg) && $lastZwg->von >= $next_ss->start) ? true : false; $zw_zwg_id = null; // ZWG ID, die zum Speichern / Updaten des Zeitwunsches uebergeben wird // Wenn allererster Zeitwunsch, also noch keine ZWG vorhanden if (is_null($lastZwg)) { // Wenn ZW fuer naechstes Studiensemester ist if ($selected_ss == $next_ss->studiensemester_kurzbz) { // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen $zw_zwg_id = insertZWG($uid, $next_ss->start, null); } // Wenn Zeitwunsch fuer aktuelles Studiensemester ist if ($selected_ss == $akt_ss->studiensemester_kurzbz) { // Neue ZWG setzen: von = now(), bis offen lassen $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), null); } } // Wenn mindestens eine ZWG vorhanden if (!is_null($lastZwg)) { // Wenn Zeitwunsch fuer naechstes Studiensemester ist if ($selected_ss == $next_ss->studiensemester_kurzbz) { // Wenn naechstes Studiensemester schon eine eigene ZWG hat if ($lastZwgStartsNextSemester) { // Nur Zeitwunsch dieser ZWG updaten $zw_zwg_id = $lastZwg->zeitwunsch_gueltigkeit_id; } // Wenn naechstes Studiensemester keine eigene ZWG hat if (!$lastZwgStartsNextSemester) { // Fuer bisher letzte ZWG ein Endedatum setzen: bis = Ende aktuelles Studiensemester updateZWG($uid, $lastZwg->zeitwunsch_gueltigkeit_id, $akt_ss->ende); // Neue ZWG setzen: von = Start nächstes Studiensemester, bis offen lassen $zw_zwg_id = insertZWG($uid, $next_ss->start, null); } } // Wenn Zeitwunsch fuer aktuelles Studiensemester ist if ($selected_ss == $akt_ss->studiensemester_kurzbz) { /** * Check, ob aktuelles Studiensemester eine ZWG hat. * Wenn die allererste ZWG fuer das naechste Studiensemester erstellt wurde, dann hat das * aktuelle Studiensemester noch keine ZWG. * */ $zwg = new Zeitwunsch_gueltigkeit(); $zwg->getByStudiensemester($uid, $akt_ss->studiensemester_kurzbz); $akt_ss_zwg = !empty($zwg->result) ? $zwg->result[0] : null; // Keine ZWG fuer aktuelles Studiensemester vorhanden. // Da eine ZWG ID aber schon vorhanden: USER HAT ERSTMALIG MIT NAECHSTEM STUDIENSEMESTER EINTRAG BEGONNEN if (is_null($akt_ss_zwg)) { // Neue ZWG setzen: von = now(), ende = Ende aktuelles Studiensemester $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss->ende); } // ZWG für aktuelles Studiensemester ist vorhanden --> SPLIT AKTUELLE STUDIENSEMESTER if ((!is_null($akt_ss_zwg))) { // Wenn am selben Tag schon neue ZWG gespeichert wurde, keine neue ZWG anlegen, sondern diese nur updaten // Verhindert mehrfache Eintraege, wenn oefters zwischengespeichert wird. if ((new DateTime($akt_ss_zwg->von))->format('Y-m-d') == (new Datetime())->format('Y-m-d')) { updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, $akt_ss_zwg->bis); $zw_zwg_id = $akt_ss_zwg->zeitwunsch_gueltigkeit_id; } else { // Neue ZWG setzen: von = now(), bis = Bis von ZWG des aktuellen Studiensemesters uebernehmen: // -> bis ist entweder Ende aktuelles Studiensemester (wenn ZWG für nächstes Studiensemester vorhanden ist) // -> sonst ist bis null $zw_zwg_id = insertZWG($uid, (new DateTime())->format('Y-m-d H:i:s'), $akt_ss_zwg->bis); // Fuer bisher letzte ZWG das Endedatum auf gestern setzen: bis = gestern // NOTE: MUSS nach dem insert sein updateZWG($uid, $akt_ss_zwg->zeitwunsch_gueltigkeit_id, (new DateTime('yesterday'))->format('Y-m-d H:i:s')); } } } } // Insert Zeitwunsch mit Zeitwunsch ZWG ID if (is_numeric($zw_zwg_id)) { $zw = new zeitwunsch(); for ($t=1;$t<7;$t++) { for ($i=0;$i<$num_rows_stunde;$i++) { $var='wunsch'.$t.'_'.$i; if(!isset($_POST[$var])) continue; $gewicht=$_POST[$var]; $stunde=$i+1; $zw->mitarbeiter_uid = $uid; $zw->stunde = $stunde; $zw->tag = $t; $zw->gewicht = $gewicht; $zw->updateamum = date('Y-m-d H:i:s'); $zw->updatevon = $uid; $zw->zeitwunsch_gueltigkeit_id = $zw_zwg_id; if (!$zw->exists($uid, $zw_zwg_id, $stunde, $t)) { $zw->new = true; $zw->insertamum = date('Y-m-d H:i:s'); $zw->insertvon = $uid; } else { $zw->new = false; } if(!$zw->save()) echo $zw->errormsg; } } } // Wenn speichern möglich ist, dann hat der Lektor entweder keine LVs zugeteilt oder hat aktiv die Bearbeitungssperre // deaktiviert. Bearbeitungssperre wird gesetzt, wenn isGesperrt true ist. Deshalb hier mit false überschreiben. $isGesperrt = false; } /** * Zeitwunschgueltigkeit fuer Tabelle holen. * Der Zeitwunsch wird anhand der Zeitwunschgueltigkeit (ZWG) des gewaehlten Studiensemesters ermittelt. * Das Studiensemester wird, je nach Vorhandensein, in dieser Reihenfolge herangezogen: * 1. Wenn in Dropdown ausgewaehlt: Vergangenes Studiensemester (zum Kopieren von Zeitwunsch) * 2. Wenn in Dropdown ausgewaehlt: Aktuelles Studiensemester * 3: Default: Nächstes Studiensemesters */ $zwg = new zeitwunsch_gueltigkeit(); $tmp_ss = is_null($selected_past_ss) ? $selected_ss : $selected_past_ss; $zwg->getByStudiensemester($uid, $tmp_ss); $zwg_id = !empty($zwg->result[0]) ? $zwg->result[0]->zeitwunsch_gueltigkeit_id : null; //null, wenn noch kein ZW /** * Zeitwunsch fuer Tabelle holen * Wenn noch kein Zeitwunsch vorhanden, bleibt die Zeitwunsch Instanz leer * */ $zw = new zeitwunsch(); if (!$zw->loadByZWG($uid, $zwg_id)) { die($zw->errormsg); } $wunsch = $zw->zeitwunsch; /** * Init ZWG Objekt zum Erstellen einer neuen ZWG */ function insertZWG($uid, $von, $bis) { $zwg = new Zeitwunsch_gueltigkeit(); $zwg->new = true; $zwg->mitarbeiter_uid = $uid; $zwg->von = $von; $zwg->bis = $bis; $zwg->insertvon = $uid; if ($zwg->save()) { return $zwg->zeitwunsch_gueltigkeit_id; } else { die($zwg->errormsg); } } /** * Init ZWG Objekt zum Updaten einer bestehenden ZWG */ function updateZWG($uid, $zwg_id, $bis) { $zwg = new Zeitwunsch_gueltigkeit(); $zwg->new = false; $zwg->zeitwunsch_gueltigkeit_id = $zwg_id; $zwg->mitarbeiter_uid = $uid; $zwg->bis = $bis; $zwg->updatevon = $uid; if (!$zwg->save()) { die($zwg->errormsg); } return; } /** * Check, ob Lektor bereits zugewiesene LVs hat * @param $uid * @param $studiensemester_kurzbz * @return bool|void */ function checkIsVerplant($uid, $studiensemester_kurzbz) { $lstd = new Lehrstunde(); if (!$lstd->getStundenplanData('stundenplandev', null, $studiensemester_kurzbz, null, $uid, null, true)) { die($lstd->errormsg); } return empty($lstd->result) ? false : true; } /** * Get Studiengaenge of STG assigend to LVs, to which lector is alredy assigend in * the given Studiensemester. * * @param $uid * @param $studiensemester_kurzbz * @return array|void */ function getStgOfVerplant($uid, $studiensemester_kurzbz) { $stg_arr = array(); // Mail data for Studiengang // Get Stundenplan entries of lector of Studiensemester concerned by Zeitwunschgueltigkeit $lstd = new Lehrstunde(); if (!$lstd->getStundenplanData( 'stundenplandev', null, $studiensemester_kurzbz, null, $uid, null, true)) //...but only from now on { die($lstd->errormsg); } // Loop through Stundenplan entries foreach ($lstd->result as $row) { // Get LE of Stundenplan entry $le = new Lehreinheit($row->lehreinheit_id); // GET LV by LE of Stundenplan entry $lv = new Lehrveranstaltung($le->lehrveranstaltung_id); // Build Studiengang array $stg_arr[] = $lv->studiengang_kz; } // Make Studiengang array unique return array_unique($stg_arr); } /** * Get Studiengang eMail Addresses. * @param $stgKz_arr // Studiengang Kennzeichen Array * @return array */ function getStgMail($stgKz_arr) { $stgMail_arr = array(); foreach($stgKz_arr as $stgKz) { $stg = new Studiengang($stgKz); $stgMail_arr[]= $stg->email; } return $stgMail_arr; } ?> <?php echo $p->t('zeitwunsch/zeitwunsch');?>

Zustimmung zur Verplanung in geteilter Arbeitszeit

t('zeitwunsch/geteilteArbeitszeit'); echo '

'; $gd = new zeitaufzeichnung_gd(); $gd->load($uid, $akt_ss->studiensemester_kurzbz); if ( ! $gd->uid ) { echo '

'; echo '
'; echo '
'; echo 'Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '; echo ''; echo ''; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; } else { $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; echo '

Zustimmung für '.$akt_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').''; } $gd = new zeitaufzeichnung_gd(); $gd->load($uid, $next_ss->studiensemester_kurzbz); if ( ! $gd->uid ) { echo '
'; echo '
'; echo '
'; echo 'Zustimmung für '.$next_ss->studiensemester_kurzbz.': '; echo ''; echo ''; echo '
'; echo '
'; echo '
'; echo ''; echo '
'; echo '
'; echo '
'; echo '
'; } else { $zustimmung = ($gd->selbstverwaltete_pause) ? ' erteilt' : 'abgelehnt'; echo '
Zustimmung für '.$next_ss->studiensemester_kurzbz.': '.$zustimmung.' am '.$datum_obj->formatDatum($gd->insertamum,'d.m.Y H:i:s').''; } ?>

'; echo ''; echo ''; // Mein Zeitwunsch-Semesterplan Dropdown, Default = naechstes Studiensemester $next_ss_selected = $next_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; $akt_ss_selected = $akt_ss->studiensemester_kurzbz == $selected_ss ? 'selected' : ''; echo '

'. $p->t('zeitwunsch/gueltigIm'); echo ''; echo '


'; // Tabelle Zeitwunsch-Semesterplan echo ''; // Tabelle Kopfzeile echo ''; echo ''; for ($i=0;$i<$num_rows_stunde; $i++) { $beginn=$db->db_result($result_stunde,$i,'"beginn"'); $beginn=substr($beginn,0,5); $ende=$db->db_result($result_stunde,$i,'"ende"'); $ende=substr($ende,0,5); $stunde=$db->db_result($result_stunde,$i,'"stunde"'); echo ""; } echo ''; // Tabelle Zellen for ($j=1; $j<7; $j++) { echo ''; for ($i=0;$i<$num_rows_stunde;$i++) { if (isset($wunsch[$j][$i+1])) $index=$wunsch[$j][$i+1]; else $index=1; // Defaultwert, wenn kein Zeitwunsch vorhanden $bgcolor=$cfgStdBgcolor[$index+3]; echo ''; } echo ''; } echo '
'.$p->t('global/stunde').'
'.$p->t('global/beginn').'
'.$p->t('global/ende').'
$stunde
$beginn
$ende
'.$tagbez[$lang->index][$j].'
'; // Zeitwunsch aendern / kopieren echo '
'; echo '
'; echo ''. $p->t('zeitwunsch/erklaerungstext'). '
'; echo '
'; echo '
'; // end col-xs-12 echo '
'; // end row echo '
'; echo '
'; // Radiobuttons aendern / kopieren $radioChangeChecked = is_null($selected_past_ss) ? 'checked' : ''; $radioCopyChecked = !is_null($selected_past_ss) ? 'checked' : ''; echo '
'; echo ''.$p->t('zeitwunsch/fuer', array($selected_ss)). ''; echo ''; echo ''; if ($isGesperrt) { echo ''.$p->t('zeitwunsch/stundenBereitsVerplant', array($selected_ss)). ''; } echo '
'; echo '
'; // end col-xs-9 echo ''; // end col-xs-3 $divChangeHidden = !is_null($selected_past_ss) || $isGesperrt ? 'hidden' : ''; $divCopyHidden = is_null($selected_past_ss) || $isGesperrt ? 'hidden' : ''; $divisGesperrtHidden = $isGesperrt ? '' : 'hidden'; echo '
'; echo '
'; echo '' . $p->t('zeitwunsch/tragenSieInDiesesNormwochenraster') .''; echo '
'; // end col echo '
'; // BLANK echo '
'; // end col echo '
'; // end divChangeZWG echo '
'; echo '
'; echo '' . $p->t('zeitwunsch/kopierenText') .''; echo '
'; // end col $studiensemester = new Studiensemester(); $tmp_ss = $selected_ss == $akt_ss->studiensemester_kurzbz ? $studiensemester->getPrevious() : $akt_ss->studiensemester_kurzbz; $studiensemester->load($tmp_ss); $zwg = new Zeitwunsch_gueltigkeit(); $zwg->getByUID($uid, 4, true, $studiensemester->ende); $past_zwg_arr = $zwg->result; echo '
'; echo ''; echo '
'; // end col echo '
'; // end divCopyZWG echo '
'; // Mail Adressen der Studiengaenge, wo Lektor ueber eine LV bereits verplant ist $stgKzOfVerplant_arr = getStgOfVerplant($uid, $selected_ss); $stgMail_arr = getStgMail($stgKzOfVerplant_arr); echo '
'; echo '
'; echo '
'; echo ''. $p->t("zeitwunsch/bearbeitungDeaktiviert"). ': '; echo $p->t("zeitwunsch/bearbeitungDeaktiviertText", array($selected_ss, implode($stgMail_arr, '; '))). ' '. $p->t("zeitwunsch/bearbeitungAktivieren"). '
'. $p->t("zeitwunsch/kompetenzfeldWirdInformiert") . ' '; echo '
'; // end panel heading echo '
'; // end panel echo '
'; // end col echo '
'; // end divisGesperrt // Speichern - Button echo '
'; echo ''; echo '
'; echo '
'; // end row echo '
'; ?>
t('zeitwunsch/folgendePunkteSindZuBeachten');?>:
  • t('zeitwunsch/verwendenSieDenWertNur');?>
  • t('zeitwunsch/sperrenSieNurTermine');?>
  • t('zeitwunsch/esSolltenFuerJedeStunde');?>


t('zeitwunsch/wert');?>
t('zeitwunsch/bedeutung');?>
2
  t('zeitwunsch/hierMoechteIchUnterrichten');?>
1
  t('zeitwunsch/hierKannIchUnterrichten');?>
-1
  t('zeitwunsch/nurInNotfaellen');?>
-2
  t('zeitwunsch/hierAufGarKeinenFall');?>

t('zeitsperre/zeitsperren');?>:

"; echo $p->t('zeitwunsch/formularZumEintragenDerZeitsperren', array($href)); ?>