aboutsummaryrefslogtreecommitdiffstats
path: root/mayor-mod/www/include/modules/naplo
diff options
context:
space:
mode:
Diffstat (limited to 'mayor-mod/www/include/modules/naplo')
-rw-r--r--mayor-mod/www/include/modules/naplo/share/file.php662
1 files changed, 0 insertions, 662 deletions
diff --git a/mayor-mod/www/include/modules/naplo/share/file.php b/mayor-mod/www/include/modules/naplo/share/file.php
deleted file mode 100644
index 1e6c7595..00000000
--- a/mayor-mod/www/include/modules/naplo/share/file.php
+++ /dev/null
@@ -1,662 +0,0 @@
-<?php
-
- require_once('include/share/print/pdf.php');
-
- if (file_exists("lang/$lang/module-naplo/share/file.php")) {
- require_once("lang/$lang/module-naplo/share/file.php");
- } elseif (file_exists('lang/'._DEFAULT_LANG.'/module-naplo/share/file.php')) {
- require_once('lang/'._DEFAULT_LANG.'/module-naplo/share/file.php');
- } else {
- echo $lang;
- }
-
- $Attrs = array(
-
- 'diakid' => _ATTR_DIAKID,
- 'oid' => _ATTR_OID,
- 'diakigazolvanyszam' => _ATTR_IGAZOLVANYSZAM,
- 'viseltnevelotag' => _ATTR_VNE,
- 'viseltcsaladinev' => _ATTR_VCSN,
- 'viseltutonev' => _ATTR_VUN,
- 'szuleteskorinevelotag' => _ATTR_SZNE,
- 'szuleteskoricsaladinev' => _ATTR_SZCSN,
- 'szuleteskoriutonev' => _ATTR_SZUN,
- 'szuletesihely' => _ATTR_SZH,
- 'szuletesiido' => _ATTR_SZI,
- 'anyanevelotag' => _ATTR_ANE,
- 'anyacsaladinev' => _ATTR_ACSN,
- 'anyautoneve' => _ATTR_AUN,
- 'kezdotanev' => _ATTR_KEZDO_TANEV,
- 'kezdoszemeszter' => _ATTR_KEZDO_SZEMESZTER,
- 'vegzotanev' => _ATTR_VEGZO_TANEV,
- 'vegzoszemeszter' => _ATTR_VEGZO_SZEMESZTER,
- 'adoazonosito' => _ATTR_ADOAZONOSITO,
- 'allampolgarsag' => _ATTR_ALLAMPOLGARSAG,
- 'anyaid' => _ATTR_ANYAID,
- 'apaid' => _ATTR_APAID,
- 'gondviseloid' => _ATTR_GONDVISELOID,
- 'neveloid' => _ATTR_NEVELOID,
- 'diaknaplosorszam' => _ATTR_DIAKNAPLOSORSZAM,
- 'elozoiskolaomkod' => _ATTR_ELOZOISKOLAOMKOD,
- 'email' => _ATTR_EMAIL,
- 'fogyatekossag' => _ATTR_FOGYATEKOSSAG,
- 'gondozasiszam' => _ATTR_GONDOZASISZAM,
- 'jogviszonykezdete' => _ATTR_JOGVISZONYKEZDETE,
- 'jogviszonyvege' => _ATTR_JOGVISZONYVEGE,
-
- 'lakhelyorszag' => _ATTR_LAKHELY_ORSZAG,
- 'lakhelyirsz' => _ATTR_LAKHELY_IRSZ,
- 'lakhelyhelyseg' => _ATTR_LAKHELY_HELYSEG,
- 'lakhelykozteruletnev' => _ATTR_LAKHELY_KOZTERULETNEV,
- 'lakhelykozteruletjelleg' => _ATTR_LAKHELY_KOZTERULETJELLEG,
- 'lakhelyhazszam' => _ATTR_LAKHELY_HAZSZAM,
- 'lakhelyemelet' => _ATTR_LAKHELY_EMELET,
- 'lakhelyajto' => _ATTR_LAKHELY_AJTO,
-
- 'tartorszag' => _ATTR_TART_ORSZAG,
- 'tartirsz' => _ATTR_TART_IRSZ,
- 'tarthelyseg' => _ATTR_TART_HELYSEG,
- 'tartkozteruletnev' => _ATTR_TART_KOZTERULETNEV,
- 'tartkozteruletjelleg' => _ATTR_TART_KOZTERULETJELLEG,
- 'tarthazszam' => _ATTR_TART_HAZSZAM,
- 'tartemelet' => _ATTR_TART_EMELET,
- 'tartajto' => _ATTR_TART_AJTO,
-
- 'tajszam' => _ATTR_TAJSZAM,
- 'osztalyjel' => _ATTR_OSZTALYJEL,
- 'penzugyistatusz' => _ATTR_PENZUGYISTATUSZ,
- 'szemelyiigazolvanyszam' => _ATTR_SZEMELYIIGAZOLVANYSZAM,
- 'szocialishelyzet' => _ATTR_SZOCIALISHELYZET,
- 'statusz' => _ATTR_STATUSZ,
- 'tartozkodasiokiratszam' => _ATTR_TARTOZKODASIOKIRATSZAM,
- 'torvenyeskepviselo' => _ATTR_TORVENYESKEPVISELO,
- 'telefon' => _ATTR_TELEFON,
- 'mobil' => _ATTR_MOBIL,
- 'nem' => _ATTR_NEM,
- 'lakohelyijellemzo' => _ATTR_LAKOHELYIJELLEMZO,
- 'megjegyzes' => _ATTR_MEGJEGYZES,
- );
-
- function readUpdateFile($fileName, $mezo_elvalaszto = ' ') {
-
-
- $ADATOK = array();
- if ($fp = @fopen($fileName,'r')) {
- // Az első 50 sor beolvasása - minta a mező-hozzárendeléshez
- $i=0;
- while (($sor = fgets($fp,1024)) and ($i<50)) {
- $ADATOK[$i] = explode($mezo_elvalaszto,chop($sor));
- $i++;
- }
- fclose($fp);
- } else {
- $_SESSION['alert'][] = 'message:file_open_error:'.$fileName;
- }
-
- return $ADATOK;
- }
-/*
- * Lekérdezi egy adatbázis (naplo_intezmeny, naplo (tanév)) egy adott táblájának mezőit.
- * Ha szükséges ezek listáját kiegészíti az extraAttrs tömbben felsorolt mezőkkel.
- * A mezőnevekhez nyelvi konstansokat rendelhetünk ($Attrs tömb és lang/.../share/file.php)
- */
- function getTableFields($table, $db = 'naplo_intezmeny', $extraAttrs = array(), $SET = array('withType' => false)) {
-
- global $Attrs;
-
- $return = $type = $name = array();
- $q = "SHOW FIELDS FROM `%s`";
- $r = db_query($q, array('fv' => 'getTableFields','modul' => $db, 'result' => 'indexed', 'values' => array($table)));
- for ($i = 0; $i < count($r); $i++) {
- if ($SET['withType']) {
- if (substr($r[$i]['Type'],0,7) == 'varchar') $type[ $r[$i]['Field'] ] = 'string';
- elseif (substr($r[$i]['Type'],0,4) == 'enum') $type[ $r[$i]['Field'] ] = 'enum';
- elseif (substr($r[$i]['Type'],0,4) == 'date') $type[ $r[$i]['Field'] ] = 'date';
- elseif (strpos($r[$i]['Type'],'int(') !== false) $type[ $r[$i]['Field'] ] = 'int';
- else $type[ $r[$i]['Field'] ] = 'string';
- }
- if ($Attrs[kisbetus($r[$i]['Field'])] != '') $name[$r[$i]['Field']] = $Attrs[kisbetus($r[$i]['Field'])];
- else $name[$r[$i]['Field']] = $r[$i]['Field'];
- }
- for ($i = 0; $i < count($extraAttrs); $i++) {
- if (!isset($name[$extraAttrs[$i]])) {
- if ($Attrs[kisbetus($extraAttrs[$i])] != '') $name[$extraAttrs[$i]] = $Attrs[kisbetus($extraAttrs[$i])];
- else $name[$extraAttrs[$i]] = $extraAttrs[$i];
- }
- }
- ksort($name);
-
- if ($SET['withType']) return array('names' => $name, 'types' => $type);
- return $name;
-
- }
-
-
- function getEnumField($modul, $table, $field) {
-
- $table = '`'.str_replace('.','`.`',$table).'`';
- $q = "SHOW FIELDS FROM %s LIKE '%s'";
- $v = array($table, $field);
- $field = db_query($q, array('fv' => 'getEnumField', 'modul' => $modul, 'result' => 'record', 'values' => $v));
- $enum = substr($field['Type'], 6, -2);
- $values = explode("','", $enum);
-
- return $values;
- }
-
- function getSetField($modul, $table, $field) {
-
- $table = '`'.str_replace('.','`.`',$table).'`';
- $q = "SHOW FIELDS FROM %s LIKE '%s'";
- $v = array($table, $field);
- $field = db_query($q, array('fv' => 'getSetField', 'modul' => $modul, 'result' => 'record', 'values' => $v));
- $set = substr($field['Type'], 5, -2);
- $values = explode("','", $set);
-
- return $values;
- }
-
-
- function updateTable($table, $file, $MEZO_LISTA, $KULCS_MEZOK, $mezo_elvalaszto = ' ', $rovatfej = false, $db = 'naplo_intezmeny') {
-
-
- if (!file_exists($file)) {
- $_SESSION['alert'][] = 'message:file_not_found:updateTable:'.$file;
- return false;
- }
-
- if (!is_array($MEZO_LISTA)) {
- $_SESSION['alert'][] = 'message:wrong_data:updateTable:MEZO_LISTA';
- return false;
- }
-
- if (!is_array($KULCS_MEZOK)) {
- $_SESSION['alert'][] = 'message:wrong_data:updateTable:KULCS_MEZOK';
- return false;
- }
-
- // A frissítendő attribútumok listája
- $attrList = array_values(array_filter($MEZO_LISTA));
-
- $fp = fopen($file,'r');
- if (!$fp) {
- $_SESSION['alert'][] = 'message:file_open_error:updateTable:'.$file;
- return false;
- }
-
- $lr = db_connect($db, array('fv' => 'updateTable'));
- if (!$lr) {
- $_SESSION['alert'][] = 'message:db_connect_failure:updateTable';
- fclose($fp);
- return false;
- }
- db_start_trans($lr);
-
- // Az első sor kihagyása
- if ($rovatfej) $sor = fgets($fp,1024);
- while ($sor = fgets($fp,1024)) {
-
- $insertValues = $insertPatterns = array();
- $adatSor = explode($mezo_elvalaszto,chop($sor));
- $update = false;
-
- // keresési feltétel összerakása
- $where = $v = $vw = array();
- for ($i = 0; $i < count($KULCS_MEZOK); $i++) {
- if ($adatSor[$KULCS_MEZOK[$i]] != '') {
- $where[] = "`%s`='%s'";
- array_push($vw, $MEZO_LISTA[$KULCS_MEZOK[$i]], $adatSor[$KULCS_MEZOK[$i]]);
- }
- }
- $num = 0;
- if (count($where) != 0) {
- $q = 'SELECT COUNT(*) FROM `%s` WHERE '.implode(' AND ', $where);
- array_unshift($vw, $table);
- $num = db_query($q, array('fv' => 'updateTable', 'values' => $vw, 'result' => 'value', 'modul' => $db), $lr);
- }
- if ($num == 1 && _SKIP_ON_DUP === true) { $_SESSION['alert'][] = 'info:_SKIP_ON_DUP:'.serialize($sor); continue; }
- if ($num == 1) { // update
- $v = $vw;
- array_shift($v); //$table kivétele
- $UPDATE = array();
- for ($i = 0; $i < count($MEZO_LISTA); $i++) {
- if (
- $MEZO_LISTA[$i] != ''
- and $adatSor[$i] != ''
- and !in_array($i,$KULCS_MEZOK)
- ) {
- if ($adatSor[$i] == '\N') {
- array_unshift($UPDATE, "`%s`=NULL");
- array_unshift($v, $MEZO_LISTA[$i]);
- } else {
- array_unshift($UPDATE, "`%s`='%s'");
- array_unshift($v, $MEZO_LISTA[$i], $adatSor[$i]);
- }
- }
- }
- if (count($UPDATE) > 0) {
- array_unshift($v, $table);
- $q = 'UPDATE `%s` SET '.implode(',',$UPDATE).' WHERE '.implode(' AND ', $where);
- $r = db_query($q, array('fv' => 'updateTable/update', 'values' => $v, 'modul' => $db, 'rollback' => true), $lr);
- if (!$r) {
- db_close($lr);
- return false;
- }
- }
- } elseif ($num == 0) { // insert
- for ($i = 0; $i < count($MEZO_LISTA); $i++) {
- if ($MEZO_LISTA[$i] != '') {
- if ($adatSor[$i] == '\N') {
- $insertValues[] = 'NULL';
- $insertPatterns[] = '%s';
- } else {
- $insertValues[] = $adatSor[$i];
- $insertPatterns[] = "'%s'";
- }
- }
- }
- $q = 'INSERT INTO `%s` ('.implode(',', array_fill(0, count($attrList), '%s')).')
- VALUES ('.implode(',', $insertPatterns).')';
- $v = mayor_array_join(array($table), $attrList, $insertValues);
- $r = db_query($q, array('fv' => 'updateTable/insert', 'modul' => $db, 'values' => $v, 'rollback' => true), $lr);
- if (!$r) {
- db_close($lr);
- return false;
- }
- } else {
- $_SESSION['alert'][] = 'message:wrong_data:updateTable:több illeszkedő rekord is van, túl laza a kulcs feltétel ('
- .call_user_func_array('sprintf', array_merge(array('%s tábla, '.implode(' AND ',$where)), $vw)).')';
- db_rollback($lr);
- db_close($lr);
- return false;
- }
- } // while
- db_commit($lr);
- db_close($lr);
-
- fclose($fp);
-
- }
-
- function generatePDF($outputFile, $outputDir, $str, $booklet=false) {
-
-
- // A szöveg file-ba írása
- if (!$fp = fopen($outputDir.'/'.$outputFile.'-u8.tex', 'w')) {
- $_SESSION['alert'][] = 'message:file_open_failure:generatePDF:'.$outputDir.'/'.$outputFile.'-u8.tex';
- return false;
- }
- if (!fwrite($fp, $str)) {
- $_SESSION['alert'][] = 'message:file_write_failure:generatePDF:'.$outputDir.'/'.$outputFile.'-u8.tex';
- return false;
- }
- fclose($fp);
- if (__NYOMTATAS_XETEX===true) {
- $ret = exec('cd '.$outputDir.'; cat <<EOF > '.$outputFile.'.tex
-%\font\kicsi=ecrm0500
-%\font\nagy=ecbx1200
-%\font\vastag=ecsx0800
-%\font\nagyss=ecsx1200
-%\font\normal=ecss0800
-%\font\dolt=ecsi0800
-
-\font\kicsi="Linux Libertine O" at 5pt
-\font\nagy="Linux Libertine O/B" at 12pt
-\font\nagyss="Arial/B" at 12pt
-\font\normal="Linux Biolinum O" at 8pt
-\font\dolt="Linux Biolinum O/I" at 8pt
-\normal
-
-EOF
-');
- $ret = exec('cd '.$outputDir.'; cat '.$outputFile.'-u8.tex >> '.$outputFile.'.tex');
- $ret = exec('cd '.$outputDir.'; xetex -fmt '._MAYOR_DIR.'/print/module-naplo/xetex/mayor-xetex '.$outputFile.'.tex');
-#ex -fmt '._MAYOR_DIR.'/print/module-naplo/tex/mayor '.$outputFile.'.tex');
- } else {
- // utf8 --> cork (t1)
- $ret = exec('cd '.$outputDir.'; cat '.$outputFile.'-u8.tex | sed -e "s/\xc2\xa0/\x20/g" | recode u8..T1 > '.$outputFile.'.tex');
- // DVI, PS, PFD generálás (a rotate miatt nem megy a pdftex közvetlenül :o(
- $ret = exec('cd '.$outputDir.'; tex -fmt '._MAYOR_DIR.'/print/module-naplo/tex/mayor '.$outputFile.'.tex');
- if ($ret === false) { $_SESSION['alert'][] = 'message:futási_hiba:generatePDF:tex'; return false; }
-# LOG $ret = exec('cd '.$outputDir.'; dvips '.$outputFile.'.dvi 2>&1 | tee -a /tmp/x.log ');
- $ret = exec('HOME=/tmp && export HOME && cd '.$outputDir.'; dvips '.$outputFile.'.dvi ');
- if ($ret === false) { $_SESSION['alert'][] = 'message:futási_hiba:generatePDF:ps'; return false; }
- $ret = exec('cd '.$outputDir.'; ps2pdf -sPAPERSIZE=a4 -dAutoRotatePages=/None '.$outputFile.'.ps');
- if (strpos($ret, 'error') !== false) { $_SESSION['alert'][] = 'message:futási_hiba:generatePDF:pdf'; return false; }
-
- }
- if ($booklet) {
- $ret = exec('cd '.$outputDir.'; mv '.$outputFile.'.pdf '.$outputFile.'-A4.pdf; pdfbook --short-edge --outfile '.$outputFile.'.pdf '.$outputFile.'-A4.pdf');
- }
- return true;
- }
-
- function generateXLS($fileName, $Table, $title) {
-
- global $policy, $page, $sub, $f;
-
- if (dirname($fileName) == '.') $fileName = _DOWNLOADDIR."/$policy/$page/$sub/$f/$fileName";
- $fp = fopen($fileName, 'w');
- if (!$fp) {
- $_SESSION['alert'][] = 'message:file_open_failure:'.$fileName;
- return false;
- }
-
- fputs($fp, '<?xml version="1.0"?>'."\r\n");
- fputs($fp, '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
- xmlns:o="urn:schemas-microsoft-com:office:office"
- xmlns:x="urn:schemas-microsoft-com:office:excel"
- xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
- xmlns:html="http://www.w3.org/TR/REC-html40">'."\r\n");
- fputs($fp, ' <Styles>'."\r\n"
- .' <Style ss:ID="s21">'."\r\n".' <NumberFormat ss:Format="Short Date" />'."\r\n".' </Style>'."\r\n"
- .' <Style ss:ID="s22">'."\r\n".' <NumberFormat ss:Format="yyyy\.m\.d\.\ h:mm" />'."\r\n".' </Style>'."\r\n"
- ."\r\n".' </Styles>'."\r\n");
-
- fputs($fp, '<Worksheet ss:Name="'.$title.'">'."\r\n");
- fputs($fp, '<Table>'."\r\n");
-
- for ($i = 0; $i < count($Table); $i++) {
- fputs($fp, ' <Row>'."\r\n");
- foreach ($Table[$i] as $index => $value) {
- if (is_numeric($value))
- fputs($fp, " <Cell><Data ss:Type=\"Number\">".$value."</Data></Cell>\r\n");
- elseif (strtotime($value))
- if (strlen($value) > 10) {
- fputs($fp, " <Cell ss:StyleID=\"s22\"><Data ss:Type=\"DateTime\">".str_replace(' ','T',$value).'.000'."</Data></Cell>\r\n");
- } else {
- fputs($fp, " <Cell ss:StyleID=\"s21\"><Data ss:Type=\"DateTime\">".$value.'T08:40:00.000'."</Data></Cell>\r\n");
- }
- else
- fputs($fp, " <Cell><Data ss:Type=\"String\">".$value."</Data></Cell>\r\n");
- }
- fputs($fp, ' </Row>'."\r\n");
- }
-
- fputs($fp, '</Table>'."\r\n");
- fputs($fp, '</Worksheet>'."\r\n");
- fputs($fp, '</Workbook>'."\r\n");
-
- fclose($fp);
- return true;
-
- }
-
- function generateCSV($fileName, $Table, $title, $mezoElvalaszto=' ') {
-
- global $policy, $page, $sub, $f;
-
- if (dirname($fileName) == '.') $fileName = _DOWNLOADDIR."/$policy/$page/$sub/$f/$fileName";
- $fp = fopen($fileName, 'w');
- if (!$fp) {
- $_SESSION['alert'][] = 'message:file_open_failure:'.$fileName;
- return false;
- }
-
- if ($title !='') fputs($fp, $title."\n");
- for ($i = 0; $i < count($Table); $i++) fputs($fp, implode($mezoElvalaszto, $Table[$i])."\n");
-
- fclose($fp);
- return true;
-
- }
-
- function generateODS($fileName, $Table, $title) {
-
- global $policy, $page, $sub, $f;
-
- if (dirname($fileName) == '.') $fileName = _DOWNLOADDIR."/$policy/$page/$sub/$f/$fileName";
- define('TMPZIP','/tmp/'.substr(basename($fileName), 0, strpos(basename($fileName), '.')));
- define('ODS_MIMETIPE','application/vnd.oasis.opendocument.spreadsheet');
- define('ODS_MANIFEST','<?xml version="1.0" encoding="UTF-8"?>
-<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
- <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.spreadsheet" manifest:version="1.2" manifest:full-path="/"/>
- <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
-</manifest:manifest>');
- define('ODS_START_XMLDOCUMENT','<?xml version="1.0" encoding="UTF-8"?>
-<office:document-content
- xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
- xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
- xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
- xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
- xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
- xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
- xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
- xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
- xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
- xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
- xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
- xmlns:math="http://www.w3.org/1998/Math/MathML"
- xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
- xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"
- xmlns:ooo="http://openoffice.org/2004/office"
- xmlns:ooow="http://openoffice.org/2004/writer"
- xmlns:oooc="http://openoffice.org/2004/calc"
- xmlns:dom="http://www.w3.org/2001/xml-events"
- xmlns:xforms="http://www.w3.org/2002/xforms"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:rpt="http://openoffice.org/2005/report"
- xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2"
- xmlns:xhtml="http://www.w3.org/1999/xhtml"
- xmlns:grddl="http://www.w3.org/2003/g/data-view#"
- xmlns:tableooo="http://openoffice.org/2009/table"
- xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0"
- xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0"
- office:version="1.2" grddl:transformation="http://docs.oasis-open.org/office/1.2/xslt/odf2rdf.xsl">');
- define('ODS_ASTYLES','<office:automatic-styles>
- <number:date-style style:name="N84">
- <number:year number:style="long"/>
- <number:text>-</number:text>
- <number:month number:style="long"/>
- <number:text>-</number:text>
- <number:day number:style="long"/>
- </number:date-style>
- <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N84"/>
- </office:automatic-styles>');
- define('ODS_START_SPREADSHEET','<office:body><office:spreadsheet>');
- define('ODS_START_TABLE','<table:table table:name="Export">');
- define('ODS_START_ROW','<table:table-row>');
- define('ODS_END_ROW','</table:table-row>');
- define('ODS_END_TABLE','</table:table>');
- define('ODS_END_SPREADSHEET','</office:spreadsheet></office:body>');
- define('ODS_END_XMLDOCUMENT','</office:document-content>');
-
- $content = ODS_START_XMLDOCUMENT . ODS_ASTYLES . ODS_START_SPREADSHEET . ODS_START_TABLE;
- for ($i = 0; $i < count($Table); $i++) {
- $content .= ODS_START_ROW;
- foreach ($Table[$i] as $index => $value) {
- if (is_numeric($value))
- $content .= '<table:table-cell office:value-type="float" office:value="'.$value.'"/>'."\n";
- elseif (strtotime($value))
- if (strlen($value) > 10) {
- $content .= '<table:table-cell table:style-name="ce1" office:value-type="date" office:date-value="'.$value.'"/>'."\n";
- } else {
- $content .= '<table:table-cell table:style-name="ce1" office:value-type="date" office:date-value="'.$value.'"/>'."\n";
- }
- elseif ($value[0] == '=') $content .= '<table:table-cell table:formula="'.$value.'" office:value-type="float"/>'."\n";
- // formula példa: $value = 'of:=SUM([.A1:.B1])*2+[.A1]'
- else $content .= '<table:table-cell office:value-type="string"><text:p>'.$value.'</text:p></table:table-cell>'."\n";
- }
- $content .= ODS_END_ROW;
- }
- $content .= ODS_END_TABLE . ODS_END_SPREADSHEET . ODS_END_XMLDOCUMENT;
-
- mkdir(TMPZIP);
- mkdir(TMPZIP."/META-INF");
- file_put_contents(TMPZIP."/META-INF/manifest.xml", ODS_MANIFEST);
- file_put_contents(TMPZIP."/content.xml", $content);
- file_put_contents(TMPZIP."/mimetype", ODS_MIMETIPE);
- system("cd ".TMPZIP."; zip -mr ".$fileName." mimetype META-INF/* content.xml >/dev/null");
- rmdir(TMPZIP."/META-INF");
- rmdir(TMPZIP);
-
- return true;
- }
-
-/* --------------------------------------- */
-
- function _template2array($fp, $type, &$aTeX) {
- $vege = false;
- $aTeX[$type] = array();
- while (!$vege && ($sor = fgets($fp, 1024))) {
- $sor = chop($sor);
- if ($sor == "%}$type") {
- $vege = true;
- } elseif (substr($sor, 0, 2) != '%!') { // A feldolgozást végző függvény megadása
- if (substr($sor, 0, 2) == '%}') {
- echo "HIBA #1 Megnyitás előtti blokk lezárás a {$type} blokkban: $sor<hr>";
- } else {
- if (substr($sor, 0, 2) == '%{') {
- $_type = substr($sor, 2);
- _template2array($fp, $_type, $aTeX);
- $aTeX[$type][] = '%{'.$_type.'}';
- } else {
- // feltételes szövegrészek
- $condArray = explode('%?', $sor);
- for ($i = 1; $i < count($condArray); $i = $i + 2) {
- $str = $condArray[$i];
- $tmpArray = explode('|', $str);
- $j = 0; while (is_array($aTeX['conditional']["$j".$tmpArray[0]])) $j++;
- $newCondition = "$j".$tmpArray[0];
- $aTeX['conditional'][$newCondition] = array(true => $tmpArray[1], false => $tmpArray[2], 'orig' => $tmpArray[0]);
- $sor = str_replace($str.'%?', $newCondition, $sor);
- }
-// $aTeX[$type][] = $sor;
- // lezáró eset
- $finalArray = explode('%>', $sor);
- for ($i = 1; $i < count($finalArray); $i = $i + 2) {
- $str = $finalArray[$i];
- $tmpArray = explode('<!>', $str);
- $j = 0; while (is_array($aTeX['finalCase']["$j".$type])) $j++;
- $newCondition = "$j".$type;
- $aTeX['finalCase'][$newCondition] = array(true => $tmpArray[0], false => $tmpArray[1]);
- $sor = str_replace($str.'%>', $newCondition, $sor);
- }
- $aTeX[$type][] = $sor;
- }
- }
- }
- }
- }
-
- function _array2text($type, $id, $mit, $mire, $aTeX, $ADAT, $flag = null) {
- $ret = '';
- if (is_null($id)) $A = $ADAT[$type];
- else $A = $ADAT[$type][$id];
-
- // A cserélendő attribútumok
- if (is_array($A)) foreach ($A as $attr => $value) {
- if (!is_array($value)) {
- if (true || !is_bool($value)) { // feltételes szövegrészek külön kezelendők ??? Miért is? Az általánosabb feltételes kiíráshoz kell!
- if (in_array('%$'.$attr, $mit)) { // A már szereplő mintát felülírjuk!
- $key = array_search('%$'.$attr, $mit);
- $mit[$key] = '%$'.$attr;
- $mire[$key] = $value;
- } else {
- $mit[] = '%$'.$attr;
- $mire[] = $value;
- }
- }
- }
- }
-
- // aTeX feldolgozása
- $TeX = $aTeX[$type];
- for ($i = 0; $i < count($TeX); $i++) {
- $sor = $TeX[$i];
- if (substr($sor, 0, 2) == '%{') {
- // Almodul feldolgozása
- $_type = substr($sor, 2, -1);
- if (is_array($A[$_type])) {
- if (is_null($id)) {
- foreach ($A[$_type] as $key => $_id) $ret .= _array2text($_type, $_id, $mit, $mire, $aTeX, $ADAT);
- } else {
- $count = count($A[$_type]); $db = 0;
- foreach ($A[$_type] as $_id => $_data) {
- $db++; if ($count == $db) $_flag = 'final'; else $_flag = null;
- if (!is_array($ADAT[$_type][$_id]) && !is_array($_data)) {
- echo '<br>HIBA#2!!! '.$_type.':'.$_id.':'.$_data.'<hr />';
-// return false;
- } else {
- if (!is_array($ADAT[$_type][$_id])) $ADAT[$_type][$_id] = array();
- elseif (!is_array($_data)) $_data = array();
- $ADAT[$_type][$_id] = $ADAT[$_type][$_id] + $_data;
- $ret .= _array2text($_type, $_id, $mit, $mire, $aTeX, $ADAT, $_flag);
- }
- }
- }
- } elseif (__DEBUG === true) { echo '<br>HIBA#3: '.$sor.'<br />'.$_type.':'; var_dump($A[$_type]); echo '<hr />';}
- } else {
- // Csere - lezáró eset
- if (strpos($sor, '%>') !== false) foreach ($aTeX['finalCase'] as $attr => $values) {
- $sor = str_replace('%>'.$attr, $values[ $flag === 'final' ], $sor);
- }
- // Csete - feltételes kiírás
- if (strpos($sor, '%?') !== false) foreach ($aTeX['conditional'] as $attr => $values) {
- // Nem csak az adott szintről veszi az értéket, hanem feljebbről is (a feljebbi a meghatározó - ez nem biztos, hogy jó...)
- if ($key = array_search('%$'.$values['orig'], $mit)) $_val = $mire[$key];
- else $_val = $A[$values['orig']];
- $sor = str_replace('%?'.$attr, $values[ $_val==true ], $sor);
- //$sor = str_replace('%?'.$attr, $values[ $A[$values['orig']]==true ], $sor);
- }
- // Kiírás
- $ret .= str_replace($mit, $mire, $sor)."\n";
- }
- }
-
- return $ret;
- }
-
- function template2text($templateFile, $ADAT) {
-
- $mit = $mire = array();
- $aTeX = array('conditional' => array());
-
- $fp = fopen($templateFile, 'r');
- _template2array($fp, 'base', $aTeX);
- fclose($fp);
- return _array2text('base', null, $mit, $mire, $aTeX, $ADAT);
-
- }
-
- function template2file($templateFile, $ADAT) {
-
- global $policy, $page, $sub, $f;
-
- $mit = $mire = array();
- $aTeX = array('conditional' => array());
-
- $fp = fopen($templateFile, 'r');
- // A feldolgozást végző függvény neve
- $sor = fgets($fp, 1024);
- rewind($fp);
- if (substr($sor, 0, 2) == '%!') {
- list($func,$ext,$opt) = explode(' ', substr(chop($sor), 2));
- if (!function_exists($func)) unset($func);
- }
- if ($ext=='') $ext = 'txt';
- _template2array($fp, 'base', $aTeX);
- fclose($fp);
- $text = _array2text('base', null, $mit, $mire, $aTeX, $ADAT);
-//die();
- if ($text === false) return false;
- $success = true;
- if (isset($func)) {
- $success = $func($text, $ADAT['file'], $opt);
- } else {
- $fp = fopen(_DOWNLOADDIR."/$policy/$page/$sub/$f/".$ADAT['file'].'.'.$ext, 'w');
- fputs($fp, $text);
- fclose($fp);
- }
- if ($success) return $ADAT['file'].".$ext";
- else return false;
-
- }
-
-
-
-?>