* Manfred Kindl */ /** * Globale Suche */ require_once('../../../config/cis.config.inc.php'); require_once('../../../config/global.config.inc.php'); require_once('../../../include/functions.inc.php'); require_once('../../../include/phrasen.class.php'); require_once('../../../include/content.class.php'); require_once('../../../include/benutzer.class.php'); require_once('../../../include/globals.inc.php'); require_once('../../../include/dms.class.php'); require_once('../../../include/service.class.php'); require_once('../../../include/ort.class.php'); require_once('../../../include/benutzerberechtigung.class.php'); require_once('../../../include/organisationseinheit.class.php'); require_once('../../../include/studiengang.class.php'); require_once('../../../include/benutzerfunktion.class.php'); require_once('../../../include/person.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/kontakt.class.php'); require_once('../../../include/bisverwendung.class.php'); $uid = get_uid(); $db = new basis_db(); $sprache = getSprache(); $p = new phrasen($sprache); echo ' '; include('../../../include/meta/jquery.php'); include('../../../include/meta/jquery-tablesorter.php'); echo 'Globale Suche '; echo '

',$p->t('tools/suche'),'

'; $search = (isset($_REQUEST['search'])?$_REQUEST['search']:''); // Uses htmlspecialchars to avoid XSS issues $self = htmlspecialchars($_SERVER["PHP_SELF"], ENT_QUOTES, "utf-8"); echo '

'; if($search == '') exit; // String aufsplitten und Sonderzeichen entfernen $searchItems = explode(' ',TRIM(str_replace(',', '', $search),'!.?')); // Leerzeichen und Whitespaces entfernen $searchItems = preg_replace("/\s/", '', $searchItems); // Leere Strings aus Array entfernen while ($array_key = array_search("", $searchItems)) unset ($searchItems[$array_key]); // Wenn nach dem TRIM keine Zeichen uebrig bleiben, dann abbrechen if(implode(',', $searchItems) == '') exit; //Easter Egg $easteregg = array ('antwort','leben','universum','rest','answer','universe','life','everything'); $easteregg_intersect = array_intersect(array_map('strtolower',$searchItems), $easteregg); if (count($easteregg_intersect)==4) { echo '



42

'; exit; } $searchPerson = searchPerson($searchItems); $searchOE = searchOE($searchItems); $searchOrt = searchOrt($search); $searchDms = searchDms($searchItems); $searchContent = searchContent($searchItems); if (!$searchPerson && !$searchOrt && !$searchDms && !$searchContent && !$searchOE) echo $p->t('tools/esWurdenKeineErgebnisseGefunden'); function searchPerson($searchItems) { global $db, $p, $noalias, $uid; $bn = new benutzer(); //search only active and Mitarbeiter with positive Personalnr $bn->search($searchItems, 21, true, true); if(count($bn->result)>0) { echo '

',$p->t('global/personen'),'

'; echo ' '; if(count($bn->result)>20) { echo '

'.$p->t("tools/esWurdenMehrAlsXPersonenGefunden").'

'; } echo ''; if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) echo ''; echo ' '; foreach($bn->result as $row) { $bisverwendung = new bisverwendung(); $bisverwendung->getLastAktVerwendung($row->uid); echo ''; //echo ''; echo ''; echo ''; echo ''; //echo ''; echo ''; echo ''; // Display phone number echo ''; echo ''; if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) $mail = $row->alias.'@'.DOMAIN; else $mail = $row->uid.'@'.DOMAIN; echo ''; if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) echo ''; echo ''; echo "\n"; } echo '
',$p->t('global/anrede'),' ',$p->t('global/vorname'),' ',$p->t('global/nachname'),' ',$p->t('global/studiengang'),' ',$p->t('freebusy/typ'),' ',$p->t('global/telefonnummer'),' ',$p->t('lvplan/raum'),' ',$p->t('global/mail'),'',$p->t('lvplan/lvPlan'),'
',$row->titelpre,'',$row->anrede,'',$row->vorname,''; if(!defined('CIS_SUCHE_PROFIL_ANZEIGEN')) echo '',$row->nachname,''; else if(!CIS_SUCHE_PROFIL_ANZEIGEN) { $mitarbeiter = new Mitarbeiter($uid); if($mitarbeiter->errormsg === NULL) echo '',$row->nachname,''; else echo $row->nachname; } else echo '',$row->nachname,''; if($row->aktiv==false) echo ' (ausgeschieden)'; elseif($bisverwendung->beschausmasscode=='5') echo ' (karenziert)'; echo '',$row->titelpost,'',($row->studiengang!=''?$row->studiengang:'-'),'',($row->mitarbeiter_uid==NULL ? $p->t('personensuche/studentIn') : ($row->fixangestellt=='t' ? $p->t('personensuche/mitarbeiterIn') : $p->t('personensuche/mitarbeiterInExtern'))),''; // * if user has telefonklappe, display it if ($row->telefonklappe != '') { echo $row->telefonklappe; } // * if user has no telefonklappe, display business handy else { $person = new Person(); $person->getPersonFromBenutzer($row->uid); $person_id = $person->person_id; $kontakt = new Kontakt(); if ($kontakt->load_persKontakttyp($person_id, 'firmenhandy')) { $is_zugestellt = false; foreach ($kontakt->result as $kontakt) { // display business handy only if zustellung is true if ($kontakt->zustellung) { echo $kontakt->kontakt. "
"; $is_zugestellt = true; } } // if zustellung is false display '-' if (!$is_zugestellt) { echo '-'; } } // * if neither telefonklappe nor business handy, display '-' else { echo '-'; } } echo '
',($row->raum!=''?$row->raum:'-'),'',$mail,''.$p->t('lvplan/lvPlan').'

