Form submission handler for locale_translate_export_form().
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.');
}
}