Apply Scrutinizer patches for indentation
This commit is contained in:
parent
a85f1bdbed
commit
cb0930c016
|
@ -232,7 +232,7 @@ class Calculation
|
||||||
'NULL' => null,
|
'NULL' => null,
|
||||||
];
|
];
|
||||||
|
|
||||||
// PhpSpreadsheet functions
|
// PhpSpreadsheet functions
|
||||||
private static $phpSpreadsheetFunctions = [
|
private static $phpSpreadsheetFunctions = [
|
||||||
'ABS' => [
|
'ABS' => [
|
||||||
'category' => Calculation\Categories::CATEGORY_MATH_AND_TRIG,
|
'category' => Calculation\Categories::CATEGORY_MATH_AND_TRIG,
|
||||||
|
@ -3073,13 +3073,13 @@ class Calculation
|
||||||
$pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null;
|
$pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null;
|
||||||
|
|
||||||
$regexpMatchString = '/^(' . self::CALCULATION_REGEXP_FUNCTION .
|
$regexpMatchString = '/^(' . self::CALCULATION_REGEXP_FUNCTION .
|
||||||
'|' . self::CALCULATION_REGEXP_CELLREF .
|
'|' . self::CALCULATION_REGEXP_CELLREF .
|
||||||
'|' . self::CALCULATION_REGEXP_NUMBER .
|
'|' . self::CALCULATION_REGEXP_NUMBER .
|
||||||
'|' . self::CALCULATION_REGEXP_STRING .
|
'|' . self::CALCULATION_REGEXP_STRING .
|
||||||
'|' . self::CALCULATION_REGEXP_OPENBRACE .
|
'|' . self::CALCULATION_REGEXP_OPENBRACE .
|
||||||
'|' . self::CALCULATION_REGEXP_NAMEDRANGE .
|
'|' . self::CALCULATION_REGEXP_NAMEDRANGE .
|
||||||
'|' . self::CALCULATION_REGEXP_ERROR .
|
'|' . self::CALCULATION_REGEXP_ERROR .
|
||||||
')/si';
|
')/si';
|
||||||
|
|
||||||
// Start with initialisation
|
// Start with initialisation
|
||||||
$index = 0;
|
$index = 0;
|
||||||
|
|
|
@ -497,7 +497,7 @@ class FormulaParser
|
||||||
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) ||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) ||
|
||||||
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) ||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) ||
|
||||||
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND)
|
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND)
|
||||||
)) {
|
)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ class FormulaParser
|
||||||
(($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && ($nextToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_START)) ||
|
(($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && ($nextToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_START)) ||
|
||||||
(($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($nextToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_START)) ||
|
(($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($nextToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_START)) ||
|
||||||
($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND)
|
($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND)
|
||||||
)) {
|
)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -845,11 +845,11 @@ class Cell
|
||||||
$_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);
|
$_indexCache[$pColumnIndex] = chr(65 + $pColumnIndex);
|
||||||
} elseif ($pColumnIndex < 702) {
|
} elseif ($pColumnIndex < 702) {
|
||||||
$_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) .
|
$_indexCache[$pColumnIndex] = chr(64 + ($pColumnIndex / 26)) .
|
||||||
chr(65 + $pColumnIndex % 26);
|
chr(65 + $pColumnIndex % 26);
|
||||||
} else {
|
} else {
|
||||||
$_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) .
|
$_indexCache[$pColumnIndex] = chr(64 + (($pColumnIndex - 26) / 676)) .
|
||||||
chr(65 + ((($pColumnIndex - 26) % 676) / 26)) .
|
chr(65 + ((($pColumnIndex - 26) % 676) / 26)) .
|
||||||
chr(65 + $pColumnIndex % 26);
|
chr(65 + $pColumnIndex % 26);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ class GridLines extends Properties
|
||||||
|
|
||||||
private $softEdges = [
|
private $softEdges = [
|
||||||
'size' => null,
|
'size' => null,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Object State
|
* Get Object State
|
||||||
|
|
|
@ -253,9 +253,10 @@ class CSV extends BaseReader implements IReader
|
||||||
}
|
}
|
||||||
$sheet = $spreadsheet->setActiveSheetIndex($this->sheetIndex);
|
$sheet = $spreadsheet->setActiveSheetIndex($this->sheetIndex);
|
||||||
|
|
||||||
$escapeEnclosures = ['\\' . $this->enclosure,
|
$escapeEnclosures = [
|
||||||
$this->enclosure . $this->enclosure,
|
'\\' . $this->enclosure,
|
||||||
];
|
$this->enclosure . $this->enclosure,
|
||||||
|
];
|
||||||
|
|
||||||
// Set our starting row based on whether we're in contiguous mode or not
|
// Set our starting row based on whether we're in contiguous mode or not
|
||||||
$currentRow = 1;
|
$currentRow = 1;
|
||||||
|
|
|
@ -446,7 +446,7 @@ class ReferenceHelper
|
||||||
if ($cell->getDataType() == Cell\DataType::TYPE_FORMULA) {
|
if ($cell->getDataType() == Cell\DataType::TYPE_FORMULA) {
|
||||||
// Formula should be adjusted
|
// Formula should be adjusted
|
||||||
$pSheet->getCell($newCoordinates)
|
$pSheet->getCell($newCoordinates)
|
||||||
->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle()));
|
->setValue($this->updateFormulaReferences($cell->getValue(), $pBefore, $pNumCols, $pNumRows, $pSheet->getTitle()));
|
||||||
} else {
|
} else {
|
||||||
// Formula should not be adjusted
|
// Formula should not be adjusted
|
||||||
$pSheet->getCell($newCoordinates)->setValue($cell->getValue());
|
$pSheet->getCell($newCoordinates)->setValue($cell->getValue());
|
||||||
|
|
|
@ -143,40 +143,40 @@ class Font
|
||||||
*/
|
*/
|
||||||
public static $defaultColumnWidths = [
|
public static $defaultColumnWidths = [
|
||||||
'Arial' => [
|
'Arial' => [
|
||||||
1 => ['px' => 24, 'width' => 12.00000000],
|
1 => ['px' => 24, 'width' => 12.00000000],
|
||||||
2 => ['px' => 24, 'width' => 12.00000000],
|
2 => ['px' => 24, 'width' => 12.00000000],
|
||||||
3 => ['px' => 32, 'width' => 10.66406250],
|
3 => ['px' => 32, 'width' => 10.66406250],
|
||||||
4 => ['px' => 32, 'width' => 10.66406250],
|
4 => ['px' => 32, 'width' => 10.66406250],
|
||||||
5 => ['px' => 40, 'width' => 10.00000000],
|
5 => ['px' => 40, 'width' => 10.00000000],
|
||||||
6 => ['px' => 48, 'width' => 9.59765625],
|
6 => ['px' => 48, 'width' => 9.59765625],
|
||||||
7 => ['px' => 48, 'width' => 9.59765625],
|
7 => ['px' => 48, 'width' => 9.59765625],
|
||||||
8 => ['px' => 56, 'width' => 9.33203125],
|
8 => ['px' => 56, 'width' => 9.33203125],
|
||||||
9 => ['px' => 64, 'width' => 9.14062500],
|
9 => ['px' => 64, 'width' => 9.14062500],
|
||||||
10 => ['px' => 64, 'width' => 9.14062500],
|
10 => ['px' => 64, 'width' => 9.14062500],
|
||||||
],
|
],
|
||||||
'Calibri' => [
|
'Calibri' => [
|
||||||
1 => ['px' => 24, 'width' => 12.00000000],
|
1 => ['px' => 24, 'width' => 12.00000000],
|
||||||
2 => ['px' => 24, 'width' => 12.00000000],
|
2 => ['px' => 24, 'width' => 12.00000000],
|
||||||
3 => ['px' => 32, 'width' => 10.66406250],
|
3 => ['px' => 32, 'width' => 10.66406250],
|
||||||
4 => ['px' => 32, 'width' => 10.66406250],
|
4 => ['px' => 32, 'width' => 10.66406250],
|
||||||
5 => ['px' => 40, 'width' => 10.00000000],
|
5 => ['px' => 40, 'width' => 10.00000000],
|
||||||
6 => ['px' => 48, 'width' => 9.59765625],
|
6 => ['px' => 48, 'width' => 9.59765625],
|
||||||
7 => ['px' => 48, 'width' => 9.59765625],
|
7 => ['px' => 48, 'width' => 9.59765625],
|
||||||
8 => ['px' => 56, 'width' => 9.33203125],
|
8 => ['px' => 56, 'width' => 9.33203125],
|
||||||
9 => ['px' => 56, 'width' => 9.33203125],
|
9 => ['px' => 56, 'width' => 9.33203125],
|
||||||
10 => ['px' => 64, 'width' => 9.14062500],
|
10 => ['px' => 64, 'width' => 9.14062500],
|
||||||
11 => ['px' => 64, 'width' => 9.14062500],
|
11 => ['px' => 64, 'width' => 9.14062500],
|
||||||
],
|
],
|
||||||
'Verdana' => [
|
'Verdana' => [
|
||||||
1 => ['px' => 24, 'width' => 12.00000000],
|
1 => ['px' => 24, 'width' => 12.00000000],
|
||||||
2 => ['px' => 24, 'width' => 12.00000000],
|
2 => ['px' => 24, 'width' => 12.00000000],
|
||||||
3 => ['px' => 32, 'width' => 10.66406250],
|
3 => ['px' => 32, 'width' => 10.66406250],
|
||||||
4 => ['px' => 32, 'width' => 10.66406250],
|
4 => ['px' => 32, 'width' => 10.66406250],
|
||||||
5 => ['px' => 40, 'width' => 10.00000000],
|
5 => ['px' => 40, 'width' => 10.00000000],
|
||||||
6 => ['px' => 48, 'width' => 9.59765625],
|
6 => ['px' => 48, 'width' => 9.59765625],
|
||||||
7 => ['px' => 48, 'width' => 9.59765625],
|
7 => ['px' => 48, 'width' => 9.59765625],
|
||||||
8 => ['px' => 64, 'width' => 9.14062500],
|
8 => ['px' => 64, 'width' => 9.14062500],
|
||||||
9 => ['px' => 72, 'width' => 9.00000000],
|
9 => ['px' => 72, 'width' => 9.00000000],
|
||||||
10 => ['px' => 72, 'width' => 9.00000000],
|
10 => ['px' => 72, 'width' => 9.00000000],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -541,12 +541,12 @@ class PclZip
|
||||||
|
|
||||||
// ----- For each file in the list check the attributes
|
// ----- For each file in the list check the attributes
|
||||||
$v_supported_attributes = [
|
$v_supported_attributes = [
|
||||||
PCLZIP_ATT_FILE_NAME => 'mandatory',
|
PCLZIP_ATT_FILE_NAME => 'mandatory',
|
||||||
PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional',
|
PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional',
|
||||||
PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional',
|
PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional',
|
||||||
PCLZIP_ATT_FILE_MTIME => 'optional',
|
PCLZIP_ATT_FILE_MTIME => 'optional',
|
||||||
PCLZIP_ATT_FILE_CONTENT => 'optional',
|
PCLZIP_ATT_FILE_CONTENT => 'optional',
|
||||||
PCLZIP_ATT_FILE_COMMENT => 'optional',
|
PCLZIP_ATT_FILE_COMMENT => 'optional',
|
||||||
];
|
];
|
||||||
foreach ($v_att_list as $v_entry) {
|
foreach ($v_att_list as $v_entry) {
|
||||||
$v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes);
|
$v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes);
|
||||||
|
@ -704,25 +704,25 @@ class PclZip
|
||||||
if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
|
if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) {
|
||||||
// ----- Parse the options
|
// ----- Parse the options
|
||||||
$v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, [
|
$v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, [
|
||||||
PCLZIP_OPT_PATH => 'optional',
|
PCLZIP_OPT_PATH => 'optional',
|
||||||
PCLZIP_OPT_REMOVE_PATH => 'optional',
|
PCLZIP_OPT_REMOVE_PATH => 'optional',
|
||||||
PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
|
PCLZIP_OPT_REMOVE_ALL_PATH => 'optional',
|
||||||
PCLZIP_OPT_ADD_PATH => 'optional',
|
PCLZIP_OPT_ADD_PATH => 'optional',
|
||||||
PCLZIP_CB_PRE_EXTRACT => 'optional',
|
PCLZIP_CB_PRE_EXTRACT => 'optional',
|
||||||
PCLZIP_CB_POST_EXTRACT => 'optional',
|
PCLZIP_CB_POST_EXTRACT => 'optional',
|
||||||
PCLZIP_OPT_SET_CHMOD => 'optional',
|
PCLZIP_OPT_SET_CHMOD => 'optional',
|
||||||
PCLZIP_OPT_BY_NAME => 'optional',
|
PCLZIP_OPT_BY_NAME => 'optional',
|
||||||
PCLZIP_OPT_BY_EREG => 'optional',
|
PCLZIP_OPT_BY_EREG => 'optional',
|
||||||
PCLZIP_OPT_BY_PREG => 'optional',
|
PCLZIP_OPT_BY_PREG => 'optional',
|
||||||
PCLZIP_OPT_BY_INDEX => 'optional',
|
PCLZIP_OPT_BY_INDEX => 'optional',
|
||||||
PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
|
PCLZIP_OPT_EXTRACT_AS_STRING => 'optional',
|
||||||
PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
|
PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional',
|
||||||
PCLZIP_OPT_REPLACE_NEWER => 'optional',
|
PCLZIP_OPT_REPLACE_NEWER => 'optional',
|
||||||
PCLZIP_OPT_STOP_ON_ERROR => 'optional',
|
PCLZIP_OPT_STOP_ON_ERROR => 'optional',
|
||||||
PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
|
PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional',
|
||||||
PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
|
PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional',
|
||||||
PCLZIP_OPT_TEMP_FILE_ON => 'optional',
|
PCLZIP_OPT_TEMP_FILE_ON => 'optional',
|
||||||
PCLZIP_OPT_TEMP_FILE_OFF => 'optional',
|
PCLZIP_OPT_TEMP_FILE_OFF => 'optional',
|
||||||
]);
|
]);
|
||||||
if ($v_result != 1) {
|
if ($v_result != 1) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -706,9 +706,10 @@ class AutoFilter
|
||||||
$operator = ($dynamicRuleType === AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE)
|
$operator = ($dynamicRuleType === AutoFilter\Column\Rule::AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE)
|
||||||
? AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN
|
? AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_GREATERTHAN
|
||||||
: AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN;
|
: AutoFilter\Column\Rule::AUTOFILTER_COLUMN_RULE_LESSTHAN;
|
||||||
$ruleValues[] = ['operator' => $operator,
|
$ruleValues[] = [
|
||||||
'value' => $average,
|
'operator' => $operator,
|
||||||
];
|
'value' => $average,
|
||||||
|
];
|
||||||
$columnFilterTests[$columnID] = [
|
$columnFilterTests[$columnID] = [
|
||||||
'method' => 'filterTestInCustomDataSet',
|
'method' => 'filterTestInCustomDataSet',
|
||||||
'arguments' => ['filterRules' => $ruleValues, 'join' => AutoFilter\Column::AUTOFILTER_COLUMN_JOIN_OR],
|
'arguments' => ['filterRules' => $ruleValues, 'join' => AutoFilter\Column::AUTOFILTER_COLUMN_JOIN_OR],
|
||||||
|
|
|
@ -46,11 +46,11 @@ class Comments extends WriterPart
|
||||||
// XML header
|
// XML header
|
||||||
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
|
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
|
||||||
|
|
||||||
// Comments cache
|
// Comments cache
|
||||||
$comments = $pWorksheet->getComments();
|
$comments = $pWorksheet->getComments();
|
||||||
|
|
||||||
// Authors cache
|
// Authors cache
|
||||||
$authors = [];
|
$authors = [];
|
||||||
$authorId = 0;
|
$authorId = 0;
|
||||||
foreach ($comments as $comment) {
|
foreach ($comments as $comment) {
|
||||||
if (!isset($authors[$comment->getAuthor()])) {
|
if (!isset($authors[$comment->getAuthor()])) {
|
||||||
|
@ -126,8 +126,8 @@ class Comments extends WriterPart
|
||||||
// XML header
|
// XML header
|
||||||
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
|
$objWriter->startDocument('1.0', 'UTF-8', 'yes');
|
||||||
|
|
||||||
// Comments cache
|
// Comments cache
|
||||||
$comments = $pWorksheet->getComments();
|
$comments = $pWorksheet->getComments();
|
||||||
|
|
||||||
// xml
|
// xml
|
||||||
$objWriter->startElement('xml');
|
$objWriter->startElement('xml');
|
||||||
|
@ -189,7 +189,7 @@ class Comments extends WriterPart
|
||||||
private function writeVMLComment(\PhpSpreadsheet\Shared\XMLWriter $objWriter = null, $pCellReference = 'A1', \PhpSpreadsheet\Comment $pComment = null)
|
private function writeVMLComment(\PhpSpreadsheet\Shared\XMLWriter $objWriter = null, $pCellReference = 'A1', \PhpSpreadsheet\Comment $pComment = null)
|
||||||
{
|
{
|
||||||
// Metadata
|
// Metadata
|
||||||
list($column, $row) = \PhpSpreadsheet\Cell::coordinateFromString($pCellReference);
|
list($column, $row) = \PhpSpreadsheet\Cell::coordinateFromString($pCellReference);
|
||||||
$column = \PhpSpreadsheet\Cell::columnIndexFromString($column);
|
$column = \PhpSpreadsheet\Cell::columnIndexFromString($column);
|
||||||
$id = 1024 + $column + $row;
|
$id = 1024 + $column + $row;
|
||||||
$id = substr($id, 0, 4);
|
$id = substr($id, 0, 4);
|
||||||
|
|
|
@ -294,8 +294,7 @@ class Excel5 extends BaseWriter implements IWriter
|
||||||
|
|
||||||
// set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
|
// set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
|
||||||
$reducedSpId = $countShapes[$sheetIndex];
|
$reducedSpId = $countShapes[$sheetIndex];
|
||||||
$spId = $reducedSpId
|
$spId = $reducedSpId | ($sheet->getParent()->getIndex($sheet) + 1) << 10;
|
||||||
| ($sheet->getParent()->getIndex($sheet) + 1) << 10;
|
|
||||||
$spContainer->setSpId($spId);
|
$spContainer->setSpId($spId);
|
||||||
|
|
||||||
// keep track of last reducedSpId
|
// keep track of last reducedSpId
|
||||||
|
@ -352,8 +351,7 @@ class Excel5 extends BaseWriter implements IWriter
|
||||||
|
|
||||||
// set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
|
// set the shape index (we combine 1-based sheet index and $countShapes to create unique shape index)
|
||||||
$reducedSpId = $countShapes[$sheetIndex];
|
$reducedSpId = $countShapes[$sheetIndex];
|
||||||
$spId = $reducedSpId
|
$spId = $reducedSpId | ($sheet->getParent()->getIndex($sheet) + 1) << 10;
|
||||||
| ($sheet->getParent()->getIndex($sheet) + 1) << 10;
|
|
||||||
$spContainer->setSpId($spId);
|
$spContainer->setSpId($spId);
|
||||||
|
|
||||||
// keep track of last reducedSpId
|
// keep track of last reducedSpId
|
||||||
|
@ -564,50 +562,64 @@ class Excel5 extends BaseWriter implements IWriter
|
||||||
$dataSection_Content = '';
|
$dataSection_Content = '';
|
||||||
|
|
||||||
// GKPIDDSI_CODEPAGE: CodePage
|
// GKPIDDSI_CODEPAGE: CodePage
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x01],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x01],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x02], // 2 byte signed integer
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => 1252], ];
|
'type' => ['pack' => 'V', 'data' => 0x02], // 2 byte signed integer
|
||||||
|
'data' => ['data' => 1252],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
|
|
||||||
// GKPIDDSI_CATEGORY : Category
|
// GKPIDDSI_CATEGORY : Category
|
||||||
if ($this->spreadsheet->getProperties()->getCategory()) {
|
if ($this->spreadsheet->getProperties()->getCategory()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getCategory();
|
$dataProp = $this->spreadsheet->getProperties()->getCategory();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x02],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x02],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E],
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// GKPIDDSI_VERSION :Version of the application that wrote the property storage
|
// GKPIDDSI_VERSION :Version of the application that wrote the property storage
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x17],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x17],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x03],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['pack' => 'V', 'data' => 0x000C0000], ];
|
'type' => ['pack' => 'V', 'data' => 0x03],
|
||||||
|
'data' => ['pack' => 'V', 'data' => 0x000C0000],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
// GKPIDDSI_SCALE : FALSE
|
// GKPIDDSI_SCALE : FALSE
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x0B],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x0B],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x0B],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => false], ];
|
'type' => ['pack' => 'V', 'data' => 0x0B],
|
||||||
|
'data' => ['data' => false],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
// GKPIDDSI_LINKSDIRTY : True if any of the values for the linked properties have changed outside of the application
|
// GKPIDDSI_LINKSDIRTY : True if any of the values for the linked properties have changed outside of the application
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x10],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x10],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x0B],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => false], ];
|
'type' => ['pack' => 'V', 'data' => 0x0B],
|
||||||
|
'data' => ['data' => false],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
// GKPIDDSI_SHAREDOC : FALSE
|
// GKPIDDSI_SHAREDOC : FALSE
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x13],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x13],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x0B],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => false], ];
|
'type' => ['pack' => 'V', 'data' => 0x0B],
|
||||||
|
'data' => ['data' => false],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
// GKPIDDSI_HYPERLINKSCHANGED : True if any of the values for the _PID_LINKS (hyperlink text) have changed outside of the application
|
// GKPIDDSI_HYPERLINKSCHANGED : True if any of the values for the _PID_LINKS (hyperlink text) have changed outside of the application
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x16],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x16],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x0B],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => false], ];
|
'type' => ['pack' => 'V', 'data' => 0x0B],
|
||||||
|
'data' => ['data' => false],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
|
|
||||||
// GKPIDDSI_DOCSPARTS
|
// GKPIDDSI_DOCSPARTS
|
||||||
|
@ -617,50 +629,54 @@ class Excel5 extends BaseWriter implements IWriter
|
||||||
$dataProp = pack('v', 0x0001);
|
$dataProp = pack('v', 0x0001);
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
// array of UnalignedLpstr
|
// array of UnalignedLpstr
|
||||||
// cch
|
// cch
|
||||||
$dataProp .= pack('v', 0x000A);
|
$dataProp .= pack('v', 0x000A);
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
// value
|
// value
|
||||||
$dataProp .= 'Worksheet' . chr(0);
|
$dataProp .= 'Worksheet' . chr(0);
|
||||||
|
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x0D],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x0D],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x101E],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x101E],
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
|
|
||||||
// GKPIDDSI_HEADINGPAIR
|
// GKPIDDSI_HEADINGPAIR
|
||||||
// VtVecHeadingPairValue
|
// VtVecHeadingPairValue
|
||||||
// cElements
|
// cElements
|
||||||
$dataProp = pack('v', 0x0002);
|
$dataProp = pack('v', 0x0002);
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
// Array of vtHeadingPair
|
// Array of vtHeadingPair
|
||||||
// vtUnalignedString - headingString
|
// vtUnalignedString - headingString
|
||||||
// stringType
|
// stringType
|
||||||
$dataProp .= pack('v', 0x001E);
|
$dataProp .= pack('v', 0x001E);
|
||||||
// padding
|
// padding
|
||||||
$dataProp .= pack('v', 0x0000);
|
|
||||||
// UnalignedLpstr
|
|
||||||
// cch
|
|
||||||
$dataProp .= pack('v', 0x0013);
|
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
// value
|
// UnalignedLpstr
|
||||||
$dataProp .= 'Feuilles de calcul';
|
// cch
|
||||||
// vtUnalignedString - headingParts
|
$dataProp .= pack('v', 0x0013);
|
||||||
// wType : 0x0003 = 32 bit signed integer
|
$dataProp .= pack('v', 0x0000);
|
||||||
$dataProp .= pack('v', 0x0300);
|
// value
|
||||||
// padding
|
$dataProp .= 'Feuilles de calcul';
|
||||||
$dataProp .= pack('v', 0x0000);
|
// vtUnalignedString - headingParts
|
||||||
// value
|
// wType : 0x0003 = 32 bit signed integer
|
||||||
$dataProp .= pack('v', 0x0100);
|
$dataProp .= pack('v', 0x0300);
|
||||||
|
// padding
|
||||||
|
$dataProp .= pack('v', 0x0000);
|
||||||
|
// value
|
||||||
|
$dataProp .= pack('v', 0x0100);
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
$dataProp .= pack('v', 0x0000);
|
$dataProp .= pack('v', 0x0000);
|
||||||
|
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x0C],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x0C],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x100C],
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x100C],
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
|
|
||||||
// 4 Section Length
|
// 4 Section Length
|
||||||
|
@ -760,89 +776,109 @@ class Excel5 extends BaseWriter implements IWriter
|
||||||
$dataSection_Content = '';
|
$dataSection_Content = '';
|
||||||
|
|
||||||
// CodePage : CP-1252
|
// CodePage : CP-1252
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x01],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x01],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x02], // 2 byte signed integer
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => 1252], ];
|
'type' => ['pack' => 'V', 'data' => 0x02], // 2 byte signed integer
|
||||||
|
'data' => ['data' => 1252],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
|
|
||||||
// Title
|
// Title
|
||||||
if ($this->spreadsheet->getProperties()->getTitle()) {
|
if ($this->spreadsheet->getProperties()->getTitle()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getTitle();
|
$dataProp = $this->spreadsheet->getProperties()->getTitle();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x02],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x02],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Subject
|
// Subject
|
||||||
if ($this->spreadsheet->getProperties()->getSubject()) {
|
if ($this->spreadsheet->getProperties()->getSubject()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getSubject();
|
$dataProp = $this->spreadsheet->getProperties()->getSubject();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x03],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x03],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Author (Creator)
|
// Author (Creator)
|
||||||
if ($this->spreadsheet->getProperties()->getCreator()) {
|
if ($this->spreadsheet->getProperties()->getCreator()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getCreator();
|
$dataProp = $this->spreadsheet->getProperties()->getCreator();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x04],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x04],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Keywords
|
// Keywords
|
||||||
if ($this->spreadsheet->getProperties()->getKeywords()) {
|
if ($this->spreadsheet->getProperties()->getKeywords()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getKeywords();
|
$dataProp = $this->spreadsheet->getProperties()->getKeywords();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x05],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x05],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Comments (Description)
|
// Comments (Description)
|
||||||
if ($this->spreadsheet->getProperties()->getDescription()) {
|
if ($this->spreadsheet->getProperties()->getDescription()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getDescription();
|
$dataProp = $this->spreadsheet->getProperties()->getDescription();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x06],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x06],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Last Saved By (LastModifiedBy)
|
// Last Saved By (LastModifiedBy)
|
||||||
if ($this->spreadsheet->getProperties()->getLastModifiedBy()) {
|
if ($this->spreadsheet->getProperties()->getLastModifiedBy()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getLastModifiedBy();
|
$dataProp = $this->spreadsheet->getProperties()->getLastModifiedBy();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x08],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x08],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x1E], // null-terminated string prepended by dword string length
|
||||||
|
'data' => ['data' => $dataProp, 'length' => strlen($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Created Date/Time
|
// Created Date/Time
|
||||||
if ($this->spreadsheet->getProperties()->getCreated()) {
|
if ($this->spreadsheet->getProperties()->getCreated()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getCreated();
|
$dataProp = $this->spreadsheet->getProperties()->getCreated();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x0C],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x0C],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x40], // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => \PhpSpreadsheet\Shared\OLE::localDateToOLE($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x40], // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
|
||||||
|
'data' => ['data' => \PhpSpreadsheet\Shared\OLE::localDateToOLE($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Modified Date/Time
|
// Modified Date/Time
|
||||||
if ($this->spreadsheet->getProperties()->getModified()) {
|
if ($this->spreadsheet->getProperties()->getModified()) {
|
||||||
$dataProp = $this->spreadsheet->getProperties()->getModified();
|
$dataProp = $this->spreadsheet->getProperties()->getModified();
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x0D],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x0D],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x40], // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => \PhpSpreadsheet\Shared\OLE::localDateToOLE($dataProp)], ];
|
'type' => ['pack' => 'V', 'data' => 0x40], // Filetime (64-bit value representing the number of 100-nanosecond intervals since January 1, 1601)
|
||||||
|
'data' => ['data' => \PhpSpreadsheet\Shared\OLE::localDateToOLE($dataProp)],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
}
|
}
|
||||||
// Security
|
// Security
|
||||||
$dataSection[] = ['summary' => ['pack' => 'V', 'data' => 0x13],
|
$dataSection[] = [
|
||||||
'offset' => ['pack' => 'V'],
|
'summary' => ['pack' => 'V', 'data' => 0x13],
|
||||||
'type' => ['pack' => 'V', 'data' => 0x03], // 4 byte signed integer
|
'offset' => ['pack' => 'V'],
|
||||||
'data' => ['data' => 0x00], ];
|
'type' => ['pack' => 'V', 'data' => 0x03], // 4 byte signed integer
|
||||||
|
'data' => ['data' => 0x00],
|
||||||
|
];
|
||||||
++$dataSection_NumProps;
|
++$dataSection_NumProps;
|
||||||
|
|
||||||
// 4 Section Length
|
// 4 Section Length
|
||||||
|
|
|
@ -666,7 +666,7 @@ class Parser
|
||||||
list($row1, $col1) = $this->cellToPackedRowcol($cell1);
|
list($row1, $col1) = $this->cellToPackedRowcol($cell1);
|
||||||
list($row2, $col2) = $this->cellToPackedRowcol($cell2);
|
list($row2, $col2) = $this->cellToPackedRowcol($cell2);
|
||||||
} else { // It's a rows range (like 26:27)
|
} else { // It's a rows range (like 26:27)
|
||||||
list($row1, $col1, $row2, $col2) = $this->rangeToPackedRange($cell1 . ':' . $cell2);
|
list($row1, $col1, $row2, $col2) = $this->rangeToPackedRange($cell1 . ':' . $cell2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// The ptg value depends on the class of the ptg.
|
// The ptg value depends on the class of the ptg.
|
||||||
|
|
|
@ -1019,9 +1019,7 @@ class Worksheet extends BIFFwriter
|
||||||
$data = pack('vvvv', $row1, $row2, $col1, $col2);
|
$data = pack('vvvv', $row1, $row2, $col1, $col2);
|
||||||
|
|
||||||
// Write the packed data
|
// Write the packed data
|
||||||
$this->append($header . $data .
|
$this->append($header . $data . $unknown1 . $options . $unknown2 . $url_len . $url);
|
||||||
$unknown1 . $options .
|
|
||||||
$unknown2 . $url_len . $url);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1068,9 +1066,7 @@ class Worksheet extends BIFFwriter
|
||||||
$data = pack('vvvv', $row1, $row2, $col1, $col2);
|
$data = pack('vvvv', $row1, $row2, $col1, $col2);
|
||||||
|
|
||||||
// Write the packed data
|
// Write the packed data
|
||||||
$this->append($header . $data .
|
$this->append($header . $data . $unknown1 . $options . $url_len . $url);
|
||||||
$unknown1 . $options .
|
|
||||||
$url_len . $url);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue