[interchange] New "rawsort" attribute, fixed sort attribute whitespace problem.

Peter Ajamian <[email protected]>
Newsgroups gmane.comp.web.interchange.cvs
Message-ID <[email protected]>
commit a0cf98858c613303984fb3f20765cf520a45f5c4
Author: Peter Ajamian <[email protected]>
Date:   Thu Dec 15 22:01:37 2011 +1300

    New "rawsort" attribute, fixed sort attribute whitespace problem.
    
    New "rawsort" attribute allows you to pass a verbatim sort to the SQL database
    without any parsing by Interchange.  This allows you to do things like this:
    
    Options Simple sort CAST(o_sort AS int)
    Options Simple rawsort 1
    
    ...the above would sort option widgets based on teh o_sort attribute and force
    a numeric sort.  There are numerous other possibilities of how you might want
    to use this as well.
    
    The existing find_sort routine returned the "ORDER BY ..." without any leading
    whitespace, and was tacked onto the end of the sql query in Simple.pm without
    any trailing whitespace thus causing a syntax error in the generated SQL.  This
    is now fixed by adding a leading space onto the returned value of find_sort().

 lib/Vend/Options.pm |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
---
diff --git a/lib/Vend/Options.pm b/lib/Vend/Options.pm
index 827d99c..3d0d898 100644
--- a/lib/Vend/Options.pm
+++ b/lib/Vend/Options.pm
@@ -165,6 +165,7 @@ sub find_sort {
 #::logDebug("called find_sort from " . scalar(caller()) . ", opt=" . ::uneval($opt));
 	$opt->{sort} = defined $opt->{sort} ? $opt->{sort} : $loc->{sort};
 	return '' unless $opt->{sort};
+	return " ORDER BY $opt->{sort}" if $opt->{rawsort} || $loc->{rawsort};
 	my @fields = split /\s*,\s*/, $opt->{sort};
 	my $map = $loc->{map} ||= {};
 	for(@fields) {
@@ -182,7 +183,7 @@ sub find_sort {
 		$_ .= $extra if $extra;
 	}
 
-	return "ORDER BY " . join(",", @fields);
+	return " ORDER BY " . join(",", @fields);
 }
 
 sub tag_options {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.