[rt-users] getting username from id

Ruslan Zakirov ruslan.zakirov at gmail.com
Fri Mar 30 12:58:48 EDT 2007


On 3/30/07, Mathew <theillien at yahoo.com> wrote:
> Ruslan Zakirov wrote:
> > On 3/29/07, Mathew Snyder <theillien at yahoo.com> wrote:
> >> I've been working on a script for a while and finally have it working
> >> more or
> >> less the way I need it to.  The last thing (besides file formatting)
> >> is to get
> >> the usernames.  I'm getting the users via LimitToPrivileged in
> >> Users.pm.  In
> >> another script I proved to myself that I can get the names using the
> >> ->Name method:
> >>
> >> my $users = new RT::Users(RT::SystemUser);
> >> $users->LimitToPrivileged;
> >>
> >> while ( my $user = $users->Next ) {
> >>         next if $user->Name eq 'root';
> >>         print $user->Name . "\n";
> >> }
> >>
> >> exit;
> >>
> >> However, when I try to use the same method to populate a hash I get
> >> the error
> >> indicating "Can't call method "Name" without a package or object
> >> reference at
> >> ./user_timesheet_3.pl line 65."
> >>
> >> This is the block of code in contention:
> >>
> >> my $users = new RT::Users(RT::SystemUser);
> >> $users->LimitToPrivileged;
> > delete this you don't need it.
>
> But If I don't use it I get all the users.  Even watchers.  I just want
> the users that we have internally.  These are the only people we're
> concerned about as far as time worked goes.

see comment below.

>
> >
> >>
> >> while (my $ticket = $tix->Next) {
> >>     my $environment = $ticket->FirstCustomFieldValue('Environment');
> >>     my $user;
> > this ^^^ line is also useless
>
> Yeah, I forgot to remove that before I posted.  I got rid of it in the
> actual script when I realized it is redundant.
>
> >
> >>     unless ($environment) {
> >>         warn "warning " . $ticket->id. " has no environment";
> >>              next
> >>     }
> >>
> >>     my $transactions = $ticket->Transactions;
> >>     while (my $transaction = $transactions->Next) {
> >>         next unless ($transaction->TimeTaken);
> >
> >>         while (my $user = $users->Next) {
> >>             if ($user = $transaction->Creator) {
> >>                 $timeworked{$user} += $transaction->TimeTaken;
> >>             }
> >>             $environment{$environment}{$user->Name} = $timeworked{$user};
> >>         }
> > instead of above block use the following code:
> >            my $creator = $transactions->CreatorObj;
> >            $timeworked{ $creator->Name } += $transaction->TimeTaken;
> >            $environment{$environment}{ $creator->Name } +=
> > $transaction->TimeTaken;
>
> Which block specifically?  The while (my $user = $users->Next) block?
yes.

If you're interested in privileged users only then you can use something like:
next unless $creator_obj->Privileged;


>
> >
> >>     }
> >> }
> >>
> >> foreach my $key (sort keys %environment) {
> >>         print $key, "\n";
> >>         print ("-" x 15);
> >>         print "\n";
> >>         foreach my $key2 (keys %{ $environment{$key} }) {
> >>                 print "$key2 -> $environment{$key}{$key2}\n";
> >>         }
> >>         print "\n";
> >> }
> >>
> >> Can anyone help me correct this?
> >>
> >> Mathew
> >> _______________________________________________
> >> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users
> >>
> >> Community help: http://wiki.bestpractical.com
> >> Commercial support: sales at bestpractical.com
> >>
> >>
> >> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.
> >> Buy a copy at http://rtbook.bestpractical.com
> >>
> >
> >
>
>
> Thank you all for the help.  I do seriously appreciate it.
>
> Mathew
>


-- 
Best regards, Ruslan.



More information about the rt-users mailing list