Thanks! This looks like what I need to do. I will give your code a good study and try somethings. - Carl Alberto Lusiani <alusiani@gmail.com> wrote: Hello, I may have an example that might be useful for what you are asking. I am working on a module that facilitates using Drupal as a conference site. I am using profile to define fields for registered participants, and I use form_alter in my module in order to modify the profile form. I include a code fragment: /** * Implementation of hook_form_alter() * */ function tauconf_form_alter($form_id, &$form) { global $form_values; switch ($form_id) { // [...] $category = 'conference registration'; if (isset($form[$category])) { // // change the /user/edit/conference+registration form // created with the profile module // - prepend the data from /user/edit/personal+information // //--- get user data $account = user_load(array('uid' => arg(1))); //--- get posted data if existing for profile_form_profile() $edit = $_POST['op'] ? $_POST['edit'] : (array)$account; //--- include "personal info" form $form[$category]['personal_information'] = profile_form_profile($edit, $account, "personal information"); $form[$category]['personal_information']['#weight'] = -5; // // setup validation callback for 'conference registration' profile form // $form[$category]['#validate'] = array('tauconf_registration_validate' => array(&$form_values, $account)); //--- customize MAC address field $field = 'profile_mac_address'; if (isset($form[$category][$field])) { $form[$category][$field]['#maxlength'] = 17; $form[$category][$field]['#size'] = 17; } //--- set default value of arriving date $field = 'profile_arrival_date'; if (isset($form[$category][$field])) { $time = strtotime("2006-09-18 12:00"); $form[$category][$field]['#default_value'] = array('day' => format_date($time, 'custom', 'j'), 'month' => format_date($time, 'custom', 'n'), 'year' => format_date($time, 'custom', 'Y')); } //--- set default value of departure date $field = 'profile_departure_date'; if (isset($form[$category][$field])) { $time = strtotime("2006-09-22 16:00"); $form[$category][$field]['#default_value'] = array('day' => format_date($time, 'custom', 'j'), 'month' => format_date($time, 'custom', 'n'), 'year' => format_date($time, 'custom', 'Y')); } // // prevent registration if: // - registrations are not open // - the e-mail is not invited // $field = 'profile_register_to_conference'; if (isset($form[$category][$field])) { $form[$category][$field]['#weight'] = 5; $can_register = false; switch (variable_get('tauconf_reg_status', 'not_yet_open')) { case 'open': if (!array_search('invited', $account->roles)) { $msg = variable_get('tauconf_msg_not_invited',''); $msg = str_replace('%user_name%', $account->name, $msg); $msg = str_replace('%user_mail%', $account->mail, $msg); $msg = str_replace('%contact_admin%', l(t('contact'), 'contact', array('title' => t('Contact the site administrator'))), $msg); } else { $can_register = true; } break; case 'closed': $msg = variable_get('tauconf_msg_reg_closed', ''); $can_register = false; break; case 'not_yet_open': default: $msg = variable_get('tauconf_msg_reg_not_yet_open', ''); $can_register = false; break; } $can_unregister = array_search('registered', $account->roles); if (!$can_register) { // // replace checkbox for registration with explicative message // //--- replace null message with some info if ($msg == '') { $msg = '' . '' . "\n" . 'Registration unavailable.' . ' ' . "\n" . $msg . "\n" . ' '; } //--- inform that registratoin is not available if ($can_unregister) { $msg = $msg . "If you unregister, you won't be able to register again."; } $form[$category]['msg'] = array( '#title' => t('Registration not available'), '#value' => $msg, '#weight' => 4, ); if (!$can_unregister && !user_access('administer conference')) { //--- hide registration checkbox $form[$category][$field]['#type'] = 'hidden'; $form[$category]['reg_status'] = array( '#title' => t('Registration status'), '#value' => array_search('registered', $account->roles) ? "Status: registered" : "Status: not registered", '#weight' => 5, ); } } } } break; } } Greetings, -- Alberto Carl Mc Dade ____________________________ Web Developer Dataföreningen i Sverige AB www.d4d.se www.dfs.se --------------------------------- Do you Yahoo!? Next-gen email? Have it all with the all-new Yahoo! Mail Beta.