On Tue, Jun 15, 2010 at 02:20:45PM -0400, scott 2600 wrote: > Hello - > > We run a call center for our local schools. One thing we have done recently > is create a web based system for our interns that man the helpdesk so they > receive a call with a problem, obtain the user's email address and are able > to pull up all kinds of information about their district (outages in > district, past tickets and open tickets for the user etc). > > Everything works great, except if the user has never submitted a ticket in > RT. > > What I had started with was creating a new entry in the USERS table for > them. I missed groupmembers and cachedgroupmembers - but I think I want to > abandon touching the db direct and using the API (I did the db direct for > expediency for our needs). > > So I need help working with the RT::User API. Maybe this is just a Perl > 101 lesson, but where do I find how to use the calls that are available in > there? Is there a good spot that has some code examples on how to use that > ? I have the book RT Essentials and I see it exists, but haven't put > together how to use any of the f unctions (or what they are), and a Google > search didn't yield what I needed either. > > I appreciate any and all suggestions. >
Short and incomplete explanation: every RT objects (User, Groups, Users, Groups, Ticket, ...) are documented in corresponding file in lib/RT/....pm, for example perldoc lib/RT/User_Overlay.pm. But the easiest way to start understanding how it could be used is to look at code used in mason templates, for example share/html/Admin/Users/Modify.html. You can also find examples in scrips actions/conditions provided at http://wiki.bestpractical.com/. In your case, creating a new user can be done with something like: my $User = RT::User->new( $RT::SystemUser ); my ($val, $msg) = $User->LoadOrCreateByEmail( 'hi_addr...@email' ); unless ( $val ) { warn "Couldn't create or load user: $msg\n"; } but if you wan't to create it with specific Name, RealName, ... you have to: first check if it doesn't already exists with $User->Load(...) or $User->LoadByEmail(...);, then create it with $User->Create(...) Discover RT's hidden secrets with RT Essentials from O'Reilly Media. Buy a copy at http://rtbook.bestpractical.com