* 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 ' Globale Suche '; echo '

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

'; $search = (isset($_REQUEST['search'])?$_REQUEST['search']:''); echo '

'; if($search=='') exit; // String aufsplitten und Sonderzeichen entfernen $searchItems = explode(' ',TRIM(str_replace(',', '', $search),'!.?')); // 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; $bn = new benutzer(); $bn->search($searchItems, 21); 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 ''; 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/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->vorname,'',$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?'StudentIn':'MitarbeiterIn'),'',($row->telefonklappe!=''?$row->telefonklappe:'-'),'',($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(); $stg = new studiengang(); $stg->search($searchItems); foreach($stg->result as $row) { if($row->aktiv===true) $stg_oe_array[].= $row->oe_kurzbz; } $searchItems = array_merge_recursive($stg_oe_array,$searchItems); $oe = new organisationseinheit(); $oe->search($searchItems); 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); 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); echo ''; echo ''; echo ''; echo ''; 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($person->aktiv==false) echo ' (ausgeschieden)'; elseif($bisverwendung->beschausmasscode=='5') echo ' (karenziert)'; echo '',($mitarbeiter->telefonklappe!=''?$kontakt->kontakt.'-'.$mitarbeiter->telefonklappe:'-'),'',($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 ''; if ($raumres) echo ''; else echo ''; //else // echo ''; echo ''; echo "\n"; } echo '
',$p->t('global/ort'),' ',$p->t('global/bezeichnung'),' ',$p->t('tools/maxPersonen'),' ',$p->t('tools/telefonklappe'),'',$p->t('tools/reservieren'),'',$p->t('lvplan/lvPlan'),'
',$row->planbezeichnung,' (',$row->ort_kurzbz,')',$row->bezeichnung,'',$row->max_person,'',$row->telefonklappe,''.$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 "\n"; } } else { echo ''; if(array_key_exists($row->mimetype,$mimetypes)) echo ''; else echo ''; echo ''; echo ''; echo "\n"; } } echo '
',$p->t('global/titel'),' ',$p->t('tools/aktuelleVersion'),'
',$row->beschreibung,'',$row->beschreibung,'',$row->version,'
',$row->beschreibung,'',$row->beschreibung,'',$row->version,'

'; return true; } else return false; } function searchContent($searchItems) { global $db,$p,$sprache,$uid; $cms = new content(); $cms->search($searchItems, 21); 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=''; foreach($cms->result as $row) { if ($sprache==$row->sprache) { if ($anzeigesprache!=$row->sprache) { $anzeigesprache=$row->sprache; echo '

',$row->sprache,'

'; echo ''; $anzeigesprache=''; 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) { foreach($items as $row) { if($row!='') { $item = $row; break; } } //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'; ?>