Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 13.08.2013
Mittlerweile habe ich es ja nun hinbekommen, nur die gezählten, sowie alle Beiträge auszählen zu lassen.
Nun frage ich mich, ob man die Funktion der Suche so erweitern kann, dass nur die gezählten Beiträge im Suchergebnis ausgegeben werden?
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 20.10.2013
Ich grab das hier nochmal aus, da ich gerade versuche, das umzusetzen.
Im Profil lasse ich mir zum einen die gezählten Themen und Beiträge (Inplay) anzeigen, aber auch die Anzahl der insgesamt geschriebenen Themen und Beiträge:
[attachment=8738]
Nun geht es allerdings darum, dass man auch nach den Inplay-Themen und -Beiträgen suchen kann.
Die Links für die jeweiligen Suchen, sollen so aussehen:
Themen: search.php?action=finduserthreadsinplay
Beiträge: search.php?action=finduserinplay
Die search.php habe ich bereits um diese Abschnitte erweitert, es hakt allerdings eben daran, dass auch nur die Themen und Beiträge angezeigt werden in Foren, in denen die Beiträge gezählt werden.. in der Datenbank wird das in der Tabelle mybb_forums unter usepostcounts gespeichert.
Heisst, ich muss also irgendwo in der search.php die Bedingung einfügen, dass mir bloss diese Themen und Beiträge angezeigt werden, in denen bei usepostcounts eine 1 eingetragen ist.
Die Frage ist nur, wo und wie?
PHP-Code: ####################################### ####################################### ####INPLAY BEITRÄGE####
elseif($mybb->input['action'] == "finduserinplay") { $where_sql = "uid='".intval($mybb->input['uid'])."'"; $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND fid NOT IN ($inactiveforums)"; } $permsql = ""; $onlyusfids = array();
// Check group permissions if we can't view threads not started by us $group_permissions = forum_permissions(); foreach($group_permissions as $fid => $forum_permissions) { if($forum_permissions['canonlyviewownthreads'] == 1) { $onlyusfids[] = $fid; } } if(!empty($onlyusfids)) { $where_sql .= "AND ((fid IN(".implode(',', $onlyusfids).") AND uid='{$mybb->user['uid']}') OR fid NOT IN(".implode(',', $onlyusfids)."))"; }
$options = array( 'order_by' => 'dateline', 'order_dir' => 'desc' );
// Do we have a hard search limit? if($mybb->settings['searchhardlimit'] > 0) { $options['limit'] = intval($mybb->settings['searchhardlimit']); }
$pids = ''; $comma = ''; $query = $db->simple_select("posts", "pid", "{$where_sql}", $options); while($pid = $db->fetch_field($query, "pid")) { $pids .= $comma.$pid; $comma = ','; }
$tids = ''; $comma = ''; $query = $db->simple_select("threads", "tid", $where_sql); while($tid = $db->fetch_field($query, "tid")) { $tids .= $comma.$tid; $comma = ','; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => TIME_NOW, "ipaddress" => $db->escape_string($session->ipaddress), "threads" => $db->escape_string($tids), "posts" => $db->escape_string($pids), "resulttype" => "posts", "querycache" => '', "keywords" => '' ); $plugins->run_hooks("search_do_search_process"); $db->insert_query("searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
####################################### ####################################### ####INPLAY THEMEN####
elseif($mybb->input['action'] == "finduserthreadsinplay") { $where_sql = "t.uid='".intval($mybb->input['uid'])."'";
$unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND t.fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND t.fid NOT IN ($inactiveforums)"; } $permsql = ""; $onlyusfids = array();
// Check group permissions if we can't view threads not started by us $group_permissions = forum_permissions(); foreach($group_permissions as $fid => $forum_permissions) { if($forum_permissions['canonlyviewownthreads'] == 1) { $onlyusfids[] = $fid; } } if(!empty($onlyusfids)) { $where_sql .= "AND ((t.fid IN(".implode(',', $onlyusfids).") AND t.uid='{$mybb->user['uid']}') OR t.fid NOT IN(".implode(',', $onlyusfids)."))"; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => TIME_NOW, "ipaddress" => $db->escape_string($session->ipaddress), "threads" => '', "posts" => '', "resulttype" => "threads", "querycache" => $db->escape_string($where_sql), "keywords" => '' ); $plugins->run_hooks("search_do_search_process"); $db->insert_query("searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
####################################### #######################################
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 05.11.2013
Ich habe mich wieder dran gesetzt, in der Hoffnung, das endlich zu lösen
Nun habe ich die folgende Zeile
PHP-Code: $where_sql = "uid='".intval($mybb->input['uid'])."'";
erweitert
PHP-Code: $where_sql = "t.uid='".intval($mybb->input['uid'])."' AND ('{$mybb->forums['usepostcounts']}'='1')";
Eine Fehlermeldung bekomme ich nicht, allerdings auch kein Suchergebnis, sondern diesen Hinweis:
Zitat:Entschuldigung, aber nach deinen Angaben wurden keine Ergebnisse gefunden. Bitte ändere deine Suchbegriffe und versuche es erneut.
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - StefanT - 06.11.2013
$mybb->forums gibt es nicht, damit wird die Bedingung auch nie erfüllt.
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 06.11.2013
Irgendeine Idee, wie ich die Bedinung usepostcounts = 1 in die Suche einbinden kann?
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - StefanT - 06.11.2013
Probiere es mal so:
PHP-Code: ####################################### ####################################### ####INPLAY BEITRÄGE####
elseif($mybb->input['action'] == "finduserinplay") { $where_sql = "uid='".intval($mybb->input['uid'])."'"; $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND fid NOT IN ($inactiveforums)"; } $permsql = ""; $onlyusfids = array();
// Check group permissions if we can't view threads not started by us $group_permissions = forum_permissions(); foreach($group_permissions as $fid => $forum_permissions) { if($forum_permissions['canonlyviewownthreads'] == 1) { $onlyusfids[] = $fid; } } if(!empty($onlyusfids)) { $where_sql .= "AND ((fid IN(".implode(',', $onlyusfids).") AND uid='{$mybb->user['uid']}') OR fid NOT IN(".implode(',', $onlyusfids)."))"; }
$options = array( 'order_by' => 'dateline', 'order_dir' => 'desc' );
$forums = cache_forums(); $nocount = array(); foreach($forums as $forum) { if(!$forum['usepostcounts']) { $nocount[] = $fid; } } if(!empty($nocount)) { $where_sql .= " AND fid NOT IN (".implode(',', $nocount).")"; }
// Do we have a hard search limit? if($mybb->settings['searchhardlimit'] > 0) { $options['limit'] = intval($mybb->settings['searchhardlimit']); }
$pids = ''; $comma = ''; $query = $db->simple_select("posts", "pid", "{$where_sql}", $options); while($pid = $db->fetch_field($query, "pid")) { $pids .= $comma.$pid; $comma = ','; }
$tids = ''; $comma = ''; $query = $db->simple_select("threads", "tid", $where_sql); while($tid = $db->fetch_field($query, "tid")) { $tids .= $comma.$tid; $comma = ','; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => TIME_NOW, "ipaddress" => $db->escape_string($session->ipaddress), "threads" => $db->escape_string($tids), "posts" => $db->escape_string($pids), "resulttype" => "posts", "querycache" => '', "keywords" => '' ); $plugins->run_hooks("search_do_search_process"); $db->insert_query("searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
####################################### ####################################### ####INPLAY THEMEN####
elseif($mybb->input['action'] == "finduserthreadsinplay") { $where_sql = "t.uid='".intval($mybb->input['uid'])."'";
$unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $where_sql .= " AND t.fid NOT IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $where_sql .= " AND t.fid NOT IN ($inactiveforums)"; } $permsql = ""; $onlyusfids = array();
// Check group permissions if we can't view threads not started by us $group_permissions = forum_permissions(); foreach($group_permissions as $fid => $forum_permissions) { if($forum_permissions['canonlyviewownthreads'] == 1) { $onlyusfids[] = $fid; } } if(!empty($onlyusfids)) { $where_sql .= "AND ((t.fid IN(".implode(',', $onlyusfids).") AND t.uid='{$mybb->user['uid']}') OR t.fid NOT IN(".implode(',', $onlyusfids)."))"; }
$forums = cache_forums(); $nocount = array(); foreach($forums as $forum) { if(!$forum['usepostcounts']) { $nocount[] = $fid; } } if(!empty($nocount)) { $where_sql .= " AND t.fid NOT IN (".implode(',', $nocount).")"; }
$sid = md5(uniqid(microtime(), 1)); $searcharray = array( "sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => TIME_NOW, "ipaddress" => $db->escape_string($session->ipaddress), "threads" => '', "posts" => '', "resulttype" => "threads", "querycache" => $db->escape_string($where_sql), "keywords" => '' ); $plugins->run_hooks("search_do_search_process"); $db->insert_query("searchlog", $searcharray); redirect("search.php?action=results&sid=".$sid, $lang->redirect_searchresults); }
####################################### #######################################
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 06.11.2013
Damit werden mir leider wieder alle geschriebenen Beiträge und Themen angezeigt.
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 07.12.2013
Ich hol das Thema nun noch mal raus, weil ich das Ganze noch immer nicht gelöst habe und ich es endlich erledigen will
Es wär echt nett, wenn mir dabei jemand helfen könnte.
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - MrBrechreiz - 07.12.2013
Kann ehrlich gesagt nicht ganz folgen. Wo und was hast Du überhaupt verändert / ergänzt. Soweit ich sehe, möchtest Du inplay Themen ausgeben lassen in der Suche. Weiter kann ich dies nicht nachvollziehen.
RE: Gezählte Beiträge in Suchergebnis ausgeben lassen - melancholia - 07.12.2013
Ich möchte die gezählten Themen und Beiträge ausgeben lassen. Also alles in Foren, wo usepostcounts = 1 angegeben ist in der Datenbank.
Im ersten Beitrag habe ich ausführlich erklärt, was ich verändert, bzw. eingefügt habe.
|