/** * Build a select box list of forums the current user has permission to search * * @param int The parent forum ID to start at * @param int The selected forum ID * @param int Add select boxes at this call or not * @param int The current depth * @return string The forum select boxes */ function make_searchable_forums($pid = "0", $selitem = '', $addselect = "1", $depth = '') { global $db, $pforumcache, $permissioncache, $mybb, $selecteddone, $forumlist, $forumlistbits, $theme, $templates, $lang, $forumpass; $pid = intval($pid); if (!is_array($pforumcache)) { // Get Forums $query = $db->simple_select("forums", "pid,disporder,fid,password,name", "linkto='' AND active!=0", array('order_by' => "pid, disporder")); while ($forum = $db->fetch_array($query)) { $pforumcache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum; } } if (!is_array($permissioncache)) { $permissioncache = forum_permissions(); } if (is_array($pforumcache[$pid])) { foreach ($pforumcache[$pid] as $key => $main) { foreach ($main as $key => $forum) { $perms = $permissioncache[$forum['fid']]; if (($perms['canview'] == 1 || $mybb->settings['hideprivateforums'] == 0) && $perms['cansearch'] != 0) { if ($selitem == $forum['fid']) { $optionselected = "selected"; $selecteddone = "1"; } else { $optionselected = ''; $selecteddone = "0"; } if ($forum['password'] != '') { if ($mybb->cookies['forumpass'][$forum['fid']] == md5($mybb->user['uid'] . $forum['password'])) { $pwverified = 1; } else { $pwverified = 0; } } if (empty($forum['password']) || $pwverified == 1) { $forumlistbits .= "<option value=\"{$forum['fid']}\">{$depth} {$forum['name']}</option>\n"; } if ($pforumcache[$forum['fid']]) { $newdepth = $depth . " "; $forumlistbits .= make_searchable_forums($forum['fid'], $selitem, 0, $newdepth); } } } } } if ($addselect) { $forumlist = "<select name=\"forums[]\" size=\"15\" multiple=\"multiple\">\n<option value=\"all\" selected=\"selected\">{$lang->search_all_forums}</option>\n<option value=\"all\">----------------------</option>\n{$forumlistbits}\n</select>"; } return $forumlist; }
/** * Build a select box list of forums the current user has permission to search * * @param int $pid The parent forum ID to start at * @param int $selitem The selected forum ID * @param int $addselect Add select boxes at this call or not * @param string $depth The current depth * @return string The forum select boxes */ function make_searchable_forums($pid = 0, $selitem = 0, $addselect = 1, $depth = '') { global $db, $pforumcache, $permissioncache, $mybb, $selecteddone, $forumlist, $forumlistbits, $theme, $templates, $lang, $forumpass; $pid = (int) $pid; if (!is_array($pforumcache)) { // Get Forums $query = $db->simple_select("forums", "pid,disporder,fid,password,name", "linkto='' AND active!=0", array('order_by' => "pid, disporder")); while ($forum = $db->fetch_array($query)) { $pforumcache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum; } } if (!is_array($permissioncache)) { $permissioncache = forum_permissions(); } if (is_array($pforumcache[$pid])) { foreach ($pforumcache[$pid] as $key => $main) { foreach ($main as $key => $forum) { $perms = $permissioncache[$forum['fid']]; if (($perms['canview'] == 1 || $mybb->settings['hideprivateforums'] == 0) && $perms['cansearch'] != 0) { if ($selitem == $forum['fid']) { $optionselected = "selected"; $selecteddone = "1"; } else { $optionselected = ''; $selecteddone = "0"; } if ($forum['password'] != '') { if ($mybb->cookies['forumpass'][$forum['fid']] === md5($mybb->user['uid'] . $forum['password'])) { $pwverified = 1; } else { $pwverified = 0; } } if (empty($forum['password']) || $pwverified == 1) { eval("\$forumlistbits .= \"" . $templates->get("search_forumlist_forum") . "\";"); } if (!empty($pforumcache[$forum['fid']])) { $newdepth = $depth . " "; $forumlistbits .= make_searchable_forums($forum['fid'], $selitem, 0, $newdepth); } } } } } if ($addselect) { eval("\$forumlist = \"" . $templates->get("search_forumlist") . "\";"); } return $forumlist; }
$lang->error_searchflooding = $lang->sprintf($lang->error_searchflooding_1, $mybb->settings['searchfloodtime']); } else { $lang->error_searchflooding = $lang->sprintf($lang->error_searchflooding, $mybb->settings['searchfloodtime'], $remaining_time); } error($lang->error_searchflooding); } } $search_data = array("keywords" => $mybb->input['keywords'], "postthread" => 1, "tid" => $mybb->input['tid']); if ($db->can_search == true) { if ($mybb->settings['searchtype'] == "fulltext" && $db->supports_fulltext_boolean("posts") && $db->is_fulltext("posts")) { $search_results = perform_search_mysql_ft($search_data); } else { $search_results = perform_search_mysql($search_data); } } else { error($lang->error_no_search_support); } $sid = md5(uniqid(microtime(), 1)); $searcharray = array("sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => $now, "ipaddress" => $db->escape_string($session->ipaddress), "threads" => $search_results['threads'], "posts" => $search_results['posts'], "resulttype" => 'posts', "querycache" => $search_results['querycache'], "keywords" => $db->escape_string($mybb->input['keywords'])); $plugins->run_hooks("search_thread_process"); $db->insert_query("searchlog", $searcharray); $plugins->run_hooks("search_do_search_end"); redirect("search.php?action=results&sid=" . $sid, $lang->redirect_searchresults); } else { $plugins->run_hooks("search_start"); $srchlist = make_searchable_forums("", $fid); eval("\$search = \"" . $templates->get("search") . "\";"); $plugins->run_hooks("search_end"); output_page($search); } }
$search_data = array("keywords" => $mybb->input['keywords'], "postthread" => 1, "tid" => $mybb->get_input('tid', MyBB::INPUT_INT)); if ($db->can_search == true) { if ($mybb->settings['searchtype'] == "fulltext" && $db->supports_fulltext_boolean("posts") && $db->is_fulltext("posts")) { $search_results = perform_search_mysql_ft($search_data); } else { $search_results = perform_search_mysql($search_data); } } else { error($lang->error_no_search_support); } $sid = md5(uniqid(microtime(), true)); $searcharray = array("sid" => $db->escape_string($sid), "uid" => $mybb->user['uid'], "dateline" => $now, "ipaddress" => $db->escape_binary($session->packedip), "threads" => $search_results['threads'], "posts" => $search_results['posts'], "resulttype" => 'posts', "querycache" => $search_results['querycache'], "keywords" => $db->escape_string($mybb->input['keywords'])); $plugins->run_hooks("search_thread_process"); $db->insert_query("searchlog", $searcharray); $plugins->run_hooks("search_do_search_end"); redirect("search.php?action=results&sid=" . $sid, $lang->redirect_searchresults); } else { $plugins->run_hooks("search_start"); $srchlist = make_searchable_forums(); $prefixselect = build_prefix_select('all', 'any', 1); $rowspan = 5; $moderator_options = ''; if (is_moderator()) { $rowspan += 2; eval("\$moderator_options = \"" . $templates->get("search_moderator_options") . "\";"); } $plugins->run_hooks("search_end"); eval("\$search = \"" . $templates->get("search") . "\";"); output_page($search); } }