Commit b828c3b0 authored by Juergen Vogel's avatar Juergen Vogel

Added exculde functionality to stats component

parent f602c202
......@@ -52,6 +52,13 @@ class Field extends Configurable
*/
protected $facets = array();
/**
* Exclude tags for this stat
*
* @var array
*/
protected $excludes = array();
/**
* Initialize options
*
......@@ -67,6 +74,13 @@ class Field extends Configurable
case 'facet':
$this->setFacets($value);
break;
case 'exclude':
if (!is_array($value)) {
$value = array($value);
}
$this->setExcludes($value);
unset($this->options['exclude']);
break;
}
}
}
......@@ -179,4 +193,83 @@ class Field extends Configurable
return $this;
}
}
/**
* Add an exclude tag
*
* @param string $tag
* @return self Provides fluent interface
*/
public function addExclude($tag)
{
$this->excludes[$tag] = true;
return $this;
}
/**
* Add multiple exclude tags
*
* @param array $excludes
* @return self Provides fluent interface
*/
public function addExcludes(array $excludes)
{
foreach ($excludes as $exclude) {
$this->addExclude($exclude);
}
return $this;
}
/**
* Get all excludes
*
* @return array
*/
public function getExcludes()
{
return array_keys($this->excludes);
}
/**
* Remove a single exclude tag
*
* @param string $exclude
* @return self Provides fluent interface
*/
public function removeExclude($exclude)
{
if (isset($this->excludes[$exclude])) {
unset($this->excludes[$exclude]);
}
return $this;
}
/**
* Remove all excludes
*
* @return self Provides fluent interface
*/
public function clearExcludes()
{
$this->excludes = array();
return $this;
}
/**
* Set multiple excludes
*
* This overwrites any existing excludes
*
* @param array $excludes
*/
public function setExcludes($excludes)
{
$this->clearExcludes();
$this->addExcludes($excludes);
}
}
\ No newline at end of file
......@@ -40,11 +40,12 @@ namespace Solarium\QueryType\Select\RequestBuilder\Component;
use Solarium\QueryType\Select\Query\Component\Stats\Stats as StatsComponent;
use Solarium\Core\Client\Request;
use Solarium\Core\Query\RequestBuilder;
/**
* Add select component stats to the request
*/
class Stats implements ComponentRequestBuilderInterface
class Stats extends RequestBuilder
{
/**
* Add request settings for the stats component
......@@ -61,7 +62,12 @@ class Stats implements ComponentRequestBuilderInterface
// add fields
foreach ($component->getFields() as $field) {
$request->addParam('stats.field', $field->getKey());
$value = $this->renderLocalParams(
$field->getKey(),
array('ex' => $field->getExcludes())
);
$request->addParam('stats.field', $value);
// add field specific facet stats
foreach ($field->getFacets() as $facet) {
......@@ -76,4 +82,4 @@ class Stats implements ComponentRequestBuilderInterface
return $request;
}
}
}
\ No newline at end of file
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