'; return true; } else return false; } function searchOE($searchItems) { global $db, $p, $noalias; //Suche nach Studiengaengen mit dem Suchbegriff und merge mit $searchItems $stg_oe_array = array(); $oe = new organisationseinheit(); $oe->search($searchItems); $stg = new studiengang(); $stg->search($searchItems); foreach($stg->result as $row) { if($row->aktiv===true) $oe->result[] = new organisationseinheit($row->oe_kurzbz); } if(count($oe->result)>0) { echo '

',$p->t('global/organisationseinheiten'),'

'; echo ' '; foreach($oe->result as $row) { if($row->aktiv==true) { $benutzerfunktion = new benutzerfunktion(); $benutzerfunktion->getOeFunktionen($row->oe_kurzbz,'ass,Leitung,stvLtg,oezuordnung','now()','now()'); $oebezeichnung = new organisationseinheit(); $oebezeichnung->load($row->oe_kurzbz); if (count($benutzerfunktion->result) > 0) { echo '

',$row->organisationseinheittyp_kurzbz,' ',$oebezeichnung->bezeichnung,'

'; echo ' '; foreach($benutzerfunktion->result as $bf) { $person = new person(); $person->getPersonFromBenutzer($bf->uid); $mitarbeiter = new mitarbeiter(); $mitarbeiter->load($bf->uid); $kontakt = new kontakt(); $kontakt->loadFirmaKontakttyp($mitarbeiter->standort_id,'telefon'); $bisverwendung = new bisverwendung(); $bisverwendung->getLastAktVerwendung($bf->uid); $benutzer = new benutzer($bf->uid); if ($benutzer->bnaktiv) { echo ''; echo ''; echo ''; echo ''; // Display phone number echo ''; echo ''; //if($row->alias!='' && !in_array($row->studiengang_kz, $noalias)) ??? Was macht $noalias? if($person->alias!='') $mail = $person->alias.'@'.DOMAIN; else $mail = $person->uid.'@'.DOMAIN; echo ''; //if(!defined('CIS_SUCHE_LVPLAN_ANZEIGEN') || CIS_SUCHE_LVPLAN_ANZEIGEN) //echo ''; echo ''; echo "\n"; } } echo "\n"; echo '
',$p->t('global/vorname'),' ',$p->t('global/nachname'),' ',$p->t('global/funktion'),' ',$p->t('global/telefonnummer'),' ',$p->t('lvplan/raum'),' ',$p->t('global/mail'),'
'.$person->vorname.'',$person->nachname,''.$bf->bezeichnung; if($bisverwendung->beschausmasscode=='5') echo ' (karenziert)'; echo ''; // * if user has telefonklappe, display it if ($mitarbeiter->telefonklappe != '') { echo $kontakt->kontakt. '-'. $mitarbeiter->telefonklappe; } // * if user has no telefonklappe, display business handy else { $person_id = $person->person_id; if ($kontakt->load_persKontakttyp($person_id, 'firmenhandy')) { $is_zugestellt = false; foreach ($kontakt->result as $kontakt) { // display business handy only if zustellung is true if ($kontakt->zustellung) { echo $kontakt->kontakt. "
"; $is_zugestellt = true; } } // if zustellung is false display '-' if (!$is_zugestellt) { echo '-'; } } // * if neither telefonklappe nor business handy, display '-' else { echo '-'; } } echo '
',($mitarbeiter->ort_kurzbz!=''?$mitarbeiter->ort_kurzbz:'-'),'',$mail,''.$p->t('lvplan/lvPlan').'

'; } } } return true; } else return false; } function searchOrt($search) { global $db, $p, $noalias; $ort = new ort(); $ort->filter($search, true, true, true); $uid = get_uid(); $berechtigung=new benutzerberechtigung(); $berechtigung->getBerechtigungen($uid); if ($berechtigung->isBerechtigt('lehre/reservierung:begrenzt', null, 'sui')) $raumres=true; else $raumres=false; if(count($ort->result)>0) { echo '

',$p->t('lvplan/ort'),'

'; echo ' '; if ($raumres) echo ''; else echo ''; echo ''; foreach($ort->result as $row) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; if ($raumres) echo ''; else echo ''; //else // echo ''; echo ''; echo "\n"; } echo '
',$p->t('lvplan/raum'),' ',$p->t('global/bezeichnung'),' ',$p->t('lvplan/anzahlPersonen'),' ',$p->t('tools/telefonklappe'),' ',$p->t('lvplan/rauminformationenAnzeigen'),'',$p->t('tools/reservieren'),'',$p->t('lvplan/lvPlan'),'
',$row->planbezeichnung,' (',$row->ort_kurzbz,')',$row->bezeichnung,'',$row->max_person,'',$row->telefonklappe,''.($row->content_id != '' ?''.$p->t('lvplan/rauminformationenAnzeigen').'':'-').''.$p->t('tools/reservieren').''.$p->t('lvplan/lvPlan').'

'; return true; } else return false; } function searchDms($searchItems) { $mimetypes = array( 'application/pdf'=>'pdf_icon.png', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'=>'doc_icon.png', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'=>'ppt_icon.png', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'=>'xls_icon.png', 'application/vnd.oasis.opendocument.text'=>'openoffice0.jpg', 'application/msword'=>'doc_icon.png', 'application/vnd.ms-excel'=>'xls_icon.png', 'application/x-zip'=>'zip_icon.png', 'application/zip'=>'zip_icon.png', 'application/mspowerpoint'=>'ppt_icon.png', 'image/jpeg'=>'img_icon.png', 'image/gif'=>'img_icon.png', 'image/png'=>'img_icon.png', ); $searchstring = $searchItems; global $db, $p, $uid; $dms = new dms(); $dms->searchLastVersion($searchstring, 41); if(count($dms->result)>0) { echo '

'.$p->t("tools/dokumente").'

'; echo ' '; if(count($dms->result)>40) { echo '

'.$p->t("tools/esWurdenMehrAlsXDokumenteGefunden").'

'; } echo ' '; foreach($dms->result as $row) { // Berechtigung pruefen if ($dms->isLocked($row->dms_id)) { if ($dms->isBerechtigt($row->dms_id, $uid)) { echo ''; if(array_key_exists($row->mimetype,$mimetypes)) echo ''; else echo ''; echo ''; echo ''; echo ''; echo "\n"; } } else { echo ''; if(array_key_exists($row->mimetype,$mimetypes)) echo ''; else echo ''; echo ''; echo ''; echo ''; echo "\n"; } } echo '
',$p->t('global/titel'),' ',$p->t('tools/aktuelleVersion'),' ',$p->t('tools/suchbegriffe'),'
',$row->beschreibung,'',$row->beschreibung,'',$row->version,'',$row->schlagworte,'
',$row->beschreibung,'',$row->beschreibung,'',$row->version,'',$row->schlagworte,'

'; return true; } else return false; } function searchContent($searchItems) { global $db,$p,$sprache,$uid; $cms = new content(); $cms->search($searchItems, 21); $content_id_arr = array(); if(count($cms->result) > 0) { echo '

',$p->t('tools/content'),'

'; if(count($cms->result) > 20) { echo '

'.$p->t("tools/esWurdenMehrAlsXInhalteGefunden").'

'; } // Jede Sprache getrennt anzeigen aber zuerst die eingestellte Sprache $anzeigesprache=''; // var_dump($cms->result); foreach($cms->result as $row) { if ($sprache == $row->sprache) { if ($anzeigesprache != $row->sprache) { $anzeigesprache = $row->sprache; echo '

',$row->sprache,'

'; echo ''; $anzeigesprache=''; $content_id_arr = array(); foreach ($cms->result as $row) { if ($sprache != $row->sprache) { if ($anzeigesprache != $row->sprache) { $anzeigesprache = $row->sprache; echo ''; echo '

',$row->sprache,'

'; echo ''; return true; } else return false; } function findAndMark($content, $items) { $item = ''; foreach($items as $row) { if($row!='') { $item = $row; break; } } if($item == '') return '...'; //CDATA und HTML Tags entfernen $content = mb_str_replace('<[CDATA[', '', $content); $content = mb_str_replace(']]>', '', $content); $content = strip_tags($content); $item = mb_strtolower($item); $beginn = mb_strpos(mb_strtolower($content), $item); $len = mb_strlen($item); //Im Content sind die Umlaute teilweise codiert gespeichert //Wenn der Eintrag nicht gefunden wird, wird mit Codierten Zeichen nochmals gesucht if($beginn=='') { $beginn = mb_strpos(mb_strtolower($content), htmlentities($item,ENT_NOQUOTES,'UTF-8')); $len = mb_strlen(htmlentities($item,ENT_NOQUOTES,'UTF-8')); } if($beginn=='') { $beginn=0; $len=0; } $start = (($beginn-100)>0?($beginn-100):0); //echo "start: $start
beginn: $beginn
beginn-start: ".($beginn-$start); //echo "
item:".$item.'
'; $preview=''; if($start!=0) $preview='...'; $preview .= mb_substr($content, $start, ($beginn-$start)); $preview.=''; $preview.= mb_substr($content, $beginn, $len); $preview.=''; $preview.= mb_substr($content, $beginn+$len, 300); $laenge = $beginn+$len+300; if($laenge'; ?>