function locale_translate_export_form_submit

Form submission handler for locale_translate_export_form().

File

drupal/core/modules/locale/locale.bulk.inc, line 218
Mass import-export and batch import functionality for Gettext .po files.

Code

function locale_translate_export_form_submit($form, &$form_state) {

  // If template is required, language code is not given.
  if ($form_state['values']['langcode'] != Language::LANGCODE_SYSTEM) {
    $language = language_load($form_state['values']['langcode']);
  }
  else {
    $language = NULL;
  }
  $content_options = isset($form_state['values']['content_options']) ? $form_state['values']['content_options'] : array();
  $reader = new PoDatabaseReader();
  $languageName = '';
  if ($language != NULL) {
    $reader
      ->setLangcode($language->langcode);
    $reader
      ->setOptions($content_options);
    $languages = language_list();
    $languageName = isset($languages[$language->langcode]) ? $languages[$language->langcode]->name : '';
    $filename = $language->langcode . '.po';
  }
  else {

    // Template required.
    $filename = 'drupal.pot';
  }
  $item = $reader
    ->readItem();
  if (!empty($item)) {
    $uri = tempnam('temporary://', 'po_');
    $header = $reader
      ->getHeader();
    $header
      ->setProjectName(config('system.site')
      ->get('name'));
    $header
      ->setLanguageName($languageName);
    $writer = new PoStreamWriter();
    $writer
      ->setUri($uri);
    $writer
      ->setHeader($header);
    $writer
      ->open();
    $writer
      ->writeItem($item);
    $writer
      ->writeItems($reader);
    $writer
      ->close();
    $response = new BinaryFileResponse($uri);
    $response
      ->setContentDisposition('attachment', $filename);

    // @todo remove lines below once converted to new routing system.
    $response
      ->prepare(Drupal::request())
      ->send();
  }
  else {
    drupal_set_message('Nothing to export.');
  }
}