/php/component/privileges_viewer.class.php

https://bitbucket.org/chamilo/chamilo-ext-repo-bitbucket-dev/ · PHP · 124 lines · 105 code · 19 blank · 0 comment · 6 complexity · 51e82bb0309fe84188642e1c05ecb41e MD5 · raw file

  1. <?php
  2. namespace common\extensions\external_repository_manager\implementation\bitbucket;
  3. use common\libraries\Request;
  4. use common\libraries\ToolbarItem;
  5. use common\libraries\Translation;
  6. use common\libraries\Theme;
  7. use common\libraries\SortableTableFromArray;
  8. use common\libraries\ActionBarRenderer;
  9. use common\libraries\Path;
  10. use common\extensions\external_repository_manager\ExternalRepositoryManager;
  11. use common\extensions\external_repository_manager\ExternalRepositoryComponent;
  12. require_once dirname(__FILE__) . '/../forms/privilege_granting_form.class.php';
  13. class BitbucketExternalRepositoryManagerPrivilegesViewerComponent extends BitbucketExternalRepositoryManager
  14. {
  15. private $repository;
  16. function run()
  17. {
  18. $id = Request :: get(ExternalRepositoryManager :: PARAM_EXTERNAL_REPOSITORY_ID);
  19. if ($id)
  20. {
  21. $this->repository = $this->retrieve_external_repository_object($id);
  22. $parameters = $this->get_parameters();
  23. $parameters[self :: PARAM_EXTERNAL_REPOSITORY_ID] = $id;
  24. $privilege_form = new PriviligeGrantingForm($this->get_url($parameters), $this);
  25. if ($privilege_form->validate())
  26. {
  27. $success = $privilege_form->grant_privilege();
  28. $message = $success ? Translation :: get('GrantPrivilegeCreated') : Translation :: get('GrantPrivilegeNotCreated');
  29. $this->redirect($message, ! $success, $parameters);
  30. }
  31. $this->display_header();
  32. echo ('<h3>' . $this->repository->get_title() . '</h3>');
  33. echo ($this->get_action_bar($id)->as_html());
  34. $privilege_form->display();
  35. $privileges = $this->repository->get_privileges();
  36. $privileges_groups = $this->repository->get_groups_privileges();
  37. if (count($privileges) > 0 || count($privileges_groups) > 0)
  38. {
  39. if (count($privileges) > 0)
  40. {
  41. $data = array();
  42. foreach ($privileges as $privilege)
  43. {
  44. $row = array();
  45. $row[] = $privilege->get_username();
  46. $row[] = $privilege->get_privilege();
  47. $row[] = $privilege->get_first_name();
  48. $row[] = $privilege->get_last_name();
  49. $actions = array();
  50. $toolbar_item = new ToolbarItem(Translation :: get('Delete'), Theme :: get_common_image_path() . 'action_delete.png', $this->get_external_repository_privilege_revoking_url($id, $privilege->get_username()), ToolbarItem :: DISPLAY_ICON);
  51. $actions[] = $toolbar_item->as_html();
  52. $row[] = implode(' ', $actions);
  53. $data[] = $row;
  54. }
  55. $table = new SortableTableFromArray($data);
  56. $table->set_header(0, Translation :: get('Username'));
  57. $table->set_header(1, Translation :: get('Privilege'));
  58. $table->set_header(2, Translation :: get('FirstName'));
  59. $table->set_header(3, Translation :: get('LastName'));
  60. $table->set_header(4, '');
  61. echo ($table->as_html());
  62. }
  63. if (count($privileges_groups) > 0)
  64. {
  65. $data = array();
  66. foreach ($privileges_groups as $privilege)
  67. {
  68. $row = array();
  69. $row[] = $privilege->get_name();
  70. $row[] = $privilege->get_privilege();
  71. $actions = array();
  72. $toolbar_item = new ToolbarItem(Translation :: get('Delete'), Theme :: get_common_image_path() . 'action_delete.png', $this->get_external_repository_group_privilege_revoking_url($id, $privilege->get_owner_username() . '/' . $privilege->get_group()), ToolbarItem :: DISPLAY_ICON);
  73. $actions[] = $toolbar_item->as_html();
  74. $row[] = implode(' ', $actions);
  75. $data[] = $row;
  76. }
  77. $table = new SortableTableFromArray($data);
  78. $table->set_header(0, Translation :: get('Group'));
  79. $table->set_header(1, Translation :: get('Privilege'));
  80. $table->set_header(2, '');
  81. echo ($table->as_html());
  82. }
  83. }
  84. else
  85. {
  86. $this->display_warning_message(Translation :: get('NoPrivileges'));
  87. }
  88. $this->display_footer();
  89. }
  90. else
  91. {
  92. }
  93. }
  94. function get_repository()
  95. {
  96. return $this->repository;
  97. }
  98. function get_action_bar($id)
  99. {
  100. $action_bar = new ActionBarRenderer(ActionBarRenderer :: TYPE_HORIZONTAL);
  101. $action_bar->add_common_action(new ToolbarItem(Translation :: get('RevokeAll'), Theme :: get_image_path() . 'action_revoke.png', $this->get_external_repository_privilege_revoking_url($id), ToolbarItem :: DISPLAY_ICON_AND_LABEL));
  102. return $action_bar;
  103. }
  104. }
  105. ?>