From: <sa...@kr...> - 2007-01-24 18:45:07
|
Revision: 3531 Author: sam Date: 2007-01-24 13:44:51 -0500 (Wed, 24 Jan 2007) Log Message: ----------- Fixed bug where deleting a category which was used in an advanced searched caused an ISE when returning to the advanced search. Modified Paths: -------------- trunk/krang/docs/changelog.pod trunk/krang/lib/Krang/Media.pm trunk/krang/lib/Krang/Story.pm trunk/krang/lib/Krang/Template.pm Modified: trunk/krang/docs/changelog.pod =================================================================== --- trunk/krang/docs/changelog.pod 2007-01-24 18:36:53 UTC (rev 3530) +++ trunk/krang/docs/changelog.pod 2007-01-24 18:44:51 UTC (rev 3531) @@ -9,6 +9,11 @@ =item * +Fixed bug where deleting a category which was used in an advanced +searched caused an ISE when returning to the advanced search. [Sam] + +=item * + Fixed bug where use of URL search on Find Template would result in incorrect substituition of % for non-alphanumeric characters. [Sam] Modified: trunk/krang/lib/Krang/Media.pm =================================================================== --- trunk/krang/lib/Krang/Media.pm 2007-01-24 18:36:53 UTC (rev 3530) +++ trunk/krang/lib/Krang/Media.pm 2007-01-24 18:44:51 UTC (rev 3531) @@ -1004,12 +1004,14 @@ # add ids of category and cats below if below_category_id is passed in if ($args{'below_category_id'}) { my $specd_cat = (pkg('Category')->find(category_id => $args{below_category_id}))[0]; - my @descendants = $specd_cat->descendants( ids_only => 1 ); - unshift @descendants, $specd_cat->category_id; - - $where_string .= " and " if $where_string; - $where_string .= "(". - join(" OR ", map { "media.category_id = $_" } @descendants) .")"; + if ($specd_cat) { + my @descendants = $specd_cat->descendants( ids_only => 1 ); + unshift @descendants, $specd_cat->category_id; + + $where_string .= " and " if $where_string; + $where_string .= "(". + join(" OR ", map { "media.category_id = $_" } @descendants) .")"; + } } # add join to category table if site_id param is passed in. Modified: trunk/krang/lib/Krang/Story.pm =================================================================== --- trunk/krang/lib/Krang/Story.pm 2007-01-24 18:36:53 UTC (rev 3530) +++ trunk/krang/lib/Krang/Story.pm 2007-01-24 18:44:51 UTC (rev 3531) @@ -1123,11 +1123,13 @@ $from{"story_category as sc"} = 1; push(@where, 's.story_id = sc.story_id'); my ($cat) = pkg('Category')->find(category_id => $value); - my @ids = ($value, $cat->descendants( ids_only => 1 )); - push(@where, 's.story_id = sc.story_id'); - push(@where, - 'sc.category_id IN (' . join(',', ('?') x @ids) . ')'); - push(@param, @ids); + if ($cat) { + my @ids = ($value, $cat->descendants( ids_only => 1 )); + push(@where, 's.story_id = sc.story_id'); + push(@where, + 'sc.category_id IN (' . join(',', ('?') x @ids) . ')'); + push(@param, @ids); + } next; } @@ -1136,11 +1138,13 @@ $from{"story_category as sc"} = 1; push(@where, 's.story_id = sc.story_id'); my ($cat) = pkg('Category')->find(category_id => $value); - my @ids = ($value, $cat->descendants( ids_only => 1 )); - push(@where, 's.story_id = sc.story_id AND sc.ord = 0'); - push(@where, - 'sc.category_id IN (' . join(',', ('?') x @ids) . ')'); - push(@param, @ids); + if ($cat) { + my @ids = ($value, $cat->descendants( ids_only => 1 )); + push(@where, 's.story_id = sc.story_id AND sc.ord = 0'); + push(@where, + 'sc.category_id IN (' . join(',', ('?') x @ids) . ')'); + push(@param, @ids); + } next; } Modified: trunk/krang/lib/Krang/Template.pm =================================================================== --- trunk/krang/lib/Krang/Template.pm 2007-01-24 18:36:53 UTC (rev 3530) +++ trunk/krang/lib/Krang/Template.pm 2007-01-24 18:44:51 UTC (rev 3531) @@ -753,11 +753,13 @@ $where_clause .= " ($tmp)"; push @params, @{$args{$arg}}; } elsif ($arg eq 'below_category_id') { - $where_clause = "c.category_id = ? AND " . - "t.url LIKE ?" . ($where_clause ? " AND $where_clause" : ''); my ($cat) = pkg('Category')->find(category_id => $args{$arg}); - unshift @params, $cat->url . "%"; - unshift @params, $args{$arg}; + if ($cat) { + $where_clause = "c.category_id = ? AND " . + "t.url LIKE ?" . ($where_clause ? " AND $where_clause" : ''); + unshift @params, $cat->url . "%"; + unshift @params, $args{$arg}; + } } elsif ($arg eq 'simple_search') { my @words = split(/\s+/, $args{$arg}); for (@words) { |