public function SolrFieldTypeListBuilder::getConfigZip in Search API Multilingual Solr Search 8
Return value
\ZipStream\ZipStream
File
- src/
Controller/ SolrFieldTypeListBuilder.php, line 320
Class
- SolrFieldTypeListBuilder
- Provides a listing of SolrFieldType.
Namespace
Drupal\search_api_solr_multilingual\ControllerCode
public function getConfigZip() {
$solr_field_types = $this
->load();
/** @var \Drupal\search_api_solr\SolrBackendInterface $backend */
$backend = $this
->getBackend();
$connector = $backend
->getSolrConnector();
$solr_branch = $connector
->getSolrBranch($this->assumed_minimum_version);
$search_api_solr_conf_path = drupal_get_path('module', 'search_api_solr') . '/solr-conf/' . $solr_branch;
$solrcore_properties = parse_ini_file($search_api_solr_conf_path . '/solrcore.properties', FALSE, INI_SCANNER_RAW);
$schema = file_get_contents($search_api_solr_conf_path . '/schema.xml');
$schema = preg_replace('@<fieldType name="text_und".*?</fieldType>@ms', '<!-- fieldType text_und is moved to schema_extra_types.xml by Search API Multilingual Solr -->', $schema);
$schema = preg_replace('@<dynamicField name="([^"]*)".*?type="text_und".*?/>@', "<!-- dynamicField \$1 is moved to schema_extra_fields.xml by Search API Multilingual Solr -->", $schema);
$zip = new ZipStream('solr_' . $solr_branch . '_config.zip');
$zip
->addFile('schema.xml', $schema);
$zip
->addFile('schema_extra_types.xml', $this
->generateSchemaExtraTypesXml());
$zip
->addFile('schema_extra_fields.xml', $this
->generateSchemaExtraFieldsXml());
// Add language specific text files.
/** @var \Drupal\search_api_solr_multilingual\SolrFieldTypeInterface $solr_field_type */
foreach ($solr_field_types as $solr_field_type) {
$text_files = $solr_field_type
->getTextFiles();
foreach ($text_files as $text_file_name => $text_file) {
$language_specific_text_file_name = $text_file_name . '_' . $solr_field_type
->getFieldTypeLanguageCode() . '.txt';
$zip
->addFile($language_specific_text_file_name, $text_file);
$solrcore_properties['solr.replication.confFiles'] .= ',' . $language_specific_text_file_name;
}
}
$solrcore_properties['solr.luceneMatchVersion'] = $connector
->getLuceneMatchVersion($this->assumed_minimum_version ?: '');
// @todo
// $solrcore_properties['solr.replication.masterUrl']
$solrcore_properties_string = '';
foreach ($solrcore_properties as $property => $value) {
$solrcore_properties_string .= $property . '=' . $value . "\n";
}
$zip
->addFile('solrcore.properties', $solrcore_properties_string);
// @todo provide a hook to add more things.
// Now add all remaining static files from the conf dir that have not been
// generated dynamically above.
foreach (scandir($search_api_solr_conf_path) as $file) {
if (strpos($file, '.') !== 0) {
foreach ($zip->files as $zipped_file) {
/* @see \ZipStream\ZipStream::addToCdr() */
if ($file == $zipped_file[0]) {
continue 2;
}
}
$zip
->addFileFromPath($file, $search_api_solr_conf_path . '/' . $file);
}
}
return $zip;
}