function search_profile() { global $database, $url, $results_per_page, $p, $search_text, $t, $search_objects, $results, $total_results; // GET FIELDS $fields = $database->database_query("\r\n SELECT\r\n profilefield_id AS field_id,\r\n profilefield_type AS field_type,\r\n profilefield_options AS field_options\r\n FROM\r\n se_profilefields\r\n WHERE\r\n profilefield_type<>'5' &&\r\n (profilefield_dependency<>'0' OR (profilefield_dependency='0' AND profilefield_display<>'0'))\r\n "); $profile_query = "se_users.user_username LIKE '%{$search_text}%' OR CONCAT(se_users.user_fname, ' ', se_users.user_lname) LIKE '%{$search_text}%'"; // LOOP OVER FIELDS while ($field_info = $database->database_fetch_assoc($fields)) { // TEXT FIELD OR TEXTAREA if ($field_info['field_type'] == 1 || $field_info['field_type'] == 2) { if ($profile_query) { $profile_query .= " OR "; } $profile_query .= "`se_profilevalues`.`profilevalue_{$field_info['field_id']}` LIKE '%{$search_text}%'"; } elseif ($field_info[field_type] == 3 || $field_info[field_type] == 4) { $options = unserialize($field_info['field_options']); $langids = array(); $cases = array(); for ($i = 0, $max = count($options); $i < $max; $i++) { $cases[] = "WHEN languagevar_id='{$options[$i]['label']}' THEN {$options[$i]['value']}"; $langids[] = $options[$i][label]; } if (count($cases) != 0) { if ($profile_query) { $profile_query .= " OR "; } $profile_query .= "`se_profilevalues`.`profilevalue_{$field_info['field_id']}` IN (SELECT CASE " . implode(" ", $cases) . " END AS value FROM se_languagevars WHERE languagevar_id IN (" . implode(", ", $langids) . ") AND languagevar_value LIKE '%{$search_text}%')"; } } elseif ($field_info[field_type] == 6) { $options = unserialize($field_info['field_options']); $langids = array(); $cases = array(); for ($i = 0, $max = count($options); $i < $max; $i++) { $cases[] = "WHEN languagevar_id='{$options[$i]['label']}' THEN " . pow(2, $i); $langids[] = $options[$i][label]; } if (count($cases) != 0) { if ($profile_query) { $profile_query .= " OR "; } $profile_query .= "`se_profilevalues`.`profilevalue_{$field_info['field_id']}` & (SELECT sum(CASE " . implode(" ", $cases) . " END) AS value FROM se_languagevars WHERE languagevar_id IN (" . implode(", ", $langids) . ") AND languagevar_value LIKE '%{$search_text}%')"; } } } // CONSTRUCT QUERY $profile_query = "\r\n SELECT\r\n se_users.user_id,\r\n se_users.user_username,\r\n se_users.user_fname,\r\n se_users.user_lname,\r\n se_users.user_photo\r\n FROM\r\n se_profilevalues\r\n LEFT JOIN\r\n se_users\r\n ON se_profilevalues.profilevalue_user_id=se_users.user_id\r\n LEFT JOIN\r\n se_levels\r\n ON se_levels.level_id=se_users.user_level_id\r\n WHERE\r\n se_users.user_verified='1' AND\r\n se_users.user_enabled='1' AND\r\n (se_users.user_search='1' OR se_levels.level_profile_search='0') AND\r\n ({$profile_query})\r\n "; // GET TOTAL PROFILES $total_profiles = $database->database_num_rows($database->database_query($profile_query . " LIMIT 201")); // IF NOT TOTAL ONLY if ($t == "0") { // MAKE PROFILE PAGES $start = ($p - 1) * $results_per_page; $limit = $results_per_page + 1; // SEARCH PROFILES $online_users_array = online_users(); $profiles = $database->database_query($profile_query . " ORDER BY se_users.user_id DESC LIMIT {$start}, {$limit}"); while ($profile_info = $database->database_fetch_assoc($profiles)) { // CREATE AN OBJECT FOR USER $profile = new se_user(); $profile->user_info['user_id'] = $profile_info['user_id']; $profile->user_info['user_username'] = $profile_info['user_username']; $profile->user_info['user_fname'] = $profile_info['user_fname']; $profile->user_info['user_lname'] = $profile_info['user_lname']; $profile->user_info['user_photo'] = $profile_info['user_photo']; $profile->user_displayname(); // DETERMINE IF USER IS ONLINE $is_online = (bool) in_array($profile_info['user_username'], $online_users_array[0]); $results[] = array('result_url' => $url->url_create('profile', $profile_info['user_username']), 'result_icon' => $profile->user_photo('./images/nophoto.gif', TRUE), 'result_name' => 509, 'result_name_1' => $profile->user_displayname, 'result_desc' => '', 'result_online' => $is_online); } // SET TOTAL RESULTS $total_results = $total_profiles; } // SET ARRAY VALUES SE_Language::_preload_multi(509, 1072); if ($total_profiles > 200) { $total_profiles = "200+"; } $search_objects[] = array('search_type' => '0', 'search_lang' => 1072, 'search_total' => $total_profiles); }
// RETRIEVE FITTING FRIENDS $results = array(); $sql = "SELECT user_id, user_username, user_fname, user_lname, user_photo FROM se_users WHERE user_id<>'{$user->user_info['user_id']}' AND (SUBSTRING(user_username, 1, {$len})='{$input}' OR SUBSTRING(user_fname, 1, {$len})='{$input}' OR SUBSTRING(user_lname, 1, {$len})='{$input}') LIMIT {$limit}"; $resource = $database->database_query($sql); while ($user_info = $database->database_fetch_assoc($resource)) { $sugg_user = new se_user(); $sugg_user->user_info['user_id'] = $user_info['user_id']; $sugg_user->user_info['user_username'] = $user_info['user_username']; $sugg_user->user_info['user_fname'] = $user_info['user_fname']; $sugg_user->user_info['user_lname'] = $user_info['user_lname']; $sugg_user->user_info['user_photo'] = $user_info['user_photo']; $sugg_user->user_displayname(); if (!$setting['setting_username']) { $user_info['user_username'] = $sugg_user->user_displayname; } $results[] = array("id" => $user_info['user_id'], "value" => $user_info['user_username'], "info" => $sugg_user->user_displayname, "photo" => $sugg_user->user_photo("./images/nophoto.gif"), "photo_width" => $misc->photo_size($sugg_user->user_photo("./images/nophoto.gif"), '50', '50', 'w')); } // OUTPUT JSON header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0 header("Content-Type: application/json"); echo json_encode(array('results' => &$results)); exit; } elseif ($task == "check_user") { // GET USER INPUT AND LIMIT