/**
  * takes a search result document and processes its fields according to the
  * instructions configured in TS. Currently available instructions are
  * 	* timestamp - converts a date field into a unix timestamp
  * 	* serialize - uses serialize() to encode multivalue fields which then can be put out using the MULTIVALUE view helper
  * 	* skip - skips the whole field so that it is not available in the result, usefull for the spell field f.e.
  * The default is to do nothing and just add the document's field to the
  * resulting array.
  *
  * @param	Apache_Solr_Document	$document the Apache_Solr_Document result document
  * @return	array	An array with field values processed like defined in TS
  */
 protected function processDocumentFieldsToArray(Apache_Solr_Document $document)
 {
     $processingInstructions = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_solr.']['search.']['results.']['fieldProcessingInstructions.'];
     $availableFields = $document->getFieldNames();
     $result = array();
     foreach ($availableFields as $fieldName) {
         $processingInstruction = $processingInstructions[$fieldName];
         // TODO switch to field processors
         // TODO allow to have multiple (commaseparated) instructions for each field
         switch ($processingInstruction) {
             case 'timestamp':
                 $processedFieldValue = Tx_Solr_Util::isoToTimestamp($document->{$fieldName});
                 break;
             case 'serialize':
                 if (!empty($document->{$fieldName})) {
                     $processedFieldValue = serialize($document->{$fieldName});
                 } else {
                     $processedFieldValue = '';
                 }
                 break;
             case 'skip':
                 continue 2;
             default:
                 $processedFieldValue = $document->{$fieldName};
         }
         // escape markers in document fields
         // TODO remove after switching to fluid templates
         $processedFieldValue = Tx_Solr_Template::escapeMarkers($processedFieldValue);
         $result[$fieldName] = $processedFieldValue;
     }
     return $result;
 }