1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: <?php
/**
 * The Gravity Forms Query Series class.
 *
 * A list of arguments. Would have named "List" but it's a reserved keyword.
 */
class GF_Query_Series {
    /**
     * @var array A series of values.
     */
    private $_values = array();
    /**
     * A series of expressions.
     *
     * @param mixed[] $values With a valid expression type (GF_Query_Literal, GF_Query_Column, GF_Query_Call)
     */
    public function __construct( $values ) {
        if ( is_array( $values ) ) {
            $this->_values = array_filter( $values, array( 'GF_Query_Condition', 'is_valid_expression_type' ) );
        }
    }
    /**
     * Get SQL for this.
     *
     * @param GF_Query $query     The query.
     * @param string           $delimiter The delimiter to stick the series values with.
     *
     * @return string The SQL.
     */
    public function sql( $query, $delimiter = '' ) {
        $values = array();
        foreach( $this->_values as $value ) {
            $values[] = $value->sql( $query );
        }
        $chunks = array_filter( $values, 'strlen' );
        return implode( $delimiter, $chunks);
    }
    /**
     * Proxy read-only values.
     */
    public function __get( $key ) {
        switch ( $key ):
            case 'values':
                return $this->_values;
        endswitch;
    }
}