/**
  * Export set items
  *
  * @param string $ps_exporter_code defines the exporter to use
  * @param int $pn_set_id primary key of set to export
  * @param string $ps_filename Destination filename (we can't keep everything in memory here)
  * @param array $pa_options
  * 		progressCallback = callback function for asynchronous UI status reporting
  *		showCLIProgressBar = Show command-line progress bar. Default is false.
  *		logDirectory = path to directory where logs should be written
  *		logLevel = KLogger constant for minimum log level to record. Default is KLogger::INFO.
  * @return boolean success state
  */
 public static function exportRecordsFromSet($ps_exporter_code, $pn_set_id, $ps_filename, $pa_options = null)
 {
     ca_data_exporters::$s_exporter_cache = array();
     ca_data_exporters::$s_exporter_item_cache = array();
     if (!($t_mapping = ca_data_exporters::loadExporterByCode($ps_exporter_code))) {
         return false;
     }
     if (sizeof(ca_data_exporters::checkMapping($ps_exporter_code)) > 0) {
         return false;
     }
     $t_set = new ca_sets();
     if (!$t_set->load($pn_set_id)) {
         return false;
     }
     $va_row_ids = array_keys($t_set->getItems(array('returnRowIdsOnly' => true)));
     $o_result = $t_set->makeSearchResult($t_set->get('table_num'), $va_row_ids);
     return self::exportRecordsFromSearchResult($ps_exporter_code, $o_result, $ps_filename, $pa_options);
 }