This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/modules/core/export.inc.php

1213 lines
29 KiB
PHP
Raw Normal View History

<?php
/**
* AgileBill - Open Billing Software
*
* This body of work is free software; you can redistribute it and/or
* modify it under the terms of the Open AgileBill License
* License as published at http://www.agileco.com/agilebill/license1-4.txt
*
* For questions, help, comments, discussion, etc., please join the
* Agileco community forums at http://forum.agileco.com/
*
* @link http://www.agileco.com/
* @copyright 2004-2008 Agileco, LLC.
* @license http://www.agileco.com/agilebill/license1-4.txt
* @author Tony Landis <tony@agileco.com>
* @package AgileBill
* @version 1.4.93
*/
/**
* Export Handler Class
*
* This class handles the various export methods for excel, pdf, csv, xml, & txt (tab frormatted).
*/
class CORE_export
{
########################################
## EXPORT MULTIPE PDF INVOICES #####
########################################
function pdf_invoice($VAR, $construct, $type)
{
global $V_validate, $C_list, $C_translate;
# loop through the field list to create the sql queries
$arr = $construct->method[$type];
$field_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= AGILE_DB_PREFIX . $construct->table . '.' . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . AGILE_DB_PREFIX . $construct->table . "." . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
$i++;
}
# get the search details:
if(isset($VAR['search_id']))
{
include_once(PATH_CORE . 'search.inc.php');
$search = new CORE_search;
$search->get($VAR['search_id']);
}
else
{
echo '<BR> The search terms submitted were invalid!';
}
# get the sort order details:
if(isset($VAR['order_by']) && $VAR['order_by'] != "")
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $VAR['order_by'];
$smarty_order = $VAR['order_by'];
}
else
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $construct->order_by;
$smarty_order = $search->order_by;
}
# format saved search string
$sql = explode (" WHERE ", $search->sql);
# generate the full query
$db = &DB();
$q = eregi_replace("%%fieldList%%", $field_list, $search->sql);
$q = eregi_replace("%%tableList%%", AGILE_DB_PREFIX.$construct->table, $q);
$q = eregi_replace("%%whereList%%", "", $q);
$q .= " ".AGILE_DB_PREFIX . "invoice.site_id = '" . DEFAULT_SITE . "'";
$q .= $order_by;
$invoice = $db->Execute($q);
# error reporting
if ($invoice === false)
{
global $C_debug;
$C_debug->error('core:export.inc.php','pdf_invoice', $db->ErrorMsg() . '<br><br>' .$q);
echo "An SQL error has occured!";
return;
}
include_once(PATH_MODULES.'invoice/invoice.inc.php');
$iv=new invoice;
$iv->pdfExport($invoice);
}
########################################
## ADMIN SEARCH EXCEL EXPORT #####
########################################
function search_excel($VAR, $construct, $type)
{
global $C_translate;
# set the field list for this method:
$arr = $construct->method["$type"];
$filename = 'Export.xls';
# determine what action to take:
# inline display, download, email, web save
if($VAR["type"] == "display")
{
header ('Content-type: application/x-msexcel');
header ("Content-Disposition: inline; filename=$filename" );
header ("Content-Description: PHP/INTERBASE Generated Data" );
}
else if($VAR["type"] == "download")
{
header ("Content-Disposition: attachment; filename=$filename" );
}
else if($VAR["type"] == "email")
{
echo "Email exports not supported yet!";
exit;
}
else if($VAR["type"] == "email")
{
echo "Saving exports not supported yet!";
exit;
}
# Start the Excel Stream
xlsBOF();
/************** BEGIN STANDARD EXPORT SEARCH CODE *********************/
# set the field list for this method:
$arr = $construct->method["$type"];
# loop through the field list to create the sql queries
$arr = $construct->method[$type];
$field_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= AGILE_DB_PREFIX . $construct->table . '.' . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . AGILE_DB_PREFIX . $construct->table . "." . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
$i++;
}
# get the search details:
if(isset($VAR['search_id']))
{
include_once(PATH_CORE . 'search.inc.php');
$search = new CORE_search;
$search->get($VAR['search_id']);
}
else
{
echo '<BR> The search terms submitted were invalid!';
}
# get the sort order details:
if(isset($VAR['order_by']) && $VAR['order_by'] != "")
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $VAR['order_by'];
$smarty_order = $VAR['order_by'];
}
else
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $construct->order_by;
$smarty_order = $search->order_by;
}
# determine the offset & limit
if(isset($VAR['page']))
{
$current_page = $VAR['page'];
}
else
{
$current_page = '0';
}
# determine the offset & limit
if($current_page==0)
{
$offset = '0,10000000';
}
else
{
$offset = (($current_page * $search->limit) - $search->limit). ',' . $search->limit;
}
# format saved search string
$sql = explode (" WHERE ", $search->sql);
# generate the full query
$q = eregi_replace("%%fieldList%%", $field_list, $search->sql);
$q = eregi_replace("%%tableList%%", AGILE_DB_PREFIX.$construct->table, $q);
$q = eregi_replace("%%whereList%%", "", $q);
$q .= " " . AGILE_DB_PREFIX . $construct->table.".site_id = '" . DEFAULT_SITE . "'";
$q .= $order_by;
$db = &DB();
# determine the offset & limit
$result = $db->Execute($q);
# error reporting
if ($result === false)
{
global $C_debug;
$C_debug->error('core:export.inc.php','search_xml', $db->ErrorMsg() . '<br><br>' .$q);
echo "An SQL error has occured!";
return;
}
# put the results into an array
$i=0;
$class_name = TRUE;
$results = '';
while (!$result->EOF) {
$results[$i] = $result->fields;
$result->MoveNext();
$i++;
}
# get any linked fields
if($i > 0)
{
$this->result = $results;
$db_join = new CORE_database;
$this->result = $db_join->join_fields($results, $this->linked);
}
else
{
$this->result = $results;
}
/************** END STANDARD EXPORT SEARCH CODE *********************/
# WRITE THE FIRST COLUMN
reset($arr);
$column=0;
while (list ($key, $value) = each ($arr))
{
// get the translated field name
$field = $C_translate->translate('field_'.$value, $construct->module,'');
if(gettype($this->result["$ii"]["$key"]) != "string" )
{
xlsWriteLabel($row,$column,$field);
}
$column++;
}
# LOOP THROUGH THE RESULTS & DISPLAY AS EXCEL
$row = 1;
for($ii = 0; $ii < count($this->result); $ii++)
{
# get the data for each cell:
reset($arr);
$column=0;
while (list ($key, $value) = each ($arr))
{
if ($construct->field["$value"][convert] == 'date' ||
$construct->field["$value"][convert] == 'time' ||
$construct->field["$value"][convert] == 'date-now' ||
$construct->field["$value"][convert] == 'date-time' )
{
$data = date(UNIX_DATE_FORMAT,$this->result["$ii"]["$value"]);
} else {
$data = $this->result["$ii"]["$value"];
}
if(is_numeric ($data))
xlsWriteNumber($row,$column,$data);
else
xlsWriteLabel($row,$column,$data);
$column++;
}
$row++;
}
# Dispay the output
xlsEOF();
exit();
}
###################################
## ADMIN SEARCH PDF EXPORT #####
###################################
function search_pdf($VAR, $construct, $type)
{
# include fpdf class:
include_once(PATH_CORE . 'fpdf.inc.php');
# set the field list for this method:
$arr = $construct->method["$type"];
# loop through the field list to create the sql queries
$field_list = '';
$heading_list = '';
$width_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= $value;
$heading_list .= strtoupper($value); // <- translate
$width_list .= $construct->field[$value]['pdf_width'];
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . $value;
$heading_list .= "," . strtoupper($value); // <- translate
$width_list .= "," . $construct->field[$value]['pdf_width'];
}
$i++;
}
# start the new PDF class...
$pdf = new PDF_MC_Table();
$pdf->Open();
$pdf->AddPage();
# Determine the number of columns and width for each one...
2009-03-28 05:20:19 +00:00
$SetWidths = explode(",",$width_list);
$pdf->SetWidths($SetWidths);
# Define the table heading
2009-03-28 05:20:19 +00:00
$TableHeading = explode(",",$heading_list);
# Define the Properties for the table heading cells:
# set the font:
$pdf->HeadFontFamily = "Arial";
$pdf->HeadFontStyle = "BI";
$pdf->HeadFontSize = 8;
# set the font color:
$pdf->HeadTextColor1 = 255;
$pdf->HeadTextColor2 = 255;
$pdf->HeadTextColor3 = 255;
# set the bg color:
$pdf->HeadFillColor1 = 90;
$pdf->HeadFillColor2 = 90;
$pdf->HeadFillColor3 = 90;
# set the hieght
$pdf->HeadHeight = 6;
# Print the Heading:
$pdf->HeadRow($TableHeading);
# Define the row settings for the rest of the cells...
# define the font settings
$pdf->SetFontFamily = "Arial";
$pdf->SetFontStyle = "";
$pdf->SetFontSize = "7";
# set the hieght
$pdf->RowHeight = 4;
/************** BEGIN STANDARD EXPORT SEARCH CODE *********************/
# set the field list for this method:
$arr = $construct->method["$type"];
# loop through the field list to create the sql queries
$arr = $construct->method[$type];
$field_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= AGILE_DB_PREFIX . $construct->table . '.' . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . AGILE_DB_PREFIX . $construct->table . "." . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
$i++;
}
# get the search details:
if(isset($VAR['search_id']))
{
include_once(PATH_CORE . 'search.inc.php');
$search = new CORE_search;
$search->get($VAR['search_id']);
}
else
{
echo '<BR> The search terms submitted were invalid!';
}
# get the sort order details:
if(isset($VAR['order_by']) && $VAR['order_by'] != "")
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $VAR['order_by'];
$smarty_order = $VAR['order_by'];
}
else
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $construct->order_by;
$smarty_order = $search->order_by;
}
# format saved search string
$sql = explode (" WHERE ", $search->sql);
# generate the full query
$q = eregi_replace("%%fieldList%%", $field_list, $search->sql);
$q = eregi_replace("%%tableList%%", AGILE_DB_PREFIX.$construct->table, $q);
$q = eregi_replace("%%whereList%%", "", $q);
$q .= " ".AGILE_DB_PREFIX . $construct->table.".site_id = '" . DEFAULT_SITE . "'";
$q .= $order_by;
$db = &DB();
$result = $db->Execute($q);
# error reporting
if ($result === false)
{
global $C_debug;
$C_debug->error('core:export.inc.php','search_xml', $db->ErrorMsg() . '<br><br>' .$q);
echo "An SQL error has occured!";
return;
}
# put the results into an array
$i=0;
$class_name = TRUE;
$results = '';
while (!$result->EOF) {
$results[$i] = $result->fields;
$result->MoveNext();
$i++;
}
# get any linked fields
if($i > 0)
{
$this->result = $results;
$db_join = new CORE_database;
$this->result = $db_join->join_fields($results, $this->linked);
}
else
{
$this->result = $results;
}
/************** END STANDARD EXPORT SEARCH CODE *********************/
# LOOP THROUGH THE RESULTS & DISPLAY AS PDF
$results = $result->RecordCount();
$BackAlt = TRUE;
while (!$result->EOF)
{
# get the data for each cell:
reset($arr);
$CurrRow='';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$CurrRow .= $result->fields["$key"];
}
else
{
$CurrRow .= "::" . $result->fields["$key"];
}
$i++;
}
2009-03-28 05:20:19 +00:00
$ThisRow = explode("::",$CurrRow);
# set the colors & fonts
if($BackAlt)
{
# alternating row 1:
$pdf->SetTextColorVar1 = "50";
$pdf->SetTextColorVar2 = "50";
$pdf->SetTextColorVar3 = "50";
$pdf->SetFillColorVar1 = 255;
$pdf->SetFillColorVar2 = 255;
$pdf->SetFillColorVar3 = 255;
$BackAlt = FALSE;
}
else
{
# alternating row 2:
$pdf->SetTextColorVar1 = "0";
$pdf->SetTextColorVar2 = "0";
$pdf->SetTextColorVar3 = "0";
$pdf->SetFillColorVar1 = 240;
$pdf->SetFillColorVar2 = 240;
$pdf->SetFillColorVar3 = 240;
$BackAlt = TRUE;
}
# check for needed page break
$nb=0;
for($ii=0;$ii<count($dataarr);$ii++)
$nb=max($nb,$pdf->NbLines($pdf->widths[$ii],$dataarr[$ii]));
$h=5*$nb;
# Issue a page break first if needed
if($pdf->CheckPageBreak($h))
# print the Table Heading again
$pdf->HeadRow($TableHeading);
$pdf->Row($ThisRow);
# Next record
$result->MoveNext();
}
# Dispay the output
$pdf->Output();
exit;
}
########################################
## ADMIN SEARCH CSV EXPORT #####
########################################
function search_csv($VAR, $construct, $type)
{
global $C_translate;
include_once(PATH_ADODB . 'toexport.inc.php');
$filename = 'Export.csv';
# determine what action to take:
# inline display, download, email, web save
if($VAR["type"] == "display")
{
header ('Content-type: application/x-csv');
header ("Content-Disposition: inline; filename=$filename" );
}
else if($VAR["type"] == "download")
{
header ("Content-Disposition: attachment; filename=$filename" );
}
/************** BEGIN STANDARD EXPORT SEARCH CODE *********************/
# set the field list for this method:
$arr = $construct->method["$type"];
# loop through the field list to create the sql queries
$arr = $construct->method[$type];
$field_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= AGILE_DB_PREFIX . $construct->table . '.' . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . AGILE_DB_PREFIX . $construct->table . "." . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
$i++;
}
# get the search details:
if(isset($VAR['search_id']))
{
include_once(PATH_CORE . 'search.inc.php');
$search = new CORE_search;
$search->get($VAR['search_id']);
}
else
{
echo '<BR> The search terms submitted were invalid!';
}
# get the sort order details:
if(isset($VAR['order_by']) && $VAR['order_by'] != "")
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $VAR['order_by'];
$smarty_order = $VAR['order_by'];
}
else
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $construct->order_by;
$smarty_order = $search->order_by;
}
# format saved search string
$sql = explode (" WHERE ", $search->sql);
# generate the full query
$q = eregi_replace("%%fieldList%%", $field_list, $search->sql);
$q = eregi_replace("%%tableList%%", AGILE_DB_PREFIX.$construct->table, $q);
$q = eregi_replace("%%whereList%%", "", $q);
$q .= " ".AGILE_DB_PREFIX . $construct->table.".site_id = '" . DEFAULT_SITE . "'";
$q .= $order_by;
$db = &DB();
$result = $db->Execute($q);
# error reporting
if ($result === false)
{
global $C_debug;
$C_debug->error('core:export.inc.php','search_xml', $db->ErrorMsg() . '<br><br>' .$q);
echo "An SQL error has occured!";
return;
}
# put the results into an array
$i=0;
$class_name = TRUE;
$results = '';
while (!$result->EOF) {
$results[$i] = $result->fields;
$result->MoveNext();
$i++;
}
# get any linked fields
if($i > 0)
{
$this->result = $results;
$db_join = new CORE_database;
$this->result = $db_join->join_fields($results, $this->linked);
}
else
{
$this->result = $results;
}
/************** END STANDARD EXPORT SEARCH CODE *********************/
# LOOP THROUGH THE RESULTS & DISPLAY AS CSV
for($ii = 0; $ii < count($this->result); $ii++)
{
# print the heading:
if($ii == 0)
{
reset($arr);
$total_fields = count($arr) - 1;
$iii = 0;
while (list ($key, $value) = each ($arr))
{
$field = $C_translate->translate('field_'.$value, $construct->module,'');
echo '"' . $field . '"';
if($total_fields > $iii) echo ',';
$iii++;
}
}
# new line
echo '
';
# print the data for each cell:
reset($arr);
$total_fields = count($arr) - 1;
$iii = 0;
while (list ($key, $value) = each ($arr))
{
if ($construct->field["$value"][convert] == 'date' ||
$construct->field["$value"][convert] == 'time' ||
$construct->field["$value"][convert] == 'date-now' ||
$construct->field["$value"][convert] == 'date-time' )
{
$data = date(UNIX_DATE_FORMAT,$this->result["$ii"]["$value"]);
} else {
$data = $this->result["$ii"]["$value"];
}
echo '"' . $data . '"';
if($total_fields > $iii) echo ',';
$iii++;
}
}
exit();
}
########################################
## ADMIN SEARCH TAB EXPORT #####
########################################
function search_tab($VAR, $construct, $type)
{
global $C_translate;
include_once(PATH_ADODB . '/toexport.inc.php');
$filename = 'Export.txt';
# determine what action to take:
# inline display, download, email, web save
if($VAR["type"] == "display")
{
header ('Content-type: application/x-txt');
header ("Content-Disposition: inline; filename=$filename" );
}
else if($VAR["type"] == "download")
{
header ("Content-Disposition: attachment; filename=$filename" );
}
/************** BEGIN STANDARD EXPORT SEARCH CODE *********************/
# set the field list for this method:
$arr = $construct->method["$type"];
# loop through the field list to create the sql queries
$arr = $construct->method[$type];
$field_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= AGILE_DB_PREFIX . $construct->table . '.' . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . AGILE_DB_PREFIX . $construct->table . "." . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
$i++;
}
# get the search details:
if(isset($VAR['search_id']))
{
include_once(PATH_CORE . 'search.inc.php');
$search = new CORE_search;
$search->get($VAR['search_id']);
}
else
{
echo '<BR> The search terms submitted were invalid!';
}
# get the sort order details:
if(isset($VAR['order_by']) && $VAR['order_by'] != "")
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $VAR['order_by'];
$smarty_order = $VAR['order_by'];
}
else
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $construct->order_by;
$smarty_order = $search->order_by;
}
# format saved search string
$sql = explode (" WHERE ", $search->sql);
# generate the full query
$q = eregi_replace("%%fieldList%%", $field_list, $search->sql);
$q = eregi_replace("%%tableList%%", AGILE_DB_PREFIX.$construct->table, $q);
$q = eregi_replace("%%whereList%%", "", $q);
$q .= " ".AGILE_DB_PREFIX . $construct->table.".site_id = '" . DEFAULT_SITE . "'";
$q .= $order_by;
$db = &DB();
$result = $db->Execute($q);
# error reporting
if ($result === false)
{
global $C_debug;
$C_debug->error('core:export.inc.php','search_xml', $db->ErrorMsg() . '<br><br>' .$q);
echo "An SQL error has occured!";
return;
}
# put the results into an array
$i=0;
$class_name = TRUE;
$results = '';
while (!$result->EOF) {
$results[$i] = $result->fields;
$result->MoveNext();
$i++;
}
# get any linked fields
if($i > 0)
{
$this->result = $results;
$db_join = new CORE_database;
$this->result = $db_join->join_fields($results, $this->linked);
}
else
{
$this->result = $results;
}
/************** END STANDARD EXPORT SEARCH CODE *********************/
# LOOP THROUGH THE RESULTS & DISPLAY AS CSV
for($ii = 0; $ii < count($this->result); $ii++)
{
# print the heading:
if($ii == 0)
{
reset($arr);
$total_fields = count($arr) - 1;
$iii = 0;
while (list ($key, $value) = each ($arr))
{
$data = $C_translate->translate('field_'.$value, $construct->module,'');
echo $data;
if($total_fields > $iii) echo ' ';
$iii++;
}
}
# new line
echo '
';
# print the data for each cell:
reset($arr);
$total_fields = count($arr) - 1;
$iii = 0;
while (list ($key, $value) = each ($arr))
{
if ($construct->field["$value"][convert] == 'date' ||
$construct->field["$value"][convert] == 'time' ||
$construct->field["$value"][convert] == 'date-now' ||
$construct->field["$value"][convert] == 'date-time' )
{
$data = date(UNIX_DATE_FORMAT,$this->result["$ii"]["$value"]);
} else {
$data = $this->result["$ii"]["$value"];
}
echo addslashes($data);
if($total_fields > $iii) echo ' ';
$iii++;
}
}
exit();
}
########################################
## ADMIN SEARCH XML EXPORT #####
########################################
function search_xml($VAR, $construct, $type)
{
/************** BEGIN STANDARD EXPORT SEARCH CODE *********************/
# set the field list for this method:
$arr = $construct->method["$type"];
# loop through the field list to create the sql queries
$arr = $construct->method[$type];
$field_list = '';
$i=0;
while (list ($key, $value) = each ($arr))
{
if($i == 0)
{
$field_var = $construct->table . '_' . $value;
$field_list .= AGILE_DB_PREFIX . $construct->table . '.' . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
else
{
$field_var = $construct->table . '_' . $value;
$field_list .= "," . AGILE_DB_PREFIX . $construct->table . "." . $value;
// determine if this record is linked to another table/field
if($construct->field[$value]["asso_table"] != "")
{
$this->linked[] = array('field' => $value, 'link_table' => $construct->field[$value]["asso_table"], 'link_field' => $construct->field[$value]["asso_field"]);
}
}
$i++;
}
# get the search details:
if(isset($VAR['search_id']))
{
include_once(PATH_CORE . 'search.inc.php');
$search = new CORE_search;
$search->get($VAR['search_id']);
}
else
{
echo '<BR> The search terms submitted were invalid!';
}
# get the sort order details:
if(isset($VAR['order_by']) && $VAR['order_by'] != "")
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $VAR['order_by'];
$smarty_order = $VAR['order_by'];
}
else
{
$order_by = ' ORDER BY ' . AGILE_DB_PREFIX . $construct->table . '.' . $construct->order_by;
$smarty_order = $search->order_by;
}
# format saved search string
$sql = explode (" WHERE ", $search->sql);
# generate the full query
$q = eregi_replace("%%fieldList%%", $field_list, $search->sql);
$q = eregi_replace("%%tableList%%", AGILE_DB_PREFIX.$construct->table, $q);
$q = eregi_replace("%%whereList%%", "", $q);
$q .= " ".AGILE_DB_PREFIX . $construct->table.".site_id = '" . DEFAULT_SITE . "'";
$q .= $order_by;
$db = &DB();
$result = $db->Execute($q);
# error reporting
if ($result === false)
{
global $C_debug;
$C_debug->error('core:export.inc.php','search_xml', $db->ErrorMsg() . '<br><br>' .$q);
echo "An SQL error has occured!";
return;
}
# put the results into an array
$i=0;
$class_name = TRUE;
$results = '';
while (!$result->EOF) {
$results[$i] = $result->fields;
$result->MoveNext();
$i++;
}
# get any linked fields
if($i > 0)
{
$this->result = $results;
$db_join = new CORE_database;
$this->result = $db_join->join_fields($results, $this->linked);
}
else
{
$this->result = $results;
}
/************** END STANDARD EXPORT SEARCH CODE *********************/
# create the xml processing instruction
# header("Content-type: text/xml");
$filename = 'XML_Export.xml';
# determine what action to take:
if($VAR["type"] == "display") {
header ('Content-type: application/x-xml');
header ("Content-Disposition: inline; filename=$filename" );
}
else if($VAR["type"] == "download") {
header ("Content-Disposition: attachment; filename=$filename" );
}
$_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
$_xml .="<results>\r\n";
# loop through the resulsts and display as PDF
$row = 0;
for($ii = 0; $ii < count($this->result); $ii++)
{
$_xml .= " <" . $construct->table . ">\r\n";
# get the data for each cell:
reset($arr);
$column=0;
while (list ($key, $value) = each ($arr))
{
if ($construct->field["$value"][convert] == 'date' ||
$construct->field["$value"][convert] == 'time' ||
$construct->field["$value"][convert] == 'date-now' ||
$construct->field["$value"][convert] == 'date-time' )
{
$date = date(UNIX_DATE_FORMAT,$this->result["$ii"]["$value"]);
$data = htmlspecialchars($date,0,'ISO8859-1');
//$data = test;
} else {
$data = htmlspecialchars($this->result["$ii"]["$value"],0,'ISO8859-1');
}
$_xml .= " <$value>" . $data . "</$value>\r\n";
}
# Next record
$_xml .= " </" . $construct->table . ">\r\n";
}
$_xml .="</results>\r\n";
echo $_xml;
exit();
}
}
// ----- begin of excel export function library -----
// Excel begin of file header
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
// Excel end of file footer
function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}
// Function to write a Number (double) into Row, Col
function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
// Function to write a label (text) into Row, Col
function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
?>