protected function objectToFields($dataObject) {
		$ret = array();

		$fields = Config::inst()->get($dataObject->ClassName, 'db');
		$fields['Created'] = 'SS_Datetime';
		$fields['LastEdited'] = 'SS_Datetime';

		$ret['ClassName'] = array('Type' => 'Varchar', 'Value' => $dataObject->class);
		$ret['SS_ID'] = array('Type' => 'Int', 'Value' => $dataObject->ID);

		foreach ($fields as $name => $type) {
			if (preg_match('/^(\w+)\(/', $type, $match)) {
				$type = $match[1];
			}

			// Just index everything; the query can figure out what to exclude... !
			$value = $dataObject->$name;

			if ($type == 'MultiValueField' && $value instanceof MultiValueField) {
				$value = $value->getValues();
			}

			$ret[$name] = array('Type' => $type, 'Value' => $value);
		}

		$rels = Config::inst()->get($dataObject->ClassName, 'has_one');

		if($rels) foreach(array_keys($rels) as $rel) {
			$ret["{$rel}ID"] = array(
				'Type'  => 'ForeignKey',
				'Value' => $dataObject->{$rel . "ID"}
			);
		}
		
		if ($dataObject->hasMethod('additionalSolrValues')) {
			$extras = $dataObject->invokeWithExtensions('additionalSolrValues');
			if ($extras && is_array($extras)) {
				foreach ($extras as $add) {
					foreach ($add as $k => $v) {
						$ret[$k] = array(
							'Type'		=> $this->mapper->mapValueToType($k, $v),
							'Value'		=> $v,
						);
					}
				}
			}
		}

		return $ret;
	}
protected function objectToFields($dataObject) {
		$ret = array();

		$fields = Config::inst()->get($dataObject->ClassName, 'db');
		$fields['Created'] = 'SS_Datetime';
		$fields['LastEdited'] = 'SS_Datetime';

		$ret['ClassName'] = array('Type' => 'Varchar', 'Value' => $dataObject->class);
		$ret['SS_ID'] = array('Type' => 'Int', 'Value' => $dataObject->ID);

		foreach ($fields as $name => $type) {
			if (preg_match('/^(\w+)\(/', $type, $match)) {
				$type = $match[1];
			}

			// Just index everything; the query can figure out what to exclude... !
			$value = $dataObject->$name;

			if ($type == 'MultiValueField' && $value instanceof MultiValueField) {
				$value = $value->getValues();
			}

			$ret[$name] = array('Type' => $type, 'Value' => $value);
		}

		$rels = Config::inst()->get($dataObject->ClassName, 'has_one');

		if($rels) foreach(array_keys($rels) as $rel) {
			$ret["{$rel}ID"] = array(
				'Type'  => 'ForeignKey',
				'Value' => $dataObject->{$rel . "ID"}
			);
		}
		
		if ($dataObject->hasMethod('additionalSolrValues')) {
			$extras = $dataObject->invokeWithExtensions('additionalSolrValues');
			if ($extras && is_array($extras)) {
				foreach ($extras as $add) {
					foreach ($add as $k => $v) {
						$ret[$k] = array(
							'Type'		=> $this->mapper->mapValueToType($k, $v),
							'Value'		=> $v,
						);
					}
				}
			}
		}

		return $ret;
	}
protected function objectToFields ( $ dataObject ) { $ ret = array ( ) ; $ fields = Config :: inst ( ) -> get ( $ dataObject -> ClassName , 'db' ) ; $ fields [ 'Created' ] = 'SS_Datetime' ; $ fields [ 'LastEdited' ] = 'SS_Datetime' ; $ ret [ 'ClassName' ] = array ( 'Type' => 'Varchar' , 'Value' => $ dataObject -> class ) ; $ ret [ 'SS_ID' ] = array ( 'Type' => 'Int' , 'Value' => $ dataObject -> ID ) ; foreach ( $ fields as $ name => $ type ) { if ( preg_match ( '/^(\w+)\(/' , $ type , $ match ) ) { $ type = $ match [ 1 ] ; } // Just index everything; the query can figure out what to exclude... ! $ value = $ dataObject -> $ name ; if ( $ type == 'MultiValueField' && $ value instanceof MultiValueField ) { $ value = $ value -> getValues ( ) ; } $ ret [ $ name ] = array ( 'Type' => $ type , 'Value' => $ value ) ; } $ rels = Config :: inst ( ) -> get ( $ dataObject -> ClassName , 'has_one' ) ; if ( $ rels ) foreach ( array_keys ( $ rels ) as $ rel ) { $ ret [ "{$rel}ID" ] = array ( 'Type' => 'ForeignKey' , 'Value' => $ dataObject -> { $ rel . "ID" } ) ; } if ( $ dataObject -> hasMethod ( 'additionalSolrValues' ) ) { $ extras = $ dataObject -> invokeWithExtensions ( 'additionalSolrValues' ) ; if ( $ extras && is_array ( $ extras ) ) { foreach ( $ extras as $ add ) { foreach ( $ add as $ k => $ v ) { $ ret [ $ k ] = array ( 'Type' => $ this -> mapper -> mapValueToType ( $ k , $ v ) , 'Value' => $ v , ) ; } } } } return $ ret ; }
Pull out all the fields that should be indexed for a particular object

This mapping is done to make it easier to

@param DataObject $dataObject
@return array
Pull out all the fields that should be indexed for a particular object