public function __construct($quiet = false) { if ($quiet) { $this->quiet_mode = true; } $this->pdo = WXActiveRecord::getDefaultPDO(); if (!$this->check_schema()) { $this->create_schema(); } }
public function get_results($limit = false) { $setups = array(); foreach (self::$search_array as $search) { if (is_array($search['field'])) { try { WXActiveRecord::getDefaultPDO()->query("ALTER TABLE " . $search['table'] . " ADD FULLTEXT " . $search['field'] . " (" . implode(",", $search['field']) . ");"); } catch (Exception $e) { } } else { try { WXActiveRecord::getDefaultPDO()->query("ALTER TABLE " . $search['table'] . " ADD FULLTEXT " . $search['field'] . " (" . $search['field'] . ");"); } catch (Exception $e) { } } if (is_array($search['field'])) { $query = "SELECT *, MATCH("; $query .= implode(",", $search['field']); $query .= ") AGAINST('" . $this->search_phrase . "') AS score FROM " . $search['table']; $query .= " WHERE MATCH(" . implode(",", $search['field']) . ") AGAINST('" . $this->search_phrase . "')"; if ($search['order'] != "") { $query .= "ORDER BY " . $search['order']; } } else { $query = "SELECT *, MATCH(" . $search['field'] . ") AGAINST('" . $this->search_phrase . "') AS score FROM " . $search['table']; $query .= " WHERE MATCH(" . $search['field'] . ") AGAINST('" . $this->search_phrase . "')"; if ($search['order'] != "") { $query .= "ORDER BY " . $search['order']; } if ($limit) { $query .= " LIMIT {$limit}"; } } $model = WXInflections::camelize($search['table'], true); $table = new $model(); if (is_array($results[$search['key']])) { $results[$search['key']] = array_merge($results[$search['key']], $table->find_by_sql($query)); } else { $results[$search['key']] = $table->find_by_sql($query); } } return $results; }