function workflow_admin_ui_view_permissions_form in Workflow 7
Same name and namespace in other branches
- 7.2 workflow_admin_ui/workflow_admin_ui.page.permissions.inc \workflow_admin_ui_view_permissions_form()
View workflow permissions by role
Parameters
$workflow: The workflow object.
1 string reference to 'workflow_admin_ui_view_permissions_form'
- workflow_admin_ui_menu in workflow_admin_ui/
workflow_admin_ui.module - Implements hook_menu().
File
- workflow_admin_ui/
workflow_admin_ui.pages.inc, line 143 - Provides administrative UI for workflow. Why it's own module? Lower code footprint and better performance. Additional credit to gcassie ( http://drupal.org/user/80260 ) for the initial push to split UI out of core workflow. We're moving…
Code
function workflow_admin_ui_view_permissions_form($workflow) {
// If we don't have a workflow at this point, go back to admin page.
if ($workflow) {
// Let's add some breadcrumbs.
workflow_admin_ui_breadcrumbs($workflow);
$name = $workflow
->getName();
$all = array();
$roles = workflow_admin_ui_get_roles();
foreach ($roles as $role => $value) {
$all[$role]['name'] = $value;
}
// TODO return to this, this looks similar to actions stuff (transitions) - should be it's own function.
$result = db_query('SELECT t.roles, s1.state AS state_name, s2.state AS target_state_name ' . 'FROM {workflow_transitions} t ' . 'INNER JOIN {workflow_states} s1 ON s1.sid = t.sid ' . 'INNER JOIN {workflow_states} s2 ON s2.sid = t.target_sid ' . 'WHERE s1.wid = :wid ' . 'ORDER BY s1.weight ASC , s1.state ASC , s2.weight ASC , s2.state ASC', array(
':wid' => $workflow->wid,
));
foreach ($result as $data) {
foreach (explode(',', $data->roles) as $role) {
$all[$role]['transitions'][] = array(
check_plain(t($data->state_name)),
WORKFLOW_ARROW,
check_plain(t($data->target_state_name)),
);
}
}
$header = array(
t('From'),
'',
t('To'),
);
$output = '';
// TODO we should theme out the html here.
foreach ($all as $role => $value) {
if (!empty($value['name'])) {
$output .= '<h3>' . t('%role may do these transitions:', array(
'%role' => $value['name'],
)) . '</h3>';
}
if (!empty($value['transitions'])) {
$output .= theme('table', array(
'header' => $header,
'rows' => $value['transitions'],
)) . '<p></p>';
}
else {
$output .= '<table><tbody><tr class="odd"><td>' . t('None') . '</td><td></tr></tbody></table><p></p>';
}
}
return $output;
}
else {
drupal_goto('admin/config/workflow/workflow');
}
}