/**
  * @param FORM_RENDERER $renderer
  * @access private
  */
 protected function _draw_controls($renderer)
 {
     $renderer->start();
     $user_query = $this->app->user_query();
     $group_query = $this->app->group_query();
     /** @var GROUP $group */
     $group = $group_query->object_at_id($this->value_for('id'));
     $group_user_query = $group->user_query();
     $ids = $group_user_query->indexed_objects();
     if (sizeof($ids)) {
         $user_query->restrict_by_op('usr.id', array_keys($ids), Operator_not_in);
     }
     if (read_var('show_anon')) {
         $user_query->set_kind(Privilege_kind_anonymous);
     } else {
         $user_query->set_kind(Privilege_kind_registered);
     }
     /** @var USER[] $items */
     $items = $user_query->objects();
     $renderer->draw_text_line_with_named_object_chooser_row('name', $items);
     $buttons[] = $renderer->submit_button_as_HTML();
     $renderer->draw_buttons_in_row($buttons);
     $renderer->finish();
 }
 /**
  * @param FORM_RENDERER $renderer
  * @param PERMISSIONS_FORMATTER $formatter
  * @access private
  * @abstract
  */
 protected function _draw_permission_controls($renderer, $formatter)
 {
     $user_query = $this->app->user_query();
     /* get the list of user ids that are already mapped in this folder. */
     $folder_query = $this->app->login->folder_query();
     /** @var FOLDER $folder */
     $folder = $folder_query->object_at_id($this->value_for('id'));
     $security = $folder->security_definition();
     $permissions = $security->user_permissions();
     $ids = array();
     foreach ($permissions as $permission) {
         $ids[] = $permission->ref_id;
     }
     if (sizeof($ids)) {
         $user_query->restrict_by_op('usr.id', $ids, Operator_not_in);
     }
     if (read_var('show_anon')) {
         $user_query->set_kind(Privilege_kind_anonymous);
     } else {
         $user_query->set_kind(Privilege_kind_registered);
     }
     /** @var USER[] $users */
     $users = $user_query->objects();
     $renderer->draw_text_line_with_named_object_chooser_row('title', $users);
     parent::_draw_permission_controls($renderer, $formatter);
 }
 /**
  * @param FORM_RENDERER $renderer
  * @param PERMISSIONS_FORMATTER $formatter
  * @access private
  * @abstract
  */
 protected function _draw_permission_controls($renderer, $formatter)
 {
     $group_query = $this->app->group_query();
     /* Show only groups that do not have permission in this folder. */
     $folder_query = $this->app->login->folder_query();
     /** @var FOLDER $folder */
     $folder = $folder_query->object_at_id(read_var('id'));
     $security = $folder->security_definition();
     $permissions = $security->group_permissions();
     $ids = array();
     foreach ($permissions as $permission) {
         $ids[] = $permission->ref_id;
     }
     if (sizeof($ids)) {
         $group_query->restrict_by_op('grp.id', $ids, Operator_not_in);
     }
     /** @var GROUP[] $groups */
     $groups = $group_query->objects();
     $renderer->draw_text_line_with_named_object_chooser_row('group_name', $groups);
     parent::_draw_permission_controls($renderer, $formatter);
 }