suche.php: Sonderzeichen werden aus dem Suchbegriff entfernt, Bei Dokument-Ergebnissen wird die Berechtigung überprüft, Bei den Content-Ergebnissen werden die Ergebnisse jeder Sprache getrennt angeführt und die Rechte auf den Content überprüft.

content.class.php: Bei der Funktion "berechtigt" wird nun auch true zurückgegeben, wenn keine Benutzergruppen bei den Rechten angegeben sind.
Funktion "search" gibt nun auch die Sprache des Contents zurück
This commit is contained in:
Manfred Kindl
2014-09-16 16:12:06 +00:00
parent b1256856c1
commit a2e8c7fbcb
3 changed files with 100 additions and 34 deletions
+93 -29
View File
@@ -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 <andreas.oesterreicher@technikum-wien.at>
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Manfred Kindl <manfred.kindl@technikum-wien.at>
*/
/**
* Globale Suche
@@ -45,12 +46,9 @@ echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
<link rel="stylesheet" href="../../../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" href="../../../skin/style.css.php" type="text/css">
<script type="text/javascript" src="../../../include/js/jquery.js"></script>
<script type="text/javascript" src="../../../include/js/flexcroll.js"></script>
<link href="../../../skin/flexcrollstyles.css" rel="stylesheet" type="text/css" />
<title>Globale Suche</title>
</head>
<body>
<div class="flexcroll" style="outline: none;">';
<body>';
echo '<h1>',$p->t('tools/suche'),'</h1>';
@@ -63,16 +61,23 @@ echo '<form action="',$_SERVER['PHP_SELF'],'" name="searchform" method="GET">
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 '<table width="100%"><tr><td align="center"><br><br><br><p style="align:center; font-size: 2000%;"><strong>42</strong></p></td></tr></table>';
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 '<tr>';
if(array_key_exists($row->mimetype,$mimetypes))
echo '<td width="20px" height="20px" style="vertical-align:middle;"><img src="../../../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 20px; vertical-align:middle;"></td><td height="20px" style="vertical-align:middle;"><a href="../../../cms/dms.php?id='.$row->dms_id.'" title="'.$row->name.'">',$row->beschreibung,'</a></td>';
else
echo '<td width="20px" height="20px" style="vertical-align:middle;"><img src="../../../skin/images/blank.gif" style="height: 18px; vertical-align:middle;"></td><td height="20px" style="vertical-align:middle;"><a href="../../../cms/dms.php?id='.$row->dms_id.'">',$row->beschreibung,'</a></td>';
echo '<td style="vertical-align:middle;">',$row->version,'</td>';
echo '</tr>';
echo "\n";
// Berechtigung pruefen
if ($dms->isLocked($row->dms_id))
{
if ($dms->isBerechtigt($row->dms_id, $uid))
{
echo '<tr>';
if(array_key_exists($row->mimetype,$mimetypes))
echo '<td width="20px" height="20px" style="vertical-align:middle;"><img src="../../../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 20px; vertical-align:middle;"></td><td height="20px" style="vertical-align:middle;"><a href="../../../cms/dms.php?id='.$row->dms_id.'" title="'.$row->name.'">',$row->beschreibung,'</a></td>';
else
echo '<td width="20px" height="20px" style="vertical-align:middle;"><img src="../../../skin/images/blank.gif" style="height: 18px; vertical-align:middle;"></td><td height="20px" style="vertical-align:middle;"><a href="../../../cms/dms.php?id='.$row->dms_id.'">',$row->beschreibung,'</a></td>';
echo '<td style="vertical-align:middle;">',$row->version,'</td>';
echo '</tr>';
echo "\n";
}
}
else
{
echo '<tr>';
if(array_key_exists($row->mimetype,$mimetypes))
echo '<td width="20px" height="20px" style="vertical-align:middle;"><img src="../../../skin/images/'.$mimetypes[$row->mimetype].'" style="height: 20px; vertical-align:middle;"></td><td height="20px" style="vertical-align:middle;"><a href="../../../cms/dms.php?id='.$row->dms_id.'" title="'.$row->name.'">',$row->beschreibung,'</a></td>';
else
echo '<td width="20px" height="20px" style="vertical-align:middle;"><img src="../../../skin/images/blank.gif" style="height: 18px; vertical-align:middle;"></td><td height="20px" style="vertical-align:middle;"><a href="../../../cms/dms.php?id='.$row->dms_id.'">',$row->beschreibung,'</a></td>';
echo '<td style="vertical-align:middle;">',$row->version,'</td>';
echo '</tr>';
echo "\n";
}
}
echo '</tbody></table><br>';
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 style="color:red;">'.$p->t("tools/esWurdenMehrAlsXInhalteGefunden").'</p>';
}
echo '<ul>';
// Jede Sprache getrennt anzeigen aber zuerst die eingestellte Sprache
$anzeigesprache='';
foreach($cms->result as $row)
{
echo '<li><div class="suchergebnis">';
echo '<a href="../../../cms/content.php?content_id=',$db->convert_html_chars($row->content_id),'">',$db->convert_html_chars($row->titel),'</a><br>';
$preview = findAndMark($row->content, $searchItems);
echo $preview;
echo '<br /><br /></div></li>';
}
if ($sprache==$row->sprache)
{
if ($anzeigesprache!=$row->sprache)
{
$anzeigesprache=$row->sprache;
echo '<h3>',$row->sprache,'</h3>';
echo '<ul>';
}
$berechtigt = new content();
$berechtigt = $berechtigt->berechtigt($row->content_id, $uid);
if ($berechtigt)
{
echo '<li><div class="suchergebnis">';
echo '<a href="../../../cms/content.php?content_id=',$db->convert_html_chars($row->content_id),'&sprache=',$db->convert_html_chars($row->sprache),'">',$db->convert_html_chars($row->titel),'</a><br>';
$preview = findAndMark($row->content, $searchItems);
echo $preview;
echo '<br /><br /></div></li>';
}
}
}
echo '</ul>';
$anzeigesprache='';
foreach($cms->result as $row)
{
if ($sprache!=$row->sprache)
{
if ($anzeigesprache!=$row->sprache)
{
$anzeigesprache=$row->sprache;
echo '</ul>';
echo '<h3>',$row->sprache,'</h3>';
echo '<ul>';
}
$berechtigt = new content();
$berechtigt = $berechtigt->berechtigt($row->content_id, $uid);
if ($berechtigt)
{
echo '<li><div class="suchergebnis">';
echo '<a href="../../../cms/content.php?content_id=',$db->convert_html_chars($row->content_id),'&sprache=',$db->convert_html_chars($row->sprache),'">',$db->convert_html_chars($row->titel),'</a><br>';
$preview = findAndMark($row->content, $searchItems);
echo $preview;
echo '<br /><br /></div></li>';
}
}
}
echo '</ul>';
return true;
}
@@ -368,5 +432,5 @@ function findAndMark($content, $items)
return $preview;
}
echo '</div></body></html>';
echo '</body></html>';
?>
+6 -4
View File
@@ -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;
}
+1 -1
View File
@@ -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