Пример #1
0
/**
 * 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 . "&nbsp;&nbsp;&nbsp;&nbsp;";
                        $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;
}
Пример #2
0
/**
 * 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 . "&nbsp;&nbsp;&nbsp;&nbsp;";
                        $forumlistbits .= make_searchable_forums($forum['fid'], $selitem, 0, $newdepth);
                    }
                }
            }
        }
    }
    if ($addselect) {
        eval("\$forumlist = \"" . $templates->get("search_forumlist") . "\";");
    }
    return $forumlist;
}
Пример #3
0
                    $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);
    }
}
Пример #4
0
        $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);
    }
}