/php/component/groups_viewer.class.php

https://bitbucket.org/chamilo/chamilo-ext-repo-bitbucket-dev/ · PHP · 92 lines · 76 code · 16 blank · 0 comment · 3 complexity · 797b2bd958b614286b49512ce9d551da MD5 · raw file

  1. <?php
  2. namespace common\extensions\external_repository_manager\implementation\bitbucket;
  3. use repository;
  4. use common\libraries\Request;
  5. use common\libraries\ToolbarItem;
  6. use common\libraries\Translation;
  7. use common\libraries\Theme;
  8. use common\libraries\SortableTableFromArray;
  9. use common\libraries\ActionBarRenderer;
  10. use common\extensions\external_repository_manager\ExternalRepositoryManager;
  11. use common\extensions\external_repository_manager\ExternalRepositoryComponent;
  12. use repository\ExternalSetting;
  13. class BitbucketExternalRepositoryManagerGroupsViewerComponent extends BitbucketExternalRepositoryManager
  14. {
  15. private $bitbucket;
  16. function run()
  17. {
  18. $this->display_header();
  19. echo ($this->get_action_bar()->as_html());
  20. $groups = $this->get_external_repository_manager_connector()->retrieve_groups(ExternalSetting :: get('username', $this->get_external_repository()->get_id()));
  21. if ($groups)
  22. {
  23. $list_groups = array();
  24. foreach ($groups as $group)
  25. {
  26. $group_row = array();
  27. $group_row[] = $group->get_name();
  28. $group_row[] = $group->get_permission();
  29. $member_row = array();
  30. foreach ($group->get_members() as $member)
  31. {
  32. $member_row[] = '<option>';
  33. if (! $member->first_name || ! $member->last_name)
  34. {
  35. $member_row[] = $member->username;
  36. }
  37. else
  38. {
  39. $member_row[] = $member->first_name;
  40. $member_row[] = ' ' . $member->last_name;
  41. $member_row[] = ' (' . $member->username . ')';
  42. }
  43. $member_row[] = '</option>';
  44. }
  45. $group_row[] = '<select>' . implode('', $member_row) . '</select>';
  46. $actions = array();
  47. $toolbar_item = new ToolbarItem(Translation :: get('Delete'), Theme :: get_common_image_path() . 'action_delete.png', $this->get_external_repository_group_deleting_url($group->get_id()), ToolbarItem :: DISPLAY_ICON);
  48. $actions[] = $toolbar_item->as_html();
  49. $toolbar_item = new ToolbarItem(Translation :: get('AddUser'), Theme :: get_image_path() . 'action_add_user.png', $this->get_external_repository_adding_user_url($group->get_id()), ToolbarItem :: DISPLAY_ICON);
  50. $actions[] = $toolbar_item->as_html();
  51. $toolbar_item = new ToolbarItem(Translation :: get('DeleteUser'), Theme :: get_image_path() . 'action_delete_user.png', $this->get_external_repository_deleting_user_url($group->get_id()), ToolbarItem :: DISPLAY_ICON);
  52. $actions[] = $toolbar_item->as_html();
  53. $group_row[] = implode(' ', $actions);
  54. $list_groups[] = $group_row;
  55. }
  56. $table = new SortableTableFromArray($list_groups);
  57. $table->set_header(0, Translation :: get('Name'));
  58. $table->set_header(1, Translation :: get('Permission'));
  59. $table->set_header(2, Translation :: get('Members'));
  60. $table->set_header(3, '');
  61. echo ($table->as_html());
  62. }
  63. else
  64. {
  65. $this->display_warning_message(Translation :: get('NoGroups'));
  66. }
  67. $this->display_footer();
  68. }
  69. function get_action_bar()
  70. {
  71. $action_bar = new ActionBarRenderer(ActionBarRenderer :: TYPE_HORIZONTAL);
  72. $action_bar->add_common_action(new ToolbarItem(Translation :: get('CreateGroup'), Theme :: get_image_path() . 'action_create.png', $this->get_external_repository_group_creating_url(), ToolbarItem :: DISPLAY_ICON_AND_LABEL));
  73. return $action_bar;
  74. }
  75. }
  76. ?>