* @license http://github.com/basdenooijer/solarium/raw/master/COPYING * @link http://www.solarium-project.org/ * * @package Solarium * @subpackage Query * * TODO * Voorbeeld request: * http://localhost:8983/solr/select?q=*:*&stats=true&stats.field=price&stats.field=popularity * &stats.twopass=true&rows=0&indent=true&stats.facet=inStock&f.price.stats.facet=price * &f.price.stats.facet=popularity */ /** * Stats component field class * * @package Solarium * @subpackage Query */ class Solarium_Query_Select_Component_Stats_Field extends Solarium_Configurable { /** * Field facets (for stats) * * @var array */ protected $_facets = array(); /** * Initialize options * * Several options need some extra checks or setup work, for these options * the setters are called. * * @return void */ protected function _init() { foreach ($this->_options AS $name => $value) { switch ($name) { case 'facet': $this->setFacets($value); break; } } } /** * Get key value * * @return string */ public function getKey() { return $this->getOption('key'); } /** * Set key value * * @param string $value * @return Solarium_Query_Select_Component_Stats Provides fluent interface */ public function setKey($value) { return $this->_setOption('key', $value); } /** * Specify a facet to return in the resultset * * @param string $facet * @return Solarium_Query_Select_Component_Stats Provides fluent interface */ public function addFacet($facet) { $this->_facets[$facet] = true; return $this; } /** * Specify multiple facets to return in the resultset * * @param string|array $facets can be an array or string with comma * separated facetnames * * @return Solarium_Query_Select_Component_Stats Provides fluent interface */ public function addFacets($facets) { if (is_string($facets)) { $facets = explode(',', $facets); $facets = array_map('trim', $facets); } foreach ($facets AS $facet) { $this->addFacet($facet); } return $this; } /** * Remove a facet from the facet list * * @param string $facet * @return Solarium_Query_Select_Component_Stats Provides fluent interface */ public function removeFacet($facet) { if (isset($this->_facets[$facet])) { unset($this->_facets[$facet]); } return $this; } /** * Remove all facets from the facet list. * * @return Solarium_Query_Select_Component_Stats Provides fluent interface */ public function clearFacets() { $this->_facets = array(); return $this; } /** * Get the list of facets * * @return array */ public function getFacets() { return array_keys($this->_facets); } /** * Set multiple facets * * This overwrites any existing facets * * @param array $facets * @return Solarium_Query_Select_Component_Stats Provides fluent interface */ public function setFacets($facets) { $this->clearFacets(); $this->addFacets($facets); return $this; } }