workflow_admin_ui.page.permissions.inc 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <?php
  2. /**
  3. * @file
  4. * Provides an Admin UI page for the Workflow Permissions.
  5. */
  6. /**
  7. * View workflow permissions by role.
  8. *
  9. * @param object $workflow
  10. * The workflow object.
  11. * @param $op (optional)
  12. *
  13. * @return string
  14. */
  15. function workflow_admin_ui_view_permissions_form($workflow, $op) {
  16. // If we don't have a workflow at this point, go back to admin page.
  17. if (!$workflow) {
  18. drupal_goto(WORKFLOW_ADMIN_UI_PATH);
  19. }
  20. $all = array();
  21. $roles = workflow_get_roles();
  22. foreach ($roles as $rid => $value) {
  23. $all[$rid]['name'] = $value;
  24. }
  25. $transitions = $workflow->getTransitions();
  26. foreach ($transitions as $transition) {
  27. foreach ($transition->roles as $rid) {
  28. $old_state = $transition->getOldState();
  29. $new_state = $transition->getNewState();
  30. $all[$rid]['transitions'][] = array($old_state->label(), WORKFLOW_ADMIN_UI_ARROW, $new_state->label());
  31. }
  32. }
  33. $header = array(t('From'), '', t('To'));
  34. $output = '';
  35. // @todo: we should theme out the html here.
  36. foreach ($all as $rid => $value) {
  37. $role_name = !empty($value['name']) ? $value['name'] : t('deleted role !rid', array('!rid' => $rid));
  38. $output .= '<h3>' . t('%role may do these transitions:', array('%role' => $role_name)) . '</h3>';
  39. if (!empty($value['transitions'])) {
  40. $output .= theme('table', array('header' => $header, 'rows' => $value['transitions'])) . '<p></p>';
  41. }
  42. else {
  43. $output .= '<table><tbody><tr class="odd"><td>' . t('None') . '</td><td></tr></tbody></table><p></p>';
  44. }
  45. }
  46. return $output;
  47. }