diff --git a/cis/private/tools/suche.php b/cis/private/tools/suche.php index c4e58655a..725ad7464 100755 --- a/cis/private/tools/suche.php +++ b/cis/private/tools/suche.php @@ -15,7 +15,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * Authors: Andreas Oesterreicher + * Authors: Andreas Oesterreicher + * Manfred Kindl */ /** * Globale Suche @@ -45,12 +46,9 @@ echo ' - - Globale Suche - -
'; +'; echo '

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

'; @@ -63,16 +61,23 @@ 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 -if(($search=='the answer to life the universe and everything') || ($search=='answer to life the universe and everything')) +$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; } -$searchItems = explode(' ',TRIM($search)); - $searchPerson = searchPerson($searchItems); $searchOrt = searchOrt($search); $searchDms = searchDms($searchItems); @@ -237,9 +242,9 @@ function searchDms($searchItems) 'image/png'=>'img_icon.png', ); $searchstring = $searchItems; - global $db, $p; + global $db, $p, $uid; $dms = new dms(); - $dms->searchLastVersion($searchstring, 41); + $dms->searchLastVersion($searchstring, 41); if(count($dms->result)>0) { @@ -273,14 +278,32 @@ function searchDms($searchItems) '; foreach($dms->result as $row) { - echo ''; - if(array_key_exists($row->mimetype,$mimetypes)) - echo '',$row->beschreibung,''; - else - echo '',$row->beschreibung,''; - echo '',$row->version,''; - echo ''; - echo "\n"; + // Berechtigung pruefen + if ($dms->isLocked($row->dms_id)) + { + if ($dms->isBerechtigt($row->dms_id, $uid)) + { + echo ''; + if(array_key_exists($row->mimetype,$mimetypes)) + echo '',$row->beschreibung,''; + else + echo '',$row->beschreibung,''; + echo '',$row->version,''; + echo ''; + echo "\n"; + } + } + else + { + echo ''; + if(array_key_exists($row->mimetype,$mimetypes)) + echo '',$row->beschreibung,''; + else + echo '',$row->beschreibung,''; + echo '',$row->version,''; + echo ''; + echo "\n"; + } } echo '
'; return true; @@ -290,7 +313,7 @@ function searchDms($searchItems) } function searchContent($searchItems) { - global $db,$p; + global $db,$p,$sprache,$uid; $cms = new content(); $cms->search($searchItems, 21); @@ -301,16 +324,57 @@ function searchContent($searchItems) { echo '

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

'; } - echo '
    '; + // Jede Sprache getrennt anzeigen aber zuerst die eingestellte Sprache + $anzeigesprache=''; foreach($cms->result as $row) { - echo '
  • '; - echo '',$db->convert_html_chars($row->titel),'
    '; - $preview = findAndMark($row->content, $searchItems); - - echo $preview; - echo '

  • '; - } + if ($sprache==$row->sprache) + { + if ($anzeigesprache!=$row->sprache) + { + $anzeigesprache=$row->sprache; + echo '

    ',$row->sprache,'

    '; + echo '
      '; + } + $berechtigt = new content(); + $berechtigt = $berechtigt->berechtigt($row->content_id, $uid); + if ($berechtigt) + { + echo '
    • '; + echo '',$db->convert_html_chars($row->titel),'
      '; + $preview = findAndMark($row->content, $searchItems); + + echo $preview; + echo '

    • '; + } + } + } + echo '
    '; + $anzeigesprache=''; + foreach($cms->result as $row) + { + if ($sprache!=$row->sprache) + { + if ($anzeigesprache!=$row->sprache) + { + $anzeigesprache=$row->sprache; + echo '
'; + echo '

',$row->sprache,'

'; + echo '
    '; + } + $berechtigt = new content(); + $berechtigt = $berechtigt->berechtigt($row->content_id, $uid); + if ($berechtigt) + { + echo '
  • '; + echo '',$db->convert_html_chars($row->titel),'
    '; + $preview = findAndMark($row->content, $searchItems); + + echo $preview; + echo '

  • '; + } + } + } echo '
'; return true; } @@ -368,5 +432,5 @@ function findAndMark($content, $items) return $preview; } -echo '
'; +echo ''; ?> diff --git a/include/content.class.php b/include/content.class.php index 6655bf4c5..4140c36e8 100644 --- a/include/content.class.php +++ b/include/content.class.php @@ -347,7 +347,8 @@ class content extends basis_db campus.tbl_contentgruppe JOIN public.vw_gruppen USING(gruppe_kurzbz) WHERE - tbl_contentgruppe.content_id=".$this->db_add_param($content_id, FHC_INTEGER)." + (tbl_contentgruppe.content_id=".$this->db_add_param($content_id, FHC_INTEGER)." + OR NOT EXISTS (SELECT 1 FROM campus.tbl_contentgruppe WHERE content_id=".$this->db_add_param($content_id, FHC_INTEGER).")) AND vw_gruppen.uid=".$this->db_add_param($uid); if($result = $this->db_query($qry)) { @@ -1274,7 +1275,7 @@ class content extends basis_db public function search($searchItems, $limit=null) { $qry = "SELECT - distinct on(content_id) * + distinct on(content_id,sprache) * FROM campus.tbl_contentsprache JOIN campus.tbl_content USING(content_id) @@ -1298,8 +1299,8 @@ class content extends basis_db ) ) "; - $qry.=" ORDER BY content_id DESC"; - + $qry.=" ORDER BY sprache,content_id DESC"; + if(!is_null($limit) && is_numeric($limit)) $qry.=" LIMIT ".$limit; @@ -1311,6 +1312,7 @@ class content extends basis_db $obj->content_id = $row->content_id; $obj->content = $row->content; $obj->titel = $row->titel; + $obj->sprache = $row->sprache; $this->result[] = $obj; } diff --git a/include/dms.class.php b/include/dms.class.php index 9078cd484..84fca4baa 100644 --- a/include/dms.class.php +++ b/include/dms.class.php @@ -1029,7 +1029,7 @@ class dms extends basis_db /** * * Prueft ob der User fuer das Dokument berechtigt ist - * Vorher sollte mit isLocked geprueft werden ob das Dokument gesperrt ist + * Vorher muss mit isLocked geprueft werden ob das Dokument gesperrt ist * * @param $dms_id * @param $user