Changeset 55 for server/trunk
- Timestamp:
- 12/01/10 01:43:14 (14 years ago)
- Location:
- server/trunk/web/lib/Sophie/Controller
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
server/trunk/web/lib/Sophie/Controller/Distrib.pm
r54 r55 52 52 53 53 sub struct :XMLRPC { 54 my ( $self, $c, $distrib, $release, $arch ) = @_; 55 56 my $distribution; 57 if (ref $distrib) { 58 ($distribution, $release, $arch) = ( 59 $distrib->{distribution}, 60 $distrib->{release}, 61 $distrib->{arch}, 62 ); 63 } else { 64 $distribution = $distrib; 65 } 66 67 my $rs = $c->model('Base')->resultset('Distribution') 68 ->search(name => $distribution) 69 ->search_related('Release', { version => $release }) 70 ->search_related('Arch', { arch => $arch }) 71 ->search_related('Medias')->search({}, { order_by => 'label' }); 54 my ( $self, $c, $distribution, $release, $arch ) = @_; 55 56 if (!ref $distribution) { 57 $distribution = { 58 distribution => $distribution, 59 release => $release, 60 arch => $arch, 61 } 62 } 63 64 my $rs = $c->forward('distrib_rs', [ $distribution ]) 65 ->search({}, { order_by => 'label' }); 72 66 $c->stash->{xmlrpc} = [ map { 73 67 { … … 86 80 ? (name => $distrib->{distribution}) 87 81 : () 88 } 82 }, 89 83 )->search_related('Release', 90 84 { … … 105 99 ? (group_label => $distrib->{media_group}) 106 100 : ()), 107 } 101 }, 108 102 ); 109 103 } 104 110 105 111 106 sub exists : XMLRPC { … … 294 289 $c->stash->{dist}{src} = 1; 295 290 ($c->stash->{pkgid}) = @{ $c->forward('/search/bytag', 296 [ $c->stash->{dist}, 'name', $name ]) };291 [ $c->stash->{dist}, 'name', $name ])->{results} }; 297 292 $c->go('/404/index') unless ($c->stash->{pkgid}); 298 293 $c->go('/rpms/rpms', [ $c->stash->{pkgid} ]); … … 311 306 my ( $self, $c, $pkgid ) = @_; 312 307 if ($pkgid) { 313 $c->go('/rpms/rpms', [ $pkgid ]); 308 if (@{ $c->forward('/search/bypkgid', [ $c->stash->{dist}, $pkgid ]) } ) { 309 $c->go('/rpms/rpms', [ $pkgid ]); 310 } else { 311 $c->go('/404/index'); 312 } 314 313 } else { 315 314 $c->forward('anyrpms', [ $c->stash->{dist} ]); … … 337 336 my ( $self, $c, $pkgid ) = @_; 338 337 if ($pkgid) { 339 $c->go('/rpms/rpms', [ $pkgid ]); 338 if (@{ $c->forward('/search/bypkgid', [ $c->stash->{dist}, $pkgid ]) } ) { 339 $c->go('/rpms/rpms', [ $pkgid ]); 340 } else { 341 $c->go('/404/index'); 342 } 340 343 } else { 341 344 $c->forward('anyrpms', [ $c->stash->{dist} ]); -
server/trunk/web/lib/Sophie/Controller/Search.pm
r53 r55 72 72 } 73 73 74 sub format_search : Private { 75 my ( $self, $c, $searchspec ) = @_; 76 77 my $rs = $c->stash->{rs}->search( 78 {}, 79 { 80 page => $searchspec->{page} || 1, 81 rows => $searchspec->{rows} || 10, 82 }, 83 ); 84 85 if (!$searchspec->{page}) { 86 my $pager = $rs->pager; 87 $c->stash->{xmlrpc} = { 88 pages => $pager->last_page, 89 current_page => $pager->current_page, 90 total_entries => $pager->total_entries, 91 entries_per_page => $pager->entries_per_page, 92 }; 93 } 94 $c->stash->{xmlrpc}{results} = [ $rs->get_column('pkgid')->all ]; 95 } 96 97 sub bypkgid : XMLRPCPath('/search/rpm/bypkgid') { 98 my ( $self, $c, $searchspec, $pkgid ) = @_; 99 100 $c->stash->{rs} = $c->model('Base')->resultset('Rpms')->search( 101 { 102 -and => [ 103 (exists($searchspec->{src}) 104 ? { issrc => $searchspec->{src} ? 1 : 0 } 105 : ()), 106 { pkgid => $pkgid }, 107 { pkgid => 108 { IN => $c->forward('distrib_search', [ $searchspec 109 ])->get_column('pkgid')->as_query, }, 110 }, 111 ] 112 }, 113 ); 114 115 $c->forward('format_search', $searchspec); 116 } 117 74 118 sub bytag : XMLRPCPath('/search/rpm/bytag') { 75 119 my ( $self, $c, $searchspec, $tag, $tagvalue ) = @_; … … 78 122 ->search({ tagname => lc($tag), value => $tagvalue}) 79 123 ->get_column('pkgid'); 80 $c->stash->{ xmlrpc} = [$c->model('Base')->resultset('Rpms')->search(124 $c->stash->{rs} = $c->model('Base')->resultset('Rpms')->search( 81 125 { 82 126 -and => [ … … 93 137 ] 94 138 }, 95 $c->forward('search_param'),96 )->get_column('pkgid')->all ]139 ); 140 $c->forward('format_search', $searchspec); 97 141 98 142 } … … 114 158 } 115 159 )->get_column('pkgid'); 116 $c->stash->{ xmlrpc} = [$c->model('Base')->resultset('Rpms')->search(160 $c->stash->{rs} = $c->model('Base')->resultset('Rpms')->search( 117 161 { 118 162 -and => [ … … 129 173 ] 130 174 }, 131 $c->forward('search_param'),132 )->get_column('pkgid')->all ]175 ); 176 $c->forward('format_search', $searchspec); 133 177 } 134 178 … … 145 189 }) 146 190 ->get_column('pkgid'); 147 $c->stash->{ xmlrpc} = [$c->model('Base')->resultset('Rpms')->search(191 $c->stash->{rs} = $c->model('Base')->resultset('Rpms')->search( 148 192 { 149 193 -and => [ … … 160 204 ] 161 205 }, 162 $c->forward('search_param'),163 )->get_column('pkgid')->all ]206 ); 207 $c->forward('format_search', $searchspec); 164 208 } 165 209 … … 183 227 { '~*' => $name, }, 184 228 }, 185 { pkgid => 186 { IN => $deprs->as_query, }, 187 }, ] 229 # { pkgid => 230 # { IN => $deprs->as_query, }, 231 # }, 232 ] 188 233 }, 189 234 { pkgid => … … 196 241 ); 197 242 198 if ($c->req->xmlrpc->method) { 199 $c->stash->{xmlrpc} = [ 200 $c->stash->{rs}->get_column('pkgid')->all 201 ]; 202 } 243 $c->forward('format_search', $searchspec); 203 244 } 204 245 … … 230 271 }, 231 272 ); 232 if ($c->req->xmlrpc->method) { 233 $c->stash->{xmlrpc} = [ 234 $c->stash->{rs}->get_column('pkgid')->all 235 ]; 236 } 273 $c->forward('format_search', $searchspec); 237 274 } 238 275 … … 265 302 }, 266 303 ); 267 if ($c->req->xmlrpc->method) { 268 $c->stash->{xmlrpc} = [ 269 $c->stash->{rs}->get_column('pkgid')->all 270 ]; 271 } 304 $c->forward('format_search', $searchspec); 272 305 } 273 306
Note: See TracChangeset
for help on using the changeset viewer.