Ran PHPCBF
phpcs-errors:253 phpunit-status:successful
This commit is contained in:
parent
bf985ae192
commit
d6470110e9
|
@ -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++) {
|
||||||
|
|
|
@ -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('"', '"', $transform);
|
$transform = str_replace('"', '"', $transform);
|
||||||
$transform = str_replace('&', '&', $transform);
|
$transform = str_replace('&', '&', $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);
|
||||||
|
|
757
inc/zip.php
757
inc/zip.php
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
|
|
@ -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 //////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user