Fix for rolesignup test code for D6

  1. <?php
  2. /* $Id: rolesignup.module,v 1.2.4.1 2007/01/20 21:49:48 sym Exp $ */
  3.  
  4. define("ROLE", "role_signup_role");
  5. /********************************************************************
  6. * Drupal Hooks
  7. ********************************************************************/
  8. /**
  9.  * Implementation of module_enable()
  10.  */
  11. function rolesignup_enable() {
  12.         cache_clear_all();
  13.         menu_cache_clear();
  14.         menu_rebuild();
  15. }
  16.  
  17. /**
  18.  * Implementation of module_disable()
  19.  */
  20. function rolesignup_disable() {
  21.         cache_clear_all();
  22.         menu_cache_clear();
  23.         menu_rebuild();
  24. }
  25.  
  26. /**
  27.  * Implementation of hook_perm()
  28.  */
  29. function rolesignup_perm() {
  30.   return array('register for role');
  31. }
  32.  
  33. /**
  34.  * Implementation of hook_user()
  35.  */
  36. function rolesignup_user($op, &$edit, &$account, $category = NULL) {
  37.   switch ($op) {
  38.     case 'register':
  39.             if(!$category || $category == "account") {
  40.  
  41.                         // Here I am tring to retain the _submit hook values ..
  42.                         // =============================================================
  43.                 if($_SESSION["rolesignup_pass_role"]) {
  44.                         $edit[ROLE] = $_SESSION["rolesignup_pass_role"];
  45.                 }
  46.                 if($_SESSION["rolesignup_pass_back"]) {
  47.                         $edit["back"] = $_SESSION["rolesignup_pass_back"];
  48.                 }
  49.                 unset($_SESSION["rolesignup_pass_role"]);
  50.                 unset($_SESSION["rolesignup_pass_back"]);
  51.                 // =============================================================
  52.                
  53.                         $roles = user_roles(1, 'register for role');
  54.                         $rids = array_keys($roles);
  55.                         if(!isset($edit[ROLE]) || !in_array($edit[ROLE], $rids) || $edit["back"]) {
  56.                                 if(isset($edit[ROLE]) && in_array($edit[ROLE], $rids)) {
  57.                                         $rid = $edit[ROLE];
  58.                                 } else {
  59.                                         $rid = $rids[0];
  60.                                 }
  61.                                 $form = array();
  62.                                 $form[ROLE] = array(
  63.                                         "#type" => "select"
  64.                                         ,"#title" => "Please select your role below"
  65.                                         ,"#options" => $roles
  66.                                         ,"#default_value" => $rid
  67.                                         ,"#description" => "roles define the behaviour of your account."
  68.                                         ,"#required" => TRUE
  69.                                 );
  70.                                 $form["next"] = array(
  71.                                         "#type" => "submit"
  72.                                         ,"#submit" => array("rolesignup_next")
  73.                                         ,"#value" => "Next"
  74.                                 );
  75.                                 return $form;
  76.                         } else {
  77.                                 $rolename = $roles[$edit[ROLE]];
  78.                                 $form = array();
  79.                                 $form["#prefix"] = "<p class='messages role_select'>You are registering for the '".ucwords(strtolower($rolename))."' Role.<br/></p>";
  80.                                 $form[ROLE] = array(
  81.                                         "#type" => "hidden"
  82.                                         ,"#value" => $edit[ROLE]
  83.                                 );
  84.                                 $form["back"] = array(
  85.                                         "#type" => "submit"
  86.                                         ,"#submit" => array("rolesignup_back")
  87.                                         ,"#value" => "Change Role"
  88.                                 );
  89.                         }
  90.                         $form["#cache"] = FALSE;
  91.                         return $form;
  92.             }
  93.     break;
  94.     case "insert":
  95.             $roles = user_roles(1,'register for role');
  96.             if ($roles[$edit[ROLE]]) {
  97.                     if(!isset($edit["roles"]) || !is_array($edit["roles"])) {
  98.                         $edit["roles"] = array($edit[ROLE] => $roles[$edit[ROLE]]);
  99.                     } else {
  100.                         $edit["roles"][$edit[ROLE]] = $roles[$edit[ROLE]];
  101.                     }
  102.             }
  103.         break;
  104.   }
  105. }
  106.  
  107. function rolesignup_form_alter(&$form, $form_state, $form_id) {
  108.         if($form_id == "user_register") {
  109.                 $roles = user_roles(1, 'register for role');
  110.                 $rids = array_keys($roles);
  111.                 if(!isset($form_state["values"][ROLE]) || !in_array($form_state["values"][ROLE], $rids) || $form_state["values"]["back"] ) {
  112.                         /* Hide all the form elements */
  113.                         $form["submit"] = NULL;
  114.                         $form["account"] = NULL;
  115.                         $form["#validate"] = array("rolesignup_user_validate_wrapper");
  116.                 }
  117.         }
  118. }
  119.  
  120. function rolesignup_user_validate_wrapper($form, &$form_state) {
  121.         $roles = user_roles(1, 'register for role');
  122.         $rids = array_keys($roles);
  123.         if($form_state["values"]["op"] == "Next"){
  124.                 if(!isset($form_state["values"][ROLE]) || !in_array($form_state["values"][ROLE], $rids)) {
  125.                         form_set_error(ROLE, "Role not set");
  126.                 }
  127.         } else if($form_state["values"]["op"] == "Change Role") {
  128.                 // FIXME remove all errors ..
  129.                 form_get_errors();
  130.         } else {
  131.                 form_set_error("Unreachable statement ..");
  132.         }
  133. }
  134.  
  135. function rolesignup_back($form, &$form_state) {
  136.         // FIXME Some how the "back" is not being passed while rebuild :(
  137.         // $form_state["values"]["back"] = TRUE;
  138.         $_SESSION["rolesignup_pass_back"] = $form_state["values"]["back"];
  139.         $form_state["rebuild"] = TRUE;
  140. }
  141.  
  142. function rolesignup_next($form, &$form_state) {
  143.         // FIXME Some how the ROLE is not being passed while rebuild :(
  144.         // $form_state["values"][ROLE]
  145.         $_SESSION["rolesignup_pass_role"] = $form_state["values"][ROLE];
  146.         $form_state["rebuild"] = TRUE;
  147. }