Source for file func.export.php
Documentation is available at func.export.php
* Libreria di funzioni legate all'esportazione dei dati.
* @subpackage Function-Libraries
* @author Mario Marcello Verona <marcelloverona@gmail.com>
* @copyright 2007 Mario Marcello Verona
* @license http://www.gnu.org/licenses/gpl.html GNU Public License
* Funzione per l'esportazione dei dati
* @param bool $only_visibile
$clausola_visibile = ($only_visibile) ? "AND c.in_visibile=1" : "";
// PRENDI INFO Colonne della TABELLA
$query2 = vmsql_query("SELECT c.column_name , c.data_type , c.character_maximum_length as maxsize, c.is_nullable,
c.in_tipo, c.in_default, t.orderby, t.orderby_sort
FROM {$db1['frontend']}.registro_col c, {$db1['frontend']}.registro_tab t
AND c.id_table=t.id_table
ORDER BY c.ordinal_position",$link);
foreach($matrice_info as $k=> $info){
$ORDERBY = ($info['orderby']!= '') ? "ORDER BY ". $info['orderby']. " ". $info['orderby_sort'] : "";
if($info['in_tipo']== "select_from"){
$test = preg_match("'SELECT ([\w]+) ?, ?([\w]+) +FROM +([\w]+).*?'i",$info['in_default'],$campo_k);
$campi.= " (SELECT t$k.{$campo_k[2]} FROM {$campo_k[3]} t$k WHERE t$k.{$campo_k[1]}=t.{$info['column_name']}) as ". $info['column_name']. ",";
$campi.= " t.". $info['column_name']. ",";
$query_elab= vmsql_query("SELECT $campi FROM {$db1['dbname']}.$nome_tabella t $ORDERBY",$link);
* Funzione di esportazione generica tabella in formato CSV
* @param int $oid_tabella
$oid_tabella = (int) $oid_tabella;
$nome_file_tmp= FRONT_ROOT. "/files/tmp/". md5($oid_tabella). ".csv";
// Prende la tabella in XML
$q= vmsql_query("SELECT * FROM ". $db1['dbname']. ".$nome_tabella",$link);
$fp= fopen($nome_file_tmp,'w');
$RIGA= str_replace(array("\r\n","\n\r","\n","\r")," ",$RIGA);
$fp= fopen($nome_file_tmp,'a');
header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=$nome_tabella-". date("Ymd"). ".csv");
* Funzione di trasfomazione di tabella in HTML
* @param int $oid_tabella
* @param string $colore_th
function tabella_html($oid_tabella,$raw= true,$colore_th= ''){
* Funzione interna di generazione della tabella HTML.
* Viene poi utilizzata da altre funzioni di questa libreria per generare l'output.
* @param int $oid_tabella
* @param string $colore_th Espresso in RGB esadecimale. Ad es. #FF0000
function _table2html($oid_tabella,$raw= true,$colore_th= ''){
$oid_tabella= (int) $oid_tabella;
$nome_file_tmp= FRONT_ROOT. "/files/tmp/". md5($oid_tabella). ".htm";
$q= vmsql_query("SELECT * FROM ". $db1['dbname']. ".$nome_tabella",$link);
<! DOCTYPE HTML PUBLIC "-// W3C// DTD HTML 4.01 Transitional// EN">
< meta http- equiv=" Content- type" content=" text/ html; charset= iso-8859-1">
$info_colore= ($colore_th== '') ? " bgcolor=\"#FF9900\"" : " bgcolor=\"$colore_th\"";
$fp= fopen($nome_file_tmp,'w');
$TR_TH= "<tr><th$info_colore>". implode("</th><th$info_colore>",$campi). "</th></tr>\n";
$TR_TD= "<tr><td>". implode("</td><td>",$RS). "</td></tr>\n";
<table border=\"1\" summary=\"$nome_tabella\">
#################################################################
# EXCEL (html letto da excel)
* Genera una tabella XLS creando tabella HTML e mandando un header di excel
* @param int $oid_tabella
* @param string $colore_th
function tabella_xls($oid_tabella,$raw= true,$colore_th= ''){
// Prende la tabella in XML
$ctype= "application/vnd.ms-excel";
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
$header= "Content-Disposition: attachment; filename=". $nome_tabella. "-". date("Ymd"). ".xls;";
* Genera una tabella nello standard Open Document Spreadsheet (ad es. openOffice)
* @param int $oid_tabella
* @param string $colore_th
function tabella_ods($oid_tabella,$raw= true,$colore_th= ''){
$id_tabella = (int) $oid_tabella;
// PRENDI LE IMPOSTAZIONI DEI CAMPI DELLA TABELLA
$q0= vmsql_query("SELECT column_name,data_type FROM {$db1['frontend']}.registro_col WHERE id_table=$id_tabella ORDER BY ordinal_position",$link);
$tipo_campo[$RS0[0]]= $RS0[1];
$q= vmsql_query("SELECT * FROM ". $db1['dbname']. ".$nome_tabella",$link);
// Cancella se esiste già il file
// prendi il file content.xml
$ar_cont= explode('<!-- contenuto -->',$cont);
// prima riga, scrive le intestazioni
$XML_CONT.= '<table:table-row table:style-name="ro1">';
foreach($RS as $lab=> $val){
<table:table-cell table:style-name=\"ce1\" office:value-type=\"string\">
$XML_CONT.= '</table:table-row>';
// scrittura prima volta:
<table:table table:name="'. $nome_tabella. '" table:style-name="ta1" table:print="false">
<table:table-column table:style-name="co1" table:number-columns-repeated="'. ($i+ 1). '" table:default-cell-style-name="Default"/>
<table:table-row table:style-name="ro1">
// Scrittura inizio di tabella
// scrivo la roba in ciclo ogni 10 record
// ultima scrittura fuori dal ciclo (per i record esclusi dal multiplo...)
if($i> $ultima_scrittura){
$chiusura_XML= '\t</table:table>';
openErrorGenerico("Errore: impossibile scrivere sul filesystem.",false,'Non è stato possibile generare il file per impostazioni di diritti di scrittura del server.<br />Se il problema si verificasse sistematicamente contattare l\'amministratore di sistema');
$zip->addFile("content.xml",FRONT_ROOT. "/files/tmp/");
$ctype= "application/vnd.oasis.opendocument.spreadsheet";
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
$header= "Content-Disposition: attachment; filename=". $nome_tabella. "-". date("Ymd"). ".ods;";
openErrorGenerico("Errore: impossibile scrivere sul filesystem.",false,'Non è stato possibile generare il file per impostazioni di diritti di scrittura del server.<br />Se il problema si verificasse sistematicamente contattare l\'amministratore di sistema');
* Funzione interna usata nella generazione di foglio di calcolo OpenDocument.
* Questa funzione è richiamata dalla funzione {@see tabella_ods}
* @param array $array_tipo_campo
* @param string $nome_campo
* @see function tabella_ods
* @return string Il frammento di XML per il campo scelto
function _ods_type($array_tipo_campo,$nome_campo,$value){
switch($array_tipo_campo[$nome_campo]){
<table:table-cell office:value-type="float" office:value="'. $value. '">
<text:p>'. $value. '</text:p>
<table:table-cell office:value-type="date" office:date-value="'. $value. '">
<text:p>'. dataITA($value,false). '</text:p>
<table:table-cell office:value-type="date" office:date-value="'. $value. '">
<text:p>'. dataITA($value,true). '</text:p>
default : // varie string
<table:table-cell office:value-type="string">
<text:p>'. $value. '</text:p>
|