/**
  * Indexes Redmine projects
  *
  * @param	array	$projects An array of Redmine project objects
  * @return	boolean	TRUE if projects are successfully indexed, FALSE otherwise
  */
 protected function indexProjects(array $projects)
 {
     $projectDocuments = array();
     $projectsIndexed = FALSE;
     foreach ($projects as $project) {
         $projectDocuments[] = $this->projectToDocument($project);
     }
     try {
         $response = $this->solrConnection->addDocuments($projectDocuments);
         if ($response->getHttpStatus() == 200) {
             $projectsIndexed = TRUE;
         }
     } catch (Exception $e) {
         foreach ($projectDocuments as $index => $projectDocument) {
             $projectDocuments[$index] = (array) $projectDocument;
         }
         t3lib_div::devLog('Failed to index Redmine projects', 'solr_redmine', 3, array('documents' => $projectDocuments, 'response' => (array) $response));
     }
     return $projectsIndexed;
 }
 /**
  * Adds the collected documents to the Solr index.
  *
  * @param    array    $documents An array of Apache_Solr_Document objects.
  */
 protected function addDocumentsToSolrIndex(array $documents)
 {
     $documentsAdded = FALSE;
     if (!count($documents)) {
         return $documentsAdded;
     }
     try {
         $this->log('Adding ' . count($documents) . ' documents.', 0, $documents);
         // chunk adds by 20
         $documentChunks = array_chunk($documents, 20);
         foreach ($documentChunks as $documentChunk) {
             $this->solrConnection->addDocuments($documentChunk);
         }
         $documentsAdded = TRUE;
     } catch (Exception $e) {
         $this->log($e->getMessage() . ' Error code: ' . $e->getCode(), 2);
         if ($GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_solr.']['logging.']['exceptions']) {
             t3lib_div::devLog('Exception while adding documents', 'tx_solr', 3, array($e->__toString()));
         }
     }
     return $documentsAdded;
 }