function forena_save_report in Forena Reports 6.2
Same name and namespace in other branches
- 8 forena.common.inc \forena_save_report()
- 6 forena.admin.inc \forena_save_report()
- 7.5 forena.common.inc \forena_save_report()
- 7 forena.admin.inc \forena_save_report()
- 7.2 forena.admin.inc \forena_save_report()
- 7.3 forena.common.inc \forena_save_report()
- 7.4 forena.common.inc \forena_save_report()
Save the report file to disk
Parameters
string $name File name to save report to:
unknown_type $data:
12 calls to forena_save_report()
- forena_add_param_form_submit in ./
forena.admin.inc - forena_add_report_form_submit in ./
forena.admin.inc - forena_admin_params_form_submit in ./
forena.admin.inc - forena_create_trans_form_submit in ./
forena.admin.inc - forena_data_block_add in ./
forena.admin.inc - submit handler for forena_data_block_form. This adds the datablock to an existing report.
File
- ./
forena.admin.inc, line 117
Code
function forena_save_report($report_name, $report, $save_file = FALSE, $altered = 0) {
static $save_count = 0;
if ($report && !is_object($report)) {
try {
$report = new SimpleXMLElement($report);
} catch (Exception $e) {
forena_error(t('Could not save %s because XML was malformed', htmlspecialchars($report_name)), "<p>Invalid XML</p><pre>XML:" . htmlspecialchars($report) . "\n" . $e
->getMessage() . "</pre>");
return;
}
}
if (!_forena_verify_directory($report_name)) {
drupal_set_message(t('Error creating directory. Check Permissions'), 'error');
return 0;
}
$report_path = forena_report_path();
$r = new FrxReport($report);
$data['title'] = $r->title;
$data['category'] = $r->category;
$data['options'] = $r->options;
$data['descriptor'] = $r->descriptor;
$data['name'] = $report_name;
$data['altered'] = $altered;
$r_xml = $report
->asXML();
//@TODO: Clean up filename to make sure
$name = $data['name'];
$filepath = $report_path . '/' . $report_name . '.frx';
// If we need to save this to the file system
if ($save_file) {
// Serialize the report for saving
try {
file_put_contents($filepath, $r_xml);
} catch (Exception $e) {
fornea_error('Error Saving Report', $e
->getMessage());
}
}
// Get the security caches from the reports
if ($report) {
$cache = forena_load_cache($report);
}
else {
$cache = '';
}
$rpt_cache = '';
if ($cache) {
$rpt_cache = serialize($cache);
}
// Set default interpretations of data
$data['enabled'] = isset($data['enabled']) && $data['enabled'] ? 1 : 0;
if (isset($data['options']['hidden']) && (string) $data['options']['hidden']) {
$data['hidden'] = $data['options']['hidden'] && $data['options']['hidden'] != 'N' && $data['options']['hidden'] != '0' ? 1 : 0;
if (!$data['category']) {
$data['category'] = 'All';
}
}
else {
// Set hidden based on category
$data['hidden'] = $data['category'] ? 0 : 1;
}
// Save language info
$lang = 'en';
if (module_exists('locale')) {
@(list($tlang, $tname) = explode('/', $name, 2));
if (array_key_exists($tlang, language_list())) {
$lang = $tlang;
$name = $tname;
}
}
// Save to the Database
if (file_exists($filepath)) {
$modified = filemtime($filepath);
$result = db_query("SELECT report_name FROM {forena_reports} WHERE report_name='%s'", $name);
if ($rpt = db_fetch_object($result)) {
db_query("UPDATE {forena_reports}\n SET title='%s',\n descriptor='%s',\n category='%s',\n hidden='%s',\n cache='%s',\n src='%s',\n altered = %d,\n modified=%d WHERE report_name='%s' AND language='%s'", array(
$data['title'],
$data['descriptor'],
$data['category'],
$data['hidden'],
$rpt_cache,
$r_xml,
$data['altered'],
$modified,
$name,
$lang,
));
}
else {
db_query("INSERT INTO {forena_reports} (report_name, language, title, descriptor, category,\n hidden, cache, src, altered, modified) " . "VALUES ('%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', %d, %d)", $name, $lang, $data['title'], $data['descriptor'], $data['category'], $data['hidden'], $rpt_cache, $r_xml, $data['altered'], $modified);
}
$save_count++;
}
$r = null;
$result = null;
$r_xml = null;
$report = NULL;
$data = NULL;
$rpt = null;
$cache = null;
$rpt_cache = null;
// Destroy object to clear memory leaks.
if ($r) {
$r
->__destruct();
unset($r);
}
return $save_count;
}