@@ -19,7 +19,7 @@ limitations under the License.
1919
2020package EnsEMBL::Web::Controller::Psychic ;
2121
22- # ## Psychic search - tries to guess where the user wanted to go
22+ # ## Psychic search - tries to guess where the user wanted to go
2323# ## based on analysis of the search string!
2424
2525use strict;
@@ -39,10 +39,28 @@ sub process {
3939 }
4040}
4141
42+ # Guess what a user is searching for and redirect
4243sub psychic {
44+ my $self = shift ;
45+
46+ my $url = $self -> _psychic();
47+ return $self -> redirect($url );
48+ }
49+
50+ # Guess what a user is searching for.
51+ # Returns a URL, does not redirect
52+ sub psychic_no_redir {
53+ my $self = shift ;
54+
55+ my $url = $self -> _psychic();
56+ return $url ;
57+ }
58+
59+ sub _psychic {
4360 my $self = shift ;
44- my $hub = $self -> hub;
45- my $species_defs = $self -> species_defs;
61+
62+ my $hub = $self -> hub;
63+ my $species_defs = $hub -> species_defs;
4664 my $site_type = lc $species_defs -> ENSEMBL_SITETYPE;
4765 my $script = ' Search/Results' ;
4866 my %sp_hash = %{$species_defs -> multi_val(' ENSEMBL_SPECIES_URL_MAP' )||{}};
@@ -68,9 +86,9 @@ sub psychic {
6886 push @extra ," facet_feature_type=Documentation" if $species eq ' help' ;
6987 $species = undef if $dest_site =~ / _all/ or $species eq ' help' ;
7088
71- return $self -> redirect( " //www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$query " ) if $dest_site eq ' ebi' ;
72- return $self -> redirect( " //www.sanger.ac.uk/search?db=allsanger&t=$query " ) if $dest_site eq ' sanger' ;
73- return $self -> redirect( " //www.ensemblgenomes.org/search/eg/$query " ) if $dest_site eq ' ensembl_genomes' ;
89+ return " //www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$query " if $dest_site eq ' ebi' ;
90+ return " //www.sanger.ac.uk/search?db=allsanger&t=$query " if $dest_site eq ' sanger' ;
91+ return " //www.ensemblgenomes.org/search/eg/$query " if $dest_site eq ' ensembl_genomes' ;
7492
7593 my $extra = ' ' ;
7694 if (@extra ) {
@@ -90,7 +108,7 @@ sub psychic {
90108 }
91109 } elsif ($site_type eq ' vega' ) {
92110 $url = " /Multi/Search/Results?species=all&idx=All&q=$query " ;
93- $site = ' //www.ensembl.org' ;
111+ $site = ' //www.ensembl.org' ;
94112 }
95113
96114 my $flag = 0;
@@ -104,7 +122,7 @@ sub psychic {
104122 $query_without_species =~ s / ^ // ;
105123 $query_species = $sp ;
106124 }
107- }
125+ }
108126
109127 my $species_path = $species_defs -> species_path($species ) || " /$species " ;
110128
@@ -113,12 +131,12 @@ sub psychic {
113131
114132 if ($query =~ / ^rs\d +$ / ) {
115133
116- return $self -> redirect( $ site .$hub -> url({
134+ return $site .$hub -> url({
117135 ' species' => $species || $query_species ,
118136 ' type' => ' Variation' ,
119137 ' action' => ' Explore' ,
120138 ' v' => $query
121- })) ;
139+ });
122140 }
123141
124142 my $real_chrs = $hub -> species_defs-> ENSEMBL_CHROMOSOMES;
@@ -140,7 +158,7 @@ sub psychic {
140158 $index_t = ' Sequence' ;
141159 $flag = $1 ;
142160 }
143-
161+
144162 # # match any of the following:
145163 if ($jump_query =~ / ^\s *([-\.\w ]+)[:]/i ) {
146164 # using core api to return location value (see perl documentation for core to see the available combination)
@@ -228,12 +246,12 @@ sub psychic {
228246 if (defined $variant ){
229247 my $variant_name = $variant -> name();
230248 $flag = 1;
231- return $self -> redirect( $ site .$hub -> url({
249+ return $site .$hub -> url({
232250 ' species' => ' human' ,
233251 ' type' => ' Variation' ,
234252 ' action' => ' Explore' ,
235253 ' v' => $variant_name
236- })) ;
254+ });
237255 }
238256 }
239257 }
@@ -248,12 +266,12 @@ sub psychic {
248266 if (defined $variant ){
249267 my $variant_name = $variant -> name();
250268 $flag = 1;
251- return $self -> redirect( $ site .$hub -> url({
269+ return $site .$hub -> url({
252270 ' species' => ' human' ,
253271 ' type' => ' Variation' ,
254272 ' action' => ' Explore' ,
255273 ' v' => $variant_name
256- })) ;
274+ });
257275 }
258276 }
259277 }
@@ -279,7 +297,7 @@ sub psychic {
279297 $url .= join (" ;" ,map {; " $_ =" .$hub -> param($_ ) } @params ).$extra ;
280298 }
281299
282- $self -> redirect( $ site . $url ) ;
300+ return $ site . $url ;
283301}
284302
285303sub psychic_gene_location {
@@ -289,7 +307,7 @@ sub psychic_gene_location {
289307 my $adaptor = $hub -> get_adaptor(' get_GeneAdaptor' , $hub -> param(' db' ));
290308 my $gene = $adaptor -> fetch_by_stable_id($query ) || $adaptor -> fetch_by_display_label($query );
291309 my $url ;
292-
310+
293311 if ($gene ) {
294312 $url = $hub -> url({
295313 %{$hub -> multi_params(0)},
@@ -299,7 +317,7 @@ sub psychic_gene_location {
299317 });
300318 } else {
301319 $url = $hub -> referer-> {' absolute_url' };
302-
320+
303321 $hub -> session-> set_record_data({
304322 type => ' message' ,
305323 function => ' _warning' ,
@@ -308,7 +326,7 @@ sub psychic_gene_location {
308326 });
309327 $hub -> session-> store_records;
310328 }
311-
329+
312330 $self -> redirect($url );
313331}
314332
0 commit comments