, * Andreas Oesterreicher , * Rudolf Hangl and * Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at>. */ require_once('../../../config/cis.config.inc.php'); require_once('../../../config/global.config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/globals.inc.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/studiengang.class.php'); require_once('../../../include/studienordnung.class.php'); require_once('../../../include/person.class.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/betriebsmittel.class.php'); require_once('../../../include/betriebsmittelperson.class.php'); require_once('../../../include/betriebsmitteltyp.class.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/betriebsmittel_betriebsmittelstatus.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/prestudent.class.php'); require_once('../../../include/student.class.php'); require_once('../../../include/kontakt.class.php'); require_once('../../../include/fotostatus.class.php'); require_once('../../../include/addon.class.php'); require_once('../../../include/gruppe.class.php'); require_once('../../../include/adresse.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); $sprache = getSprache(); $p = new phrasen($sprache); if (!$db = new basis_db()) die($p->t('global/fehlerBeimOeffnenDerDatenbankverbindung')); $uid = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); $datum_obj = new datum(); // Wenn ein anderer User sich das Profil ansieht (Bei Personensuche) sollen bestimmte persönliche Daten nicht angezeigt werden // außer der User selber oder berechtigte Personen $ansicht = false; if (isset($_GET['uid']) && $_GET['uid'] != $uid) { $uid = stripslashes($_GET['uid']); $ansicht = true; } $adminOrOwnUser = $rechte->isBerechtigt('admin') || !$ansicht; if ($rechte->isBerechtigt('basis/kontakt')) $ansicht = false; if (!$ansicht && isset($_GET['action'])) { switch($_GET['action']) { case 'foto_freigabe': $benutzer = new benutzer(); if ($benutzer->load($uid)) { $person = new person(); if ($person->load($benutzer->person_id)) { $person->foto_sperre = false; $person->new = false; $person->save(); } } break; case 'foto_sperre': $benutzer = new benutzer(); if ($benutzer->load($uid)) { $person = new person(); if ($person->load($benutzer->person_id)) { $person->foto_sperre = true; $person->new = false; $person->save(); } } break; } } $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 (check_lektor($uid)) { $user = new mitarbeiter(); $type = 'mitarbeiter'; } else { $user = new student(); $type = 'student'; } if (!$user->load($uid)) die($p->t('profil/esWurdenKeineProfileGefunden')); if ($type == 'mitarbeiter') { if (isset($user->personalnummer) && is_numeric($user->personalnummer) && (int)$user->personalnummer < 0) die($p->t('profil/keinGueltigesProfil')); $vorwahl = ''; $kontakt = new kontakt(); $kontakt->loadFirmaKontakttyp($user->standort_id,'telefon'); $vorwahl = $kontakt->kontakt; } echo ' '.$p->t('profil/profil').'

'.$p->t('profil/profil').'

'; if (!$user->bnaktiv) { if (!$ansicht) { if ($type == 'student') $message = $p->t('profil/inaktivStudent'); elseif ($type == 'mitarbeiter') $message = $p->t('profil/inaktivMitarbeiter'); else $message = $p->t('profil/inaktivSonstige'); } else $message = $p->t('profil/AccountInaktiv'); echo ''.$message.''; } echo ' '; $menubox = ''; //Überprüfung ob Addon vorhanden ist $addon = new addon(); foreach($addon->aktive_addons as $ad) { // checken ob es file profil_array.php gibt if (file_exists(DOC_ROOT.'/addons/'.$ad.'/cis/profil_array.php')) { $menu=array(); include(DOC_ROOT.'/addons/'.$ad.'/cis/profil_array.php'); if (count($menu) > 0) { foreach($menu as $entry) { $menubox.= '

'.$entry['name'].'

'; } } } } //Überprüfung ob Hilfe-Link vorhanden if ($p->t("dms_link/profilhilfe") != '') $menubox .= '

'.$p->t('global/hilfe').'

'; if ($menubox != '') echo '
'; echo '
'; //Foto anzeigen $benutzer = new benutzer(); $benutzer->load($uid); $person = new person(); $person->load($benutzer->person_id); //var_dump($person); if ($person->foto != '') { if (!($ansicht && $user->foto_sperre)) echo ''.$user->person_id.''; else echo 'Dummy Picture'; } else echo 'Dummy Picture'; if (!$ansicht) { //Foto Upload nur möglich wenn das Bild noch nicht akzeptiert wurde $fs = new fotostatus(); if (!$fs->akzeptiert($user->person_id)) echo "
".$p->t('profil/bildHochladen').""; } if ($user->foto_sperre) echo '
'.$p->t('profil/profilfotoGesperrt').''; if (!$ansicht) { if ($user->foto_sperre) echo '
'.$p->t('profil/fotofreigeben').''; else echo '
'.$p->t('profil/fotosperren').''; } echo '
'; echo ' '.($type == "student"?$p->t("profil/student") : ($user->fixangestellt ? $p->t('profil/mitarbeiter') : $p->t('personensuche/mitarbeiterInExtern'))).'

'.$p->t('global/username').': '.$user->uid.'
'; if ($type == 'student' && $person->matr_nr) echo $p->t('global/matrikelnummer'). ": ". $person->matr_nr. "
"; echo ' '.$p->t('global/anrede').': '.$user->anrede.'
'.$p->t('global/titel').': '.$user->titelpre.'
'; if (!$ansicht) echo $p->t('global/vorname').': '.$user->vorname.' '.$user->vornamen.'
'; else echo $p->t('global/vorname').': '.$user->vorname.'
'; echo ' '.$p->t('global/nachname').': '.$user->nachname.'
'.$p->t('global/postnomen').': '.$user->titelpost.'

'; if (!$ansicht) { echo ' '.$p->t('global/geburtsdatum').': '.$datum_obj->formatDatum($user->gebdatum,'d.m.Y')."
".$p->t('global/geburtsort').": $user->gebort

"; } if (!$ansicht) { $adresse = new adresse(); $adresse->load_pers($user->person_id); function sortAdresse($a , $b) { if ($a->typ === $b->typ) return 0; return ($a->typ < $b->typ) ? -1 : 1; } usort($adresse->result, "sortAdresse"); foreach($adresse->result as $a) { if ($a->zustelladresse) { switch ($a->typ) { case "h": $typ = $p->t("global/hauptwohnsitz"); break; case "n": $typ = $p->t("global/nebenwohnsitz"); break; default: $typ = NULL; break; } if ($typ !== NULL) { echo "".$typ.":
"; echo $a->strasse."
".$a->plz." ".$a->ort."

"; } } } } $studiengang = new studiengang(); if ($type == 'student' && (!defined('CIS_PROFIL_STUDIENINFORMATION_ANZEIGEN') || CIS_PROFIL_STUDIENINFORMATION_ANZEIGEN)) { $studiengang->load($user->studiengang_kz); $prestudent = new prestudent($user->prestudent_id); if ($prestudent->getLastStatus($user->prestudent_id)) { $studienplan_id = $prestudent->studienplan_id; $studienordnung = new studienordnung(); if ($studienordnung->getStudienordnungFromStudienplan($studienplan_id)) { $studiengangbezeichnung_sto = $studienordnung->__get('studiengangbezeichnung'); } } $studiengang_bezeichnung = empty($studiengangbezeichnung_sto) ? $studiengang->bezeichnung : $studiengangbezeichnung_sto; echo " ".$p->t('global/studiengang').": $studiengang_bezeichnung
".$p->t('global/semester').": $user->semester ".$p->t('benotungstool/liste')."
".$p->t('global/verband').": $user->verband ".($user->verband!=' '?"".$p->t('benotungstool/liste')."":"")."
".$p->t('global/gruppe').": $user->gruppe ".($user->gruppe!=' '?"".$p->t('benotungstool/liste')."":"")."
"; if ($user->studiengang_kz<10000) echo $p->t('global/personenkennzeichen').": $user->matrikelnr
"; } if ($type == 'mitarbeiter') { echo "
".$p->t('profil/kurzzeichen').": $user->kurzbz
"; if ($user->telefonklappe != '') { echo $p->t('profil/telefonTw').": $vorwahl - $user->telefonklappe
"; //echo $p->t('profil/faxTw').": $vorwahl - 99 $user->telefonklappe
"; } $kontakt = new kontakt(); $kontakt->load_pers($user->person_id); foreach($kontakt->result as $k) { if ($k->kontakttyp == 'firmenhandy') echo 'Firmenhandy: '.$k->kontakt.'
'; } if ($user->ort_kurzbz != '') echo $p->t('profil/buero').': '.$user->ort_kurzbz.'
'; } echo '
'; if (!$ansicht && (!defined('CIS_PROFIL_FHAUSWEIS_ANZEIGEN') || CIS_PROFIL_FHAUSWEIS_ANZEIGEN)) { echo ''.$p->t('profil/fhausweisStatus').'
'; $bm = new betriebsmittel(); if ($bm->zutrittskarteAusgegeben($user->uid)) { //wenn es mehr Zutrittskarten gab, wird das letzte Ausgabedatum erhalten $ausgegeben_am = $bm->result; $ausgegeben_am = $datum_obj->formatDatum($ausgegeben_am, 'd.m.Y'); echo '
'.$p->t('profil/fhausweisWurdeBereitsAusgegeben', array($ausgegeben_am)); } else { $fs = new fotostatus(); if ($fs->getLastFotoStatus($user->person_id)) { echo '
'.$p->t('profil/Bild').' '.$fs->fotostatus_kurzbz.' am '.$datum_obj->formatDatum($fs->datum, 'd.m.Y'); switch($fs->fotostatus_kurzbz) { case 'abgewiesen': echo '
'.$p->t('profil/ladenSieBitteEinGueltigesFotoHoch').'
'; break; case 'hochgeladen': echo '
'.$p->t('profil/fotoWurdeNochNichtAkzeptiert'); break; case 'akzeptiert': if ($bm->zutrittskartePrinted($user->uid)) { echo '
'.$p->t('profil/fhausweisGedrucktAm').' '.$datum_obj->formatDatum($bm->insertamum,'d.m.Y'); $geliefertts = $datum_obj->mktime_fromtimestamp($bm->insertamum); $abholungsdatum = $datum_obj->jump_day($geliefertts, 1); echo '
'.$p->t('profil/fhausweisAbholbereitAmEmpfangAb').' '.date('d.m.Y',$abholungsdatum); } else echo '
'.$p->t('profil/fhausweisWurdeNochNichtGedruckt'); break; default: echo '
'.$p->t('profil/ladenSieBitteEinGueltigesFotoHoch').'
'; break; } } else { echo '
'.$p->t('profil/ihrFotoWurdeNochNichtGeprueft'); } } echo '

'; } echo ''.$p->t('profil/email').'
'.$p->t('profil/intern').': '.$user->uid.'@'.DOMAIN.'
'; if ($user->alias!='' && (!isset($user->studiengang_kz) || !in_array($user->studiengang_kz,$noalias))) { echo $p->t('profil/alias').": $user->alias@".DOMAIN.""; } if (!$ansicht) { function sortKontakt($a , $b) { if ($a->kontakttyp === $b->kontakttyp) return 0; return ($a->kontakttyp < $b->kontakttyp) ? -1 : 1; } echo '

'.$p->t('profil/kontaktPrivat').''; $kontakt = new kontakt(); $kontakt->load_pers($user->person_id); usort($kontakt->result, "sortKontakt"); echo ''; $has_notfallkontakt = false; foreach($kontakt->result as $k) { if ($k->kontakttyp != 'firmenhandy' && $k->kontakttyp != 'hidden') { if ($k->zustellung) $zustellung = '✓'; else $zustellung = '✗'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; if ($k->kontakttyp == 'notfallkontakt') $has_notfallkontakt = true; } /* if ($k->zustellung === TRUE) { switch($k->kontakttyp) { case "email": echo '
'.$p->t('profil/email').': '.$k->kontakt; break; case "mobil": echo '
'.$p->t('profil/mobil').': '.$k->kontakt; break; case "telefon": echo '
'.$p->t('profil/telefon').': '.$k->kontakt; break; default: break; } } */ } if (!$has_notfallkontakt && $type == 'mitarbeiter') echo ''; echo '
'.$k->bezeichnung_mehrsprachig[$sprache].''.$k->kontakt.''.$k->anmerkung.''.$zustellung.'
'.$p->t('profil/notfallkontakt').''.$p->t('profil/notfallkontaktBekanntgeben').'
'; } if ($user->homepage != '') { echo "

".$p->t('profil/homepage')."

$user->homepage"; } echo '

'; $mail = MAIL_ADMIN; if (!isset($user->studiengang_kz) || $user->studiengang_kz == '') { $user->studiengang_kz = 0; } //Wenn eine Assistentin fuer diesen Studiengang eingetragen ist, //dann werden die aenderungswuesche an diese Adresse gesendet if ($studiengang->email != '') $mail = $studiengang->email; else $mail = MAIL_ADMIN; if ($user->studiengang_kz == '0') $mail = MAIL_GST; if (!$ansicht) { echo " ".$p->t('profil/solltenDatenNichtStimmen')." uid'%20sind%20nicht%20korrekt.%0D Hier die richtigen Daten:%0A%0ANachname:%20$user->nachname%0AVorname:%20$user->vorname%0AGeburtsdatum:%20$user->gebdatum %0AGeburtsort:%20$user->gebort%0ATitelPre:%20$user->titelpre%0ATitelPost:%20$user->titelpost %0A%0A***%0DPlatz fuer weitere (nicht angefuehrte Daten)%0D***%0A%0A[Bitte%20uebermitteln%20Sie%20uns%20etwaige%20Dokumente%20zum%20Beleg%20der%20Aenderung]\">".$p->t('profil/zustaendigeAssistenz')."

"; } echo ''; echo '
'; if (!defined('CIS_PROFIL_FUNKTIONEN_ANZEIGEN') || CIS_PROFIL_FUNKTIONEN_ANZEIGEN) { //Funktionen $baseqry = "SELECT *, tbl_benutzerfunktion.oe_kurzbz as oe_kurzbz, tbl_organisationseinheit.bezeichnung as oe_bezeichnung, tbl_benutzerfunktion.semester, tbl_benutzerfunktion.bezeichnung as bf_bezeichnung, tbl_benutzerfunktion.wochenstunden, tbl_benutzerfunktion.datum_von, tbl_benutzerfunktion.datum_bis FROM public.tbl_benutzerfunktion JOIN public.tbl_funktion USING(funktion_kurzbz) JOIN public.tbl_organisationseinheit USING(oe_kurzbz) WHERE uid=".$db->db_add_param($uid); $currfunkqry = $baseqry . " AND ((tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()))"; $futurefunkqry = $baseqry . " AND (tbl_benutzerfunktion.datum_von>now())"; printFunctionsTable($currfunkqry, 'profil/funktionen', 't1', true); printFunctionsTable($futurefunkqry, 'profil/zukuenftigeFunktionen', 'tfuture'); } /** * Print html table containing user functions. * @param $query string execute for getting data * @param $tableid string html table id * @param $showVertragsstunden bool show Vertragsstunden sum near Wochenstunden sum */ function printFunctionsTable($query, $headingphrase, $tableid, $showVertragsstunden = false) { global $db, $p, $datum_obj, $uid, $adminOrOwnUser; if ($result_funktion = $db->db_query($query)) { if ($db->db_num_rows($result_funktion) > 0) { echo ''.$p->t($headingphrase).''; echo ' '. ($adminOrOwnUser ? '' : ''). ''; $wochenstunden_sum = 0.00; while($row_funktion = $db->db_fetch_object($result_funktion)) { echo " ". ($adminOrOwnUser ? "" : ""). ""; if(isset($row_funktion->wochenstunden) && $adminOrOwnUser) $wochenstunden_sum += (double)$row_funktion->wochenstunden; } echo '
'; //vertragsstunden if ($showVertragsstunden === true && $adminOrOwnUser) { $vertragsstunden = 0.00; $qry = "SELECT sum(vertragsstunden) AS vertragsstdsumme from bis.tbl_bisverwendung WHERE mitarbeiter_uid = ".$db->db_add_param($uid)." AND (ende > now() OR ende IS NULL)"; if ($result_vertragsstd = $db->db_query($qry)) { if ($db->db_num_rows($result_vertragsstd) > 0) { while($row_vertragsstd = $db->db_fetch_object($result_vertragsstd)) { $vertragsstunden = $row_vertragsstd->vertragsstdsumme; } } } } if ($adminOrOwnUser) { echo " "; } echo "
'.$p->t('global/bezeichnung').' '.$p->t('global/organisationseinheit').' '.$p->t('profil/gueltigvon').' '.$p->t('profil/gueltigbis').''.$p->t('profil/wochenstunden').'
".$row_funktion->beschreibung; if($row_funktion->bf_bezeichnung != $row_funktion->beschreibung && $row_funktion->bf_bezeichnung != '') echo ' - '.$row_funktion->bf_bezeichnung; echo " ".$row_funktion->organisationseinheittyp_kurzbz.' '.$row_funktion->oe_bezeichnung." ".$datum_obj->formatDatum($row_funktion->datum_von,'d.m.Y')." ".$datum_obj->formatDatum($row_funktion->datum_bis,'d.m.Y')."".number_format($row_funktion->wochenstunden, 2)."
Summe Wochenstunden".($showVertragsstunden === true ? " (".$p->t('profil/vertragsstunden').")" : "")."  ".number_format($wochenstunden_sum, 2).($showVertragsstunden === true ? " (".number_format($vertragsstunden, 2).")" : "")."
"; } } } if (!$ansicht && (!defined('CIS_PROFIL_BETRIEBSMITTEL_ANZEIGEN') || CIS_PROFIL_BETRIEBSMITTEL_ANZEIGEN)) { // Betriebsmittel Personen $oBetriebsmittelperson = new betriebsmittelperson(); $oBetriebsmittelperson->result = array(); $oBetriebsmittelperson->errormsg = ''; if ($oBetriebsmittelperson->getBetriebsmittelPerson($user->person_id)) { if (is_array($oBetriebsmittelperson->result) && count($oBetriebsmittelperson->result) > 0) { echo ''.$p->t('profil/entlehnteBetriebsmittel').' '; for ($i = 0;$i < count($oBetriebsmittelperson->result);$i++) { if (empty($oBetriebsmittelperson->result[$i]->retouram) ) { $bm = new betriebsmittel_betriebsmittelstatus(); if ($bm->load_last_betriebsmittel_id($oBetriebsmittelperson->result[$i]->betriebsmittel_id) && $bm->betriebsmittelstatus_kurzbz<>'vorhanden') { continue; } $mailtext_inventar = " ".$p->t('mail/profilBetriebsmittelKorrektur')."?subject=Korrektur%20des%20Inventars%20".$oBetriebsmittelperson->result[$i]->inventarnummer." &body=Folgende%20Aenderung%20hat%20sich%20ergeben:%0A%0A Inventar:%20".$oBetriebsmittelperson->result[$i]->inventarnummer."%20(".$db->convert_html_chars($oBetriebsmittelperson->result[$i]->beschreibung).")%0A%0A Status:%20ausgeschieden%20%2F%20falsche%20Zuordnung%20%2F%20falsche%20Angaben%0A Details:%20%0A\""; echo ""; } } echo '
'.$p->t('profil/betriebsmittel').' '.$p->t('profil/nummer').' '.$p->t('profil/ausgegebenAm').'
".$oBetriebsmittelperson->result[$i]->betriebsmitteltyp.' '.$oBetriebsmittelperson->result[$i]->beschreibung.(isset($oBetriebsmittelperson->result[$i]->verwendung)?' ('.$oBetriebsmittelperson->result[$i]->verwendung.')':'')." ".$oBetriebsmittelperson->result[$i]->nummer.' ".$datum_obj->formatDatum($oBetriebsmittelperson->result[$i]->ausgegebenam,'d.m.Y')."
'; } } // Zutrittsgruppen $gruppe = new gruppe(); $gruppe->loadZutrittsgruppen($uid); if (count($gruppe->result) > 0) { echo 'Zutrittsgruppen '; foreach($gruppe->result as $row) { echo ''; echo ''; echo ''; } echo '
Zutritt
'.$row->bezeichnung.'
'; } } echo '
'; echo'
'; if (!defined('CIS_PROFIL_MAILVERTEILER_ANZEIGEN') || CIS_PROFIL_MAILVERTEILER_ANZEIGEN) { echo ''.$p->t('mailverteiler/mailverteiler').'

