diff options
author | Steven Wittens <steven@10.no-reply.drupal.org> | 2006-03-10 15:11:07 +0000 |
---|---|---|
committer | Steven Wittens <steven@10.no-reply.drupal.org> | 2006-03-10 15:11:07 +0000 |
commit | 9c944c2d5871db0e3058f7a1c18b858ca03c05e4 (patch) | |
tree | 8cccef4152e51cebd4ce88a0ac59acbbb16049e9 /modules/profile.module | |
parent | 9fd6dc58182ca07e106924b0c7c1b6c51350d515 (diff) | |
download | brdo-9c944c2d5871db0e3058f7a1c18b858ca03c05e4.tar.gz brdo-9c944c2d5871db0e3058f7a1c18b858ca03c05e4.tar.bz2 |
- Code cleanup
Diffstat (limited to 'modules/profile.module')
-rw-r--r-- | modules/profile.module | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/modules/profile.module b/modules/profile.module index 34fbb55f0..887f80763 100644 --- a/modules/profile.module +++ b/modules/profile.module @@ -614,6 +614,45 @@ function profile_admin_delete($fid) { } } +function profile_search($op = 'search', $keys = null) { + switch ($op) { + case 'name': + if (user_access('access user profiles')) { + return t('users'); + } + case 'search': + if (user_access('access user profiles')) { + $find = array(); + // Replace wildcards with MySQL/PostgreSQL wildcards. + $keys = preg_replace('!\*+!', '%', $keys); + if (user_access('administer users')) { + // administrators don't have restrictions + $result = pager_query("SELECT u.* FROM {users} u INNER JOIN {profile_values} pv ON u.uid = pv.uid WHERE LOWER(pv.value) LIKE LOWER('%%%s%%') OR LOWER(u.name) LIKE LOWER('%%%s%%')", 15, 0, NULL, $keys, $keys); + } + else { + // non-administrators can only search public fields and active users + $result = pager_query("SELECT u.* FROM {users} u INNER JOIN {profile_values} pv ON u.uid = pv.uid INNER JOIN {profile_fields} pf ON pv.fid = pf.fid WHERE ((LOWER(pv.value) LIKE LOWER('%%%s%%') AND pf.visibility IN (%d, %d)) OR LOWER(u.name) LIKE LOWER('%%%s%%')) AND u.status = 1", 15, 0, NULL, $keys, PROFILE_PUBLIC, PROFILE_PUBLIC_LISTINGS, $keys); + } + + while ($account = db_fetch_object($result)) { + $user = user_load(array('uid' => $account->uid)); + $profile_fields = profile_view_profile($user); + + $entry = array(); + foreach ($profile_fields as $category => $fields) { + foreach ($fields as $field) { + $entry[] = $field['value']; + } + } + + $view = implode(' | ', $entry); + $find[] = array('title' => $account->name, 'link' => url("user/$account->uid/view"), 'snippet' => search_excerpt($keys, $view)); + } + return $find; + } + } +} + function _profile_field_form($type, $edit = array()) { $form['fields'] = array('#type' => 'fieldset', |