/** * Returns a new SphinxQL instance * * @return SphinxQL */ protected function getSphinxQL() { return SphinxQL::create($this->getConnection()); }
/** * @param string $type * @param array $array * @param SphinxQL $select * @return array|string */ protected function buildWhere($type, $array, $select) { if (!is_array($array)) { $array = str_replace('/', '\\/', $array); // $array = str_replace('-', ' ', $array); if (substr($array, 0, 1) == ' ') { return '(' . $select->escapeMatch($array) . ')'; } else { return '(*' . $select->escapeMatch($array) . '*)'; } } foreach ($array as $key => $subArray) { if ($key == 'or') { $array[$key] = $this->buildWhere($type, $subArray, $select); if (is_array($array[$key])) { $array = '(' . implode(' | ', $array[$key]) . ')'; } } elseif ($key == 'and') { $array[$key] = $this->buildWhere($type, $subArray, $select); if (is_array($array[$key])) { $array = '(' . implode(' ', $array[$key]) . ')'; } } else { $array[$key] = $this->buildWhere($type, $subArray, $select); } } return $array; }