--- _orig/profileplus.module 2009-11-06 15:51:24.000000000 -0500 +++ _modified/profileplus.module 2009-11-07 23:02:48.000000000 -0500 @@ -103,7 +103,11 @@ function profile_search($op = 'search', } elseif (user_access('search user profiles')) { // non-administrators can only search public fields and active users - $sql = "FROM {users} u INNER JOIN {profile_values} pv ON u.uid = pv.uid INNER JOIN {profile_fields} pf ON pv.fid = pf.fid WHERE (pv.value LIKE '%%%s%%' OR u.name LIKE '%%%s%%') AND pf.visibility IN (%d, %d) AND u.status = 1"; + if (module_exists('profile_privacy')) { //GMM: honor profile_privacy user settings and search only public fields + $sql = "FROM {users} u INNER JOIN {profile_values} pv ON u.uid = pv.uid INNER JOIN {profile_fields} pf ON pv.fid = pf.fid LEFT OUTER JOIN profile_privacy_values ppv ON ppv.uid = pv.uid AND ppv.fid = pv.fid WHERE (pv.value LIKE '%%%s%%' OR u.name LIKE '%%%s%%') AND pf.visibility IN (%d, %d) AND u.status = 1 AND (ppv.private IS NULL OR ppv.private = 0)"; + }else { + $sql = "FROM {users} u INNER JOIN {profile_values} pv ON u.uid = pv.uid INNER JOIN {profile_fields} pf ON pv.fid = pf.fid WHERE (pv.value LIKE '%%%s%%' OR u.name LIKE '%%%s%%') AND pf.visibility IN (%d, %d) AND u.status = 1"; + } $result = db_query('SELECT DISTINCT u.* '. $sql, $keywords[$j], $keywords[$j], PROFILE_PUBLIC, PROFILE_PUBLIC_LISTINGS); } @@ -137,7 +141,11 @@ function profile_search($op = 'search', $result = db_query('SELECT * FROM {profile_fields} WHERE visibility != %d ORDER BY category, weight', PROFILE_HIDDEN); } else { - $result = db_query('SELECT * FROM {profile_fields} WHERE visibility != %d AND visibility != %d ORDER BY category, weight', PROFILE_PRIVATE, PROFILE_HIDDEN); + if (module_exists('profile_privacy')) { //GMM: honor profile_privacy user settings and display only public fields + $result = db_query('SELECT * FROM {profile_fields} pf LEFT OUTER JOIN profile_privacy_values ppv ON ppv.uid = %d AND ppv.fid = pf.fid WHERE pf.visibility != %d AND pf.visibility != %d AND (ppv.private IS NULL OR ppv.private = 0) ORDER BY category, weight', $user->uid, PROFILE_PRIVATE, PROFILE_HIDDEN); + } else { + $result = db_query('SELECT * FROM {profile_fields} WHERE visibility != %d AND visibility != %d ORDER BY category, weight', PROFILE_PRIVATE, PROFILE_HIDDEN); + } } $profile_fields = array();