DrupalBin
Submit Code
About
Recent Posts
admin settings not saving
28 min 33 sec
ago
Code
1 hour 11 min
ago
Code
1 hour 27 min
ago
css path
3 hours 11 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 this is my user_queue_member.module file,
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: /* ERROR: warning: require_once(modules/system/user_queue_member.admin.inc) [function.require-once]: failed to open stream: No such file or directory in /data/projects/voip_support/trunk/control_interface/includes/menu.inc on line 344. WHEN I GET ERROR: I get error when I go to "admin/user/user_queue_member" NOTE: admin/user/user_queue_member is defined in user_queue_member_menu() .. */ define('USER_QUEUE_MEMBER_PHONE_NUMBER', 'USER_QUEUE_MEMBER_PHONE_NUMBER'); /* TODO: add an admin settings where user can create the phone number field or assign something .. */ function user_queue_member_enable() { /* Add phone number field in profile.module */ if(module_exists('profile')) { /* XXX we are not using drupal_execute(), so validation is left apart .. BAD ! */ if(db_query("INSERT INTO {profile_fields} (title, name, explanation, category, type, weight, required, register, visibility, autocomplete, options, page) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, %d, '%s', '%s')", 'Phone Number', 'phone_number', '', 'Account Information', 'textfield', 4/* weight */, 1, 1, 0, 0, NULL, NULL)) { $fid = db_last_insert_id('profile_fields', 'fid'); variable_set(USER_QUEUE_MEMBER_PHONE_NUMBER, $fid); } } } function user_queue_member_perm() { return array('can be queue member'); } function user_queue_member_help($path, $arg) { /* TODO: say that activating profile will add support to calling the user by phone, and activating user_sip will enable calling using sip account .. */ switch($path) { case 'user/%user/queue_member' : return 'Asterisk queue membership details.'; } } function user_queue_member_menu() { return array( 'user/%user/queue_member' => array( 'title' => 'Asterisk queue membership', 'description' => 'Asterisk queue membership details.', 'page callback' => 'user_queue_member_details', 'page arguments' => array(1), 'access callback' => 'user_is_queue_member', 'access arguments' => array(1), 'file' => 'user_queue_member.pages.inc', 'type' => MENU_LOCAL_TASK, ) ,'user/%user/queue_member/list' => array( 'title' => 'List', 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => 0, ) ,'user/%user/queue_member/add' => array( 'title' => 'Add', 'description' => t('Be a new queue member.'), 'page callback' => 'node_add', 'page arguments' => array('queue_member', 1), 'access callback' => 'node_access', 'access arguments' => array('create', 'queue_member'), 'file' => 'user_queue_member.node.pages.wrapper.inc', 'type' => MENU_LOCAL_TASK, 'weight' => 1, ) ,'user/%user/queue_member/%node' => array( 'title' => 'Edit', 'description' => 'Asterisk queue membership details.', 'page arguments' => array('user_queue_member_details', 1), 'access callback' => 'user_is_queue_member', 'access arguments' => array(1), 'file' => 'user_queue_member.pages.inc', 'type' => MENU_LOCAL_TASK, 'weight' => 2, ) ,'admin/user/user_queue_member' => array( 'title' => 'User queue member', 'description' => 'User Queue Member Settings.', 'page arguments' => array('user_queue_member_admin'), 'access arguments' => array('administer users'), 'file' => 'user_queue_member.admin.inc', ) ,'admin/user/user_queue_member/autocomplete' => array( 'title' => 'Profile field name autocomplete', 'page callback' => 'user_queue_member_admin_autocomplete', 'type' => MENU_CALLBACK, 'file' => 'user_queue_member.admin.inc', ) ); } function user_is_queue_member($account) { global $user; /* * if I omit the following check it creates * following error: * ========================================================== * warning: array_fill() [function.array-fill]: Number of elements must be positive in /data/projects/voip_support/trunk/control_interface/includes/database.inc on line 235. * warning: implode() [function.implode]: Bad arguments. in /data/projects/voip_support/trunk/control_interface/includes/database.inc on line 235. * warning: array_keys() [function.array-keys]: The first argument should be an array in /data/projects/voip_support/trunk/control_interface/modules/user/user.module on line 500. * user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1 query: SELECT p.perm FROM web_role r INNER JOIN web_permission p ON p.rid = r.rid WHERE r.rid IN () in /data/projects/voip_support/trunk/control_interface/modules/user/user.module on line 500. * ========================================================== * The probable reason is $account->role is not assigned when user_access() is called. Note that I called this in hook_user implementation which is called before all the node elements are loaded. */ if(!is_array($account->roles)) { return FALSE; } if($account->uid == 1) { return FALSE; /* forbid the admin user.. */ } if(!user_access('can be queue member', $account)) { return FALSE; } if($account->uid == $user->uid || user_access('administer users', $user)) { return TRUE; } return FALSE; } function user_queue_member_user($op, &$edit, &$account, $category = NULL) { if(!user_is_queue_member($account)) { return; } switch($op) { case 'view': /* TODO: show the queues we are member of .. */ return; case 'delete': $result = db_query(db_rewrite_sql('SELECT n.nid FROM {user_queue_member} n WHERE uid = %d'), $account->uid); while ($node = db_fetch_object($result)) { node_delete(node_load($node->nid)); } return; } } function user_queue_member_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { if($node->type != 'queue_member') { return; } /* handle delete */ switch($op) { case 'delete': db_query( 'DELETE FROM {user_queue_member} WHERE nid = %d' , $node->nid ); return; } /* check if we are working under a specific user */ $params = arg(); if(!$params[1]) { return; } $account = user_load($params[1]); if(!$account || !$account->uid) { return; } switch($op) { case 'insert': /* associate the node with that user */ db_query( 'INSERT INTO {user_queue_member} SET uid = %d, nid = %d' , $node->related_user , $node->nid ); drupal_set_message(t("You are now member of {$node->queue} queue")); drupal_redirect_form($form, "user/{$node->related_user}/queue_member/list"); break; } } function user_queue_member_form_alter(&$form, $form_state, $form_id) { if($form_id != 'queue_member_node_form') { return; } $params = arg(); if(!$params[1]) { return; } $account = user_load($params[1]); if(!$account || !$account->uid) { return; } $form['related_user'] = array( '#type' => 'value' ,'#value' => $account->uid ); } function user_queue_member_queue_member($op, $data = NULL) { switch($op) { case 'title': $params = arg(); if($params[0] != 'user' || !$params[1]) { return; } $account = user_load($params[1]); if(!$account || !$account->uid) { return; } if(_user_queue_member_get_profile_field()) { $result['user_phone'] = 'User Phone Number'; } if(module_exists('user_sip')) { $result['user_sip'] = 'User sip account'; } return $result; } } function _user_queue_member_get_profile_field() { return db_fetch_object(db_query('SELECT f.name, f.fid FROM {profile_fields} f WHERE f.fid = %d', variable_get(USER_QUEUE_MEMBER_PHONE_NUMBER, 0))); }
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.