'; //Mailverteiler if (!$ansicht) echo "".$p->t('profil/sieSindMitgliedInFolgendenVerteilern').":"; else echo "".$p->t('profil/derUserIstInFolgendenVerteilern',array($user->uid)).":"; echo ''; // Mail-Groups $qry_gruppen = " SELECT gruppe_kurzbz, beschreibung FROM campus.vw_persongruppe WHERE mailgrp AND uid=".$db->db_add_param($uid); if (!($erg_mg = $db->db_query($qry_gruppen))) die($db->db_last_error()); $nr_mg = $db->db_num_rows($erg_mg); for ($i = 0;$i < $nr_mg;$i++) { $row = $db->db_fetch_object($erg_mg,$i); $mailverteiler = strtolower(trim($row->gruppe_kurzbz)).'@'.DOMAIN; echo ' '; } if (isset($user->matrikelnr)) { $stdverteiler = strtolower(trim($studiengang->kuerzel)).'_std'; $semesterverteiler = strtolower(trim($studiengang->kuerzel)).trim($user->semester); $verbandverteiler = strtolower(trim($studiengang->kuerzel)).trim($user->semester).strtolower(trim($user->verband)); echo ' '; if(trim($user->verband) != '') { echo ' '; if (trim($user->gruppe) != '') { $grpverteiler = strtolower(trim($studiengang->kuerzel)).trim($user->semester); $grpverteiler .= strtolower(trim($user->verband)).trim($user->gruppe); echo ' '; } } } } echo '
'.strtolower($row->gruppe_kurzbz).' '.$row->beschreibung.'
'.$stdverteiler.' '.$p->t('profil/alleStudentenVon').' '.$studiengang->kuerzel.'
'.$semesterverteiler.' '.$p->t('profil/alleStudentenVon').' '.$studiengang->kuerzel.' '.$user->semester.'
'.$verbandverteiler.' '.$p->t('profil/alleStudentenVon').' '.$studiengang->kuerzel.' '.$user->semester.$user->verband.'
'.$grpverteiler.' '.$p->t('profil/alleStudentenVon').' '.$studiengang->kuerzel.' '. $user->semester.$user->verband.$user->gruppe.'
';