* Cristina Hainberger */ require_once('../../../config/cis.config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/ampel.class.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/benutzerfunktion.class.php'); require_once('../../../include/organisationseinheit.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/studiensemester.class.php'); require_once('../../../include/person.class.php'); $user = get_uid(); $sprache = getSprache(); $p = new phrasen($sprache); $person = new person(); $person->getPersonFromBenutzer($user); $show = (isset($_POST['show']) ? $_POST['show'] : 'aktuell'); //show: alle / aktuell $is_popup = (isset($_GET['verpflichtend']) && $_GET['verpflichtend'] == true) ? true : false; //Leiter OEs holen $benutzerfunktion = new benutzerfunktion(); $benutzerfunktion->getBenutzerFunktionen('Leitung', '', '', $user); $organisationseinheit = new organisationseinheit(); $oes=array(); foreach ($benutzerfunktion->result as $row) { $oe = $organisationseinheit->getChilds($row->oe_kurzbz); $oes = array_merge($oe, $oes); } //Berechtigungs OEs holen $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($user); if($rechte->isBerechtigt('basis/ampeluebersicht')) { $oes_berechtigung = $rechte->getOEkurzbz('basis/ampeluebersicht'); $oes = array_merge($oes_berechtigung, $oes); } array_unique($oes); //actual studiensemester $studiensemester = new studiensemester(); $ss_akt = $studiensemester->getakt(); //semesterstart $studiensemester = new studiensemester($ss_akt); $semester_start = $studiensemester->start; $type = isset($_GET['type'])?$_GET['type']:''; $ampel_id = isset($_GET['ampel_id'])?$_GET['ampel_id']:''; //ampel confirmation & relaod of header link if($type=='bestaetigen' && is_numeric($ampel_id)) { $ampel = new ampel(); $message=''; if($ampel->load($ampel_id)) { if($ampel->isZugeteilt($user, $ampel->benutzer_select)) { if(!$ampel->isBestaetigt($user, $ampel_id)) { if($ampel->bestaetigen($user, $ampel_id)) //confirm ampel { echo ''; header('Refresh:0'); exit; } else $message = ''.$ampel->errormsg.''; } } else $message = ''.$p->t('tools/nichtZugeteilt').''; } else $message = ''.$p->t('tools/ampelNichtGefunden').''; if ($message != '') echo ''; } //get all user ampeln list( $user_ampel_arr, $cnt_ueberfaellig) = //counts overdue ampeln (not expired) getUserAmpelData($user); //sort ampeln if (!empty($user_ampel_arr)) { $user_ampel_arr = sortUserAmpelData($user_ampel_arr); } //filter ampeln for popup (if at least one mandatory, which is neither expired nor before vorlaufzeit) if ($is_popup) { list( $user_ampel_arr, $cnt_ueberfaellig_und_verpflichtend) = //counts mandatory, overdue (not expired), unconfirmed, not before vorlaufzeit getPopupUserAmpelData($user_ampel_arr); } //filter ampeln of actual term (if radiobutton is set to aktuell) if (!$is_popup && $show == 'aktuell') $user_ampel_arr = getActualUserAmpelData($user_ampel_arr, $semester_start); //***************************************** FUNCTIONS for Ampeln function getUserAmpelData($user) { $cnt_ueberfaellig = 0; $ampel = new ampel(); $ampel->loadUserAmpel($user, true); $user_ampel_arr = array(); $datum = new datum(); $now = $datum->mktime_fromdate(date('Y-m-d')); foreach($ampel->result as $row) { $deadline = $datum->mktime_fromdate($row->deadline); $vorlaufzeit = $row->vorlaufzeit; $verfallszeit = $row->verfallszeit; $bestaetigt = $ampel->isBestaetigt($user, $row->ampel_id); $verpflichtend = $row->verpflichtend; // 't'/'f' $datum_liegt_vor_vorlaufzeit = false; $datum_liegt_nach_verfallszeit = false; if (!is_null($vorlaufzeit)) $datum_liegt_vor_vorlaufzeit = $now < strtotime('-' . $vorlaufzeit . ' day', $deadline); if (!is_null($verfallszeit)) $datum_liegt_nach_verfallszeit = $now > strtotime('+' . $verfallszeit . ' day', $deadline); //default $show_ampel = true; //true while actual date is not before vorlaufzeit $abgelaufen = false; //false while actual date is not after verfallszeit $active = true; //true while not confirmed or expired $status = 'gelb'; //yellow while not overdue (red) or confirmed (green) $status_ampel = ''; //ampel image if ($bestaetigt) $status = 'gruen'; if ($datum_liegt_vor_vorlaufzeit) $show_ampel = false; if ($datum_liegt_nach_verfallszeit) $abgelaufen = true; if ($now >= $deadline && !$bestaetigt) { if (!$abgelaufen) $cnt_ueberfaellig++; $status = 'rot'; } if ($bestaetigt || $abgelaufen) $active = false; //assign png-image to ampelstatus switch($status) { case 'rot': $status_ampel= ''; break; case 'gelb': $status_ampel= ''; break; case 'gruen': $status_ampel= ''; break; default: $status_ampel= ''; break; } $user_ampel_arr[] = array( 'ampel_id' => $row->ampel_id, 'kurzbz' => $row->kurzbz, 'show_ampel' => $show_ampel, 'status' => $status, 'status_ampel' => $status_ampel, 'verpflichtend' => $verpflichtend, 'bestaetigt' => $bestaetigt, 'deadline' => $row->deadline, 'vorlaufzeit' => $row->vorlaufzeit, 'verfallszeit' => $row->verfallszeit, 'beschreibung' => $row->beschreibung, 'abgelaufen' => $abgelaufen, 'active' => $active, 'buttontext' => $row->buttontext); } return array($user_ampel_arr, $cnt_ueberfaellig); } function sortUserAmpelData($user_ampel_arr) { //first: sort deadline $deadline_arr = array(); foreach ($user_ampel_arr as $key => $val) { $deadline_arr[$key] = $val['deadline']; } array_multisort($deadline_arr, SORT_DESC, $user_ampel_arr); //second: sort inactive after active $active_ampel_arr = array(); $inactive_ampel_arr = array(); foreach ($user_ampel_arr as $user_ampel) { if ($user_ampel['active']) { $active_ampel_arr[] = $user_ampel; } else { $inactive_ampel_arr[] = $user_ampel; } } return $user_ampel_arr = array_merge($active_ampel_arr, $inactive_ampel_arr); } function getPopupUserAmpelData($user_ampel_arr) { $arr = array(); $cnt_ueberfaellig_und_verpflichtend = 0; foreach ($user_ampel_arr as $user_ampel) { if ($user_ampel['verpflichtend'] == 't' && !$user_ampel['bestaetigt'] && !$user_ampel['abgelaufen'] && $user_ampel['show_ampel']) { $arr[] = $user_ampel; if ($user_ampel['status'] == 'rot') $cnt_ueberfaellig_und_verpflichtend++; } } return array ($arr, $cnt_ueberfaellig_und_verpflichtend); } function getActualUserAmpelData($user_ampel_arr, $semester_start) { $arr = array(); foreach ($user_ampel_arr as $user_ampel) { if ($user_ampel['deadline'] >= $semester_start) $arr[] = $user_ampel; } return $arr; } ?> <?php echo $p->t('tools/ampelsystem') ?>
' . $p->t('tools/ampelsystem') . ''; //***************************************** AROUSE SANCHO for mandatory ampeln if ($is_popup) { //sancho message if mandatory ampeln exist if (count($user_ampel_arr) > 0) { echo '
sancho_verpflichtende_ampeln



'; } } ?>
t('tools/ampelAnzeigeFuer') ?>  



'; } elseif ($cnt_active != 0 && !$is_popup) { echo '
'; } //fill panel with ampeln foreach ($user_ampel_arr as $user_ampel) { //use only ampeln that are not overdue if ($user_ampel['show_ampel'] == true) { //heading line for inactive ampeln if ($user_ampel['active'] == false && $cnt_inactive == 1) { echo '
'; $cnt_inactive++; } ?>