コード例 #1
0
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);
}
コード例 #2
0
ファイル: misc_js.php プロジェクト: rahulsiwal/younity
    // 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