/** * 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; }