Changeset 297
- Timestamp:
- 01/12/11 14:10:48 (13 years ago)
- Location:
- server/trunk/web/lib/Sophie/Controller
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
server/trunk/web/lib/Sophie/Controller/Chat/Cmd.pm
r292 r297 982 982 } 983 983 984 =head2 nb_rpm [-d distrib] NAME 985 986 Show the count of rpm maintains by packager matching C<NAME>. 987 988 =cut 989 990 sub nb_rpm : XMLRPC { 991 my ($self, $c, $reqspec, @args) = @_; 992 my @message; 993 my $dist = { distribution => $reqspec->{distribution} }; 994 @args = @{ $c->forward('_getopt', [ 995 { 996 'd=s' => \$dist->{distribution}, 997 }, @args ]) }; 998 if (!$c->forward('/distrib/exists', [ $dist ])) { 999 return $c->stash->{xmlrpc} = { 1000 message => [ "I don't have such distribution" ] 1001 }; 1002 } 1003 1004 my $maints = $c->forward('/maintainers/search', 1005 [ $args[0], $dist->{distribution} ]); 1006 if (@$maints > 3) { 1007 return $c->stash->{xmlrpc} = { 1008 message => [ 1009 scalar(@$maints) . " maintainers found matching `$args[0]'" 1010 ] 1011 }; 1012 } elsif (! @$maints) { 1013 return $c->stash->{xmlrpc} = { 1014 message => [ "No maintainers found matching `$args[0]'" ] 1015 }; 1016 } else { 1017 my @messages; 1018 foreach (@$maints) { 1019 my $rpms = $c->forward('/maintainers/bymaintainer', [ 1020 $_->{owner}, $dist->{distribution} ]); 1021 push(@messages, sprintf('%s (%s) maintains %d rpms', 1022 $_->{owner}, 1023 $_->{vendor}, 1024 scalar(@$rpms), 1025 ) 1026 ); 1027 } 1028 return $c->stash->{xmlrpc} = { 1029 message => \@messages, 1030 }; 1031 } 1032 } 1033 984 1034 =head1 AUTHOR 985 1035 -
server/trunk/web/lib/Sophie/Controller/Maintainers.pm
r164 r297 74 74 } 75 75 76 sub bymaintainer : XMLRPC { 77 my ($self, $c, $maint, $distrib) = @_; 78 $c->stash->{xmlrpc} = [ map { { $_->get_columns } } 79 $c->model('Base::MaintRpm')-> 80 search( 81 { owner => $maint }, 82 { select => [ qw(rpm) ] }, 83 )-> 84 search_related('MaintSources')-> 85 search_related('MaintDistrib')-> 86 search_related('Distribution', 87 $distrib ? { 88 '-or' => [ 89 { shortname => $distrib }, 90 { name => $distrib }, 91 ], 92 } : (), 93 )->search({}, 94 { 95 'select' => [ qw'rpm name label' ], 96 'as' => [ qw'rpm distribution vendor' ], 97 } 98 )->all ]; 99 100 } 101 102 sub search :XMLRPC { 103 my ($self, $c, $maint, $distrib) = @_; 104 105 $c->stash->{xmlrpc} = [ map { { $_->get_columns } } 106 $c->model('Base::MaintRpm')->search( 107 { owner => { 'LIKE' => "%$maint%" } } 108 )->search_related('MaintSources' 109 )->search_related('MaintDistrib' 110 )->search_related('Distribution', 111 $distrib ? { 112 '-or' => [ 113 { shortname => $distrib }, 114 { name => $distrib }, 115 ], 116 } : (), 117 )->search({}, 118 { 119 'select' => [ qw'owner name label' ], 120 'as' => [ qw'owner distribution vendor' ], 121 'group_by' => [ qw'owner name label' ], 122 'order_by' => [ qw'owner name label' ], 123 } 124 )->all ]; 125 } 76 126 77 127 =head1 AUTHOR
Note: See TracChangeset
for help on using the changeset viewer.