--- profile.module 2009-01-14 03:38:52.000000000 -0200 +++ /Users/pedrofaria/Desktop/profile.module 2009-02-13 17:04:52.000000000 -0200 @@ -259,6 +259,15 @@ '#description' => t('A list of all options. Put each option on a separate line. Example options are "red", "blue", "green", etc.'), ); } + else if ($type == 'userref') { + $form['fields']['options'] = array( + '#type' => 'checkboxes', + '#title' => t('Roles'), + '#description' => t('The description appears usually below the checkboxes.'), + '#options' => user_roles(TRUE), + '#default_value' => unserialize($edit['options']), + ); + } $form['fields']['weight'] = array('#type' => 'weight', '#title' => t('Weight'), '#default_value' => $edit['weight'], @@ -350,6 +359,10 @@ * Process profile_field_form submissions. */ function profile_field_form_submit($form_id, $form_values) { + if ($form_values['type'] == 'userref') { + $form_values['options'] = serialize($form_values['options']); + } + if (!isset($form_values['fid'])) { db_query("INSERT INTO {profile_fields} (title, name, explanation, category, type, weight, required, register, visibility, autocomplete, options, page) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, '%s', '%s')", $form_values['title'], $form_values['name'], $form_values['explanation'], $form_values['category'], $form_values['type'], $form_values['weight'], $form_values['required'], $form_values['register'], $form_values['visibility'], $form_values['autocomplete'], $form_values['options'], $form_values['page']); @@ -587,6 +600,8 @@ } } return implode(', ', $fields); + case 'userref': + return db_result(db_query("SELECT name FROM {users} WHERE uid = %d", $value)); } } } @@ -700,6 +715,29 @@ '#required' => $field->required, ); break; + case 'userref': + foreach(unserialize($field->options) as $rid => $val) { + if ($val != 0) { + $roles[] = $val; + } + } + $rs = db_query("SELECT u.uid, u.name FROM {users_roles} r LEFT JOIN {users} u ON u.uid = r.uid WHERE r.rid IN( %s )", join(',', $roles)); + + $options = array(); + while($row = db_fetch_object($rs)) { + $options[$row->uid] = $row->name; + } + + //var_dump($field->options); + $fields[$category][$field->name] = array('#type' => 'select', + //'#value' => '
'.var_export($rs, true).'', + '#title' => check_plain($field->title), + '#default_value' => $edit[$field->name], + '#options' => $options, + '#description' => _profile_form_explanation($field), + '#required' => $field->required, + ); + break; } } return $fields; @@ -807,7 +845,8 @@ 'selection' => t('list selection'), 'list' => t('freeform list'), 'url' => t('URL'), - 'date' => t('date')); + 'date' => t('date'), + 'userref' => t('User reference')); return isset($type) ? $types[$type] : $types; }