[Rt-devel] Q: Fixing LinkedTo link searches

Todd Chapman todd at chaka.net
Wed Dec 21 17:37:56 EST 2005


BTW, I am working on this both for RT and AT. That's
why the SQL below shows a join on URI, instead of id.

On Wed, Dec 21, 2005 at 05:10:59PM -0500, Todd Chapman wrote:
> I am looking at fixing search builder so that when
> you do a search on criteria LinkedTo it works.
> 
> Currently LinkedTo is handled by sub _LinkFieldLimit
> which looks to be horribly broken. For example:
> 
> sub _LinkFieldLimit {
>     my $restriction;
>     my $self;
>     my $LinkAlias;
>     my %args;
>     if ( $restriction->{'TYPE'} ) {
>         $self->SUPER::Limit(
>             ALIAS           => $LinkAlias,
>             ENTRYAGGREGATOR => 'AND',
>             FIELD           => 'Type',
>             OPERATOR        => '=',
>             VALUE           => $restriction->{'TYPE'}
>         );
>     }
> 
> 
> Nothing is ever done with %args, and how can we declare
> $restriction and then access it before assigning it?
> 
> So the solution I am pursuing is using sub _LinkLimit
> like the other "specific" link types but adding
> some extra logic for when the link type is LinkedTo.
> 
> Here's what I can't figure out. It's really a search
> builder problem, but I need the join to look like 
> this:
> 
> SELECT DISTINCT main.* FROM (AT_Assets main  LEFT JOIN Links Links_1  ON ( Links_1.Target = main.URI OR Links_1.Base = main.URI))   WHERE ( ( (Links_1.LocalBase IS NULL)OR(Links_1.LocalTarget IS NULL) ) )
> 
> How do I get the OR condition in the join? I don't think
> using the EXPRESSION parameter to Join is going to help
> me.
> 
> Thanks.
> 
> -Todd
> _______________________________________________
> Rt-devel mailing list
> Rt-devel at lists.bestpractical.com
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel


More information about the Rt-devel mailing list