# returns a string for a single crossover. The input is a hash ref. sub get_crossover { my ($crossover) = @_; my $episode = $crossover->{'episode'}; my $season = $crossover->{'season'}; my $program = $crossover->{'movie'}; my $cseries = $crossover->{'series'}; my $crossover_text = undef; if ($episode || $season || $program || $cseries) { my $season_text = $season ? "season $season" : undef; my $episode_text = $episode ? textify(qq( "$episode")) : ''; my $search = $cseries ? $cseries : $program ? $program : undef; my $id = $cseries && $series->{$cseries} ? [grep(defined,($program,$season_text))] : $program && $movies->{$program} && $season_text ? [$season_text] : undef; $crossover_text = search_link($search,$id).qq($episode_text); } return $crossover_text; } #### # creates a link to the Movies_by_series page. It is used in series_text, get_crossover, and elsewhere. sub search_link { my ($movie, $id) = @_; my $search = undef; my $texti = textify($movie); if (($series->{$movie} && $id) || ($movies->{$movie} && $id)) { $search = searchify($movie,$id); $texti = $movies->{$id->[0]} ? textify($id->[0]) : textify($movie); } elsif($series->{$movie} || $movies->{$movie}) { $search = searchify($movie); } my $text = "$texti"; my $root_link = get_root('link'); my $search_text = $search ? anchor($text, { 'href' => "$root_link/Movies/Movies_by_series.pl?series=$search" }) : $text; return $search_text; } #### # returns the title in italics and the start year in parentheses. sub display_simple_movie { my ($imovie) = @_; my $movie = movie($imovie, 'display_simple_movie'); my $title = textify($imovie); my $start = $movie->{'start year'} ? $movie->{'start year'} : undef; my $item; if ($movie->{'series'}) { my $group; if (@{$movie->{'series'}} > 1) { ($group) = sort { scalar @{$series->{$b}{'programs'}} <=> scalar @{$series->{$a}{'programs'}} } @{$movie->{'series'}}; } else { $group = $movie->{'series'}[0]; } $item = search_link($group, [$movie->{'title'}]); } elsif ($movie->{'seasons'}) { $item = search_link($movie->{'title'}); } else { $item = "$title"; } $item .= $start ? " ($start)" : undef; return $item; } #### # returns the title in italics and the start year in parentheses. sub display_simple_movie { my ($movie) = @_; my $title = textify($movie->{'title'}); my $start = $movie->{'start year'} ? $movie->{'start year'} : undef; my $item; if ($movie->{'series'}) { my $group; my @list = keys %{$movie->{'series'}}; if (keys %{$movie->{'series'}} > 1) { ($group) = sort { $movie->{'series'}{$b} <=> $movie->{'series'}{$a} } keys %{$movie->{'series'}}; } else { $group = $list[0]; } $item = search_link($group, [$movie->{'title'}]); } elsif ($movie->{'seasons'}) { $item = search_link($movie->{'title'}); } else { $item = "$title"; } $item .= $start ? " ($start)" : undef; return $item; }