$search_cat = $cat_id; $search_id = array(); if ($search_user != "" && $show_result == 1) { $search_user = str_replace('*', '%', trim($search_user)); $sql = "SELECT " . get_user_table_field("", "user_id") . "\n FROM " . USERS_TABLE . "\n WHERE " . get_user_table_field("", "user_name") . " LIKE '{$search_user}'"; $result = $site_db->query($sql); $search_id['user_ids'] = ""; if ($result) { while ($row = $site_db->fetch_array($result)) { $search_id['user_ids'] .= ($search_id['user_ids'] != "" ? ", " : "") . $row[$user_table_fields['user_id']]; } $site_db->free_result($result); } } if ($search_keywords != "" && $show_result == 1) { $split_words = prepare_searchwords_for_search($search_keywords); $match_field_sql = $search_fields != "all" && isset($search_match_fields[$search_fields]) ? "AND m." . $search_match_fields[$search_fields] . " = 1" : ""; $search_word_cache = array(); for ($i = 0; $i < sizeof($split_words); $i++) { if ($split_words[$i] == "and" || $split_words[$i] == "und" || $split_words[$i] == "or" || $split_words[$i] == "oder" || $split_words[$i] == "not") { $search_word_cache[$i] = $search_terms ? "and" : $split_words[$i]; } else { $curr_words = $split_words[$i]; if (!is_array($curr_words)) { $curr_words = array($curr_words); } $where = array(); foreach ($curr_words as $curr_word) { $where[] = "w.word_text LIKE '" . addslashes(str_replace("*", "%", $curr_word)) . "'"; } $sql = "SELECT m.image_id\n FROM (" . WORDLIST_TABLE . " w, " . WORDMATCH_TABLE . " m)\n WHERE (" . implode(' OR ', $where) . ")\n AND m.word_id = w.word_id\n {$match_field_sql}";
function prepare_searchwords($val, $for_search = false) { // Backwards compatibility if ($for_search) { return prepare_searchwords_for_search($val); } if (!is_array($val)) { $val = clean_search_word($val); $val = normalize_search_word($val); $val = str_replace("*", "", $val); if (empty($val)) { return array(); } $split_words = preg_split("/\\s+/", $val); } else { $split_words = $val; $split_words = array_map('clean_search_word', $split_words); $split_words = array_unique(array_filter($split_words)); } $stopword_list = get_stopwords(); $clean_words = array(); foreach ($split_words as $word) { $word = trim($word); if ($word == "") { continue; } if ($word == "and" || $word == "und" || $word == "or" || $word == "oder" || $word == "not") { continue; } $len = strlen(preg_replace("/&(#[0-9]+|[a-z]+);/siU", "_", $word)); if ($len >= MIN_SEARCH_KEYWORD_LENGTH && $len <= MAX_SEARCH_KEYWORD_LENGTH && !in_array($word, $stopword_list)) { $clean_words[] = $word; } } return $clean_words; }