You are here

function apachesolr_multilingual_textfile_download_config_validate in Apache Solr Multilingual 6

Same name and namespace in other branches
  1. 6.2 apachesolr_multilingual_textfile/apachesolr_multilingual_textfile.module \apachesolr_multilingual_textfile_download_config_validate()
2 calls to apachesolr_multilingual_textfile_download_config_validate()
apachesolr_multilingual_textfile_download_multilingual_config_validate in apachesolr_multilingual_textfile/apachesolr_multilingual_textfile.module
apachesolr_multilingual_textfile_download_unique_langauge_config_validate in apachesolr_multilingual_textfile/apachesolr_multilingual_textfile.module

File

apachesolr_multilingual_textfile/apachesolr_multilingual_textfile.module, line 131

Code

function apachesolr_multilingual_textfile_download_config_validate($form, &$form_state, $multilingual) {
  $selected_languages = variable_get('apachesolr_multilingual_languages', array());
  $apachesolr_multilingual_filetypes = variable_get('apachesolr_multilingual_filetypes', array(
    'stopwords.txt' => 'stopwords.txt',
    'synonyms.txt' => 'synonyms.txt',
    'protwords.txt' => 'protwords.txt',
    'compoundwords.txt' => 'compoundwords.txt',
  ));
  $language_count = 0;
  foreach ($selected_languages as $lang) {
    if ($lang) {
      $language_count++;
    }
  }
  if ($language_count) {

    // array for zip content
    $files = array();

    // languages to handle
    foreach ($selected_languages as $language) {
      if ($language) {
        foreach ($apachesolr_multilingual_filetypes as $filename) {
          $files[$filename] = '';
          if ($vid = db_result(db_query("SELECT vid FROM {apachesolr_multilingual_textfiles} JOIN {node} USING (vid) WHERE language = '%s' and filename = '%s'", $language, $filename))) {
            if ($node = node_load(array(
              'vid' => $vid,
            ))) {
              if ($multilingual) {
                $s2f = explode('.', $filename);
                $language_filename = $s2f[0] . '_' . $language . '.' . $s2f[1];
                $files[$language_filename] = apachesolr_multilingual_textfile_isolatin1accent_filter($node->body);
                if ('stopwords.txt' == $filename) {
                  $files['stopwords_spell_' . $language . '.txt'] = $node->body;
                }
              }
              else {
                $files[$filename] = apachesolr_multilingual_textfile_isolatin1accent_filter($node->body);
                if ('stopwords.txt' == $filename) {
                  $files['stopwords_spell.txt'] = $node->body;
                }
              }
            }
          }
        }
      }
    }
    require_once dirname(__FILE__) . '/../lib/apachesolr_multilingual_zipfile.php';
    $apachesolr_multilingual_config_zip = new apachesolr_multilingual_zipfile();
    $data = $form['solrconfig_str_complete']['#value'];
    $apachesolr_multilingual_config_zip
      ->addFile($data, 'solrconfig.xml');
    $data = $form['schema_str_complete']['#value'];
    $apachesolr_multilingual_config_zip
      ->addFile($data, 'schema.xml');
    $data = file_get_contents(dirname(__FILE__) . '/../resources/mapping-ISOLatin1Accent.txt');
    $apachesolr_multilingual_config_zip
      ->addFile($data, 'mapping-ISOLatin1Accent.txt');
    if (!isset($files['compoundwords.txt'])) {

      // solr example installation doesn't contain compoundwords.txt. so we have to ensure that it exists in our package
      $files['compoundwords.txt'] = '';
    }
    foreach ($files as $filename => $data) {
      if (strpos($filename, 'compoundwords') !== FALSE || strpos($filename, 'protwords') !== FALSE) {

        // compoundwords and protwords are used AFTER a lower case filter in schema.xml.
        // because isolatin1accent_filter converted all accent characters we don't need to care about the locale for strtolower
        $data = drupal_strtolower($data);
      }
      $apachesolr_multilingual_config_zip
        ->addFile($data, $filename);
    }
    drupal_set_header('Content-Type: application/x-gzip');
    drupal_set_header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
    $file_name = $multilingual ? 'apachesolr_multilingual_config.zip' : 'apachesolr_unique_language_config.zip';
    drupal_set_header('Content-Disposition: inline; filename="' . $file_name . '"');
    drupal_set_header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    drupal_set_header('Pragma: public');
    print $apachesolr_multilingual_config_zip
      ->file();
    exit;
  }
  drupal_not_found();
}