Ran PHPCBF

phpcs-errors:253 phpunit-status:successful
This commit is contained in:
Joshua Ramon Enslin 2019-11-12 21:25:37 +01:00 committed by Stefan Rohde-Enslin
parent bf985ae192
commit d6470110e9
6 changed files with 2477 additions and 2469 deletions

View File

@ -54,7 +54,7 @@ foreach ($availableFields as $categoryName => $fieldCategory) {
} }
$allowed_inclusion_kind_of = array('inclusion_kind_of', 'Schenkung', 'Kauf', 'Grabung', 'Notbergung', 'Erbschaft', 'Stiftung', 'Enteignung', 'Ursprungsbestand', 'Ajándékozás','Vétel','Feltárás','Hivatalos átadás','Csere','Gyűjtés','Saját előállítás','Törzsanyag','Letét', 'endowment', 'dispossession', 'old stock', ''); $allowed_inclusion_kind_of = ['inclusion_kind_of', 'Schenkung', 'Kauf', 'Grabung', 'Notbergung', 'Erbschaft', 'Stiftung', 'Enteignung', 'Ursprungsbestand', 'Ajándékozás','Vétel','Feltárás','Hivatalos átadás','Csere','Gyűjtés','Saját előállítás','Törzsanyag','Letét', 'endowment', 'dispossession', 'old stock', ''];
///// Check #1 ///// Check #1
//echo '<pre>';print_r($allowed);echo '</pre>'; //echo '<pre>';print_r($allowed);echo '</pre>';
@ -113,7 +113,7 @@ function get_duplicates($array) {
} }
$mandatory = array('inventory_number','object_type','object_title','object_description'); $mandatory = ['inventory_number','object_type','object_title','object_description'];
for ($i = 0; $i < count($mandatory); $i++) { for ($i = 0; $i < count($mandatory); $i++) {
if (!in_array($mandatory[$i], $erstezeile)) { if (!in_array($mandatory[$i], $erstezeile)) {
echo '<br><i style="font-style:normal;color:#990000;">Mandatory: Column <b>' . $mandatory[$i] . '</b> missing</i>'; echo '<br><i style="font-style:normal;color:#990000;">Mandatory: Column <b>' . $mandatory[$i] . '</b> missing</i>';
@ -189,8 +189,8 @@ else {
///// Check #6 ///// Check #6
echo '<br><br>6: Dependency of content observed?'; echo '<br><br>6: Dependency of content observed?';
$crosscheck1 = array('object_other_title','detailed_description','detailed_description','inscription','inscription','dimensions_separate_length_value', 'dimensions_separate_width_value', 'dimensions_separate_height_value', 'dimensions_separate_diameter_value', 'dimensions_separate_wall_thickness_value', 'dimensions_separate_weight_value','closer_location','bought_for','worth_value','worth_insurance_value'); $crosscheck1 = ['object_other_title','detailed_description','detailed_description','inscription','inscription','dimensions_separate_length_value', 'dimensions_separate_width_value', 'dimensions_separate_height_value', 'dimensions_separate_diameter_value', 'dimensions_separate_wall_thickness_value', 'dimensions_separate_weight_value','closer_location','bought_for','worth_value','worth_insurance_value'];
$crosscheck2 = array('object_other_title_kind_of','detailed_description_md','detailed_description_extern','inscription_md','inscription_extern','dimensions_separate_length_unit', 'dimensions_separate_width_unit', 'dimensions_separate_height_unit', 'dimensions_separate_diameter_unit', 'dimensions_separate_wall_thickness_unit', 'dimensions_separate_weight_unit','closer_location_as','bought_for_currency','worth_unit','worth_insurance_unit'); $crosscheck2 = ['object_other_title_kind_of','detailed_description_md','detailed_description_extern','inscription_md','inscription_extern','dimensions_separate_length_unit', 'dimensions_separate_width_unit', 'dimensions_separate_height_unit', 'dimensions_separate_diameter_unit', 'dimensions_separate_wall_thickness_unit', 'dimensions_separate_weight_unit','closer_location_as','bought_for_currency','worth_unit','worth_insurance_unit'];
$depcon_error = 0; $depcon_error = 0;
for ($l = 0; $l < count($crosscheck1); $l++) { for ($l = 0; $l < count($crosscheck1); $l++) {

View File

@ -1,7 +1,13 @@
<?PHP <?PHP
function transform($transform) /**
{ * Function for sanitizing contents for prospective XML contents.
*
* @param string $transform Input string.
*
* @return string
*/
function transform(string $transform):string {
$transform = str_replace(chr(14), "", $transform); $transform = str_replace(chr(14), "", $transform);
$transform = str_replace('&quot;', '"', $transform); $transform = str_replace('&quot;', '"', $transform);
$transform = str_replace('&', '&amp;', $transform); $transform = str_replace('&', '&amp;', $transform);
@ -24,8 +30,14 @@ function transform($transform)
} }
function tagify($tagify) /**
{ * Function for sanitizing contents for prospective XML contents.
*
* @param string $tagify Input string.
*
* @return string
*/
function tagify(string $tagify):string {
$tagify = str_replace(' ', '_', $tagify); $tagify = str_replace(' ', '_', $tagify);
$tagify = str_replace('/', '_', $tagify); $tagify = str_replace('/', '_', $tagify);
$tagify = str_replace(',', '_', $tagify); $tagify = str_replace(',', '_', $tagify);

View File

@ -11,431 +11,430 @@
* @version 1.1 * @version 1.1
*/ */
class Zip { class Zip {
private $zipMemoryThreshold = 1048576; // Autocreate tempfile if the zip data exceeds 1048576 bytes (1 MB) private $zipMemoryThreshold = 1048576; // Autocreate tempfile if the zip data exceeds 1048576 bytes (1 MB)
private $endOfCentralDirectory = "\x50\x4b\x05\x06\x00\x00\x00\x00"; //end of Central directory record private $endOfCentralDirectory = "\x50\x4b\x05\x06\x00\x00\x00\x00"; //end of Central directory record
private $localFileHeader = "\x50\x4b\x03\x04"; // Local file header signature private $localFileHeader = "\x50\x4b\x03\x04"; // Local file header signature
private $centralFileHeader = "\x50\x4b\x01\x02"; // Central file header signature private $centralFileHeader = "\x50\x4b\x01\x02"; // Central file header signature
private $zipData = null; private $zipData = null;
private $zipFile = null; private $zipFile = null;
private $zipComment = null; private $zipComment = null;
private $cdRec = array(); // central directory private $cdRec = array(); // central directory
private $offset = 0; private $offset = 0;
private $isFinalized = false; private $isFinalized = false;
private $streamChunkSize = 65536; private $streamChunkSize = 65536;
private $streamFilePath = null; private $streamFilePath = null;
private $streamTimeStamp = null; private $streamTimeStamp = null;
private $streamComment = null; private $streamComment = null;
private $streamFile = null; private $streamFile = null;
private $streamData = null; private $streamData = null;
private $streamFileLength = 0; private $streamFileLength = 0;
/** /**
* Constructor. * Constructor.
* *
* @param $useZipFile boolean. Write temp zip data to tempFile? Default false * @param $useZipFile boolean. Write temp zip data to tempFile? Default false
*/ */
function __construct($useZipFile = false) { function __construct($useZipFile = false) {
if ($useZipFile) { if ($useZipFile) {
$this->zipFile = tmpfile(); $this->zipFile = tmpfile();
} else { } else {
$this->zipData = ""; $this->zipData = "";
} }
} }
function __destruct() { function __destruct() {
if (!is_null($this->zipFile)) { if (!is_null($this->zipFile)) {
fclose($this->zipFile); fclose($this->zipFile);
} }
$this->zipData= null; $this->zipData= null;
} }
/** /**
* Set Zip archive comment. * Set Zip archive comment.
* *
* @param string $newComment New comment. null to clear. * @param string $newComment New comment. null to clear.
*/ */
public function setComment($newComment = null) { public function setComment($newComment = null) {
$this->zipComment = $newComment; $this->zipComment = $newComment;
} }
/** /**
* Set zip file to write zip data to. * Set zip file to write zip data to.
* This will cause all present and future data written to this class to be written to this file. * This will cause all present and future data written to this class to be written to this file.
* This can be used at any time, even after the Zip Archive have been finalized. Any previous file will be closed. * This can be used at any time, even after the Zip Archive have been finalized. Any previous file will be closed.
* Warning: If the given file already exists, it will be overwritten. * Warning: If the given file already exists, it will be overwritten.
* *
* @param string $fileName * @param string $fileName
*/ */
public function setZipFile($fileName) { public function setZipFile($fileName) {
if (file_exists($fileName)) { if (file_exists($fileName)) {
unlink ($fileName); unlink ($fileName);
} }
$fd=fopen($fileName, "x+b"); $fd=fopen($fileName, "x+b");
if (!is_null($this->zipFile)) { if (!is_null($this->zipFile)) {
rewind($this->zipFile); rewind($this->zipFile);
while(!feof($this->zipFile)) { while(!feof($this->zipFile)) {
fwrite($fd, fread($this->zipFile, $this->streamChunkSize)); fwrite($fd, fread($this->zipFile, $this->streamChunkSize));
} }
fclose($this->zipFile); fclose($this->zipFile);
} else { } else {
fwrite($fd, $this->zipData); fwrite($fd, $this->zipData);
$this->zipData = null; $this->zipData = null;
} }
$this->zipFile = $fd; $this->zipFile = $fd;
} }
/** /**
* Add an empty directory entry to the zip archive. * Add an empty directory entry to the zip archive.
* Basically this is only used if an empty directory is added. * Basically this is only used if an empty directory is added.
* *
* @param string $directoryPath Directory Path and name to be added to the archive. * @param string $directoryPath Directory Path and name to be added to the archive.
* @param int $timestamp (Optional) Timestamp for the added directory, if omitted or set to 0, the current time will be used. * @param int $timestamp (Optional) Timestamp for the added directory, if omitted or set to 0, the current time will be used.
* @param string $fileComment (Optional) Comment to be added to the archive for this directory. To use fileComment, timestamp must be given. * @param string $fileComment (Optional) Comment to be added to the archive for this directory. To use fileComment, timestamp must be given.
*/ */
public function addDirectory($directoryPath, $timestamp = 0, $fileComment = null) { public function addDirectory($directoryPath, $timestamp = 0, $fileComment = null) {
if ($this->isFinalized) { if ($this->isFinalized) {
return; return;
} }
$this->buildZipEntry($directoryPath, $fileComment, "\x00\x00", "\x00\x00", $timestamp, "\x00\x00\x00\x00", 0, 0, 16); $this->buildZipEntry($directoryPath, $fileComment, "\x00\x00", "\x00\x00", $timestamp, "\x00\x00\x00\x00", 0, 0, 16);
} }
/** /**
* Add a file to the archive at the specified location and file name. * Add a file to the archive at the specified location and file name.
* *
* @param string $data File data. * @param string $data File data.
* @param string $filePath Filepath and name to be used in the archive. * @param string $filePath Filepath and name to be used in the archive.
* @param int $timestamp (Optional) Timestamp for the added file, if omitted or set to 0, the current time will be used. * @param int $timestamp (Optional) Timestamp for the added file, if omitted or set to 0, the current time will be used.
* @param string $fileComment (Optional) Comment to be added to the archive for this file. To use fileComment, timestamp must be given. * @param string $fileComment (Optional) Comment to be added to the archive for this file. To use fileComment, timestamp must be given.
*/ */
public function addFile($data, $filePath, $timestamp = 0, $fileComment = null) { public function addFile($data, $filePath, $timestamp = 0, $fileComment = null) {
if ($this->isFinalized) { if ($this->isFinalized) {
return; return;
} }
$gzType = "\x08\x00"; // Compression type 8 = deflate $gzType = "\x08\x00"; // Compression type 8 = deflate
$gpFlags = "\x02\x00"; // General Purpose bit flags for compression type 8 it is: 0=Normal, 1=Maximum, 2=Fast, 3=super fast compression. $gpFlags = "\x02\x00"; // General Purpose bit flags for compression type 8 it is: 0=Normal, 1=Maximum, 2=Fast, 3=super fast compression.
$dataLength = strlen($data); $dataLength = strlen($data);
$fileCRC32 = pack("V", crc32($data)); $fileCRC32 = pack("V", crc32($data));
$gzData = gzcompress($data); $gzData = gzcompress($data);
$gzData = substr( substr($gzData, 0, strlen($gzData) - 4), 2); // gzcompress adds a 2 byte header and 4 byte CRC we can't use. $gzData = substr( substr($gzData, 0, strlen($gzData) - 4), 2); // gzcompress adds a 2 byte header and 4 byte CRC we can't use.
// The 2 byte header does contain useful data, though in this case the 2 parameters we'd be interrested in will always be 8 for compression type, and 2 for General purpose flag. // The 2 byte header does contain useful data, though in this case the 2 parameters we'd be interrested in will always be 8 for compression type, and 2 for General purpose flag.
$gzLength = strlen($gzData); $gzLength = strlen($gzData);
if ($gzLength >= $dataLength) { if ($gzLength >= $dataLength) {
$gzLength = $dataLength; $gzLength = $dataLength;
$gzData = $data; $gzData = $data;
$gzType = "\x00\x00"; // Compression type 0 = stored $gzType = "\x00\x00"; // Compression type 0 = stored
$gpFlags = "\x00\x00"; // Compression type 0 = stored $gpFlags = "\x00\x00"; // Compression type 0 = stored
} }
if (is_null($this->zipFile) && ($this->offset + $gzLength) > $this->zipMemoryThreshold) { if (is_null($this->zipFile) && ($this->offset + $gzLength) > $this->zipMemoryThreshold) {
$this->zipFile = tmpfile(); $this->zipFile = tmpfile();
fwrite($this->zipFile, $this->zipData); fwrite($this->zipFile, $this->zipData);
$this->zipData = null; $this->zipData = null;
} }
$this->buildZipEntry($filePath, $fileComment, $gpFlags, $gzType, $timestamp, $fileCRC32, $gzLength, $dataLength, 32); $this->buildZipEntry($filePath, $fileComment, $gpFlags, $gzType, $timestamp, $fileCRC32, $gzLength, $dataLength, 32);
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
$this->zipData .= $gzData; $this->zipData .= $gzData;
} else { } else {
fwrite($this->zipFile, $gzData); fwrite($this->zipFile, $gzData);
} }
} }
/** /**
* Add a file to the archive at the specified location and file name. * Add a file to the archive at the specified location and file name.
* *
* @param string $dataFile File name/path. * @param string $dataFile File name/path.
* @param string $filePath Filepath and name to be used in the archive. * @param string $filePath Filepath and name to be used in the archive.
* @param int $timestamp (Optional) Timestamp for the added file, if omitted or set to 0, the current time will be used. * @param int $timestamp (Optional) Timestamp for the added file, if omitted or set to 0, the current time will be used.
* @param string $fileComment (Optional) Comment to be added to the archive for this file. To use fileComment, timestamp must be given. * @param string $fileComment (Optional) Comment to be added to the archive for this file. To use fileComment, timestamp must be given.
*/ */
public function addLargeFile($dataFile, $filePath, $timestamp = 0, $fileComment = null) { public function addLargeFile($dataFile, $filePath, $timestamp = 0, $fileComment = null) {
if ($this->isFinalized) { if ($this->isFinalized) {
return; return;
} }
$this->openStream($filePath, $timestamp, $fileComment); $this->openStream($filePath, $timestamp, $fileComment);
$fh = fopen($dataFile, "rb"); $fh = fopen($dataFile, "rb");
while(!feof($fh)) { while(!feof($fh)) {
$this->addStreamData(fread($fh, $this->streamChunkSize)); $this->addStreamData(fread($fh, $this->streamChunkSize));
} }
fclose($fh); fclose($fh);
$this->closeStream(); $this->closeStream();
} }
/** /**
* Create a stream to be used for large entries. * Create a stream to be used for large entries.
* *
* @param string $filePath Filepath and name to be used in the archive. * @param string $filePath Filepath and name to be used in the archive.
* @param int $timestamp (Optional) Timestamp for the added file, if omitted or set to 0, the current time will be used. * @param int $timestamp (Optional) Timestamp for the added file, if omitted or set to 0, the current time will be used.
* @param string $fileComment (Optional) Comment to be added to the archive for this file. To use fileComment, timestamp must be given. * @param string $fileComment (Optional) Comment to be added to the archive for this file. To use fileComment, timestamp must be given.
*/ */
public function openStream($filePath, $timestamp = 0, $fileComment = null) { public function openStream($filePath, $timestamp = 0, $fileComment = null) {
if ($this->isFinalized) { if ($this->isFinalized) {
return; return;
} }
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
$this->zipFile = tmpfile(); $this->zipFile = tmpfile();
fwrite($this->zipFile, $this->zipData); fwrite($this->zipFile, $this->zipData);
$this->zipData = null; $this->zipData = null;
} }
if (strlen($this->streamFilePath) > 0) { if (strlen($this->streamFilePath) > 0) {
closeStream(); closeStream();
} }
$this->streamFile = tempnam(sys_get_temp_dir(), 'Zip'); $this->streamFile = tempnam(sys_get_temp_dir(), 'Zip');
$this->streamData = gzopen($this->streamFile, "w9"); $this->streamData = gzopen($this->streamFile, "w9");
$this->streamFilePath = $filePath; $this->streamFilePath = $filePath;
$this->streamTimestamp = $timestamp; $this->streamTimestamp = $timestamp;
$this->streamFileComment = $fileComment; $this->streamFileComment = $fileComment;
$this->streamFileLength = 0; $this->streamFileLength = 0;
} }
public function addStreamData($data) { public function addStreamData($data) {
$length = gzwrite($this->streamData, $data, strlen($data)); $length = gzwrite($this->streamData, $data, strlen($data));
if ($length != strlen($data)) { if ($length != strlen($data)) {
print "<p>Length mismatch</p>\n"; print "<p>Length mismatch</p>\n";
} }
$this->streamFileLength += $length; $this->streamFileLength += $length;
return $length; return $length;
} }
/** /**
* Close the current stream. * Close the current stream.
*/ */
public function closeStream() { public function closeStream() {
if ($this->isFinalized || strlen($this->streamFilePath) == 0) { if ($this->isFinalized || strlen($this->streamFilePath) == 0) {
return; return;
} }
fflush($this->streamData); fflush($this->streamData);
gzclose($this->streamData); gzclose($this->streamData);
$gzType = "\x08\x00"; // Compression type 8 = deflate $gzType = "\x08\x00"; // Compression type 8 = deflate
$gpFlags = "\x02\x00"; // General Purpose bit flags for compression type 8 it is: 0=Normal, 1=Maximum, 2=Fast, 3=super fast compression. $gpFlags = "\x02\x00"; // General Purpose bit flags for compression type 8 it is: 0=Normal, 1=Maximum, 2=Fast, 3=super fast compression.
$file_handle = fopen($this->streamFile, "rb"); $file_handle = fopen($this->streamFile, "rb");
$stats = fstat($file_handle); $stats = fstat($file_handle);
$eof = $stats['size']; $eof = $stats['size'];
fseek($file_handle, $eof-8); fseek($file_handle, $eof-8);
$fileCRC32 = fread($file_handle, 4); $fileCRC32 = fread($file_handle, 4);
$dataLength = $this->streamFileLength;//$gzl[1]; $dataLength = $this->streamFileLength;//$gzl[1];
$gzLength = $eof-10; $gzLength = $eof-10;
$eof -= 9; $eof -= 9;
fseek($file_handle, 10); fseek($file_handle, 10);
$this->buildZipEntry($this->streamFilePath, $this->streamFileComment, $gpFlags, $gzType, $this->streamTimestamp, $fileCRC32, $gzLength, $dataLength, 32); $this->buildZipEntry($this->streamFilePath, $this->streamFileComment, $gpFlags, $gzType, $this->streamTimestamp, $fileCRC32, $gzLength, $dataLength, 32);
while(!feof($file_handle)) { while(!feof($file_handle)) {
fwrite($this->zipFile, fread($file_handle, $this->streamChunkSize)); fwrite($this->zipFile, fread($file_handle, $this->streamChunkSize));
} }
unlink($this->streamFile); unlink($this->streamFile);
$this->streamFile = null; $this->streamFile = null;
$this->streamData = null; $this->streamData = null;
$this->streamFilePath = null; $this->streamFilePath = null;
$this->streamTimestamp = null; $this->streamTimestamp = null;
$this->streamFileComment = null; $this->streamFileComment = null;
$this->streamFileLength = 0; $this->streamFileLength = 0;
} }
/** /**
* Close the archive. * Close the archive.
* A closed archive can no longer have new files added to it. * A closed archive can no longer have new files added to it.
*/ */
public function finalize() { public function finalize() {
if(!$this->isFinalized) { if(!$this->isFinalized) {
if (strlen($this->streamFilePath) > 0) { if (strlen($this->streamFilePath) > 0) {
$this->closeStream(); $this->closeStream();
} }
$cd = implode("", $this->cdRec); $cd = implode("", $this->cdRec);
$cdRec = $cd . $this->endOfCentralDirectory $cdRec = $cd . $this->endOfCentralDirectory
. pack("v", sizeof($this->cdRec)) . pack("v", sizeof($this->cdRec))
. pack("v", sizeof($this->cdRec)) . pack("v", sizeof($this->cdRec))
. pack("V", strlen($cd)) . pack("V", strlen($cd))
. pack("V", $this->offset); . pack("V", $this->offset);
if (!is_null($this->zipComment)) { if (!is_null($this->zipComment)) {
$cdRec .= pack("v", strlen($this->zipComment)) . $this->zipComment; $cdRec .= pack("v", strlen($this->zipComment)) . $this->zipComment;
} else { } else {
$cdRec .= "\x00\x00"; $cdRec .= "\x00\x00";
} }
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
$this->zipData .= $cdRec; $this->zipData .= $cdRec;
} else { } else {
fwrite($this->zipFile, $cdRec); fwrite($this->zipFile, $cdRec);
fflush($this->zipFile); fflush($this->zipFile);
} }
$this->isFinalized = true; $this->isFinalized = true;
$cd = null; $cd = null;
$this->cdRec = null; $this->cdRec = null;
} }
} }
/** /**
* Get the handle ressource for the archive zip file. * Get the handle ressource for the archive zip file.
* If the zip haven't been finalized yet, this will cause it to become finalized * If the zip haven't been finalized yet, this will cause it to become finalized
* *
* @return zip file handle * @return zip file handle
*/ */
public function getZipFile() { public function getZipFile() {
if(!$this->isFinalized) { if(!$this->isFinalized) {
$this->finalize(); $this->finalize();
} }
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
$this->zipFile = tmpfile(); $this->zipFile = tmpfile();
fwrite($this->zipFile, $this->zipData); fwrite($this->zipFile, $this->zipData);
$this->zipData = null; $this->zipData = null;
} }
rewind($this->zipFile); rewind($this->zipFile);
return $this->zipFile; return $this->zipFile;
} }
/** /**
* Get the zip file contents * Get the zip file contents
* If the zip haven't been finalized yet, this will cause it to become finalized * If the zip haven't been finalized yet, this will cause it to become finalized
* *
* @return zip data * @return zip data
*/ */
public function getZipData() { public function getZipData() {
if(!$this->isFinalized) { if(!$this->isFinalized) {
$this->finalize(); $this->finalize();
} }
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
return $this->zipData; return $this->zipData;
} else { } else {
rewind($this->zipFile); rewind($this->zipFile);
$filestat = fstat($this->zipFile); $filestat = fstat($this->zipFile);
return fread($this->zipFile, $filestat['size']); return fread($this->zipFile, $filestat['size']);
} }
} }
/** /**
* Send the archive as a zip download * Send the archive as a zip download
* *
* @param String $fileName The name of the Zip archive, ie. "archive.zip". * @param String $fileName The name of the Zip archive, ie. "archive.zip".
* @return void * @return void
*/ */
function sendZip($fileName) { function sendZip($fileName) {
if(!$this->isFinalized) { if(!$this->isFinalized) {
$this->finalize(); $this->finalize();
} }
if (!headers_sent($headerFile, $headerLine) or die("<p><strong>Error:</strong> Unable to send file $fileName. HTML Headers have already been sent from <strong>$headerFile</strong> in line <strong>$headerLine</strong></p>")) { if (!headers_sent($headerFile, $headerLine) or die("<p><strong>Error:</strong> Unable to send file $fileName. HTML Headers have already been sent from <strong>$headerFile</strong> in line <strong>$headerLine</strong></p>")) {
if (ob_get_contents() === false or die("\n<p><strong>Error:</strong> Unable to send file <strong>$fileName.epub</strong>. Output buffer contains the following text (typically warnings or errors):<br>" . ob_get_contents() . "</p>")) { if (ob_get_contents() === false or die("\n<p><strong>Error:</strong> Unable to send file <strong>$fileName.epub</strong>. Output buffer contains the following text (typically warnings or errors):<br>" . ob_get_contents() . "</p>")) {
if (ini_get('zlib.output_compression')) { if (ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off'); ini_set('zlib.output_compression', 'Off');
} }
header('Pragma: public'); header('Pragma: public');
header("Last-Modified: " . gmdate("D, d M Y H:i:s T")); header("Last-Modified: " . gmdate("D, d M Y H:i:s T"));
header("Expires: 0"); header("Expires: 0");
header("Accept-Ranges: bytes"); header("Accept-Ranges: bytes");
header("Connection: close"); header("Connection: close");
header("Content-Type: application/zip"); header("Content-Type: application/zip");
header('Content-Disposition: attachment; filename="' . $fileName . '";' ); header('Content-Disposition: attachment; filename="' . $fileName . '";' );
header("Content-Transfer-Encoding: binary"); header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $this->getArchiveSize()); header("Content-Length: ". $this->getArchiveSize());
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
echo $this->zipData; echo $this->zipData;
} else { } else {
rewind($this->zipFile); rewind($this->zipFile);
while(!feof($this->zipFile)) { while(!feof($this->zipFile)) {
echo fread($this->zipFile, $this->streamChunkSize); echo fread($this->zipFile, $this->streamChunkSize);
} }
} }
} }
} }
} }
public function getArchiveSize() { public function getArchiveSize() {
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
return strlen($this->zipData); return strlen($this->zipData);
} }
$filestat = fstat($this->zipFile); $filestat = fstat($this->zipFile);
return $filestat['size']; return $filestat['size'];
} }
/** /**
* Calculate the 2 byte dostime used in the zip entries. * Calculate the 2 byte dostime used in the zip entries.
* *
* @param int $timestamp * @param int $timestamp
* @return 2-byte encoded DOS Date * @return 2-byte encoded DOS Date
*/ */
private function getDosTime($timestamp = 0) { private function getDosTime($timestamp = 0) {
$timestamp = (int)$timestamp; $timestamp = (int)$timestamp;
$date = ($timestamp == 0 ? getdate() : getDate($timestamp)); $date = ($timestamp == 0 ? getdate() : getDate($timestamp));
if ($date["year"] >= 1980) { if ($date["year"] >= 1980) {
return pack("V", (($date["mday"] + ($date["mon"] << 5) + (($date["year"]-1980) << 9)) << 16) | return pack("V", (($date["mday"] + ($date["mon"] << 5) + (($date["year"]-1980) << 9)) << 16) |
(($date["seconds"] >> 1) + ($date["minutes"] << 5) + ($date["hours"] << 11))); (($date["seconds"] >> 1) + ($date["minutes"] << 5) + ($date["hours"] << 11)));
} }
return "\x00\x00\x00\x00"; return "\x00\x00\x00\x00";
} }
/** /**
* Build the Zip file structures * Build the Zip file structures
* *
* @param unknown_type $filePath * @param unknown_type $filePath
* @param unknown_type $fileComment * @param unknown_type $fileComment
* @param unknown_type $gpFlags * @param unknown_type $gpFlags
* @param unknown_type $gzType * @param unknown_type $gzType
* @param unknown_type $timestamp * @param unknown_type $timestamp
* @param unknown_type $fileCRC32 * @param unknown_type $fileCRC32
* @param unknown_type $gzLength * @param unknown_type $gzLength
* @param unknown_type $dataLength * @param unknown_type $dataLength
* @param integer $extFileAttr 16 for directories, 32 for files. * @param integer $extFileAttr 16 for directories, 32 for files.
*/ */
private function buildZipEntry($filePath, $fileComment, $gpFlags, $gzType, $timestamp, $fileCRC32, $gzLength, $dataLength, $extFileAttr) { private function buildZipEntry($filePath, $fileComment, $gpFlags, $gzType, $timestamp, $fileCRC32, $gzLength, $dataLength, $extFileAttr) {
$filePath = str_replace("\\", "/", $filePath); $filePath = str_replace("\\", "/", $filePath);
$fileCommentLength = (is_null($fileComment) ? 0 : strlen($fileComment)); $fileCommentLength = (is_null($fileComment) ? 0 : strlen($fileComment));
$dosTime = $this->getDosTime($timestamp); $dosTime = $this->getDosTime($timestamp);
$zipEntry = $this->localFileHeader; $zipEntry = $this->localFileHeader;
$zipEntry .= "\x14\x00"; // Version needed to extract $zipEntry .= "\x14\x00"; // Version needed to extract
$zipEntry .= $gpFlags . $gzType . $dosTime. $fileCRC32; $zipEntry .= $gpFlags . $gzType . $dosTime. $fileCRC32;
$zipEntry .= pack("VV", $gzLength, $dataLength); $zipEntry .= pack("VV", $gzLength, $dataLength);
$zipEntry .= pack("v", strlen($filePath) ); // File name length $zipEntry .= pack("v", strlen($filePath) ); // File name length
$zipEntry .= "\x00\x00"; // Extra field length $zipEntry .= "\x00\x00"; // Extra field length
$zipEntry .= $filePath; // FileName . Extra field $zipEntry .= $filePath; // FileName . Extra field
if (is_null($this->zipFile)) { if (is_null($this->zipFile)) {
$this->zipData .= $zipEntry; $this->zipData .= $zipEntry;
} else { } else {
fwrite($this->zipFile, $zipEntry); fwrite($this->zipFile, $zipEntry);
} }
$cdEntry = $this->centralFileHeader; $cdEntry = $this->centralFileHeader;
$cdEntry .= "\x00\x00"; // Made By Version $cdEntry .= "\x00\x00"; // Made By Version
$cdEntry .= "\x14\x00"; // Version Needed to extract $cdEntry .= "\x14\x00"; // Version Needed to extract
$cdEntry .= $gpFlags . $gzType . $dosTime. $fileCRC32; $cdEntry .= $gpFlags . $gzType . $dosTime. $fileCRC32;
$cdEntry .= pack("VV", $gzLength, $dataLength); $cdEntry .= pack("VV", $gzLength, $dataLength);
$cdEntry .= pack("v", strlen($filePath)); // Filename length $cdEntry .= pack("v", strlen($filePath)); // Filename length
$cdEntry .= "\x00\x00"; // Extra field length $cdEntry .= "\x00\x00"; // Extra field length
$cdEntry .= pack("v", $fileCommentLength); // File comment length $cdEntry .= pack("v", $fileCommentLength); // File comment length
$cdEntry .= "\x00\x00"; // Disk number start $cdEntry .= "\x00\x00"; // Disk number start
$cdEntry .= "\x00\x00"; // internal file attributes $cdEntry .= "\x00\x00"; // internal file attributes
$cdEntry .= pack("V", $extFileAttr ); // External file attributes $cdEntry .= pack("V", $extFileAttr ); // External file attributes
$cdEntry .= pack("V", $this->offset ); // Relative offset of local header $cdEntry .= pack("V", $this->offset ); // Relative offset of local header
$cdEntry .= $filePath; // FileName . Extra field $cdEntry .= $filePath; // FileName . Extra field
if (!is_null($fileComment)) { if (!is_null($fileComment)) {
$cdEntry .= $fileComment; // Comment $cdEntry .= $fileComment; // Comment
} }
$this->cdRec[] = $cdEntry; $this->cdRec[] = $cdEntry;
$this->offset += strlen($zipEntry) + $gzLength; $this->offset += strlen($zipEntry) + $gzLength;
} }
} }
?>

