Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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?
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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); }
####################################### #######################################
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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.
Beiträge: 25.766
Themen: 269
Registriert seit: 20.09.2005
$mybb->forums gibt es nicht, damit wird die Bedingung auch nie erfüllt.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
Irgendeine Idee, wie ich die Bedinung usepostcounts = 1 in die Suche einbinden kann?
Beiträge: 25.766
Themen: 269
Registriert seit: 20.09.2005
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); }
####################################### #######################################
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
Damit werden mir leider wieder alle geschriebenen Beiträge und Themen angezeigt.
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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.
Beiträge: 8.516
Themen: 59
Registriert seit: 20.04.2010
MyBB-Version: 1.8*
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.
Mit freundlichen Grüßen
MrBrechreiz
Beiträge: 427
Themen: 45
Registriert seit: 11.08.2012
MyBB-Version: 1.8.36
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.
|