<?php
/* $Id: rolesignup.module,v 1.2.4.1 2007/01/20 21:49:48 sym Exp $ */
define("ROLE",
"role_signup_role");
/********************************************************************
* Drupal Hooks
********************************************************************/
/**
* Implementation of module_enable()
*/
function rolesignup_enable() {
}
/**
* Implementation of module_disable()
*/
function rolesignup_disable() {
}
/**
* Implementation of hook_perm()
*/
function rolesignup_perm() {
return array('register for role');
}
/**
* Implementation of hook_user()
*/
function rolesignup_user($op, &$edit, &$account, $category = NULL) {
switch ($op) {
case 'register':
if(!$category || $category == "account") {
// Here I am tring to retain the _submit hook values ..
// =============================================================
if($_SESSION["rolesignup_pass_role"]) {
$edit[ROLE] = $_SESSION["rolesignup_pass_role"];
}
if($_SESSION["rolesignup_pass_back"]) {
$edit["back"] = $_SESSION["rolesignup_pass_back"];
}
unset($_SESSION["rolesignup_pass_role"]);
unset($_SESSION["rolesignup_pass_back"]);
// =============================================================
if(!
isset($edit[ROLE
]) || !
in_array($edit[ROLE
],
$rids) ||
$edit["back"]) {
$rid = $edit[ROLE];
} else {
$rid = $rids[0];
}
"#type" => "select"
,"#title" => "Please select your role below"
,"#options" => $roles
,"#default_value" => $rid
,"#description" => "roles define the behaviour of your account."
,"#required" => TRUE
);
"#type" => "submit"
,
"#submit" =>
array("rolesignup_next")
,"#value" => "Next"
);
return $form;
} else {
$rolename = $roles[$edit[ROLE]];
$form["#prefix"] =
"<p class='messages role_select'>You are registering for the '".
ucwords(strtolower($rolename)).
"' Role.<br/></p>";
"#type" => "hidden"
,"#value" => $edit[ROLE]
);
"#type" => "submit"
,
"#submit" =>
array("rolesignup_back")
,"#value" => "Change Role"
);
}
$form["#cache"] = FALSE;
return $form;
}
break;
case "insert":
if ($roles[$edit[ROLE]]) {
$edit["roles"] =
array($edit[ROLE
] =>
$roles[$edit[ROLE
]]);
} else {
$edit["roles"][$edit[ROLE]] = $roles[$edit[ROLE]];
}
}
break;
}
}
function rolesignup_form_alter(&$form, $form_state, $form_id) {
if($form_id == "user_register") {
if(!
isset($form_state["values"][ROLE
]) || !
in_array($form_state["values"][ROLE
],
$rids) ||
$form_state["values"]["back"] ) {
/* Hide all the form elements */
$form["submit"] = NULL;
$form["account"] = NULL;
$form["#validate"] =
array("rolesignup_user_validate_wrapper");
}
}
}
function rolesignup_user_validate_wrapper($form, &$form_state) {
if($form_state["values"]["op"] == "Next"){
if(!
isset($form_state["values"][ROLE
]) || !
in_array($form_state["values"][ROLE
],
$rids)) {
}
} else if($form_state["values"]["op"] == "Change Role") {
// FIXME remove all errors ..
} else {
}
}
function rolesignup_back($form, &$form_state) {
// FIXME Some how the "back" is not being passed while rebuild :(
// $form_state["values"]["back"] = TRUE;
$_SESSION["rolesignup_pass_back"] = $form_state["values"]["back"];
$form_state["rebuild"] = TRUE;
}
function rolesignup_next($form, &$form_state) {
// FIXME Some how the ROLE is not being passed while rebuild :(
// $form_state["values"][ROLE]
$_SESSION["rolesignup_pass_role"] = $form_state["values"][ROLE];
$form_state["rebuild"] = TRUE;
}