Example #1
0
 public function testClearReturnsDocumentToDefaultState()
 {
     // set the document boost
     $this->_fixture->setBoost(0.5);
     // set a field
     $this->_fixture->someField = "some value";
     // clear the document to remove boost and fields
     $this->_fixture->clear();
     // document boost should now be false
     $this->assertFalse($this->_fixture->getBoost());
     // document fields should now be empty
     $this->assertEquals(0, count($this->_fixture->getFieldNames()));
     $this->assertEquals(0, count($this->_fixture->getFieldValues()));
     $this->assertEquals(0, count($this->_fixture->getFieldBoosts()));
     // document iterator should now be empty
     $this->assertEquals(0, iterator_count($this->_fixture));
 }
Example #2
0
 /**
  * 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, useful 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 = $this->configuration->getSearchResultsFieldProcessingInstructionsConfiguration();
     $availableFields = $document->getFieldNames();
     $result = array();
     foreach ($availableFields as $fieldName) {
         $processingInstruction = $processingInstructions[$fieldName];
         // TODO switch to field processors
         // TODO allow to have multiple (comma-separated) instructions for each field
         switch ($processingInstruction) {
             case 'timestamp':
                 $processedFieldValue = 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 = Template::escapeMarkers($processedFieldValue);
         $result[$fieldName] = $processedFieldValue;
     }
     return $result;
 }
 /**
  * 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
  * 	* utf8Decode - decodes utf8
  * 	* 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':
                 $parsedTime = strptime($document->{$fieldName}, '%Y-%m-%dT%H:%M:%SZ');
                 $processedFieldValue = mktime($parsedTime['tm_hour'], $parsedTime['tm_min'], $parsedTime['tm_sec'], $parsedTime['tm_mon'] + 1, $parsedTime['tm_mday'], $parsedTime['tm_year'] + 1900);
                 break;
             case 'utf8Decode':
                 $processedFieldValue = $this->utf8Decode($document->{$fieldName});
                 break;
             case 'skip':
                 continue 2;
             default:
                 $processedFieldValue = $document->{$fieldName};
         }
         $result[$fieldName] = $processedFieldValue;
     }
     return $result;
 }
 /**
  * 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;
 }