/** * Return list of available data exporters * * @param int $pn_table_num * @param array $pa_options * countOnly = return number of exporters available rather than a list of exporters * * @return mixed List of exporters, or integer count of exporters if countOnly option is set */ public static function getExporters($pn_table_num = null, $pa_options = null) { $o_db = new Db(); $t_exporter = new ca_data_exporters(); $vo_dm = $t_exporter->getAppDatamodel(); $va_sql_params = array(); if ((int) $pn_table_num) { $va_sql_wheres[] = "(de.table_num = ?)"; $va_sql_params[] = (int) $pn_table_num; } $vs_sql_wheres = sizeof($va_sql_wheres) ? " WHERE " . join(" AND ", $va_sql_wheres) : ""; $qr_res = $o_db->query("\n\t\t\tSELECT *\n\t\t\tFROM ca_data_exporters de\n\t\t\t{$vs_sql_wheres}\n\t\t", $va_sql_params); $va_exporters = array(); $va_ids = array(); if (isset($pa_options['countOnly']) && $pa_options['countOnly']) { return (int) $qr_res->numRows(); } while ($qr_res->nextRow()) { $va_row = $qr_res->getRow(); $va_ids[] = $vn_id = $va_row['exporter_id']; $va_exporters[$vn_id] = $va_row; $t_instance = $vo_dm->getInstanceByTableNum($va_row['table_num'], true); $va_exporters[$vn_id]['exporter_type'] = $t_instance->getProperty('NAME_PLURAL'); $va_exporters[$vn_id]['exporter_type_singular'] = $t_instance->getProperty('NAME_SINGULAR'); $va_exporters[$vn_id]['settings'] = caUnserializeForDatabase($va_row['settings']); $va_exporters[$vn_id]['last_modified_on'] = $t_exporter->getLastChangeTimestamp($vn_id, array('timestampOnly' => true)); } $va_labels = $t_exporter->getPreferredDisplayLabelsForIDs($va_ids); foreach ($va_labels as $vn_id => $vs_label) { $va_exporters[$vn_id]['label'] = $vs_label; } return $va_exporters; }
/** * Prepare export generated by ExportData action */ public function SetupBatchExport() { $o_conf = Configuration::load(); $o_session = $this->getRequest()->getSession(); if (!($vn_exporter_id = $o_session->getVar('exporter_id'))) { $this->getResponse()->setRedirect($this->getRequest()->config->get('error_display_url') . '/n/3420?r=' . urlencode($this->getRequest()->getFullUrlPath())); return; } $t_exporter = new ca_data_exporters($vn_exporter_id); if (!$t_exporter->getPrimaryKey()) { $this->getResponse()->setRedirect($this->getRequest()->config->get('error_display_url') . '/n/3420?r=' . urlencode($this->getRequest()->getFullUrlPath())); return; } $t_subject = $t_exporter->getAppDatamodel()->getInstanceByTableNum($t_exporter->get('table_num'), true); // alternate destinations $va_alt_dest = $o_conf->getAssoc('exporter_alternate_destinations'); $this->getView()->setVar('exporter_alternate_destinations', $va_alt_dest); // filename set via request wins $vs_filename = $this->getRequest()->getParameter('file_name', pString); // otherwise get from config file if (!$vs_filename) { if ($vs_filename = $o_conf->get($t_subject->tableName() . "_batch_export_filename")) { // config setting comes without file extension $vs_filename = $vs_filename . '.' . $t_exporter->getFileExtension(); } } // still no filename? -> go for hardcoded default if (!$vs_filename) { $vs_filename = 'batch_export.' . $t_exporter->getFileExtension(); } // pass to view $this->getView()->setVar('file_name', $vs_filename); $this->render('export/export_destination_html.php'); }