DrupalBin
Submit Code
About
Recent Posts
Code
8 hours 48 min
ago
Code
13 hours 5 min
ago
Logging without output buffer trouble
13 hours 56 min
ago
Code
14 hours 46 min
ago
more
Tags
CCK
drupal
fapi
jquery
menu
module
Panels
php
simpletest
test
theme
views
more tags
User login
Log in using OpenID:
What is OpenID?
Username:
*
Password:
*
Create new account
Request new password
Log in using OpenID
Cancel OpenID login
Home
Fix for rolesignup modification .. could not get the rid after role creation ..
View
Download
Fix
This fix will not be 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).
Source code:
*
<?php # vim: set filetype=php expandtab tabstop=2 shiftwidth=2 autoindent smartindent: /* $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() { cache_clear_all(); menu_cache_clear(); menu_rebuild(); } /** * Implementation of module_disable() */ function rolesignup_disable() { cache_clear_all(); menu_cache_clear(); menu_rebuild(); } function rolesignup_menu() { return array( 'rolesignup' => array( 'title' => 'Sign Up' ,'page callback' => 'rolesignup_main_page' ,'type' => 'MENU_CALLBACK' ,'access callback' => TRUE ,'file' => 'rolesignup.pages.inc' ) ); } /** * Implementation of hook_user() */ function rolesignup_user($op, &$edit, &$account, $category = NULL) { switch ($op) { case 'register': if(!$category || $category == "account") { $edit[ROLE] = arg(2); /* user/register/%role */ $roles = rolesignup_signup_roles(); $rids = array_keys($roles); if(!isset($edit[ROLE]) || !in_array($edit[ROLE], $rids)) { drupal_goto("rolesignup"); break; } drupal_set_message("Ah I am here now ..".$op.$category); $form = array(); $output = node_view(node_load($roles[$edit[ROLE]]), 1); $form["#prefix"] = $output; $form[ROLE] = array( "#type" => "value" ,"#value" => $edit[ROLE] ); // return $form; return array("fine" => array("#type" => "textfield", '#title' => t('Title funny'))); } break; case "insert": $roles = rolesignup_signup_roles(); if (!$roles[$edit[ROLE]]) { break; } if(!isset($edit["roles"]) || !is_array($edit["roles"])) { $edit["roles"] = array(); } $node = node_load($roles[$edit[ROLE]]); $edit["roles"][$edit[ROLE]] = $node->title; break; } } function rolesignup_form_alter(&$form, $form_state, $form_id) { switch($form_id) { case "user_register": $roles = user_roles(1, 'register for role'); $rids = array_keys($roles); 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"); } break; case "user_admin_role": /* Initialize settings: copied from node.pages.inc */ $node = get_rolenode($form, $form_state); $node_form = rolenode_form($node); foreach($node_form as $key => $value) { if($key == "submit" || $key == "delete" || $key == 'rid') { continue; } $form[$key] = $value; } $form["submit"]["#weight"] = 111; $form["delete"]["#weight"] = 112; $form["#submit"][] = 'rolenode_submit_wrapper'; $form["#validate"][] = 'rolenode_validate_wrapper'; break; } } function get_rolenode(&$form, &$form_state) { global $user; module_load_include('inc', 'node', 'node.pages'); if( ($form_state["values"]["rid"] && $nid = rolenode_get_by_role($form_state["values"]["rid"])) || ($form['rid']['#value'] && $nid = rolenode_get_by_role($form["rid"]['#value'])) ) { $node = node_load($nid); } else { $node = array('uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'type' => 'rolenode', 'language' => '', "rid" => $form_state["values"]["rid"]); } return $node; } function rolenode_validate_wrapper($form, $form_state) { /* Note: the node validation may not be right :( */ unset($form->name); unset($form_state["values"]["name"]); module_load_include('inc', 'node', 'node.pages'); node_form_validate($form, $form_state); } function rolenode_submit_wrapper($form, $form_state) { unset($form_state["values"]["name"]); module_load_include('inc', 'node', 'node.pages'); switch($form_state["values"]["op"]) { case t('Save role'): case t('Add role'): if(!$form_state['values']['rid']) { /* IMPORTANT: This will only work on role creation step .. */ $form_state['values']['rid'] = db_result(db_query("SELECT LAST_INSERT_ID()")); } $node = get_rolenode($form, $form_state); $form_state["values"]["op"] = t("Save"); drupal_execute('rolenode_node_form', $form_state, $node); break; case t('Delete role'): $nid = rolenode_get_by_role($form_state["values"]["rid"]); node_delete($nid); break; } } function rolesignup_signup_roles() { static $signuproles = NULL; if(!is_null($signuproles)) { return $signuproles; } $signuproles = array(); $result = db_query("SELECT DISTINCT rid, nid FROM {rolenode} WHERE signup = 1 ORDER BY weight "); while ($node = db_fetch_object($result)) { $signuproles[$node->rid] = $node->nid; } return $signuproles; }
Syntax highlighting mode:
ActionScript
ColdFusion
Diff
Drupal
Drupal 5
Drupal 6
HTML
Javascript
MySQL
PHP
Python
robots.txt
SQL
Text
Select the syntax highlighting mode to use.