<?php
/**
 * @class WhereSetQueryComponent
 * A where query that may contain other where queries (in brackets).
 * @author Curverider Ltd
 * @see Query
 */
class WhereSetQueryComponent extends WhereQueryComponent
{
	/**
	 * Construct a subset of wheres.
	 *
	 * @param array $wheres An array of WhereQueryComponent
	 * @param string $link_operator How this where clause links with the previous clause, eg. "and" "or"
	 */
	function __construct(array $wheres, $link_operator = "and")
	{
		$this->link_operator = sanitise_string($link_operator);
		$this->wheres = $wheres;
	}

	public function toStringNoLink()
	{
		$cnt = 0;
		$string = " (";
		foreach ($this->wheres as $where) {
			if (!($where instanceof WhereQueryComponent))
				throw new DatabaseException(elgg_echo('DatabaseException:WhereSetNonQuery'));

			if (!$cnt)
				$string.= $where->toStringNoLink();
			else
				$string.=" $where ";

			$cnt ++;
		}
		$string .= ")";

		return $string;
	}
}