Add new permission type/ level: 'load ticket'

Currently, (as far as i can tell), the only way to actually view a ticket (from a permissions standpoint, is to have the ‘see ticket’ permission set against a particular user.

This will ensure the user sees ticket in the 10 newest…ect… against a particular queue, or if the that user belongs to a group assigned to a queue that has that permission (which is how we manage our queues/ business units/ queues)

What i need to be able to do is allow a user to ‘load ticket’ and be able to actually use the ticket display page to see it, but not have it show up in their 10 newest tickets page.

The context behind this is i need privaleged users to submit tickets to queues that they do not manage. Typically that user would not have access to view tickets in that queue. The change i want to make is that the affected user would ‘escalate the ticket to another queue’ and if they have requestor or Watcher privaleges, they can still view the ticket, but i do not want it showing up in their 10 newest list.

The way i envision this is in the ticket display page another conditional statement would check for 'see ticket; as well as 'load ticket; to decide whether this user can view the ticket.

Essentially, it distinguishes between a user who actively should manage the ticket, or a user who is ‘following’ the ticket through completion. Aditionally, i would like to permit the user to comment / reply via setting permissions as well. Perhaps even adding another permission level.

I am inquiring what is required to do this:

Potentially it is already possible with the current libraries and permissions ability, if not, where should i add these levels and what is the most appropriate way to do this… if this is the route to take, i understgand a fair amount of code editing is necessary, which is perfectly acceptable. If this is the route to take, i am looking for the code level detail of what needs to be done, or atleast what objects / database elements i need to pay attention to. Finally, if the code change will be necessary, i want to make sure to make this change globally, not to just one specific functional area in RT so how far reaching is this.

If a code chaneg is necessary, i will post my final tested and QA’ed code to this user group as this seems to be functionality others can use, especially when implimenting this in an ‘enterprse’ environment.