function field_permissions_troubleshooting_form in Field Permissions 6
Menu callback; Field permissions troubleshooting form.
1 string reference to 'field_permissions_troubleshooting_form'
- _field_permissions_menu in includes/
admin.inc - Implementation of hook_menu().
File
- includes/
admin.inc, line 231 - Administrative interface for the Field Permissions module.
Code
function field_permissions_troubleshooting_form(&$form_state, $nid = NULL, $field_name = NULL, $uid = NULL) {
$form = array();
$form['options'] = array(
'#type' => 'fieldset',
'#title' => t('Report options'),
);
$node = !empty($nid) ? node_load($nid) : NULL;
$form['options']['node'] = array(
'#type' => 'textfield',
'#title' => t('Node'),
'#default_value' => !empty($node->nid) ? $node->title . " [nid:{$node->nid}]" : '',
'#autocomplete_path' => 'field_permissions/autocomplete/nodes',
'#required' => TRUE,
'#description' => t('Select the node that you want to check access to.'),
);
if (!empty($node->nid)) {
$form['#node'] = $node;
}
if (empty($node->type)) {
$form['options']['next'] = array(
'#type' => 'submit',
'#value' => t('Next'),
);
return $form;
}
$content_type = content_types($node->type);
$content_fields = $content_type['fields'];
uasort($content_fields, '_field_permissions_sort_fields');
$fields = array(
'' => '-- ' . t('Select field') . ' --',
);
foreach ($content_fields as $field) {
$fields[$field['field_name']] = t('@field-label (@field-name)', array(
'@field-label' => $field['widget']['label'],
'@field-name' => $field['field_name'],
));
}
$field = !empty($field_name) && !empty($content_fields[$field_name]) ? $content_fields[$field_name] : NULL;
$form['options']['field'] = array(
'#type' => 'select',
'#title' => t('Field'),
'#options' => $fields,
'#default_value' => !empty($field) ? $field_name : NULL,
'#description' => t('Emulate access to the given node.'),
'#description' => t('Select the field on the selected node that you want to check access to.'),
);
$form['#field'] = $field;
$account = !empty($uid) ? user_load($uid) : ($uid == 0 ? drupal_anonymous_user() : NULL);
$form['options']['user'] = array(
'#type' => 'textfield',
'#title' => t('User'),
'#size' => 30,
'#maxlength' => 60,
'#default_value' => !empty($account->name) ? $account->name : '',
'#autocomplete_path' => 'field_permissions/autocomplete/users',
'#description' => t('Select the user that you want to check. Access to the specified node will be checked using all different roles assigned to this user. Leave blank to check for %anonymous.', array(
'%anonymous' => variable_get('anonymous', t('Anonymous')),
)),
);
$form['#account'] = !empty($account->uid) ? $account : NULL;
if (!empty($form['#field'])) {
$form['options']['#collapsible'] = $form['options']['#collapsed'] = TRUE;
}
$form['options']['node']['#disabled'] = TRUE;
$form['options']['node']['#value'] = $form['options']['node']['#default_value'];
$form['options']['check'] = array(
'#type' => 'submit',
'#value' => t('Check'),
);
$form['options']['reset'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
);
if (!empty($form['#field'])) {
if (!isset($account->uid)) {
$account = drupal_anonymous_user();
$account->name = variable_get('anonymous', t('Anonymous'));
}
if ($node->uid == $account->uid) {
$node_author = $account->name;
}
else {
$node_account = user_load($node->uid);
$node_author = $node_account->name;
}
$nodetype_name = node_get_types('name', $node->type);
if (function_exists('i18nstrings')) {
$nodetype_name = i18nstrings("nodetype:type:{$node->type}:name", $nodetype_name);
}
$form['report'] = array(
'#type' => 'fieldset',
'#title' => t('Report'),
'#description' => t('This report simulates different operations to access the field %field-label in the node %node-title (nid: @node-nid), created by %node-author (uid: @node-uid), or creation of nodes of type %node-type, for each role assigned to user %user-name (uid: @uid). Move the mouse over each status icon to review detailed information about each test.', array(
'%field-label' => !empty($field['widget']['label']) ? $field['widget']['label'] : $field['field_name'],
'%node-title' => $node->title,
'@node-nid' => $node->nid,
'%node-author' => $node_author,
'@node-uid' => $node->uid,
'%node-type' => $nodetype_name,
'%user-name' => $account->name,
'@uid' => $account->uid,
)),
);
}
return $form;
}