Commit 850bcf4c authored by Bas de Nooijer's avatar Bas de Nooijer

Added support for query placeholders to the select query, filterquery and facet query classes

parent c14a5f2f
...@@ -188,10 +188,15 @@ class Solarium_Query_Select extends Solarium_Query ...@@ -188,10 +188,15 @@ class Solarium_Query_Select extends Solarium_Query
* escaping of user input. * escaping of user input.
* *
* @param string $query * @param string $query
* @param array $bind Bind values for placeholders in the query string
* @return Solarium_Query_Select Provides fluent interface * @return Solarium_Query_Select Provides fluent interface
*/ */
public function setQuery($query) public function setQuery($query, $bind = null)
{ {
if (!is_null($bind)) {
$query = $this->getHelper()->assemble($query, $bind);
}
return $this->_setOption('query', trim($query)); return $this->_setOption('query', trim($query));
} }
......
...@@ -72,10 +72,16 @@ class Solarium_Query_Select_Component_Facet_Query extends Solarium_Query_Select_ ...@@ -72,10 +72,16 @@ class Solarium_Query_Select_Component_Facet_Query extends Solarium_Query_Select_
* This overwrites the current value * This overwrites the current value
* *
* @param string $query * @param string $query
* @param array $bind Bind values for placeholders in the query string
* @return Solarium_Query_Select_Facet_Query Provides fluent interface * @return Solarium_Query_Select_Facet_Query Provides fluent interface
*/ */
public function setQuery($query) public function setQuery($query, $bind = null)
{ {
if (!is_null($bind)) {
$helper = new Solarium_Query_Helper;
$query = $helper->assemble($query, $bind);
}
return $this->_setOption('query', $query); return $this->_setOption('query', $query);
} }
......
...@@ -111,10 +111,16 @@ class Solarium_Query_Select_FilterQuery extends Solarium_Configurable ...@@ -111,10 +111,16 @@ class Solarium_Query_Select_FilterQuery extends Solarium_Configurable
* This overwrites the current value * This overwrites the current value
* *
* @param string $query * @param string $query
* @param array $bind Bind values for placeholders in the query string
* @return Solarium_Query Provides fluent interface * @return Solarium_Query Provides fluent interface
*/ */
public function setQuery($query) public function setQuery($query, $bind = null)
{ {
if (!is_null($bind)) {
$helper = new Solarium_Query_Helper;
$query = $helper->assemble($query, $bind);
}
$this->_query = trim($query); $this->_query = trim($query);
return $this; return $this;
} }
......
...@@ -71,5 +71,9 @@ class Solarium_Query_Select_Component_Facet_QueryTest extends PHPUnit_Framework_ ...@@ -71,5 +71,9 @@ class Solarium_Query_Select_Component_Facet_QueryTest extends PHPUnit_Framework_
$this->assertEquals('category:1', $this->_facet->getQuery()); $this->assertEquals('category:1', $this->_facet->getQuery());
} }
public function testSetAndGetQueryWithBind()
{
$this->_facet->setQuery('id:%1%', array(678));
$this->assertEquals('id:678', $this->_facet->getQuery());
}
} }
...@@ -69,6 +69,12 @@ class Solarium_Query_Select_FilterQueryTest extends PHPUnit_Framework_TestCase ...@@ -69,6 +69,12 @@ class Solarium_Query_Select_FilterQueryTest extends PHPUnit_Framework_TestCase
$this->assertEquals('category:1', $this->_filterQuery->getQuery()); $this->assertEquals('category:1', $this->_filterQuery->getQuery());
} }
public function testSetAndGetQueryWithBind()
{
$this->_filterQuery->setQuery('id:%1%', array(678));
$this->assertEquals('id:678', $this->_filterQuery->getQuery());
}
public function testAddTag() public function testAddTag()
{ {
$this->_filterQuery->addTag('testtag'); $this->_filterQuery->addTag('testtag');
......
...@@ -56,6 +56,12 @@ class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase ...@@ -56,6 +56,12 @@ class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase
$this->assertEquals('*:*', $this->_query->getQuery()); $this->assertEquals('*:*', $this->_query->getQuery());
} }
public function testSetAndGetQueryWithBind()
{
$this->_query->setQuery('id:%1%', array(678));
$this->assertEquals('id:678', $this->_query->getQuery());
}
public function testSetAndGetResultClass() public function testSetAndGetResultClass()
{ {
$this->_query->setResultClass('MyResult'); $this->_query->setResultClass('MyResult');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment