|
From: <rd...@us...> - 2009-01-20 18:11:34
|
Revision: 1966
http://digir.svn.sourceforge.net/digir/?rev=1966&view=rev
Author: rdg
Date: 2009-01-20 18:11:30 +0000 (Tue, 20 Jan 2009)
Log Message:
-----------
Added support to "IN" operator in KVP filters.
Modified Paths:
--------------
tapirlink/trunk/ChangeLog.txt
tapirlink/trunk/classes/TpFilter.php
Modified: tapirlink/trunk/ChangeLog.txt
===================================================================
--- tapirlink/trunk/ChangeLog.txt 2009-01-09 17:39:46 UTC (rev 1965)
+++ tapirlink/trunk/ChangeLog.txt 2009-01-20 18:11:30 UTC (rev 1966)
@@ -18,6 +18,7 @@
application/rdf+xml.
* When a search returns no content and the envelope is turned off, TapirLink
now returns HTTP 204 (No Content).
+ * Added support to "IN" operator in KVP filters.
Release 0.6.1 (2008-08-01)
--------------------------
Modified: tapirlink/trunk/classes/TpFilter.php
===================================================================
--- tapirlink/trunk/classes/TpFilter.php 2009-01-09 17:39:46 UTC (rev 1965)
+++ tapirlink/trunk/classes/TpFilter.php 2009-01-20 18:11:30 UTC (rev 1966)
@@ -703,12 +703,40 @@
}
else if ( $opClass == 'in' )
{
- $error = "Invalid filter: Operator 'in' cannot be used in KVP requests";
- TpDiagnostics::Append( DC_INVALID_FILTER, $error, DIAG_ERROR );
+ $num_tokens = count( $tokens );
- $this->mIsValid = false;
+ if ( $num_tokens < 3 )
+ {
+ $error = "Invalid filter: wrong number of arguments to comparison ".
+ "operator '$opClass'";
+ TpDiagnostics::Append( DC_INVALID_FILTER, $error, DIAG_ERROR );
- return null;
+ $this->mIsValid = false;
+
+ return null;
+ }
+
+ $op = new TpComparisonOperator( COP_IN );
+
+ // Set base concept
+ if ( is_object( $tokens[$idx-1] ) and
+ strtolower( get_class( $tokens[$idx-1] ) ) == 'tpexpression' and
+ $tokens[$idx-1]->GetType() == EXP_CONCEPT )
+ {
+ $op->SetExpression( $tokens[$idx-1] );
+ }
+
+ // Set arguments
+ for ( $i = 2; $i < $num_tokens; ++$i )
+ {
+ $el = $tokens[$i];
+
+ if ( is_object( $el ) and
+ strtolower( get_class( $el ) ) == 'tpexpression' )
+ {
+ $op->SetExpression( $el );
+ }
+ }
}
return $op;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|