public function __construct($args) { $this->_class = $args[0]; $this->_tableIndex = $args[1]; $fields = array_slice($args, 2); foreach ($fields as $field) { if ($field[0] != '@' && $field[0] != ':') { if (strpos($field, ':') !== false) { list($field, $normalizer) = explode(':', $field); } else { $normalizer = 'normal'; } $this->_fields[$field] = $normalizer; } else if ($field[0] == ':') { $subFields = array_slice(explode(':', $field), 1); // removes the first empty field $searchFields = array(); $relationKeys = array(); $table = array_shift($subFields); if ($table == 'language') { $this->_language = array_shift($subFields); continue; } $extension = Model::getExtension('Searchable', 'SearchBar'); $externalKeys = $extension->_keys; foreach ($subFields as $subField) { if ($subField[0] == '@') { $relationKeys[substr($subField, 1)] = array_shift($externalKeys); } else { $searchFields[$subField] = $extension->_fields[$subField]; } } $relation = new stdClass; $relation->table = $table; $relation->index = $extension->_tableIndex; $relation->searchFields = $searchFields; $relation->relation = $relationKeys; $this->_relations[] = $relation; } else { // key $this->_keys[] = substr($field, 1); } } }