Location: PHPKode > scripts > Fantastic ElasticSearch > wordpress-fantastic-elasticsearch-1.1.2/lib/Elastica/Facet/Abstract.php
<?php
/**
 * Abstract facet object. Should be extended by all facet types
 *
 * @category Xodoa
 * @package Elastica
 * @author Nicolas Ruflin <hide@address.com>
 * @author Jasper van Wanrooy <hide@address.com>
 */
abstract class Elastica_Facet_Abstract extends Elastica_Param
{
    /**
     * Holds the name of the facet.
     * @var string
     */
    protected $_name = '';

    /**
     * Holds all facet parameters.
     * @var array
     */
    protected $_facet = array();

    /**
     * Constructs a Facet object.
     *
     * @param string $name The name of the facet.
     */
    public function __construct($name)
    {
        $this->setName($name);
    }

    /**
     * Sets the name of the facet. It is automatically set by
     * the constructor.
     *
     * @param  string                     $name The name of the facet.
     * @throws Elastica_Exception_Invalid
     * @return Elastica_Facet_Abstract
     */
    public function setName($name)
    {
        if (empty($name)) {
            throw new Elastica_Exception_Invalid('Facet name has to be set');
        }
        $this->_name = $name;

        return $this;
    }

    /**
     * Gets the name of the facet.
     *
     * @return string
     */
    public function getName()
    {
        return $this->_name;
    }

    /**
     * Sets a filter for this facet.
     *
     * @param  Elastica_Filter_Abstract $filter A filter to apply on the facet.
     * @return Elastica_Facet_Abstract
     */
    public function setFilter(Elastica_Filter_Abstract $filter)
    {
        return $this->_setFacetParam('facet_filter', $filter->toArray());
    }

    /**
     * Sets the flag to either run the facet globally or bound to the
     * current search query. When not set, it defaults to the
     * ElasticSearch default value.
     *
     * @param  bool                    $global Flag to either run the facet globally.
     * @return Elastica_Facet_Abstract
     */
    public function setGlobal($global = true)
    {
        return $this->_setFacetParam('global', (bool) $global);
    }

    /**
     * Sets the path to the nested document
     *
     * @param  string                  $nestedPath Nested path
     * @return Elastica_Facet_Abstract
     */
    public function setNested($nestedPath)
    {
        return $this->_setFacetParam('nested', $nestedPath);
    }

    /**
     * Sets the scope
     *
     * @param  string                  $scope Scope
     * @return Elastica_Facet_Abstract
     */
    public function setScope($scope)
    {
        return $this->_setFacetParam('scope', $scope);
    }

    /**
     * Basic definition of all specs of the facet. Each implementation
     * should override this function in order to set it's specific
     * settings.
     *
     * @return array
     */
    public function toArray()
    {
        return $this->_facet;
    }

    /**
     * Sets a param for the facet. Each facet implementation needs to take
     * care of handling their own params.
     *
     * @param  string                  $key   The key of the param to set.
     * @param  mixed                   $value The value of the param.
     * @return Elastica_Facet_Abstract
     */
    protected function _setFacetParam($key, $value)
    {
        $this->_facet[$key] = $value;

        return $this;
    }
}
Return current item: Fantastic ElasticSearch