示例#1
0
function message_get_meta_content($msg, &$meta_keywords, &$meta_description)
{
    if (!validate_msg($msg)) {
        return;
    }
    list($tid, $pid) = explode('.', $msg);
    if (($thread_data = thread_get($tid)) && ($message_content = message_get_content($tid, $pid))) {
        $meta_keywords_array = search_extract_keywords(strip_tags(htmlentities_decode_array($message_content)));
        $meta_description = $thread_data['TITLE'];
        $meta_keywords = htmlentities_array(implode(',', $meta_keywords_array['keywords_array']));
    }
}
示例#2
0
function pm_search_execute($search_string, &$error)
{
    if (!($db = db::get())) {
        return false;
    }
    if (!isset($_SESSION['UID']) || !is_numeric($_SESSION['UID'])) {
        return false;
    }
    $sql = "DELETE QUICK FROM PM_SEARCH_RESULTS WHERE UID = '{$_SESSION['UID']}'";
    if (!$db->query($sql)) {
        return false;
    }
    if (!check_search_frequency()) {
        $error = SEARCH_FREQUENCY_TOO_GREAT;
        return false;
    }
    $search_keywords_array = search_extract_keywords($search_string);
    if ($search_keywords_array['filtered_count'] == 0) {
        $error = SEARCH_NO_MATCHES;
        return false;
    }
    $search_string_checked = $db->escape(implode(' ', $search_keywords_array['keywords_array']));
    $pm_max_user_messages = abs(forum_get_setting('pm_max_user_messages', null, 100));
    $limit = $pm_max_user_messages > 1000 ? 1000 : $pm_max_user_messages;
    $sql = "INSERT INTO PM_SEARCH_RESULTS (UID, MID, RELEVANCE) SELECT '{$_SESSION['UID']}', PM.MID, ";
    $sql .= "MATCH(PM_CONTENT.CONTENT, PM.SUBJECT) AGAINST('{$search_string_checked}' IN BOOLEAN MODE) AS RELEVANCE ";
    $sql .= "FROM PM INNER JOIN PM_TYPE ON (PM_TYPE.MID = PM.MID AND PM_TYPE.UID = {$_SESSION['UID']})";
    $sql .= "LEFT JOIN PM_CONTENT ON (PM_CONTENT.MID = PM.MID) WHERE MATCH(PM_CONTENT.CONTENT, PM.SUBJECT) ";
    $sql .= "AGAINST('{$search_string_checked}' IN BOOLEAN MODE) GROUP BY PM.MID LIMIT {$limit}";
    if (!$db->query($sql)) {
        return false;
    }
    if ($db->affected_rows > 0) {
        return true;
    }
    $error = SEARCH_NO_MATCHES;
    return false;
}
示例#3
0
function pm_search_execute($search_string, &$error)
{
    if (!($db = db::get())) {
        return false;
    }
    if (($uid = session::get_value('UID')) === false) {
        return false;
    }
    $sql = "DELETE QUICK FROM PM_SEARCH_RESULTS WHERE UID = '{$uid}'";
    if (!$db->query($sql)) {
        return false;
    }
    if (!check_search_frequency()) {
        $error = SEARCH_FREQUENCY_TOO_GREAT;
        return false;
    }
    $search_keywords_array = search_extract_keywords($search_string);
    if ($search_keywords_array['filtered_count'] == 0) {
        $error = SEARCH_NO_MATCHES;
        return false;
    }
    $search_string_checked = $db->escape(implode(' ', $search_keywords_array['keywords_array']));
    $pm_max_user_messages = abs(forum_get_setting('pm_max_user_messages', null, 100));
    $limit = $pm_max_user_messages > 1000 ? 1000 : $pm_max_user_messages;
    $pm_inbox_items = PM_INBOX_ITEMS;
    $pm_sent_items = PM_SENT_ITEMS;
    $pm_outbox_items = PM_OUTBOX_ITEMS;
    $pm_saved_out = PM_SAVED_OUT;
    $pm_saved_in = PM_SAVED_IN;
    $pm_draft_items = PM_DRAFT_ITEMS;
    $sql = "INSERT INTO PM_SEARCH_RESULTS (UID, MID, TYPE, FROM_UID, TO_UID, ";
    $sql .= "SUBJECT, RECIPIENTS, CREATED) SELECT {$uid}, PM.MID, PM.TYPE, ";
    $sql .= "PM.FROM_UID, PM.TO_UID, PM.SUBJECT, PM.RECIPIENTS, PM.CREATED ";
    $sql .= "FROM PM LEFT JOIN PM_CONTENT ON (PM_CONTENT.MID = PM.MID) ";
    $sql .= "WHERE (((PM.TYPE & {$pm_inbox_items} > 0) AND PM.TO_UID = '{$uid}') ";
    $sql .= "OR ((PM.TYPE & {$pm_sent_items} > 0) AND PM.FROM_UID = '{$uid}' AND PM.SMID = 0) ";
    $sql .= "OR ((PM.TYPE & {$pm_outbox_items} > 0) AND PM.FROM_UID = '{$uid}') ";
    $sql .= "OR ((PM.TYPE = {$pm_saved_out} AND PM.FROM_UID = '{$uid}') OR ";
    $sql .= "((PM.TYPE & {$pm_saved_in} > 0) AND PM.TO_UID = '{$uid}') OR ";
    $sql .= "((PM.TYPE & {$pm_draft_items} > 0) AND PM.FROM_UID = '{$uid}'))) ";
    $sql .= "AND (MATCH(PM_CONTENT.CONTENT) AGAINST('{$search_string_checked}' IN BOOLEAN MODE) ";
    $sql .= "OR (MATCH(PM.SUBJECT) AGAINST('{$search_string_checked}' IN BOOLEAN MODE))) ";
    $sql .= "ORDER BY CREATED LIMIT {$limit}";
    if (!$db->query($sql)) {
        return false;
    }
    if ($db->affected_rows > 0) {
        return true;
    }
    $error = SEARCH_NO_MATCHES;
    return false;
}
示例#4
0
function search_get_keywords($remove_non_matches = true)
{
    if (!($db = db::get())) {
        return false;
    }
    if (!($table_prefix = get_table_prefix())) {
        return false;
    }
    if (!isset($_SESSION['UID']) || !is_numeric($_SESSION['UID'])) {
        return false;
    }
    $sql = "SELECT USER_VALUE FROM `{$table_prefix}USER_TRACK` ";
    $sql .= "WHERE UID = '{$_SESSION['UID']}' AND USER_KEY = 'LAST_SEARCH_KEYWORDS'";
    if (!($result = $db->query($sql))) {
        return false;
    }
    if ($result->num_rows == 0) {
        return false;
    }
    list($search_keywords) = $result->fetch_row();
    $keywords_array = search_extract_keywords($search_keywords);
    return search_strip_special_chars($keywords_array['keywords_array'], $remove_non_matches);
}
function message_get_meta_content($msg, &$meta_keywords, &$meta_description)
{
    if (!validate_msg($msg)) {
        return;
    }
    list($tid) = explode('.', $msg);
    if (($thread_data = thread_get($tid)) && ($message_content = message_get_content($tid, 1))) {
        $meta_keywords_array = search_extract_keywords(strip_tags(htmlentities_decode_array($message_content)));
        list($meta_description) = explode("\n", wordwrap($message_content, 150));
        $meta_keywords = htmlentities_array(implode(',', array_map('message_clean_meta_keyword', $meta_keywords_array['keywords_array'])));
    }
}
示例#6
0
function search_get_keywords($remove_non_matches = true)
{
    if (!($db = db::get())) {
        return false;
    }
    if (!($table_prefix = get_table_prefix())) {
        return false;
    }
    if (($uid = session::get_value('UID')) === false) {
        return false;
    }
    $sql = "SELECT LAST_SEARCH_KEYWORDS FROM `{$table_prefix}USER_TRACK` ";
    $sql .= "WHERE UID = '{$uid}'";
    if (!($result = $db->query($sql))) {
        return false;
    }
    if ($result->num_rows == 0) {
        return false;
    }
    list($search_keywords) = $result->fetch_row();
    $keywords_array = search_extract_keywords($search_keywords);
    return search_strip_special_chars($keywords_array['keywords_array'], $remove_non_matches);
}