DrupalBin
Submit Code
About
Recent Posts
Code
Fix for Fix for Code
Fix for Code
Code
Node type whitelist
an axe coach accessories
coach purses married
Fix for de las ghd alturas
de las ghd alturas
Code
more
User login
Log in using OpenID:
What is OpenID?
Username:
*
Password:
*
Log in using OpenID
Cancel OpenID login
Create new account
Request new password
Tags
CCK
drupal
fapi
jquery
menu
module
php
simpletest
taxonomy
test
theme
views
more tags
Home
›
Multipage User Registration
Fix for Multipage User Registration
View
Fix
Fixes are not saved to the database until you submit.
Summary:
Tags:
Any tags you'd like to associate with your code, delimitered by commas (example: Views, CCK, Module, etc).
Show summary in full view
<?php /** * The purpose of this module is to take the user-registration form and make it * multipage, where the pages change depending on the options selected during * the last step. Needs to integrate with either content profiles or the default * user profiles. */ function multipage_register_help($path, $arg){ $output = ''; switch($path){ case "admin/help/#multipage_register"; $output = '<p>'.t("Enables Multipage Register."); } } function multipage_register_perm(){ return array('access multipage register form', 'administer multipage form'); } function multipage_register_menu(){ $items = array(); $items['admin/advanced_roles/settings'] = array( 'title' => 'Multipage Form Settings', 'page callback' => 'drupal_get_form', 'page arguments' => array('multipage_register_settings_form'), 'description' => 'Administer the Multipage Form settings.', 'access arguments' => array('administer multipage form'), ); $items['add/user'] = array( 'title' => 'Create a new user', 'page callback' => 'drupal_get_form', 'page arguments' => array('multipage_register_user_form'), 'description' => 'Add a new user via multipage', 'access arguments' => array('access multipage register form'), ); return $items; } function multipage_register_settings_form(){ $form = array(); //Settings here. } function multipage_register_user_form($form_state){ //check if we've set next step if(!empty($form_state['storage']['step'])){ $function = $form_state['storage']['step']; return $function($form_state); } else{ return _multipage_register_user_form_start(); } } /** * Step 1 (START) */ function _multipage_register_user_form_start(){ $form['name'] = array( '#type' => 'textfield', '#title' => t('Name'), '#required' => TRUE, ); $form['mail'] = array( '#type' => 'textfield', '#title' => t('Email'), '#required' => TRUE, ); $form['mail_confirm'] = array( '#type' => 'textfield', '#title' => t('Email (confirm)'), '#required' => TRUE, ); $form['continue'] = array( '#type' => 'submit', '#value' => 'Continue', ); //Special value elements $form['this_step'] = array( '#type' => 'value', '#value' => 'start', ); $form['step_next'] = array( '#type' => 'value', '#value' => '_multipage_register_user_form_step2', ); return $form; } /** * Step 2 (Is Dealer or Employee?) */ function _multipage_register_user_form_step2(){ $form['employee'] = array( '#type' => 'radios', '#title' => t('Is this user an Employee?'), '#required' => TRUE, '#options' => array( 0 => 'No', 1 => 'Yes', ), ); $form['dealer'] = array( '#type' => 'select', '#title' => t('Is this user a Dealer Admin or Dealer Tech?'), '#required' => TRUE, '#options' => array( 0 => 'No', 1 => 'Yes', ), ); $form['continue'] = array( '#type' => 'submit', '#value' => 'Continue' ); //Special value elements $form['this_step'] = array( '#type' => 'value', '#value' => 'step2' ); $form['step_submit'] = array( '#type' => 'value', '#value' => '_multipage_register_user_form_special_submit', ); return $form; } /** * Step 3 (Dealer version) */ function _multipage_register_user_form_dealer($form_state){ $form['department'] = array( '#type' => 'textfield', '#title' => t('Company'), '#required' => FALSE, ); $form['this_step'] = array( '#type' => 'value', '#value' => 'step3' ); $form['step_submit'] = array( '#type' => 'value', '#value' => '_multipage_register_form_submit', ); } /** * Step 3 (Employee version) */ function _multipage_register_user_form_employee($form_state){ $form['department'] = array( '#type' => 'textfield', '#title' => t('Department'), '#required' => FALSE, ); $form['this_step'] = array( '#type' => 'value', '#value' => 'step3' ); $form['step_submit'] = array( '#type' => 'value', '#value' => '_multipage_register_form_submit', ); } /* * Custom Submit Handler */ function _multipage_register_user_form_special_submit($form, &$form_state){ if($form_state['values']['employee'] == 1){ $form_state['values']['step_next'] = '_multipage_register_user_form_employee'; } elseif($form_state['values']['dealer'] == 1){ $form_state['values']['step_next'] = '_multipage_register_user_form_dealer'; } } /* * Main Submit handler */ function multipage_register_form_submit($form, &$form_state){ if(empty($form_state['storage'])){ $form_state['storage'] = array(); $form_state['storage']['values'] = array(); } //Call user-defined submit function if (!empty($form_state['values']['step_submit'])) { $function = $form_state['values']['step_submit']; $function($form, $form_state); } //Store submitted form values. Must happen after the call to user-defined submit to allow modifying. $this_step = $form_state['values']['this_step']; $form_state['storage']['values'][$this_step] = $form_state['values']; //Set up next step. if(!empty($form_state['values']['step_next'])){ $form_state['storage']['step'] = $form_state['values']['step_next']; } else{ //Form Complete!!! $values = $form_state['storage']['values']; //Do something with $values //Set $form['#redirect'] to not return to the first step. drupal_set_message(t('Complete! !values', array('!values' => print_r($values, TRUE)))); } } /* * Form Validation Controller */ function multipage_register_form_validate($form, &$form_state){ if(!empty($form_state['values']['step_validate'])){ $function = $form_state['values']['step_validate']; $function($form, $form_state); } }
Syntax highlighting mode:
ActionScript
ColdFusion
Diff
Drupal 5
Drupal 6
HTML
INI
Javascript
MySQL
PHP
Python
robots.txt
SQL
Text
Select the syntax highlighting mode to use.
See Also:
Order
Title:
URL:
-1
0
1
Title:
URL:
-1
0
1
Any links you'd like to have associated with the post (Drupal.org issue, Wikipedia article, etc).
File attachments
Changes made to the attachments are not permanent until you save this post. The first "listed" file will be included in RSS feeds.
Attach new file:
The maximum upload size is
1 MB
. Only files with the following extensions may be uploaded:
jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp phps
.