Example #1
0
	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);
			}
			
		}
	}