public function getDestinationType()
 {
     $vo_dm = Datamodel::load();
     $vs_destination = $this->get("destination");
     $t_importer = new ca_data_importers($this->get("importer_id"));
     $t_instance = $vo_dm->getInstanceByTableNum($t_importer->get("table_num"));
     $va_split = explode(".", $vs_destination);
     switch (sizeof($va_split)) {
         case 1:
             return __CA_DATA_IMPORTER_DESTINATION_RELATED__;
         case 2:
             if (trim($va_split[0]) == $t_instance->tableName()) {
                 if ($t_instance->hasField(trim($va_split[1]))) {
                     return __CA_DATA_IMPORTER_DESTINATION_INTRINSIC__;
                 } else {
                     if ($t_instance->isValidMetadataElement(trim($va_split[1]))) {
                         return __CA_DATA_IMPORTER_DESTINATION_ATTRIBUTE__;
                     } else {
                         return __CA_DATA_IMPORTER_DESTINATION_META__;
                     }
                 }
             } else {
                 return __CA_DATA_IMPORTER_DESTINATION_RELATED__;
             }
         case 3:
         default:
             return __CA_DATA_IMPORTER_DESTINATION_META__;
     }
 }
 * the terms of the provided license as published by Whirl-i-Gig
 *
 * CollectiveAccess is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTIES whatsoever, including any implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 *
 * This source code is free and modifiable under the terms of 
 * GNU General Public License. (http://www.gnu.org/copyleft/gpl.html). See
 * the "license.txt" file for details, or visit the CollectiveAccess web site at
 * http://www.CollectiveAccess.org
 *
 * ----------------------------------------------------------------------
 */
$t_item = $this->getVar('t_item');
if (!$t_item->getPrimaryKey()) {
    $vn_importer_count = ca_data_importers::getImporterCount();
    ?>
<h3 class='importers'><?php 
    print _t('Importers');
    ?>
:
<div><?php 
    if ($vn_importer_count == 1) {
        print _t("1 importer is defined");
    } else {
        print _t("%1 importers are defined", $vn_importer_count);
    }
    ?>
</div>
</h3><?php 
} else {
		msg = msg.replace("%1", jQuery("#caImporterList option:selected").text())
		
		caConfirmBatchExecutionPanel.showPanel();
		jQuery('#caConfirmBatchExecutionPanelAlertText').html(msg);
	}
	
	$(document).bind('drop dragover', function (e) {
		e.preventDefault();
	});
	
	var caDataReaderInfo = <?php 
print json_encode(ca_data_importers::getInfoForAvailableInputFormats());
?>
;
	var caImporterInfo = <?php 
print json_encode(ca_data_importers::getImporters());
?>
;
	
	function caSetBatchMetadataImportFormState(dontAnimate) {
		var info;
		var currentFormat = jQuery("#caInputFormatList").val();
		
		// Set format list
		var relevantFormats = [];
		var curImporterID = jQuery("#caImporterList").val();
		if (caImporterInfo[curImporterID]) {
			relevantFormats = caImporterInfo[curImporterID]['settings']['inputFormats'];
		}
		
		var opts = [];
Example #4
0
 /**
  * 
  */
 public static function import_data($po_opts = null)
 {
     require_once __CA_MODELS_DIR__ . "/ca_data_importers.php";
     if (!($vs_data_source = $po_opts->getOption('source'))) {
         CLIUtils::addError(_t('You must specify a data source for import'));
         return false;
     }
     if (!$vs_data_source) {
         CLIUtils::addError(_t('You must specify a source'));
         return false;
     }
     if (!($vs_mapping = $po_opts->getOption('mapping'))) {
         CLIUtils::addError(_t('You must specify a mapping'));
         return false;
     }
     if (!ca_data_importers::mappingExists($vs_mapping)) {
         CLIUtils::addError(_t('Mapping %1 does not exist', $vs_mapping));
         return false;
     }
     $vb_no_ncurses = (bool) $po_opts->getOption('disable-ncurses');
     $vs_format = $po_opts->getOption('format');
     $vs_log_dir = $po_opts->getOption('log');
     $vn_log_level = CLIUtils::import_getLogLevel($po_opts);
     if (!ca_data_importers::importDataFromSource($vs_data_source, $vs_mapping, array('format' => $vs_format, 'showCLIProgressBar' => true, 'useNcurses' => !$vb_no_ncurses && caCLIUseNcurses(), 'logDirectory' => $vs_log_dir, 'logLevel' => $vn_log_level))) {
         CLIUtils::addError(_t("Could not import source %1", $vs_data_source));
         return false;
     } else {
         CLIUtils::addMessage(_t("Imported data from source %1", $vs_data_source));
         return true;
     }
 }
Example #5
0
 /**
  *
  */
 public static function getValueFromSource($pa_item, $po_reader, $pa_options = null)
 {
     $pb_return_as_array = caGetOption('returnAsArray', $pa_options, false);
     $pa_environment = caGetOption('environment', $pa_options, array(), array('castTo' => 'array'));
     $ps_delimiter = caGetOption('delimiter', $pa_options, ';');
     if (preg_match('!^_CONSTANT_:[^:]+:(.*)$!', $pa_item['source'], $va_matches)) {
         $vm_value = $va_matches[1];
     } elseif (isset($pa_environment[$pa_item['source']])) {
         $vm_value = $pa_environment[$pa_item['source']];
     } else {
         if ($po_reader->valuesCanRepeat()) {
             $vm_value = $po_reader->get($pa_item['source'], array('returnAsArray' => true));
             if (!is_array($vm_value)) {
                 return $pb_return_as_array ? array() : null;
             }
             foreach ($vm_value as $vs_k => $vs_v) {
                 $vm_value[$vs_k] = ca_data_importers::replaceValue(trim($vs_v), $pa_item);
             }
             if ($pb_return_as_array) {
                 return $vm_value;
             } else {
                 return join($ps_delimiter, $vm_value);
             }
         } else {
             $vm_value = trim($po_reader->get($pa_item['source']));
         }
     }
     $vm_value = ca_data_importers::replaceValue($vm_value, $pa_item);
     if ($pb_return_as_array) {
         return is_array($vm_value) ? $vm_value : array($vm_value);
     }
     return $vm_value;
 }
 /**
  * 
  *
  * 
  */
 public function UploadImporters()
 {
     $va_response = array('uploadMessage' => '', 'skippedMessage' => '');
     $va_errors = array();
     foreach ($_FILES as $vs_param => $va_file) {
         foreach ($va_file['name'] as $vn_i => $vs_name) {
             if ($t_importer = ca_data_importers::loadImporterFromFile($va_file['tmp_name'][$vn_i], $va_errors, array('logDirectory' => $this->request->config->get('batch_metadata_import_log_directory'), 'logLevel' => KLogger::INFO, 'originalFilename' => $vs_name))) {
                 $va_response['copied'][$vs_name] = true;
             } else {
                 $va_response['skipped'][$vs_name] = true;
             }
         }
     }
     $va_response['uploadMessage'] = ($vn_upload_count = sizeof($va_response['copied'])) == 1 ? _t('Uploaded %1 worksheet', $vn_upload_count) : _t('Uploaded %1 worksheets', $vn_upload_count);
     if (is_array($va_response['skipped']) && ($vn_skip_count = sizeof($va_response['skipped'])) && !$va_response['error']) {
         $va_response['skippedMessage'] = $vn_skip_count == 1 ? _t('Skipped %1 worksheet', $vn_skip_count) : _t('Skipped %1 worksheet', $vn_skip_count);
     }
     $this->view->setVar('response', $va_response);
     $this->render('mediaimport/file_upload_response_json.php');
 }
 /**
  *
  */
 public static function getValueFromSource($pa_item, $po_reader, $pa_options = null)
 {
     $pb_return_as_array = caGetOption('returnAsArray', $pa_options, false);
     $pa_environment = caGetOption('environment', $pa_options, array(), array('castTo' => 'array'));
     $ps_delimiter = caGetOption('delimiter', $pa_options, ';');
     $pn_lookahead = caGetOption('lookahead', $pa_options, 0, array('castTo' => 'int'));
     if (preg_match('!^_CONSTANT_:[^:]+:(.*)$!', $pa_item['source'], $va_matches)) {
         $vm_value = $va_matches[1];
     } elseif (isset($pa_environment[$pa_item['source']])) {
         $vm_value = $pa_environment[$pa_item['source']];
     } else {
         $vn_cur_pos = $po_reader->currentRow();
         $vb_did_seek = false;
         if ($pn_lookahead > 0) {
             $vn_seek_to = $po_reader->currentRow() + $pn_lookahead;
             $po_reader->seek($vn_seek_to);
             $vb_did_seek = true;
         }
         if ($po_reader->valuesCanRepeat()) {
             $vm_value = $po_reader->get($pa_item['source'], array('returnAsArray' => true));
             if (!is_array($vm_value)) {
                 return $pb_return_as_array ? array() : null;
             }
             foreach ($vm_value as $vs_k => $vs_v) {
                 $vs_v = stripslashes($vs_v);
                 $vm_value[$vs_k] = ca_data_importers::replaceValue(trim($vs_v), $pa_item);
             }
             if ($pb_return_as_array) {
                 return $vm_value;
             } else {
                 return join($ps_delimiter, $vm_value);
             }
         } else {
             $vm_value = trim($po_reader->get($pa_item['source']));
         }
         if ($vb_did_seek) {
             $po_reader->seek($vn_cur_pos);
         }
     }
     $vm_value = ca_data_importers::replaceValue(stripslashes($vm_value), $pa_item);
     if ($pb_return_as_array) {
         return is_array($vm_value) ? $vm_value : array($vm_value);
     }
     return $vm_value;
 }
Example #8
0
 /**
  * @param Zend_Console_Getopt|null $po_opts
  * @return bool
  */
 public static function reload_ulan_records($po_opts = null)
 {
     require_once __CA_MODELS_DIR__ . '/ca_data_importers.php';
     if (!($vs_mapping = $po_opts->getOption('mapping'))) {
         CLIUtils::addError("\t\tNo mapping found. Please use the -m parameter to specify a ULAN mapping.");
         return false;
     }
     if (!ca_data_importers::mappingExists($vs_mapping)) {
         CLIUtils::addError("\t\tMapping {$vs_mapping} does not exist");
         return false;
     }
     $vs_log_dir = $po_opts->getOption('log');
     $vn_log_level = CLIUtils::getLogLevel($po_opts);
     $o_db = new Db();
     $qr_items = $o_db->query("\n\t\t\t\tSELECT DISTINCT source FROM ca_data_import_events WHERE type_code = 'ULAN'\n\t\t\t");
     $va_sources = array();
     while ($qr_items->nextRow()) {
         $vs_source = $qr_items->get('source');
         if (!isURL($vs_source)) {
             continue;
         }
         if (!preg_match("/http\\:\\/\\/vocab\\.getty\\.edu\\/ulan\\//", $vs_source)) {
             continue;
         }
         $va_sources[] = $vs_source;
     }
     ca_data_importers::importDataFromSource(join(',', $va_sources), $vs_mapping, array('format' => 'ULAN', 'showCLIProgressBar' => true, 'logDirectory' => $vs_log_dir, 'logLevel' => $vn_log_level));
     return true;
 }
Example #9
0
 /**
  * 
  */
 public static function import_data($po_opts = null)
 {
     require_once __CA_MODELS_DIR__ . "/ca_data_importers.php";
     if (!($vs_data_source = $po_opts->getOption('source'))) {
         CLIUtils::addError(_t('You must specify a data source for import'));
         return false;
     }
     if (!$vs_data_source) {
         CLIUtils::addError(_t('You must specify a source'));
         return false;
     }
     if (!($vs_mapping = $po_opts->getOption('mapping'))) {
         CLIUtils::addError(_t('You must specify a mapping'));
         return false;
     }
     if (!ca_data_importers::mappingExists($vs_mapping)) {
         CLIUtils::addError(_t('Mapping %1 does not exist', $vs_mapping));
         return false;
     }
     $vb_no_ncurses = (bool) $po_opts->getOption('disable-ncurses');
     $vs_format = $po_opts->getOption('format');
     $vs_log_dir = $po_opts->getOption('log');
     $vn_log_level = KLogger::INFO;
     switch ($vs_log_level = $po_opts->getOption('log-level')) {
         case 'DEBUG':
             $vn_log_level = KLogger::DEBUG;
             break;
         case 'NOTICE':
             $vn_log_level = KLogger::NOTICE;
             break;
         case 'WARN':
             $vn_log_level = KLogger::WARN;
             break;
         case 'ERR':
             $vn_log_level = KLogger::ERR;
             break;
         case 'CRIT':
             $vn_log_level = KLogger::CRIT;
             break;
         case 'ALERT':
             $vn_log_level = KLogger::ALERT;
             break;
         default:
         case 'INFO':
             $vn_log_level = KLogger::INFO;
             break;
     }
     if (!ca_data_importers::importDataFromSource($vs_data_source, $vs_mapping, array('format' => $vs_format, 'showCLIProgressBar' => true, 'useNcurses' => !$vb_no_ncurses && caCLIUseNcurses(), 'logDirectory' => $vs_log_dir, 'logLevel' => $vn_log_level))) {
         CLIUtils::addError(_t("Could not import source %1", $vs_data_source));
         return false;
     } else {
         CLIUtils::addMessage(_t("Imported data from source %1", $vs_data_source));
         return true;
     }
 }
 /**
  * Import metadata using a mapping
  *
  * @param RequestHTTP $po_request The current request
  * @param string $ps_source A path to a file or directory of files to import
  * @param string $ps_importer The code of the importer (mapping) to use
  * @param string $ps_input_format The format of the source data
  * @param array $pa_options
  *		progressCallback =
  *		reportCallback = 
  *		sendMail = 
  *		dryRun = 
  *		importAllDatasets = 
  *		log = log directory path
  *		logLevel = KLogger constant for minimum log level to record. Default is KLogger::INFO. Constants are, in descending order of shrillness:
  *			KLogger::EMERG = Emergency messages (system is unusable)
  *			KLogger::ALERT = Alert messages (action must be taken immediately)
  *			KLogger::CRIT = Critical conditions
  *			KLogger::ERR = Error conditions
  *			KLogger::WARN = Warnings
  *			KLogger::NOTICE = Notices (normal but significant conditions)
  *			KLogger::INFO = Informational messages
  *			KLogger::DEBUG = Debugging messages
  */
 public static function importMetadata($po_request, $ps_source, $ps_importer, $ps_input_format, $pa_options = null)
 {
     $va_errors = $va_noticed = array();
     $vn_start_time = time();
     $o_config = Configuration::load();
     if (!ca_data_importers::mappingExists($ps_importer)) {
         $va_errors['general'] = array('idno' => "*", 'label' => "*", 'errors' => array(_t('Importer %1 does not exist', $ps_importer)), 'status' => 'ERROR');
         return false;
     }
     $vs_log_dir = caGetOption('log', $pa_options, null);
     $vs_log_level = caGetOption('logLevel', $pa_options, "INFO");
     $vb_import_all_datasets = caGetOption('importAllDatasets', $pa_options, false);
     $vb_dry_run = caGetOption('dryRun', $pa_options, false);
     $vn_log_level = BatchProcessor::_logLevelStringToNumber($vs_log_level);
     if (!isURL($ps_source) && is_dir($ps_source)) {
         $va_sources = caGetDirectoryContentsAsList($ps_source, true, false, false, false);
     } else {
         $va_sources = array($ps_source);
     }
     $vn_file_num = 0;
     foreach ($va_sources as $vs_source) {
         $vn_file_num++;
         if (!ca_data_importers::importDataFromSource($vs_source, $ps_importer, array('fileNumber' => $vn_file_num, 'numberOfFiles' => sizeof($va_sources), 'logDirectory' => $o_config->get('batch_metadata_import_log_directory'), 'request' => $po_request, 'format' => $ps_input_format, 'showCLIProgressBar' => false, 'useNcurses' => false, 'progressCallback' => isset($pa_options['progressCallback']) ? $pa_options['progressCallback'] : null, 'reportCallback' => isset($pa_options['reportCallback']) ? $pa_options['reportCallback'] : null, 'logDirectory' => $vs_log_dir, 'logLevel' => $vn_log_level, 'dryRun' => $vb_dry_run, 'importAllDatasets' => $vb_import_all_datasets))) {
             $va_errors['general'][] = array('idno' => "*", 'label' => "*", 'errors' => array(_t("Could not import source %1", $ps_source)), 'status' => 'ERROR');
             return false;
         } else {
             $va_notices['general'][] = array('idno' => "*", 'label' => "*", 'errors' => array(_t("Imported data from source %1", $ps_source)), 'status' => 'SUCCESS');
             //return true;
         }
     }
     $vn_elapsed_time = time() - $vn_start_time;
     if (isset($pa_options['sendMail']) && $pa_options['sendMail']) {
         if ($vs_email = trim($po_request->user->get('email'))) {
             caSendMessageUsingView($po_request, array($vs_email => $po_request->user->get('fname') . ' ' . $po_request->user->get('lname')), __CA_ADMIN_EMAIL__, _t('[%1] Batch metadata import completed', $po_request->config->get('app_display_name')), 'batch_metadata_import_completed.tpl', array('notices' => $va_notices, 'errors' => $va_errors, 'numErrors' => sizeof($va_errors), 'numProcessed' => sizeof($va_notices), 'subjectNameSingular' => _t('row'), 'subjectNamePlural' => _t('rows'), 'startedOn' => caGetLocalizedDate($vn_start_time), 'completedOn' => caGetLocalizedDate(time()), 'elapsedTime' => caFormatInterval($vn_elapsed_time)));
         }
     }
     if (isset($pa_options['sendSMS']) && $pa_options['sendSMS']) {
         SMS::send($po_request->getUserID(), _t("[%1] Metadata import processing for begun at %2 is complete", $po_request->config->get('app_display_name'), caGetLocalizedDate($vn_start_time)));
     }
     return array('errors' => $va_errors, 'notices' => $va_notices, 'processing_time' => caFormatInterval($vn_elapsed_time));
 }
Example #11
0
 /**
  * @param array $pa_options
  *		progressCallback =
  *		reportCallback = 
  *		sendMail = 
  *		log = log directory path
  * 		logLevel = KLogger loglevel. Default is "INFO"
  */
 public static function importMetadata($po_request, $ps_source, $ps_importer, $ps_input_format, $pa_options = null)
 {
     $va_errors = $va_noticed = array();
     $vn_start_time = time();
     $o_config = Configuration::load();
     if (!ca_data_importers::mappingExists($ps_importer)) {
         $va_errors['general'] = array('idno' => "*", 'label' => "*", 'errors' => array(_t('Importer %1 does not exist', $ps_importer)), 'status' => 'ERROR');
         return false;
     }
     $vs_log_dir = isset($pa_options['log']) ? $pa_options['log'] : null;
     $vn_log_level = KLogger::INFO;
     switch ($vs_log_level = isset($pa_options['logLevel']) ? $pa_options['logLevel'] : "INFO") {
         case 'DEBUG':
             $vn_log_level = KLogger::DEBUG;
             break;
         case 'NOTICE':
             $vn_log_level = KLogger::NOTICE;
             break;
         case 'WARN':
             $vn_log_level = KLogger::WARN;
             break;
         case 'ERR':
             $vn_log_level = KLogger::ERR;
             break;
         case 'CRIT':
             $vn_log_level = KLogger::CRIT;
             break;
         case 'ALERT':
             $vn_log_level = KLogger::ALERT;
             break;
         default:
         case 'INFO':
             $vn_log_level = KLogger::INFO;
             break;
     }
     if (!ca_data_importers::importDataFromSource($ps_source, $ps_importer, array('logDirectory' => $o_config->get('batch_metadata_import_log_directory'), 'request' => $po_request, 'format' => $ps_input_format, 'showCLIProgressBar' => false, 'useNcurses' => false, 'progressCallback' => isset($pa_options['progressCallback']) ? $pa_options['progressCallback'] : null, 'reportCallback' => isset($pa_options['reportCallback']) ? $pa_options['reportCallback'] : null, 'logDirectory' => $vs_log_dir, 'logLevel' => $vn_log_level))) {
         $va_errors['general'] = array('idno' => "*", 'label' => "*", 'errors' => array(_t("Could not import source %1", $vs_data_source)), 'status' => 'ERROR');
         return false;
     } else {
         $va_notices['general'] = array('idno' => "*", 'label' => "*", 'errors' => array(_t("Imported data from source %1", $vs_data_source)), 'status' => 'SUCCESS');
         //return true;
     }
     $vn_elapsed_time = time() - $vn_start_time;
     if (isset($pa_options['sendMail']) && $pa_options['sendMail']) {
         if ($vs_email = trim($po_request->user->get('email'))) {
             caSendMessageUsingView($po_request, array($vs_email => $po_request->user->get('fname') . ' ' . $po_request->user->get('lname')), __CA_ADMIN_EMAIL__, _t('[%1] Batch metadata import completed', $po_request->config->get('app_display_name')), 'batch_metadata_import_completed.tpl', array('notices' => $va_notices, 'errors' => $va_errors, 'numErrors' => sizeof($va_errors), 'numProcessed' => sizeof($va_notices), 'subjectNameSingular' => _t('row'), 'subjectNamePlural' => _t('rows'), 'startedOn' => $vs_started_on, 'completedOn' => caGetLocalizedDate(time()), 'elapsedTime' => caFormatInterval($vn_elapsed_time)));
         }
     }
     if (isset($pa_options['sendSMS']) && $pa_options['sendSMS']) {
         SMS::send($po_request->getUserID(), _t("[%1] Metadata import processing for begun at %2 is complete", $po_request->config->get('app_display_name'), $vs_started_on));
     }
     return array('errors' => $va_errors, 'notices' => $va_notices, 'processing_time' => caFormatInterval($vn_elapsed_time));
 }
 /**
  * Ajax-invoked execution of import process. This is where the import is actually run.
  */
 public function RunImport()
 {
     if (!$this->request->user->canDoAction('can_import_worldcat')) {
         return;
     }
     $pa_worldcat_ids = $this->request->getParameter('WorldCatID', pArray);
     $pn_importer_id = $this->request->getParameter('importer_id', pInteger);
     $ps_job_id = $this->request->getParameter('job_id', pString);
     $pn_log_level = $this->request->getParameter('log_level', pInteger);
     $o_progress = new ProgressBar('WebUI', 0, $ps_job_id);
     $o_progress->setJobID($ps_job_id);
     $o_progress->setMode('WebUI');
     $o_progress->setTotal(sizeof($pa_worldcat_ids));
     $vn_status = ca_data_importers::importDataFromSource(join(",", $pa_worldcat_ids), $pn_importer_id, array('progressBar' => $o_progress, 'format' => 'WorldCat', 'logLevel' => $pn_log_level));
     $this->view->setVar('info', array('status' => $vn_status, 'job_id' => $ps_job_id, 'importer_id' => $pn_importer_id, 'worldcat_ids' => $pa_worldcat_ids));
     $this->render('import_run_json.php');
 }
 /**
  * Generates a form for specification of media import settings. The form is rendered into the current view, inherited from ActionController
  *
  * @param array $pa_values An optional array of values to preset in the format, overriding any existing values in the model of the record being editing.
  * @param array $pa_options Array of options passed through to _initView
  *
  */
 public function Index($pa_values = null, $pa_options = null)
 {
     AssetLoadManager::register("directoryBrowser");
     list($t_ui) = $this->_initView($pa_options);
     $this->view->setVar('batch_mediaimport_last_settings', $va_last_settings = is_array($va_last_settings = $this->request->user->getVar('batch_mediaimport_last_settings')) ? $va_last_settings : array());
     // get import type from request
     $vs_import_target = $this->getRequest()->getParameter('target', pString);
     $t_instance = $this->getRequest()->getAppDatamodel()->getInstance($vs_import_target);
     // if that failed, try last settings
     if (!$t_instance) {
         $vs_import_target = $va_last_settings['importTarget'];
         $t_instance = $this->getRequest()->getAppDatamodel()->getInstance($vs_import_target);
     }
     // if that too failed, go back to objects
     if (!$t_instance) {
         $t_instance = new ca_objects();
         $vs_import_target = 'ca_objects';
     }
     $this->getView()->setVar('import_target', $vs_import_target);
     $t_instance->set('status', $va_last_settings[$vs_import_target . '_status']);
     $t_instance->set('access', $va_last_settings[$vs_import_target . '_access']);
     $t_rep = new ca_object_representations();
     $t_rep->set('status', $va_last_settings['ca_object_representations_status']);
     $t_rep->set('access', $va_last_settings['ca_object_representations_access']);
     $va_nav = $t_ui->getScreensAsNavConfigFragment($this->request, null, $this->request->getModulePath(), $this->request->getController(), $this->request->getAction(), array(), array());
     if (!$this->request->getActionExtra() || !isset($va_nav['fragment'][str_replace("Screen", "screen_", $this->request->getActionExtra())])) {
         $this->request->setActionExtra($va_nav['defaultScreen']);
     }
     $this->view->setVar('t_ui', $t_ui);
     $this->view->setVar('import_target', caHTMLSelect('import_target', $this->opa_importable_tables, array('id' => 'caImportTargetSelect', 'onchange' => 'window.location.replace("' . caNavUrl($this->getRequest(), $this->getRequest()->getModulePath(), $this->getRequest()->getController(), $this->getRequest()->getAction()) . '/target/" + jQuery("#caImportTargetSelect").val()); return false;'), array('value' => $vs_import_target)));
     $this->view->setVar('import_mode', caHTMLSelect('import_mode', array(_t('Import all media, matching with existing records where possible') => 'TRY_TO_MATCH', _t('Import only media that can be matched with existing records') => 'ALWAYS_MATCH', _t('Import all media, creating new records for each') => 'DONT_MATCH'), array(), array('value' => $va_last_settings['importMode'])));
     $this->view->setVar('match_mode', caHTMLSelect('match_mode', array(_t('Match using file name') => 'FILE_NAME', _t('Match using directory name') => 'DIRECTORY_NAME', _t('Match using directory name, then file name') => 'FILE_AND_DIRECTORY_NAMES'), array(), array('value' => $va_last_settings['matchMode'])));
     $this->view->setVar('match_type', caHTMLSelect('match_type', array(_t('matches exactly') => 'EXACT', _t('starts with') => 'STARTS', _t('ends with') => 'ENDS', _t('contains') => 'CONTAINS'), array(), array('value' => $va_last_settings['matchType'])));
     $this->view->setVar($vs_import_target . '_type_list', $t_instance->getTypeListAsHTMLFormElement($vs_import_target . '_type_id', null, array('value' => $va_last_settings[$vs_import_target . '_type_id'])));
     $this->view->setVar($vs_import_target . '_limit_to_types_list', $t_instance->getTypeListAsHTMLFormElement($vs_import_target . '_limit_matching_to_type_ids[]', array('multiple' => 1), array('height' => '100px', 'values' => $va_last_settings[$vs_import_target . '_limit_matching_to_type_ids'])));
     $this->view->setVar('ca_object_representations_type_list', $t_rep->getTypeListAsHTMLFormElement('ca_object_representations_type_id', null, array('value' => $va_last_settings['ca_object_representations_type_id'])));
     if ($vs_import_target != 'ca_objects') {
         // non-object representations have relationship types
         $t_rel = ca_relationship_types::getRelationshipTypeInstance($t_instance->tableName(), 'ca_object_representations');
         $this->getView()->setVar($vs_import_target . '_representation_relationship_type', $t_rel->getRelationshipTypesAsHTMLSelect('ltor', null, null, array('name' => $vs_import_target . '_representation_relationship_type'), array('value' => $va_last_settings[$vs_import_target . '_representation_relationship_type'])));
     }
     $va_importer_list = ca_data_importers::getImporters(null, array('formats' => array('exif')));
     $va_object_importer_options = $va_object_representation_importer_options = array("-" => '');
     foreach ($va_importer_list as $vn_importer_id => $va_importer_info) {
         if ($va_importer_info['table_num'] == $t_instance->tableNum()) {
             // target table
             $va_object_importer_options[$va_importer_info['label']] = $vn_importer_id;
         } else {
             $va_object_representation_importer_options[$va_importer_info['label']] = $vn_importer_id;
         }
     }
     $this->view->setVar($vs_import_target . '_mapping_list', caHTMLSelect($vs_import_target . '_mapping_id', $va_object_importer_options, array(), array('value' => $va_last_settings[$vs_import_target . '_mapping_id'])));
     $this->view->setVar($vs_import_target . '_mapping_list_count', sizeof($va_object_importer_options));
     $this->view->setVar('ca_object_representations_mapping_list', caHTMLSelect('ca_object_representations_mapping_id', $va_object_representation_importer_options, array(), array('value' => $va_last_settings['ca_object_representations_mapping_id'])));
     $this->view->setVar('ca_object_representations_mapping_list_count', sizeof($va_object_representation_importer_options));
     //
     // Available sets
     //
     $t_set = new ca_sets();
     $va_available_set_list = caExtractValuesByUserLocale($t_set->getSets(array('table' => $vs_import_target, 'user_id' => $this->request->getUserID(), 'access' => __CA_SET_EDIT_ACCESS__, 'omitCounts' => true)));
     $va_available_sets = array();
     foreach ($va_available_set_list as $vn_set_id => $va_set) {
         $va_available_sets[$va_set['name']] = $vn_set_id;
     }
     $this->view->setVar('available_sets', $va_available_sets);
     $this->view->setVar('t_instance', $t_instance);
     $this->view->setVar('t_rep', $t_rep);
     $this->render('mediaimport/import_options_html.php');
 }