function taxonomy_xml_import_form_submit in Taxonomy import/export via XML 6
Same name and namespace in other branches
- 6.2 taxonomy_xml.module \taxonomy_xml_import_form_submit()
- 7 taxonomy_xml.admin.inc \taxonomy_xml_import_form_submit()
Imports the actual XML.
File
- ./
taxonomy_xml.module, line 374 - taxonomy_xml.module This module makes it possible to import and export taxonomies as XML documents.
Code
function taxonomy_xml_import_form_submit($form, &$form_state) {
#if ( function_exists('xdebug_start_trace')) { xdebug_start_trace() ; }
// Remember current prefs, just for convenience
// Speaking of convenience, why does my form discard these values all the time?
variable_set('taxonomy_xml_format', $form_state['values']['format']);
variable_set('taxonomy_xml_vid', $form_state['values']['vid']);
variable_set('taxonomy_xml_duplicate', $form_state['values']['duplicate']);
variable_set('taxonomy_xml_reuseids', $form_state['values']['reuseids']);
variable_set('taxonomy_xml_source_selector', $form_state['values']['source_selector']);
variable_set('taxonomy_xml_service_id', $form_state['values']['service_id']);
variable_set('taxonomy_xml_identifier', $form_state['values']['identifier']);
variable_set('taxonomy_xml_url', $form_state['values']['url']);
variable_set('taxonomy_xml_recurse_down', $form_state['values']['recurse_down']);
// Allow either upload, web service or URL sources
//
switch ($form_state['values']['source_selector']) {
case 'upload-file':
// Retrieve submitted data and parse it
global $user;
$limits = _upload_file_limits($user);
$validators = array(
'file_validate_extensions' => array(
$limits['extensions'],
),
);
if ($file = file_save_upload('upload_file', $validators)) {
$fd = fopen($file->filepath, "rb");
if (!$fd) {
form_set_error('upload_file', t('Vocabulary import failed: file %filename cannot be read.', array(
'%filename' => $file->filename,
)));
}
else {
$info = fstat($fd);
$len = $info["size"];
$text = fread($fd, $len);
fclose($fd);
drupal_set_message(t('Loaded file %filename. Now processing it.', array(
'%filename' => $file->filename,
)));
$form_state['values']['file'] = $file;
taxonomy_xml_invoke_import($text, $form_state['values']);
}
}
else {
form_set_error('upload_file', t('Vocabulary import failed: file was not uploaded.'));
}
break;
case 'url':
// Retrieve remote URL and parser it
if ($url = $form_state['values']['url']) {
$text = taxonomy_xml_cached_get_contents($url);
drupal_set_message(t('Retrieved Submitted URL %url. Now starting an import process.', array(
'%url' => $url,
)));
taxonomy_xml_invoke_import($text, $form_state['values'], $url);
}
break;
case 'service':
// Invoke service and parse response
$services = taxonomy_xml_lookup_services(NULL, 'full');
$service = $services[$form_state['values']['service_id']];
// Don't yet have a subroutine for invoking services, just create a lookup and call it.
$req = taxonomy_xml_sub_placeholders_into_pattern($service['pattern'], $form_state['values']);
$text = taxonomy_xml_cached_get_contents($req);
drupal_set_message(t('Requested service %servicename from URL %req. Now starting an import process.', array(
'%servicename' => $service['provider'],
'%req' => $req,
)));
// Before running, need to make sure the preferences on the form
// are in line with those set for the service -
// ie, the format is selected right. Maybe more later?
$form_state['values']['format'] = $service['format'];
variable_set('taxonomy_xml_format', $form_state['values']['format']);
taxonomy_xml_invoke_import($text, $form_state['values'], $req);
break;
}
// The initial import may have queued up some further process to do.
// Check the queue and run it when this form goes.
$_SESSION['taxonomy_xml_batch_count'] = 0;
batch_set(taxonomy_xml_add_term_to_batch_queue());
}