Files
2025-06-03 08:57:28 +02:00

1903 lines
69 KiB
PHP

<?php
/* Copyright (C) 2008 Technikum-Wien
*
* 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: Christian Paminger < christian.paminger@technikum-wien.at >
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
session_start();
require_once('../../config/cis.config.inc.php');
require_once('../../include/wochenplan.class.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/betriebsmittel.class.php');
require_once('../../include/betriebsmittelperson.class.php');
require_once('../../include/betriebsmitteltyp.class.php');
require_once('../../include/mail.class.php');
require_once('../../include/news.class.php');
require_once('../../include/content.class.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/konto.class.php');
require_once('../../include/functions.inc.php');
require_once('../../include/authentication.class.php');
require_once('../../include/addon.class.php');
require_once('../../include/'.EXT_FKT_PATH.'/serviceterminal.inc.php');
// 2025-02-05 ma0080 add query parameter to force login e.g. when used in iframe in CIS4.0 begin
if( isset($_GET['forcelogin']) && !isset($_SERVER['PHP_AUTH_USER']) ) {
header('WWW-Authenticate: Basic Realm="' . AUTH_NAME . '"');
http_response_code(401);
die();
}
// 2025-02-05 ma0080 add query parameter to force login e.g. when used in iframe in CIS4.0 end
if (!$db = new basis_db())
$db=false;
// Initialisieren des Fehlertextes
$error='';
$news='';
// ------------------------------------------------------------------------------------------
// Konstante
// ------------------------------------------------------------------------------------------
// Session Bereich
if (!defined('constSESSIONNAME')) define('constSESSIONNAME',"infoterminal" );
// Datum - Format
if (!defined('constHeaderDatumZeit')) define('constHeaderDatumZeit','%A, %d %B %G %R' );
if (!defined('constRaumDatumZeit')) define('constRaumDatumZeit','%a, %d.%m.%Y' );
if (!defined('constHeaderStundenplan')) define('constHeaderStundenplan','KW %W, %B %G' );
if (!defined('constHeaderStundenplanTag')) define('constHeaderStundenplanTag','%A<br>%d.%m.%y' );
if (!defined('constAktuelleZeitHHMi')) define('constAktuelleZeitHHMi', date("Hi", time()));
if (!defined('constAktuelleZeitHH')) define('constAktuelleZeitHH', date("H", time()));
// ------------------------------------------------------------------------------------------
// Request Parameter
// ------------------------------------------------------------------------------------------
$timer=trim((isset($_REQUEST['timer']) ? $_REQUEST['timer']:0));
if(!isset($ServiceTerminalDefaultRaumtyp))
$ServiceTerminalDefaultRaumtyp='HS';
// Raumtyp
$raumtyp_kurzbz=trim((isset($_REQUEST['raumtyp_kurzbz']) ? $_REQUEST['raumtyp_kurzbz']:$ServiceTerminalDefaultRaumtyp));
// Saal - Raum
$ort_kurzbz=trim((isset($_REQUEST['ort_kurzbz']) ? $_REQUEST['ort_kurzbz']:''));
// Work
$work=trim((isset($_REQUEST['work']) ? $_REQUEST['work']:'raumanzeigen'));
// User
$key_input=trim((isset($_REQUEST['key_input']) ? $_REQUEST['key_input']:''));
$uid=trim((isset($_REQUEST['uid']) ? $_REQUEST['uid']:''));
$pwd=trim((isset($_REQUEST['pwd']) ? $_REQUEST['pwd']:''));
$debug=trim((isset($_REQUEST['debug']) ? $_REQUEST['debug']:''));
$sdtools=trim((isset($_REQUEST['sdtools']) ? $_REQUEST['sdtools']:false));
$standort_id = (isset($_COOKIE['standort_id']) ? $_COOKIE['standort_id']:'');
if ($sdtools)
$work='login';
// ------------------------------------------------------------------------------------------
// Verarbeiten wenn Kennzeichen work = login oder logoff
// ------------------------------------------------------------------------------------------
if (mb_strtolower($work)=='logoff')
{
if (isset($_SESSION[constSESSIONNAME]))
unset($_SESSION[constSESSIONNAME]);
$uid='';
$work='raumanzeigen';
$raumtyp_kurzbz=$ServiceTerminalDefaultRaumtyp;
}
// Es gibt eine Serverauth., aber es erfolgte noch kein Login fuer Persoenliche Daten - Login erzwingen
if (isset($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_USER']) && (!isset($_SESSION[constSESSIONNAME]["uid"]) || empty($_SESSION[constSESSIONNAME]["uid"])) )
{
$work="login";
$uid=trim((isset($_SERVER['PHP_AUTH_USER'])?$_SERVER['PHP_AUTH_USER']:''));
$pwd=trim((isset($_SERVER['PHP_AUTH_PW'])?$_SERVER['PHP_AUTH_PW']:''));
}
// Login Prozedure wenn Anmeldung ueber einen Schluessel erfolgte
// - Lesen der Betriebsmittel um Anwender zu ermitteln ( es wird hier kein Passwort benoetigt / LDAP )
$cardlogin=false;
$cardnumber = "";
if ($db && !empty($key_input)) // Login
{
// Pruefen ob es sich um eine HEX Eingabe handelt
$betriebsmittel = new betriebsmittel();
//$key_input = $betriebsmittel->transform_kartennummer($key_input);
// führende nullen entfernen
$key_input = preg_replace("/^0*/", "", $key_input);
$uidStudent = getUidFromCardNumber($key_input);
if($uidStudent != false)
{
$uid = $uidStudent;
$work = "login";
$cardlogin = true;
}
else
{
$addon_externeAusweise = false;
$addon = new addon();
$addon->loadAddons();
foreach($addon->result as $ad)
{
if($ad->kurzbz == "externeAusweise")
{
$addon_externeAusweise = true;
}
}
if($addon_externeAusweise)
{
require_once (dirname(__FILE__).'/../../addons/externeAusweise/include/idCard.class.php');
$idCard = new idCard();
if($idCard->loadByCardnumber($key_input))
{
$uid = "";
$cardnumber = $idCard->cardnumber;
$work = "verlaengerung";
$cardlogin = true;
$_SESSION[constSESSIONNAME]["uid"]=$cardnumber;
}
}
}
}
if (mb_strtolower($work)=='login')
{
if (isset($_SESSION[constSESSIONNAME]))
unset($_SESSION[constSESSIONNAME]);
if (!empty($uid)) // Login
{
$ldapstatus='';
if ($cardlogin || !$ldapstatus=ldap_uid_check($uid,$pwd) )
{
// Lesen der Userdaten
if ($user_array=uid_read_mitarbeiter_oder_student($db,$uid))
{
// Personendaten lesen wenn Mitarbeiter oder Student gefunden wurde
$_SESSION[constSESSIONNAME]["uid"]=$uid;
$_SESSION[constSESSIONNAME]["pwd"]=$pwd;
$_SESSION[constSESSIONNAME]["dat"]=$user_array;
}
}
// Wenn kein ldapstatus geliefert wurde ist alles OK, sonst ist im ldapstatus die Fehlermeldung
$error.=$ldapstatus;
// Login erfolgreich - Eigenenstundenplan anzeigen
if (isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) )
$work='stundenplan';
}
}
// ------------------------------------------------------------------------------------------
// Lesen Newstickerzeilen
// ------------------------------------------------------------------------------------------
$studiengang_kz="0";
$semester="";
if(isset($_SESSION[constSESSIONNAME]["dat"]) && isset($_SESSION[constSESSIONNAME]["dat"]->studiengang_kz) )
{
$studiengang_kz=trim($_SESSION[constSESSIONNAME]["dat"]->studiengang_kz);
$semester=trim($_SESSION[constSESSIONNAME]["dat"]->semester);
}
$fachbereich_kurzbz="";
if (strtolower($work)!=strtolower("meinedaten") || !isset($_SESSION[constSESSIONNAME]))
$news=read_create_html_news($db,$fachbereich_kurzbz,$studiengang_kz,$semester);
// ------------------------------------------------------------------------------------------
// Linkes Auswahlmenue fuer Raumtypen
// ------------------------------------------------------------------------------------------
if(isset($ServiceTerminalRaumtypen) && !is_null($ServiceTerminalRaumtypen))
$row_ort = $ServiceTerminalRaumtypen;
else
{
$row_ort=array(
array("type"=>"EDV","beschreibung"=>"&nbsp;Freie&nbsp;<br>&nbsp;PC R&auml;ume&nbsp;","img"=>""),
array("type"=>"HS","beschreibung"=>"&nbsp;Freie&nbsp;<br>&nbsp;H&ouml;rs&auml;le&nbsp;","img"=>""),
array("type"=>"SEM","beschreibung"=>"&nbsp;Freie&nbsp;<br>&nbsp;Seminarr&auml;ume&nbsp;","img"=>""),
array("type"=>"Lab","beschreibung"=>"&nbsp;Freie&nbsp;<br>&nbsp;Laborr&auml;ume&nbsp;","img"=>""),
);
}
$refreshtime = ($sdtools?99999:(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"])?10:(date('H')>22 || date('H')<5?12000:900)));
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Info-Terminal</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">
<script type="text/javascript" src="../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
<link rel="stylesheet" href="infoterm.css" type="text/css">
<script language="JavaScript1.2" type="text/javascript">
<!--
var keyfeld;
var warten;
var PrintWin;
var BitteWartenID='bitteWarten';
var input_focus;
var verlaengerungsautomat = false;
function isVerlaengerungsautomat()
{
$.ajax({url:"<?php echo mb_str_replace('https://','http://',APP_ROOT); ?>isProxyActive",
cache: false,
async: true,
timeout: 35000,
error: proxyError,
dataType:"text",
data: { },
success: proxySuccess
});
}
function proxyError(data)
{
}
function proxySuccess(data)
{
if(data=='TRUE')
verlaengerungsautomat = true;
if(verlaengerungsautomat == true)
{
<?php if (!isset($_SESSION[constSESSIONNAME]["uid"]) && empty($_SESSION[constSESSIONNAME]["uid"]))
echo 'getRFID(); ';?>
document.getElementById('btn_ejectcard').style.display = 'block';
if(document.getElementById('btn_verlaengerung'))
document.getElementById('btn_verlaengerung').style.display = 'block';
}
}
function checkVerlaengerung()
{
if(verlaengerungsautomat == true)
alert('Verlängerungsautomat');
else
alert('Infoterminal');
}
function getRFID()
{
$.ajax({url:"<?php echo mb_str_replace('https://','http://',APP_ROOT); ?>getUID",
cache: false,
async:true,
timeout:35000,
error: showRFIDError,
dataType: "text",
data: { },
success: fillRFID
});
}
function showRFIDError(data)
{
// wenn fehler aufgetreten ist, nochmal aufrufen
getRFID();
}
function fillRFID(data)
{
if(data != '' && data != 'TIMEOUT')
{
// wenn nummer und kein timeout zurückgekommen ist dann weiterleiten
document.location.href='<?php echo $_SERVER['PHP_SELF'];?>?key_input='+data+'&work=login&timer=<?PHP echo time().'&amp;standort_id='.$standort_id; ?>';
}
if(data =='TIMEOUT')
{
getRFID();
}
}
function printCard()
{
// Automatischen Seiten Refresh deaktivieren
window.clearTimeout(logouttimeout);
$('#divDruckStatus').html('Karte wird gedruckt - Bitte warten <img src="../../skin/images/spinner.gif">');
$('#divKarteDrucken').hide();
// Karte Drucken
$.ajax({url:"<?php echo mb_str_replace('https://','http://',APP_ROOT); ?>printCard",
cache:false,
async:true,
timeout:30000,
error: cardError,
dataType: "text",
success: cardSuccess
});
}
function cardError(data)
{
alert("Print Error")
}
function cardSuccess(data)
{
$('#divDruckStatus').html('Bitte entnehmen Sie ihre Karte');
logouttimeout = window.setTimeout('logout()', 2000);
// nach print noch einmal aus der seriellen verbindung lesen
$.ajax({url:"<?php echo mb_str_replace('https://','http://',APP_ROOT); ?>getUID",
cache: false,
async:true,
timeout:35000,
dataType: "text",
data: { }
});
}
function ejectCard()
{
$('#btn_ejectcard').html('Ejecting Card..');
$.ajax({url:"<?php echo mb_str_replace('https://','http://',APP_ROOT); ?>ejectCard",
cache:false,
async:true,
timeout:4000,
error: ejectError,
dataType:"text",
success: ejectSuccess
});
}
function ejectError(data)
{
$('#btn_ejectcard').html('Eject Failed<br>Restarting Service');
window.location.href='index.php?work=Logoff&amp;raumtyp_kurzbz=&amp;ort_kurzbz=&amp;timer=<?PHP echo time().'&standort_id='.$standort_id; ?>';
}
function ejectSuccess(data)
{
// logout
window.location.href='index.php?work=Logoff&amp;raumtyp_kurzbz=&amp;ort_kurzbz=&amp;timer=<?PHP echo time().'&standort_id='.$standort_id; ?>';
}
function logout()
{
if(verlaengerungsautomat == true)
{
document.getElementById('btn_ejectcard').disabled=true;
ejectCard();
}
else
{
window.location.href='index.php?work=Logoff&amp;raumtyp_kurzbz=&amp;ort_kurzbz=&amp;timer=<?PHP echo time().'&standort_id='.$standort_id; ?>';
}
}
function LogoutTimer()
{
logouttimeout = window.setTimeout('logout()', <?php echo $refreshtime*1000;?>);
}
function updateSiteRefresh()
{
window.clearTimeout(logouttimeout);
LogoutTimer();
}
<?php if (isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) )
{ ?>
input_focus=window.setInterval('input_focus_key()',8000);
function input_focus_key() {
if (document.getElementById('key_input')) {
document.getElementById('key_input').focus();
}
}
<?php } ?>
function check_key(param_key_input_feld) {
keyfeld=param_key_input_feld;
if (keyfeld && keyfeld.value.length>0) {
// Bitte Wartentext
document.getElementById(BitteWartenID).className='einblenden';
// 10 Stellige Schluessel-Keys muessen auch berucksichtigt werden
if (keyfeld.value.length>7) {
warten=window.setInterval('call_key()',1000);
}
if (keyfeld.value.length>11) {
call_key();
}
}
}
function call_key() {
// sollte noch das Timerobjekt vorhanden sein muss es entfernt werden
if (input_focus) {
window.clearInterval(input_focus);
input_focus=false;
}
if (warten) {
window.clearInterval(warten);
warten=false;
}
if (PrintWin) {
PrintWin.close();
PrintWin=false;
}
if (keyfeld && keyfeld.value.length>0) {
keyfeld.className='ausblenden';
keyfeld.disabled=true ;
var tmpWert=keyfeld.value;
tmpWert=tmpWert.substring(0,12 );
document.location.href='<?php echo $_SERVER['PHP_SELF'];?>?key_input='+encodeURIComponent(tmpWert)+'&work=login&timer=<?PHP echo time().'&amp;standort_id='.$standort_id; ?>';
}
}
function show_layer(x)
{
if (document.getElementById && document.getElementById(x))
{
document.getElementById(x).style.visibility = 'visible';
document.getElementById(x).style.display = 'inline';
} else if (document.all && document.all[x]) {
document.all[x].visibility = 'visible';
document.all[x].style.display='inline';
} else if (document.layers && document.layers[x]) {
document.layers[x].visibility = 'show';
document.layers[x].style.display='inline';
}
}
function hide_layer(x)
{
if (document.getElementById && document.getElementById(x))
{
document.getElementById(x).style.visibility = 'hidden';
document.getElementById(x).style.display = 'none';
} else if (document.all && document.all[x]) {
document.all[x].visibility = 'hidden';
document.all[x].style.display='none';
} else if (document.layers && document.layers[x]) {
document.layers[x].visibility = 'hide';
document.layers[x].style.display='none';
}
}
var aktivTimeout;
function close_news()
{
window.clearTimeout(aktivTimeout);
hide_layer('news');
document.getElementById('news').innerHTML='';
if (document.getElementById('key_input')) {
document.getElementById('key_input').focus();
}
}
//-->
</script>
</head>
<body onload="if (document.getElementById('key_input')) { document.getElementById('key_input').focus();} LogoutTimer(); isVerlaengerungsautomat(); ">
<?php
ob_flush();
flush();
echo '
<div id="news" style="display:none; width:90%; border: 2px solid Black;padding: 7px 7px 7px 7px;background-color: #FFFFFF;z-index:100;position:absolute;top: 15px;left:20px;empty-cells: hide;"></div>
<table style="z-index:1" class="content" border="0" cellspacing="0" cellpadding="0">
<tr>
<!-- Start Linkes Menue -->
<td valign="top">
<table class="ort_liste" cellpadding="1" cellspacing="1">
<tr><td style="padding-bottom: 10px;" align="center" valign="middle">';
echo '<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?standort_id='.$standort_id.'">
<img alt="Logo" src="../../skin/styles/'.DEFAULT_STYLE.'/logo.png" border="0" style="max-width: 170px; max-height: 150px">
</a></td></tr>';
if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["pwd"]))
{
//Angemeldeter User - Stundenplan der Woche
echo '
<tr class="cursor_hand">
<td>
<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?work=stundenplan&amp;standort_id='.$standort_id.'">
<span class="blau_mitteText">
Mein<br>LV-Plan
</span>
</a>
</td>
</tr>';
}
else
{
echo '<tr class="keyinput"><td class="keyinput"><span id="key_input_feld"><input id="key_input" name="key_inputs" onkeydown="check_key(this);" onkeypress="check_key(this);" maxlength="12"></span></td></tr>';
}
// Tabelle der Raumtypen
echo html_output_liste_raumtypen($row_ort);
if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) && empty($cardnumber))
{
//Angemeldeter User - Stundenplan der Woche
echo '
<tr class="cursor_hand">
<td>
<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?work=meinedaten&amp;standort_id='.$standort_id.'">
<span class="blau_mitteText">
Pers&ouml;nliche<br>Daten
</span>
</a>
</td>
</tr>
<tr class="cursor_hand" id="btn_verlaengerung" style="display:none; ">
<td>
<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?work=verlaengerung&amp;standort_id='.$standort_id.'">
<span class="blau_mitteText">
Studierendenausweis <br> verl&auml;ngern
</span>
</a>
</td>
</tr>';
}
else
{
// Lageplan
if(defined('CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN') && CIS_INFOSCREEN_LAGEPLAN_ANZEIGEN)
{
echo '
<tr class="cursor_hand">
<td>
<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?work=lageplan&amp;standort_id='.$standort_id.'">
<span class="blau_mitteText">
Lageplan<br>&nbsp;
</span>
</a>
</td>
</tr>';
}
}
echo '<tr><td>&nbsp;</td></tr>';
// Login
// Wenn keine Server Userauth. vorhanden ist
if (!isset($_SERVER['PHP_AUTH_USER']) || (isset($_SERVER['PHP_AUTH_USER']) && empty($_SERVER['PHP_AUTH_USER'])) )
{
echo '
<tr class="cursor_hand">
<td>
<a href="'.htmlspecialchars($_SERVER['PHP_SELF']).'?work='.(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"])?'logoff':'login').'&amp;raumtyp_kurzbz='.$raumtyp_kurzbz.'&amp;ort_kurzbz='.$ort_kurzbz.'&amp;standort_id='.$standort_id.'">
<span class="blau_mitteText">';
if(isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]))
echo '<img alt="Logout" height="35" src="system-users_out.png" border="0">&nbsp;Logoff';
else
echo '<img alt="Login" height="35" src="system-users_in.png" border="0">&nbsp;Login';
echo '
</span>
</a>
</td>
</tr>
<tr class="cursor_hand">
<td>
<a href="#" onclick="ejectCard();return false;" id="btn_ejectcard" style="display:none">
<span class="blau_mitteText">
Eject<br>Card
</span>
</a>
</td>
</tr>';
}
echo '
<tr><td height="100%">&nbsp;</td></tr>
</table>
</td>';
// Ende Linkes Menue
echo '<td width="100%" valign="top" id="content">';
if (!$db || mb_strtolower($work)==mb_strtolower('lageplan'))
{
echo '<h1>Lageplan '.CAMPUS_NAME.'</h1>';
$pfad_standort_lageplan = '../../skin/styles/'.DEFAULT_STYLE.'/lageplan_'.$standort_id.'.jpg';
// Wenn fuer den ausgewaehlten Standort ein eigener Lageplan verfuegbar ist, wird dieser angezeigt
// ansonsten wird der normale Lageplan angezeigt.
if($standort_id!='' && file_exists($pfad_standort_lageplan))
echo '<img height="400" src="'.$pfad_standort_lageplan.'" border="0" >';
else
echo '<img height="400" src="../../skin/styles/'.DEFAULT_STYLE.'/lageplan.jpg" border="0" >';
}
else if (mb_strtolower($work)==mb_strtolower("login"))
{
echo '<h1>Login '.CAMPUS_NAME.'</h1>';
include_once('keyboard.php');
}
else if (strtolower($work)==strtolower("meinedaten") && isset($_SESSION[constSESSIONNAME]))
{
echo meine_uid_informationen($db,$_SESSION[constSESSIONNAME]["uid"],$_SESSION[constSESSIONNAME]["dat"]);
}
else if (strtolower($work)==strtolower("verlaengerung") && isset($_SESSION[constSESSIONNAME]))
{
karten_verlaengerung($_SESSION[constSESSIONNAME]["uid"],$cardnumber);
}
else if (mb_strtolower($work)==mb_strtolower("stundenplan") && isset($_SESSION[constSESSIONNAME]["uid"]) && !empty($_SESSION[constSESSIONNAME]["uid"]) )
{
echo alle_uid_stundenplan_informationen($db,$_SESSION[constSESSIONNAME]["uid"],$_SESSION[constSESSIONNAME]["dat"]);
}
else
{
echo alle_raum_informationen($db,$raumtyp_kurzbz,$ort_kurzbz, $standort_id);
}
// Zusatzinformation wie Error,News und Warten
echo '<span class="error_zeile">'.(isset($error)?$error:'').'&nbsp;</span>
<span id="bitteWarten" class="ausblenden"><span class="error_text"><br>Bitte warten</span></span>
<br><span class="news_zeile">'.(isset($news)?$news:'').'&nbsp;</span>
</td>
</tr>
</table>
</body>
</html>';
/*
*
* @meine_uid_informationen Termine zur Auswahl Raumtype
*
* @param $db Aktuelle Datenbankverbindung
* @param $uid Userkurzzeichen
* @param $user_array Anwenderinformatinen in Tabellenform
*
* @return HTML Tablle des Anwenderkalenders
*
*/
function meine_uid_informationen($db,$uid,$user="")
{
global $standort_id;
$html_user_daten='';
$html_user_daten_detail='';
// Lesen der Gesamtinformation zu einer Person (ALle UIDs holen)
$user_array=array();
if ($db)
$user_array=personen_id_read_mitarbeiter_oder_student($db,$user->person_id);
if (isset($user_array) && is_array($user_array) && count($user_array)>1)
{
$html_user_daten.='<table class="persoenlichedaten">';
$html_user_daten.='<tr>';
reset($user_array);
for ($i=0;$i<count($user_array);$i++)
{
$user_array[$i]->uid=trim($user_array[$i]->uid);
$html_user_daten.='<td>';
if ($user_array[$i]->aktiv =='t' || ($user_array[$i]->aktiv !='f' && $user_array[$i]->aktiv))
{
$html_user_daten.='<a href="'.$_SERVER['PHP_SELF'].'?sdtools=1&amp;login=1&amp;uid='.urlencode($user_array[$i]->uid).'&amp;standort_id='.$standort_id.'">';
$html_user_daten.='
<span class="gruen_mitteText">&nbsp;'.($user_array[$i]->uid==$uid?'<b>':''). trim($user_array[$i]->uid).($user_array[$i]->uid==$uid?'</b>':'').'&nbsp;</span>';
$html_user_daten.='</a>';
}
else
{
$html_user_daten.='
<span class="rot_mitteText">&nbsp;'.trim($user_array[$i]->uid).'&nbsp;</span>';
}
$html_user_daten.='</td>';
}
$html_user_daten.='</tr>';
$html_user_daten.='</table>';
$html_user_daten_detail.='<hr>';
reset($user_array);
for ($i=0;$i<count($user_array);$i++)
$html_user_daten_detail.=($i>0?'<hr>':'').meine_uid_informationen_detail($db,$user_array[$i]->uid,$i);
}
else
{
$html_user_daten_detail.=meine_uid_informationen_detail($db,$uid,0);
}
$html_user_daten.=$html_user_daten_detail;
$html_user_daten.='<hr>';
return $html_user_daten;
}
#-------------------------------------------------------------------------------------------
/*
* Zeigt die Oberfläche zur Kartenverlängerung an
* @param $uid Userkurzzeichen
*/
function karten_verlaengerung($uid, $cardnumber=NULL)
{
if(is_null($cardnumber))
{
$studienbeitrag = false;
// Mitarbeiter brauchen die Karte nicht verlängern
$cardPerson = new benutzer();
if(!$cardPerson->load($uid))
{
die('Konnte User nicht laden');
}
$html_user_daten='';
$html_user_daten.='<h1>Verl&auml;ngerung Studienausweis</h1>';
$html_user_daten.='<table>
<tr>
<td valign="top">
<table>
<tr>
<td><b><font size="+2">'.($cardPerson->titelpre?$cardPerson->titelpre.' ':'').$cardPerson->vorname.' '.$cardPerson->nachname.' '.($cardPerson->titelpost?$cardPerson->titelpost:'').'</font></b>&nbsp;</td>
</tr>
<tr>
<td></td>
</tr>
</table>
&nbsp;</td>
<td valign="top">
<table>
<tr><td>&nbsp;</td></tr>
</table>
&nbsp;</td>
</tr>
</table>';
echo $html_user_daten;
}
// User zur Karte konnte nicht geladen werden
$data = ServiceTerminalCheckVerlaengerung($uid, $cardnumber);
if($data[0]===true)
{
echo $data[1];
echo '<br>Um Karte zu verlängern dr&uuml;cken Sie bitte folgenden Button:';
echo' <table>
<tr class="cursor_hand" id="btn_drucken">
<td>
<div id="divKarteDrucken">
<a onclick="printCard();">
<span class="blau_mitteText">
<br>
Karte drucken<br>
<br>
</span>
</a>
</div>
</td>
</tr>
</table>
<div id="divDruckStatus" style="font-size:large; font-weight:bold; color:red;">
</div>';
}
else
echo $data[1].'<br><br>';
}
#-------------------------------------------------------------------------------------------
/*
*
* @meine_uid_informationen_detail Detailanzeige Userprofil
*
* @param $db Aktuelle Datenbankverbindung
* @param $uid Userkurzzeichen
* @param $user_array Anwenderinformatinen in Tabellenform
*
* @return HTML Tablle des Anwenderkalenders
*
*/
function meine_uid_informationen_detail($db,$uid,$count=0)
{
$html_user_daten='';
$stg = '';
$stg_obj = new studiengang();
$stg_obj->getAll('typ, kurzbz', false);
$stg_arr = array();
foreach ($stg_obj->result as $row)
$stg_arr[$row->studiengang_kz]=$row->kurzbzlang;
if(!($erg=$db->db_query("SELECT * FROM campus.vw_benutzer WHERE uid=".$db->db_add_param($uid, FHC_STRING))))
die($db->db_last_error());
$num_rows=$db->db_num_rows($erg);
if ($num_rows==1)
{
$person_id=$db->db_result($erg,0,"person_id");
$anrede=$db->db_result($erg,0,"anrede");
$vorname=$db->db_result($erg,0,"vorname");
$vornamen=$db->db_result($erg,0,"vornamen");
$nachname=$db->db_result($erg,0,"nachname");
$gebdatum=$db->db_result($erg,0,"gebdatum");
$gebort=$db->db_result($erg,0,"gebort");
$aktiv=$db->db_result($erg,0,"aktiv");
$titelpre=$db->db_result($erg,0,"titelpre");
$titelpost=$db->db_result($erg,0,"titelpost");
$email=$db->db_result($erg,0,"uid").'@'.DOMAIN;
$email_alias=$db->db_result($erg,0,"alias");
if ($email_alias)
$email_alias=$email_alias.'@'.DOMAIN;
$hp=$db->db_result($erg,0,"homepage");
$aktiv=$db->db_result($erg,0,"aktiv");
$foto=$db->db_result($erg,0,"foto");
}
if(!($erg_stud=$db->db_query("SELECT studiengang_kz, semester, verband, gruppe, matrikelnr, typ::varchar(1) || kurzbz AS stgkz, tbl_studiengang.bezeichnung AS stgbz FROM public.tbl_student JOIN public.tbl_studiengang USING(studiengang_kz) WHERE student_uid=".$db->db_add_param($uid, FHC_STRING))))
die($db->db_last_error());
$stud_num_rows=$db->db_num_rows($erg_stud);
if ($stud_num_rows==1)
{
$stg=$db->db_result($erg_stud,0,"studiengang_kz");
$stgbez=$db->db_result($erg_stud,0,"stgbz");
$stgkz=$db->db_result($erg_stud,0,"stgkz");
$semester=$db->db_result($erg_stud,0,"semester");
$verband=$db->db_result($erg_stud,0,"verband");
$gruppe=$db->db_result($erg_stud,0,"gruppe");
$matrikelnr=$db->db_result($erg_stud,0,"matrikelnr");
}
$ort='';
$kurzbz='';
$tel='';
$vorwahl='';
if(!($erg_lekt=$db->db_query("SELECT * FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=".$db->db_add_param($uid, FHC_STRING))))
die($db->db_last_error());
$lekt_num_rows=$db->db_num_rows($erg_lekt);
if ($lekt_num_rows==1)
{
$row=$db->db_fetch_object($erg_lekt,0);
$kurzbz=$row->kurzbz;
$tel=$row->telefonklappe;
$ort=$row->ort_kurzbz;
$vorwahl = '';
if($tel != "")
{
$vorwahl = '+43 1 333 40 77-';
if($row->standort_id!='')
{
$qry = "SELECT kontakt FROM public.tbl_kontakt WHERE standort_id=".$db->db_add_param($row->standort_id,FHC_INTEGER)." AND kontakttyp = 'telefon'";
if($result_tel = $db->db_query($qry))
if($row_tel = $db->db_fetch_object($result_tel))
$vorwahl = $row_tel->kontakt;
}
}
}
// Mail-Groups
if(isset($semester))
$semester_qry = " and semester =".$db->db_add_param($semester, FHC_STRING);
else
$semester_qry = '';
if(!($erg_mg=$db->db_query("SELECT gruppe_kurzbz, beschreibung FROM campus.vw_persongruppe WHERE mailgrp and uid=".$db->db_add_param($uid, FHC_STRING)." ".$semester_qry." ORDER BY gruppe_kurzbz")))
die($db->db_last_error());
$nr_mg=$db->db_num_rows($erg_mg);
if ($count==0)
{
$html_user_daten.='<h1>Pers&ouml;nliche Daten</h1>';
$html_user_daten.='<table>
<tr>
<td valign="top">
<table>
<tr>
<td><h2>'.$anrede.' '.($titelpre?$titelpre.' ':'').$vorname.' '.$nachname.'</h2>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>';
}
if ($count==0)
$html_user_daten.='<hr>';
// HTML Header mit den Benutzerdaten
$html_user_daten.='<table width="100%">';
$html_user_daten.='<tr><td colspan="4" style="background-color: #E9ECEE;">Informationen zu BenutzerIn <b>'.$uid.'</b></td></tr>';
if ($aktiv=='f' || !$aktiv)
{
$html_user_daten.='<tr>';
$html_user_daten.='<td colspan="2" style="color:red;"><b>Account nicht mehr AKTIV !</b></td>';
$html_user_daten.='</tr>';
}
else
{
$html_user_daten.='<tr>';
$html_user_daten.='<td colspan="2">Aktiv</td>';
$html_user_daten.='</tr>';
}
$html_user_daten.='<tr><td valign="top" colspan="2" width="50%"><table width="100%">';
$html_user_daten.='<tr><td style="background-color: #E9ECEE;" align="center" colspan="2" ><b><font size="+1">Email</font></b></td></tr>';
$html_user_daten.='<tr><td ><b>Intern</b></td><td >'.$email.'</td></tr>';
$html_user_daten.='<tr><td ><b>Alias</b></td><td >'.$email_alias.'</td></tr>';
$html_user_daten.='</table>';
$html_user_daten.='&nbsp;</td></tr></table>';
return $html_user_daten;
}
#-------------------------------------------------------------------------------------------
/*
*
* @alle_uid_stundenplan_informationen Termine zur Auswahl Raumtype
*
* @param $db Aktuelle Datenbankverbindung
* @param $uid Userkurzzeichen
* @param $user_array Anwenderinformatinen in Tabellenform
*
* @return HTML Tablle des Anwenderkalenders
*
*/
function alle_uid_stundenplan_informationen($db,$uid,$user_array="")
{
$html_liste_raum='';
if ($db && (empty($user_array) || (!is_array($user_array) && !is_object($user_array))) )
{
$user_array=uid_read_mitarbeiter_oder_student($db,$uid);
}
if (empty($user_array) || (!is_array($user_array) && !is_object($user_array)) )
{
return $html_liste_raum;
}
// ------------------------------------------------------------------------------------------
// Alle Termine zum User lesen
// ------------------------------------------------------------------------------------------
// Authentifizierung
if (check_student($uid))
$type='student';
elseif (check_lektor($uid))
$type='lektor';
else
{
//die("Cannot set usertype!");
//GastAccountHack
$type='student';
}
// Stundenplan erstellen
$stdplan=new wochenplan($type);
// Benutzergruppe
$stdplan->user=$type;
// aktueller Benutzer
$stdplan->user_uid=$uid;
// Zusaetzliche Daten laden
if (isset($user_array->studiengang_kz))
{
// Student
if (! $stdplan->load_data($type,$uid,NULL,trim($user_array->studiengang_kz),trim($user_array->semester),trim($user_array->verband),trim($user_array->gruppe)) )
{
die($stdplan->errormsg);
}
}
else
{
// Mitarbeiter
if (! $stdplan->load_data($type,$uid) )
{
die($stdplan->errormsg);
}
}
$datum=time();
// Stundenplan einer Woche laden
if (! $stdplan->load_week($datum))
{
die($stdplan->errormsg);
}
$ersterTagMonat=date('m', $stdplan->datum);
$ersterTag=date('d', $stdplan->datum);
$year=date('Y', $stdplan->datum);
$weekday=date('w');
// ------------------------------------------------------------------------------------------
// Stunden lesen
// ------------------------------------------------------------------------------------------
$row_stunde=array();
$qry="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde";
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Stundentabelle '.$db->db_last_error());
$num_rows_stunde=$db->db_num_rows();
while($row_stunden = $db->db_fetch_object())
{
$row_stunden->time_beginn=mktime(mb_substr($row_stunden->beginn, 0,2),mb_substr($row_stunden->beginn, 3,2));
$row_stunden->time_ende=mktime(mb_substr($row_stunden->ende, 0,2),mb_substr($row_stunden->ende, 3,2));
$row_stunden->beginn_show=mb_substr($row_stunden->beginn, 0,5);
$row_stunden->ende_show=mb_substr($row_stunden->ende, 0,5);
$row_stunde[]=$row_stunden;
}
// ------------------------------------------------------------------------------------------
// Tabelle alle Termine zum User anzeigen
// ------------------------------------------------------------------------------------------
$html_liste_raum.='<a name="top"><h1>Pers&ouml;nlicher LV-Plan von '.(isset($user_array->name)?$user_array->name:$uid).' ('.$uid.') '. strftime(constHeaderStundenplan,mktime(0, 0, 0, $ersterTagMonat,$ersterTag, $year)).' </h1>';
$html_liste_raum.='<table cellspacing="1" cellpadding="1" class="stundenplan"></a>';
// Datum-Header
$html_liste_raum.='<tr>';
$html_liste_raum.='<th><a href="#bottom"><img src="go-bottom.png" border="0">&nbsp;</a>Zeit</th>';
$lektor_max=0;
// Datumszeile
for ($ii=0;$ii<TAGE_PRO_WOCHE;$ii++)
{
$aktiverWochentag=date('w', mktime(0, 0, 0, $ersterTagMonat, $ersterTag + $ii, $year));
$aktiverTag=strftime(constHeaderStundenplanTag,mktime(0, 0, 0, $ersterTagMonat,$ersterTag+ $ii, $year));
$html_liste_raum.='<th>'.$aktiverTag.'</th>';
}
$html_liste_raum.='</tr>';
// ------------------------------------------------------------------------------------------
// Stundenplanaufbau
// ------------------------------------------------------------------------------------------
reset($row_stunde);
for ($i=0;$i<count($row_stunde);$i++)
{
// Zeile je Stundeneinteilung
$html_liste_raum.='<tr>';
// Stunden Linker Rand - Erste Spalte
if ($row_stunde[$i]->time_beginn<=time() && $row_stunde[$i]->time_ende>=time())
$html_liste_raum.='<td class="stundenplan_stunden_detail" style="color:black;letter-spacing : 2px;background-color:#E9ECEE;border : 1px solid Black;">'.$row_stunde[$i]->beginn_show.'-'.$row_stunde[$i]->ende_show.'</td>';
else
$html_liste_raum.='<td class="stundenplan_stunden_detail">'.$row_stunde[$i]->beginn_show.'-'.$row_stunde[$i]->ende_show.'</td>';
// ------------------------------------------------------------------------------------------------------------
// Pausenzeiten werden zur naechsten Std. gerechnet als Aktuellezeit
// dh. Letztes Ende ist gleich Start aktueller Datensatz
if ($i && $row_stunde[$i - 1]->time_ende && $row_stunde[$i]->time_beginn!=$row_stunde[$i - 1]->time_ende)
{
$row_stunde[$i]->time_beginn=$row_stunde[$i - 1]->time_ende;
}
// Je Tage die Stunden ausgeben
for ($ii=0;$ii<TAGE_PRO_WOCHE;$ii++)
{
$aktiverWochentag=date('w', mktime(0, 0, 0, $ersterTagMonat, $ersterTag + $ii, $year));
$aktiverTag=strftime(constHeaderStundenplanTag,mktime(0, 0, 0, $ersterTagMonat,$ersterTag+ $ii, $year));
$aktiverDatumseintrag=date('Ymd',mktime(0, 0, 0, $ersterTagMonat,$ersterTag+ $ii, $year));
$aktiverTag=strftime(constHeaderStundenplanTag,mktime(0, 0, 0, $ersterTagMonat,$ersterTag+ $ii, $year));
$aktiverWochentag=date('w', mktime(0, 0, 0, $ersterTagMonat, $ersterTag + $ii, $year));
$zeit_aktuell=false;
if ($weekday==$aktiverWochentag && $row_stunde[$i]->time_beginn<=time() && $row_stunde[$i]->time_ende>=time())
{
$zeit_aktuell=true;
}
if ($zeit_aktuell)
{
$html_liste_raum.='<td class="stundenplan_detail_kpl_aktuell"><table width="100%" cellspacing="1" cellpadding="0" border="0">';
}
else
{
$html_liste_raum.='<td class="stundenplan_detail_kpl_normal"><table width="100%" cellspacing="1" cellpadding="0" border="0">';
}
$gef_raum_einteilung_check=false;
$TagInd=$ii + 1;
$StdInd=$i + 1;
$lektor='';
$lektor_anz=0;
if (isset($stdplan->std_plan[$TagInd]) && isset($stdplan->std_plan[$TagInd][$StdInd]) && isset($stdplan->std_plan[$TagInd][$StdInd][0]->lehrfach))
{
foreach ($stdplan->std_plan[$TagInd][$StdInd] as $lehrstunde)
{
//if (!isset($lehrstunde->reservierung) || ($lehrstunde->reservierung && $type!='lektor') )
// continue;
if (!$gef_raum_einteilung_check)
$gef_raum_einteilung_check=$lehrstunde;
$lektor.=(isset($lehrstunde->lektor) && !empty($lehrstunde->lektor)?trim($lehrstunde->lektor).'<br>':'tw-0');
$lektor_anz++;
if ($lektor_max<$lektor_anz)
$lektor_max=$lektor_anz;
}
}
if ($gef_raum_einteilung_check)
{
if ($gef_raum_einteilung_check->reservierung)
$lehrstunde=trim($gef_raum_einteilung_check->titel).'<br>';
else
$lehrstunde=trim($gef_raum_einteilung_check->lehrfach).'-'.trim($gef_raum_einteilung_check->lehrform).'<br>';
$ort=(isset($gef_raum_einteilung_check->ort) && !empty($gef_raum_einteilung_check->ort)?trim($gef_raum_einteilung_check->ort).'<br>':'');
$farbe=(isset($gef_raum_einteilung_check->farbe) && !empty($gef_raum_einteilung_check->farbe)?$gef_raum_einteilung_check->farbe:'');
$html_liste_raum.='<tr><td '.($zeit_aktuell?' class="stundenplan_detail_aktuell" ':' class="stundenplan_detail_normal" ') .' '.(!empty($farbe)? ' style="background-color:#'.$farbe.';" ':'').'>';
# $html_liste_raum.=$TagInd.'**'.$StdInd .'<br>'.$lehrstunde.$lektor.$ort;
$html_liste_raum.=$lehrstunde.$lektor.($lektor_anz>1?'':'{***}')."<b>$ort</b>";
$html_liste_raum.='</td></tr>';
}
else
{
$html_liste_raum.='<tr><td '.($zeit_aktuell?' class="stundenplan_detail_aktuell" ':' class="stundenplan_detail_normal" ') .' >&nbsp;</td></tr>';
}
$html_liste_raum.='</table></td>';
}
$html_liste_raum.='</tr>';
}
$html_liste_raum=($lektor_max>1?str_replace('{***}','<br>',$html_liste_raum):str_replace('{***}','',$html_liste_raum));
$html_liste_raum.='<tr><th><a href="#top"><img src="go-top.png" border="0">&nbsp;</a>Top<a name="bottom">&nbsp;</a></th><th colspan="7">&nbsp;</th></tr>';
$html_liste_raum.='</table>';
return $html_liste_raum;
}
#-------------------------------------------------------------------------------------------
/*
*
* @alle_raum_informationen Rauminformation zur Auswahl Raumtype
*
* @param $db Aktuelle Datenbankverbindung
* @param $raumtyp_kurzbz Raumtyp
* @param $ort_kurzbz Detailanzeige Stundenplan eines Raums
*
* @return HTML Tablle der Raumtypen
*
*/
function alle_raum_informationen($db,$raumtyp_kurzbz,$ort_kurzbz, $standort_id)
{
// HTML Init - Raumliste - Tabelle
$html_liste_raum='';
// Header - Raumliste - Tabelle
$html_liste_raum.='<h1>'. strftime(constHeaderDatumZeit,time()).'</h1>';
// DB Verbindung pruefen, Plausib - ohne Verbindung Header anzeigen
if (!$db)
return $html_liste_raum;
// ------------------------------------------------------------------------------------------
// Alle Raum Typen zur Selektion
// ------------------------------------------------------------------------------------------
$row_raum=array();
$row_raum_aktiv=array();
$row_raum_alle=array();
$qry="";
$qry.=" SELECT DISTINCT ";
$qry.=" tbl_ortraumtyp.ort_kurzbz ";
$qry.=" ,tbl_ort.bezeichnung ,tbl_ort.aktiv ";
$qry.=" , (SELECT 'gesperrt'::text FROM public.tbl_ortraumtyp WHERE raumtyp_kurzbz='Gesperrt' AND ort_kurzbz=tbl_ort.ort_kurzbz) as gesperrt";
$qry.=" FROM tbl_raumtyp , tbl_ortraumtyp , tbl_ort ";
$qry.=" WHERE tbl_ortraumtyp.raumtyp_kurzbz=tbl_raumtyp.raumtyp_kurzbz ";
$qry.=" AND tbl_ort.ort_kurzbz=tbl_ortraumtyp.ort_kurzbz ";
$qry.=" AND tbl_ort.aktiv ";
$qry.=" AND lower(tbl_raumtyp.raumtyp_kurzbz) like lower('%".$db->db_escape(trim($raumtyp_kurzbz))."%') ";
if($standort_id!='')
$qry.=" AND (tbl_ort.standort_id=".$db->db_add_param($standort_id, FHC_INTEGER)." OR tbl_ort.standort_id is null)";
$qry.=" order by tbl_ortraumtyp.ort_kurzbz ";
$qry.=" ; ";
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Raumtyptabelle ');
$num_rows_stunde=$db->db_num_rows($result);
if($num_rows_stunde==0)
return "Derzeit sind hier keine Eintraege vorhanden";
while($tmp_row_raum = $db->db_fetch_object($result))
{
// Wenn noch kein Raum gewaehlt wurde den ersten als Default nehmen
if (!trim($ort_kurzbz))
$ort_kurzbz=$tmp_row_raum->ort_kurzbz;
// Aktiven Raum Anzeigen
if (trim($ort_kurzbz)==trim($tmp_row_raum->ort_kurzbz))
$row_raum_aktiv=$tmp_row_raum;
$row_raum_alle[]=$tmp_row_raum->ort_kurzbz;
$row_raum[]=$tmp_row_raum;
}
if (count($row_raum_aktiv)<1)
$row_raum_aktiv=$row_raum[0];
// --------------------------------------------------------------
// Raumreservierungen fuer Aktive Raumauswahl
// --------------------------------------------------------------
// Die aktive Stunde ermitteln - zum lesen welcher Raum jetzt besetzt ist - aktive Lehreinheit
$row_stunde=array();
$qry="";
$qry.="SELECT stunde, beginn, ende ";
$qry.=" FROM lehre.tbl_stunde ";
$qry.=" WHERE ".$db->db_add_param(constAktuelleZeitHHMi,FHC_STRING)." between to_char(tbl_stunde.beginn, 'HH24MI') and to_char(tbl_stunde.ende, 'HH24MI') ";
$qry.=" ORDER BY stunde LIMIT 1 ; ";
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Raumtyptabelle '.$db->db_last_error());
// In einer Pause wird kein Datensatz gefunden, den letzten holen
if (!$num_rows_stunde=$db->db_num_rows($result))
{
$qry="";
$qry.="SELECT stunde, beginn, ende ";
$qry.=" FROM lehre.tbl_stunde ";
$qry.=" WHERE ".$db->db_add_param(constAktuelleZeitHH,FHC_STRING)." between to_char(tbl_stunde.beginn, 'HH24') and to_char(tbl_stunde.ende, 'HH24') ";
$qry.=" ORDER BY stunde LIMIT 1; ";
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Raumtyptabelle '.$db->db_last_error());
}
while($tmp_row_stunde = $db->db_fetch_object($result))
$row_stunde[]=$tmp_row_stunde;
// Plausib Stunde
if(!isset($row_stunde[0]))
$row_stunde[0]=new stdClass();
$row_stunde[0]->stunde=(isset($row_stunde[0]) && isset($row_stunde[0]->stunde)?$row_stunde[0]->stunde:0);
$html_liste_raum.='<table class="raum_auswahlliste">';
$html_liste_raum.='<tr>';
reset($row_raum);
for ($i=0;$i<count($row_raum);$i++)
{
// Default
$farbe="orange";
$ort_kurzbz=$row_raum[$i]->ort_kurzbz;
$datum=date("Y-m-d", mktime(0,0,0,date("m"),date("d"),date("y")));
$stunde_von=$row_stunde[0]->stunde;
$stunde_bis=$row_stunde[0]->stunde;
if ($info=stundenplan_raum($db,$ort_kurzbz,$datum,$stunde_von,$stunde_bis))
{
$farbe="rot";
}
$ort_kurzbz=$row_raum[$i]->ort_kurzbz;
$datum=date("Y-m-d", mktime(0,0,0,date("m"),date("d"),date("y")));
$stunde_von=$row_stunde[0]->stunde;
$stunde_bis=$row_stunde[0]->stunde + 1;
if (!$info=stundenplan_raum($db,$ort_kurzbz,$datum,$stunde_von,$stunde_bis))
{
$farbe="gruen";
}
if ($row_raum[$i]->gesperrt=="gesperrt")
$farbe="rot";
// Nach 4 Raumanzeigen eine Neuezeile erzeugen
$html_liste_raum.=($i==0 || $i%4?"":"</tr><tr>");
$html_liste_raum.='<td>';
$html_liste_raum.='<a href="'.$_SERVER['PHP_SELF'].'?raumtyp_kurzbz='.$raumtyp_kurzbz.'&amp;ort_kurzbz='.$ort_kurzbz.'&amp;standort_id='.$standort_id.'">';
$html_liste_raum.='<span class="'.$farbe.'_mitteText">';
$html_liste_raum.=trim($ort_kurzbz);
$html_liste_raum.='
</span>';
$html_liste_raum.='</a>';
$html_liste_raum.='</td>';
}
$html_liste_raum.='</tr>';
$html_liste_raum.='</table>';
// Legende
$html_liste_raum.='<br>';
$html_liste_raum.='<table width="100%" cellpadding="0" cellspacing="0">';
$html_liste_raum.='<tr>';
$html_liste_raum.='<td><table><tr><td><span class="gruen_mitteText">&nbsp;&nbsp;&nbsp;</span></td><td>Mindestens n&auml;chsten 2 Einheiten frei</td></tr></table></td>';
$html_liste_raum.='<td><table><tr><td><span class="orange_mitteText">&nbsp;&nbsp;&nbsp;</span></td><td>Derzeit frei</td></tr></table></td>';
$html_liste_raum.='<td><table><tr><td><span class="rot_mitteText">&nbsp;&nbsp;&nbsp;</span></td><td>Raum derzeit besetzt / gesperrt</td></tr></table></td>';
$html_liste_raum.='</tr>';
$html_liste_raum.='</table>';
$html_liste_raum.='<hr>';
// Aktiver Raum Haederinformation
$html_liste_raum.='<h1>'.$row_raum_aktiv->ort_kurzbz.'&nbsp;&nbsp;-&nbsp;&nbsp;'.strftime(constRaumDatumZeit,time()).'&nbsp;&nbsp;<span style="font-size:small;">'.$row_raum_aktiv->bezeichnung.'</span>'.'</h1>';
$ort_kurzbz=$row_raum_aktiv->ort_kurzbz;
$datum=date("Ymd", mktime(0,0,0,date("m"),date("d"),date("y")));
$stunde_von=0;
$stunde_bis=99;
if (!$row_raum_plan=stundenplan_raum($db,$ort_kurzbz,$datum,$stunde_von,$stunde_bis))
{
$row_raum_plan=array();
$html_liste_raum."<br> keine Reservierungen ".$datum;
}
$html_liste_raum.='<table class="raum_liste" cellpadding="1" cellspacing="1">';
$html_liste_raum.='<tr>';
// Stundentabelle lesen
$row_stunde=array();
$qry="SELECT stunde, beginn, ende FROM lehre.tbl_stunde ORDER BY stunde";
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Stundentabelle '.$db->db_last_error());
$lastEnde=0;
$num_rows_stunde=$db->db_num_rows();
while($row = $db->db_fetch_object())
{
$row->time_beginn=mktime(mb_substr($row->beginn, 0,2),mb_substr($row->beginn, 3,2));
$row->time_ende=mktime(mb_substr($row->ende, 0,2),mb_substr($row->ende, 3,2));
$row->beginn_kurz=mb_substr($row->beginn, 0,5);
$row->ende_kurz=mb_substr($row->ende, 0,5);
$row->beginn_show=substr($row->beginn, 0,5);
$row->ende_show=substr($row->ende, 0,5);
// Pausenzeiten werden zur naechsten Std. gerechnet als Aktuellezeit
// dh. Letztes Ende ist gleich Start aktueller Datensatz
if ($lastEnde && $row->time_beginn!=$lastEnde)
{
$row->time_beginn=$lastEnde;
}
// Aktuelle Stunde kennzeichnen
$row->aktuell=false;
if ($row->time_beginn<=time() && $row->time_ende>=time())
$row->aktuell=true;
else
$row->aktuell=false;
$row_stunde[]=$row;
}
// zur Stundentabelle die Rauminformationen lesen
for ($i=0;$i<count($row_stunde);$i++)
{
$row=$row_stunde[$i];
$tageshelfte=$num_rows_stunde/2;
$html_liste_raum.=($i==0 || $i%$tageshelfte?"":"</tr><tr>");
$html_liste_raum.='<td valign="top"><table class="raum_liste_detail" cellpadding="0" cellspacing="0">';
if ($row->aktuell)
{
$html_liste_raum.='<tr><th style="color:black;letter-spacing : 2px;background-color:#E9ECEE; border : 1px solid Black;">'.trim($row->beginn_kurz)."<br>".trim($row->ende_kurz).'</th></tr>';
}
else
{
$html_liste_raum.='<tr><th >'.trim($row->beginn_kurz)."<br>".trim($row->ende_kurz).'</th></tr>';
}
reset($row_raum_plan);
$gef_raum_einteilung=array();
for ($ii=0;$ii<count($row_raum_plan);$ii++)
{
if ($row->stunde!=$row_raum_plan[$ii]->stunde)
{
continue;
}
$gef_raum_einteilung=$row_raum_plan[$ii];
// Stundenplan Detail lesen
if (isset($gef_raum_einteilung->stundenplan_id) && !empty($gef_raum_einteilung->stundenplan_id))
{
$gef_raum_einteilung->infotext='Fehler lesen Stundenplan '.$gef_raum_einteilung->stundenplan_id;
// Details wurden bereits gelesen
if (isset($gef_stundenplan_detail) && isset($gef_stundenplan_detail->stundenplan_id) && $gef_stundenplan_detail->stundenplan_id==$gef_raum_einteilung->stundenplan_id)
{
$gef_raum_einteilung->infotext=$gef_stundenplan_detail->lehrfach.'-'.$gef_stundenplan_detail->lehrform.'<br>'.$gef_stundenplan_detail->lektor.'<br>'.mb_strtoupper(trim($gef_stundenplan_detail->stg_typ).trim($gef_stundenplan_detail->stg_kurzbz)).'-'.$gef_stundenplan_detail->semester.$gef_stundenplan_detail->verband;
}
// Detail lesen
elseif ($gef_stundenplan_detail=stundenplan_detail($db,$gef_raum_einteilung->stundenplan_id))
{
if (isset($gef_stundenplan_detail->lehrfach))
$gef_stundenplan_detail->lehrfach=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->lehrfach));
if (isset($gef_stundenplan_detail->lehrform))
$gef_stundenplan_detail->lehrform=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->lehrform));
if (isset($gef_stundenplan_detail->lektor))
$gef_stundenplan_detail->lektor=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->lektor));
if (isset($gef_stundenplan_detail->stg_kurzbzlang))
$gef_stundenplan_detail->stg_kurzbzlang=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->stg_kurzbzlang));
$img_sticky='';
$gef_stundenplan_detail->titel=trim($gef_stundenplan_detail->titel);
if(!empty($gef_stundenplan_detail->titel) )
$img_sticky=' <img src="../../skin/images/sticky.png" tooltip="'.$gef_stundenplan_detail->titel.'"/>';
$gef_raum_einteilung->infotext=$gef_stundenplan_detail->lehrfach.'-'.$gef_stundenplan_detail->lehrform.$img_sticky.'<br>'.$gef_stundenplan_detail->lektor.'<br>'.$gef_stundenplan_detail->stg_kurzbzlang.'-'.$gef_stundenplan_detail->semester.$gef_stundenplan_detail->verband;
}
if (isset($gef_stundenplan_detail->farbe) && !empty($gef_stundenplan_detail->farbe) )
{
$gef_raum_einteilung->farbe=$gef_stundenplan_detail->farbe;
}
}
// Reservierung Detail
if (isset($gef_raum_einteilung->reservierung_id) && !empty($gef_raum_einteilung->reservierung_id))
{
$gef_raum_einteilung->infotext='Fehler lesen Reservierung '.$gef_raum_einteilung->reservierung_id;
// Details wurden bereits gelesen
if (isset($gef_stundenplan_detail) && isset($gef_stundenplan_detail->reservierung_id) && $gef_stundenplan_detail->reservierung_id==$gef_raum_einteilung->reservierung_id)
{
$gef_raum_einteilung->infotext=(!empty($gef_stundenplan_detail->titel)?$gef_stundenplan_detail->titel.'<br>':'').(!empty($gef_stundenplan_detail->uid)?$gef_stundenplan_detail->uid.'<br>':'').$gef_stundenplan_detail->beschreibung;
}
// Detail lesen
elseif ($gef_stundenplan_detail=reservierung_detail($db,$gef_raum_einteilung->reservierung_id))
{
if (isset($gef_stundenplan_detail->titel))
$gef_stundenplan_detail->titel=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->titel));
if (isset($gef_stundenplan_detail->beschreibung))
$gef_stundenplan_detail->beschreibung=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->beschreibung));
if (isset($gef_stundenplan_detail->uid))
$gef_stundenplan_detail->uid=trim(str_replace(array('<br>','<br>',"\n\r","\n"),'',$gef_stundenplan_detail->uid));
$gef_raum_einteilung->infotext=(!empty($gef_stundenplan_detail->titel)?$gef_stundenplan_detail->titel.'<br>':'').'<br>'.(!empty($gef_stundenplan_detail->uid)?$gef_stundenplan_detail->uid.'<br>':'').$gef_stundenplan_detail->beschreibung;
}
if (isset($gef_stundenplan_detail->farbe) && !empty($gef_stundenplan_detail->farbe) )
{
$gef_raum_einteilung->farbe=$gef_stundenplan_detail->farbe;
}
}
}
$html_liste_raum.='<tr><td '.($row->aktuell?' class="raum_liste_detail_stundenplan_aktuell" ':' class="raum_liste_detail_stundenplan_normal" ') .' '. (isset($gef_raum_einteilung->farbe)?' style="background-color:#'.$gef_raum_einteilung->farbe.'" ':'').'>'.(isset($gef_raum_einteilung->infotext) && $gef_raum_einteilung->infotext? $gef_raum_einteilung->infotext :'&nbsp;<br><br>').'&nbsp;</td></tr>';
$html_liste_raum.='</table>';
}
$html_liste_raum.='</tr>';
$html_liste_raum.='</table>';
$html_liste_raum.='<div align="right"><table><tr><td style="color:black;background-color:#E9ECEE;border : 1px solid Black;">&nbsp;&nbsp;&nbsp;</td><td>Aktuelle Einheit</td></tr></table></div>';
return $html_liste_raum;
}
#-------------------------------------------------------------------------------------------
/*
*
* @alle_rauminformationen Rauminformation zur Auswahl Raumtype
*
* @param $db Aktuelle Datenbankverbindung
* @param $ort_kurzbz Detailanzeige Stundenplan eines Raums Optional
* @param $datum Datum der Raumres. in Form von JJJJMMTT Optional
* @param $row_stunde_von Stundenplan ab Optional
* @param $row_stunde_bis Stundenplan ab Optonal
* @param $uid UserUid Optional
* @param $kalenderwoche Kalenderwoche Optional
* @param $studiengang_kz Studienkennzeichen Optional
* @param $semester Semester Optional
* @param $verband="" Verbandskennzeichen Optional
* @param $gruppe Verband-Gruppe Optional
*
* @return array Tablle der Rauminformation
*
*/
function stundenplan_raum($db,$ort_kurzbz="",$datum="",$stunde_von,$stunde_bis=0,$uid="",$kalenderwoche="",$studiengang_kz="",$semester="",$verband="",$gruppe="")
{
// Plausib
if (!$db)
return array();
if (empty($stunde_bis))
$stunde_bis=$stunde_von;
//--- Raumbelegung jetzt
$qry="";
$qry.=' SELECT studiengang_kz,0 as "stundenplan_id",tbl_reservierung.reservierung_id,tbl_reservierung.ort_kurzbz,tbl_reservierung.titel,tbl_reservierung.semester,tbl_reservierung.studiengang_kz,tbl_reservierung.verband, tbl_reservierung.gruppe , to_char(tbl_reservierung.datum, \'YYYYMMDD\') as "datum_jjjjmmtt", to_char(tbl_reservierung.datum, \'IW\') as "datum_woche" , tbl_stunde.beginn, tbl_stunde.ende , to_char(tbl_stunde.beginn, \'HH24:MI\') as "beginn_anzeige" , to_char(tbl_stunde.ende, \'HH24:MI\') as "ende_anzeige" , EXTRACT(EPOCH FROM tbl_reservierung.datum) as "datum_timestamp" ,tbl_stunde.stunde ';
$qry.=' FROM campus.tbl_reservierung , lehre.tbl_stunde ';
$qry.=" WHERE tbl_stunde.stunde=tbl_reservierung.stunde ";
$qry.=" and tbl_reservierung.stunde between ". $db->db_add_param(trim($stunde_von), FHC_STRING) ." and ". $db->db_add_param(trim($stunde_bis), FHC_STRING) ;
$datum_obj = new datum();
if (!empty($datum))
{
$qry.=" and tbl_reservierung.datum =".$db->db_add_param(trim($datum), FHC_STRING);
}
if (!empty($kalenderwoche))
{
$qry.=" and to_char(tbl_reservierung.datum, 'IW') =".$db->db_add_param(trim($kalenderwoche), FHC_STRING);
}
if (!empty($ort_kurzbz))
{
$qry.=" and ort_kurzbz=".$db->db_add_param(trim($ort_kurzbz), FHC_STRING);
}
if (!empty($uid) || $uid=='0')
{
$qry.=" and uid=".$db->db_add_param(trim($uid), FHC_STRING);
}
if (!empty($studiengang_kz) || $studiengang_kz=='0')
{
$qry.=" and studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_STRING);
}
if (!empty($semester) || $semester=='0')
{
$qry.=" and semester=".$db->db_add_param($semester, FHC_STRING);
}
if (!empty($verband) || $verband=='0')
{
$qry.=" and verband=".$db->db_add_param(trim($verband), FHC_STRING);
}
if (!empty($gruppe) || $gruppe=='0')
{
$qry.=" and gruppe=".$db->db_add_param($gruppe, FHC_STRING);
}
$qry.=" UNION ";
$qry.=' SELECT studiengang_kz,tbl_stundenplan.stundenplan_id,0 as "reservierung_id", tbl_stundenplan.ort_kurzbz,tbl_stundenplan.titel,tbl_stundenplan.semester,tbl_stundenplan.studiengang_kz,tbl_stundenplan.verband ,tbl_stundenplan.gruppe , to_char(tbl_stundenplan.datum, \'YYYYMMDD\') as "datum_jjjjmmtt", to_char(tbl_stundenplan.datum, \'IW\') as "datum_woche" , tbl_stunde.beginn, tbl_stunde.ende , to_char(tbl_stunde.beginn, \'HH24:MI\') as "beginn_anzeige" , to_char(tbl_stunde.ende, \'HH24:MI\') as "ende_anzeige" , EXTRACT(EPOCH FROM tbl_stundenplan.datum) as "datum_timestamp" ,tbl_stunde.stunde ';
$qry.=' FROM lehre.tbl_stundenplan , lehre.tbl_stunde ';
$qry.=" WHERE tbl_stunde.stunde=tbl_stundenplan.stunde ";
$qry.=" and tbl_stundenplan.stunde between ".$db->db_add_param(trim($stunde_von), FHC_STRING)." and ".$db->db_add_param(trim($stunde_bis), FHC_STRING);
if (!empty($datum))
{
$qry.=" and tbl_stundenplan.datum =".$db->db_add_param(trim($datum), FHC_STRING);
}
if (!empty($kalenderwoche))
{
$qry.=" and to_char(tbl_stundenplan.datum, 'IW') =".$db->db_add_param(trim($kalenderwoche), FHC_STRING);
}
if (!empty($ort_kurzbz))
{
$qry.=" and ort_kurzbz =E".$db->db_add_param(trim($ort_kurzbz), FHC_STRING);
}
if (!empty($uid) || $uid=='0')
{
$qry.=" and mitarbeiter_uid=".$db->db_add_param(trim($uid), FHC_STRING);
}
if (!empty($studiengang_kz) || $studiengang_kz=='0')
{
$qry.=" and studiengang_kz=".$db->db_add_param($studiengang_kz, FHC_STRING);
}
if (!empty($semester) || $semester=='0')
{
$qry.=" and semester=".$db->db_add_param($semester, FHC_STRING);
}
if (!empty($verband) || $verband=='0')
{
$qry.=" and verband=E".$db->db_add_param(trim($verband), FHC_STRING);
}
if (!empty($gruppe) || $gruppe=='0')
{
$qry.=" and gruppe=".$db->db_add_param($gruppe, FHC_STRING);
}
$qry.=" ; ";
$row_raum_belegt=array();
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Stundenplan '.$db->db_last_error());
if (!$num_rows_stunde=$db->db_num_rows($result))
return $row_raum_belegt;
while($row = $db->db_fetch_object($result))
{
$row_raum_belegt[]=$row;
}
return $row_raum_belegt;
}
#-------------------------------------------------------------------------------------------
/*
*
* @stundenplan_detail Stundenplan mit Lehrveranstaltungsinformationen
*
* @param $db Aktuelle Datenbankverbindung
* @param $stundenplan_id StundenplanID
*
* @return array Tablle des Stundenplan im Detail
*
*/
function stundenplan_detail($db,$stundenplan_id)
{
$row_stundenplan_detail=false;
if (!$db || empty($stundenplan_id))
return $row_stundenplan_detail;
//--- Raumbelegung jetzt
$qry=' SELECT * FROM campus.vw_stundenplan ';
$qry.=" WHERE vw_stundenplan.stundenplan_id=".$db->db_add_param($stundenplan_id, FHC_INTEGER);
$qry.=" ORDER BY datum,stunde ";
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Stundenplan '.$db->db_last_error());
if (!$num_rows_stunde=$db->db_num_rows())
return $row_stundenplan_detail;
while($row = $db->db_fetch_object())
$row_stundenplan_detail=$row;
return $row_stundenplan_detail;
}
#-------------------------------------------------------------------------------------------
/*
*
* @reservierung_detail Stundenplan mit Reservierungsinformationen
*
* @param $db Aktuelle Datenbankverbindung
* @param $reservierung_id ReservierungID
*
* @return array Tablle des Reservierung im Detail
*
*/
function reservierung_detail($db,$reservierung_id)
{
$row_reservierung_detail=false;
if (!$db || empty($reservierung_id))
return $row_reservierung_detail;
//--- Reservierung jetzt
$qry=' SELECT * FROM campus.vw_reservierung ';
$qry.=' WHERE vw_reservierung.reservierung_id='.$db->db_add_param($reservierung_id, FHC_INTEGER);
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der Stundenplan '.$db->db_last_error());
if (!$num_rows_stunde=$db->db_num_rows($result))
return $row_reservierung_detail;
while($row = $db->db_fetch_object($result))
$row_reservierung_detail=$row;
return $row_reservierung_detail;
}
#-------------------------------------------------------------------------------------------
/*
*
* @html_output_liste_raumtypen Tabellenliste der Raumtypen
*
* @param $array Raumtyp,Beschreibung
*
* @return HTML Tablle der Raumtypen
*
*/
function html_output_liste_raumtypen($row_ort)
{
global $standort_id;
$html_liste_orte='';
if (!is_array($row_ort) || count($row_ort)<1)
return $html_liste_orte;
for ($i=0;$i<count($row_ort);$i++)
{
$html_liste_orte.='<tr>';
$html_liste_orte.='<td>';
$html_liste_orte.='<a href="'.$_SERVER['PHP_SELF'].'?raumtyp_kurzbz='.trim($row_ort[$i]["type"]).'&amp;standort_id='.$standort_id.'">';
$html_liste_orte.='<span class="blau_mitteText">';
$html_liste_orte.=trim($row_ort[$i]["beschreibung"]);
$html_liste_orte.='</span>';
$html_liste_orte.='</a>';
$html_liste_orte.='</td>';
$html_liste_orte.='</tr>';
}
return $html_liste_orte;
}
#-------------------------------------------------------------------------------------------
/*
*
* @alle_uid_stundenplan_informationen Termine zur Auswahl Raumtype
*
* @param $db Aktuelle Datenbankverbindung
* @param $uid Userkurzzeichen
* @param $pwd Password
*
* @return true wenn Fehler oder false wenn LDAP Inormationen zum User gefunden wurde
*
*/
function ldap_uid_check($uid,$pwd="")
{
if($pwd=='')
return "Es wurde kein Passwort eingetragen";
// eventuelle Daten vom Vorgaenger loeschen - sicherstellen das Initial ist
if (isset($_SESSION[constSESSIONNAME]))
unset($_SESSION[constSESSIONNAME]);
// Check User vorhanden ist ( Password wenn Online eingabe ), ansonst zurueck
if (empty($uid))
return "Benutzername fehlt!";
$auth = new authentication();
if($auth->checkpassword($uid, $pwd))
return false;
else
return "Login fehlgeschlagen ".$auth->errormsg;
}
#-------------------------------------------------------------------------------------------
#-------------------------------------------------------------------------------------------
/*
*
* @uid_read_mitarbeiter_oder_student Daten zum Mitarbeiter oder Studenten
*
* @param $db Aktuelle Datenbankverbindung
* @param $uid Userkurzzeichen
*
* @return Array der User Inormationen wenn User gefunden wurde ansonst false
*
*/
function uid_read_mitarbeiter_oder_student($db,$uid)
{
$rows=array();
// Plausib
if (!$db)
return $rows;
// Pruefen ob Mitarbeiter
$qry="SELECT uid,person_id,anrede,titelpre,vorname,vornamen,nachname,aktiv FROM campus.vw_mitarbeiter where uid=".$db->db_add_param(trim($uid), FHC_STRING)." LIMIT 1 ; ";
if(!$results=$db->db_query($qry))
die('Probleme beim lesen der Mitarbeiter '.$db->db_last_error());
if ($num_rows_stunde=$db->db_num_rows($results))
{
while($rows = $db->db_fetch_object($results))
{
$rows->name='';
$rows->name.=(isset($rows->anrede)?trim($rows->anrede).' ':'');
$rows->name.=(isset($rows->titelpre)?trim($rows->titelpre).' ':'');
$rows->name.=(isset($rows->vorname)?trim($rows->vorname).' ':'');
$rows->name.=(isset($rows->vornamen)?trim($rows->vornamen).' ':'');
$rows->name.=(isset($rows->nachname)?trim($rows->nachname).' ':'');
return $rows;
}
}
// Wenn kein Mitarbeiter pruefen ob Student
$qry="SELECT uid,person_id,anrede,titelpre,vorname,vornamen,nachname,aktiv FROM campus.vw_student where uid=".$db->db_add_param(trim($uid), FHC_STRING)." LIMIT 1 ; ";
if(!$result=$db->db_query($qry))
die('Probleme beim Lesen der Studierenden ');
if ($num_rows_stunde=$db->db_num_rows($result))
{
while($rows = $db->db_fetch_object($result))
{
$rows->name='';
$rows->name.=(isset($rows->anrede)?trim($rows->anrede).' ':'');
$rows->name.=(isset($rows->titelpre)?trim($rows->titelpre).' ':'');
$rows->name.=(isset($rows->vorname)?trim($rows->vorname).' ':'');
$rows->name.=(isset($rows->vornamen)?trim($rows->vornamen).' ':'');
$rows->name.=(isset($rows->nachname)?trim($rows->nachname).' ':'');
return $rows;
}
}
// Daten gefunden wurden ist nicht mehr der Initialwert False als Returnparameter vorhanden
return $rows;
}
#-------------------------------------------------------------------------------------------
/*
*
* @personen_id_read_mitarbeiter_oder_student Daten zum Mitarbeiter oder Studenten
*
* @param $db Aktuelle Datenbankverbindung
* @param $person_id Userkurzzeichen
*
* @return Array der User Inormationen wenn User gefunden wurde ansonst false
*
*/
function personen_id_read_mitarbeiter_oder_student($db,$person_id)
{
$row=array();
// Plausib
if (!$db)
return $row;
// Pruefen ob Mitarbeiter
$qry='';
$qry.=' SELECT uid,person_id,anrede,titelpre,vorname,vornamen,nachname,aktiv FROM campus.vw_mitarbeiter where person_id='.$db->db_add_param(trim($person_id), FHC_INTEGER);
$qry.=' UNION ';
// Pruefen ob Student
$qry.='SELECT uid,person_id,anrede,titelpre,vorname,vornamen,nachname,aktiv FROM campus.vw_student where person_id='.$db->db_add_param(trim($person_id), FHC_INTEGER);
$qry.=' LIMIT 20 ';
if(!$result=$db->db_query($qry))
die('Probleme beim lesen der MitarbeiterInnen/Studierenden '.$db->db_last_error());
if (!$num_rows_stunde=$db->db_num_rows($result))
return $row;
while($rows = $db->db_fetch_object($result))
{
$rows->name='';
$rows->name.=(isset($rows->anrede)?trim($rows->anrede).' ':'');
$rows->name.=(isset($rows->titelpre)?trim($rows->titelpre).' ':'');
$rows->name.=(isset($rows->vorname)?trim($rows->vorname).' ':'');
$rows->name.=(isset($rows->vornamen)?trim($rows->vornamen).' ':'');
$rows->name.=(isset($rows->nachname)?trim($rows->nachname).' ':'');
$row[]=$rows;
}
// Daten gefunden wurden ist nicht mehr der Initialwert False als Returnparameter vorhanden
return $row;
}
#-------------------------------------------------------------------------------------------
/*
*
* @read_create_html_news lesen der CIS - News zum anzeigen als HTML Tabelle
*
* @param $db Aktuelle Datenbankverbindung
* @param $fachbereich_kurzbz Fachbereichskennzeichen
* @param $studiengang_kz Studiengan Kennzeichen
* @param $semester Semester
*
* @return HTML Tabelle mit Newszeilen
*
*/
function read_create_html_news($db,$fachbereich_kurzbz,$studiengang_kz,$semester)
{
if(defined('CIS_INFOSCREEN_NEWS_ANZEIGEN') && CIS_INFOSCREEN_NEWS_ANZEIGEN==false)
return '';
// ------------------------------------------------------------------------------------------
// Lesen Newstickerzeilen
// ------------------------------------------------------------------------------------------
// Initialisieren der Newstickerzeilen
$news='';
$news_obj = new news();
$news_obj->getnews(MAXNEWSALTER, $studiengang_kz, $semester, false, null, MAXNEWS);
// Newsliste erzeugen
$news='<table class="news" border="0" cellpadding="0" cellspacing="0">';
$i=0;
foreach($news_obj->result as $row)
{
if($row->content_id!='')
{
$lang=DEFAULT_LANGUAGE;
$content = new content();
$content->getContent($row->content_id, $lang, null, null, false);
$xml_inhalt = new DOMDocument();
if($content->content!='')
{
$xml_inhalt->loadXML($content->content);
}
if($xml_inhalt->getElementsByTagName('verfasser')->item(0))
$verfasser = $xml_inhalt->getElementsByTagName('verfasser')->item(0)->nodeValue;
if($xml_inhalt->getElementsByTagName('betreff')->item(0))
$betreff = $xml_inhalt->getElementsByTagName('betreff')->item(0)->nodeValue;
if($xml_inhalt->getElementsByTagName('text')->item(0))
$text = $xml_inhalt->getElementsByTagName('text')->item(0)->nodeValue;
$i++; // wird zum Zeilenfarben - CSS umschalten benoetigt
$text=mb_ereg_replace("href","hrefs",trim($text));
$text=mb_ereg_replace(array("\r\n", "\n", "\r","<br>")," ",$text);
//DMS Pfad korrigieren
$text=mb_ereg_replace("dms.php","../../cms/dms.php",$text);
$news.='<tr valign="top" onclick="updateSiteRefresh();aktivTimeout=setTimeout(\'close_news();\',10000);document.getElementById(\'news\').innerHTML=document.getElementById(\'news_'.$row->news_id.'_anzeige\').innerHTML;show_layer(\'news\')" '.($i%2? ' class="news_row_0" ':' class="news_row_1" ').'><td width="2%"><img src="feed.png" border="0" /></td>';
$news.='<td width="89%" >'. (stristr($text,'</table>')?$text:(mb_strlen($text)>90?mb_substr(trim('<b>'.$betreff.'</b><br>'.$text),0,90).'<span style="font-size:7px;">...</span>' :trim($text))).'</td>
<td width="9%">
<span class="blau_mitteText" style="font-size:small;">
Detail
</span>
</td>
<td class="ausblenden">
<div id="news_'.$row->news_id.'_anzeige"><h1>'.trim($betreff).'</h1>'.trim($text).'
<hr><br><br><div onclick="close_news();">
<span class="blau_mitteText">
schliessen
</span>
</div>
<p>&nbsp;</p>
</div>
</td></tr><tr '.($i%2? ' class="news_row_0" ':' class="news_row_1" ').'><td '.($i%2? ' class="news_row_0" ':' class="news_row_1" ').' colspan="3">&nbsp;</td></tr>';
}
}
$news.='</table>';
$news=mb_ereg_replace('href=','',$news);
return $news;
}
?>