View File

@ -23,8 +23,6 @@ else if (!isset($_SESSION['lang'])) {
} }
$lang = $_SESSION['lang']; $lang = $_SESSION['lang'];
require __DIR__ . '/inc/zeichen.php';
if (empty($filename = trim($_GET['fnam'], " ,./"))) { if (empty($filename = trim($_GET['fnam'], " ,./"))) {
echo "Error: Invalid file name"; echo "Error: Invalid file name";
exit; exit;
@ -66,7 +64,6 @@ while ($zeile = fgetcsv($fp, 100000, ';')) {
if ($inhalt[$y][$x] == '') $inhalt[$y][$x] = 'ERSATZ'; if ($inhalt[$y][$x] == '') $inhalt[$y][$x] = 'ERSATZ';
$record_node->appendChild(createTextDomElement($xmlDoc, trim($inhalt[1][$x]), trim($inhalt[$y][$x]))); $record_node->appendChild(createTextDomElement($xmlDoc, trim($inhalt[1][$x]), trim($inhalt[$y][$x])));
# $somecontent = $somecontent . '<' . tagify(transform($inhalt[1][$x])) . '>' . (($inhalt[$y][$x])) . '</' . tagify(transform($inhalt[1][$x])) . '>' . "\n"; //für ungarn sonst weg //////////////////////////////////////////////////////////////
} }