Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
typo3
qfq
Commits
3ee952b6
Commit
3ee952b6
authored
Jul 08, 2018
by
Carsten Rose
Browse files
F4922 / Excel Import: moved lib to Resources/Private/Classes/PhpSpreadsheet
parent
3a962a14
Pipeline
#668
passed with stage
in 1 minute and 33 seconds
Changes
256
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
3ee952b6
...
...
@@ -23,7 +23,7 @@
/doc/plantuml
/extension/Documentation/_make/build
/extension/Documentation/html
/extension/Resources/Private/
vendor
/extension/Resources/Private/
Classes/PhpSpreadsheet
/extension/Resources/Public/Css
/extension/Resources/Public/fonts
/extension/Resources/Public/JavaScript
...
...
Makefile
View file @
3ee952b6
...
...
@@ -74,7 +74,7 @@ bootstrap: .npmpackages .plantuml_install .virtual_env
npm update
grunt default
composer update
cp
-rp
vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet extension/Resources/Private/
vendor
/
cp
-rp
vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet extension/Resources/Private/
Classes
/
basic
:
.npmpackages .virtual_env
npm update
...
...
extension/Resources/Private/Classes/PHPExcel.php
deleted
100644 → 0
View file @
3a962a14
This diff is collapsed.
Click to expand it.
extension/Resources/Private/Classes/PHPExcel/Autoloader.php
deleted
100644 → 0
View file @
3a962a14
<?php
PHPExcel_Autoloader
::
register
();
// As we always try to run the autoloader before anything else, we can use it to do a few
// simple checks and initialisations
//PHPExcel_Shared_ZipStreamWrapper::register();
// check mbstring.func_overload
if
(
ini_get
(
'mbstring.func_overload'
)
&
2
)
{
throw
new
PHPExcel_Exception
(
'Multibyte function overloading in PHP must be disabled for string functions (2).'
);
}
PHPExcel_Shared_String
::
buildCharacterSets
();
/**
* PHPExcel
*
* Copyright (c) 2006 - 2015 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
class
PHPExcel_Autoloader
{
/**
* Register the Autoloader with SPL
*
*/
public
static
function
register
()
{
if
(
function_exists
(
'__autoload'
))
{
// Register any existing autoloader function with SPL, so we don't get any clashes
spl_autoload_register
(
'__autoload'
);
}
// Register ourselves with SPL
if
(
version_compare
(
PHP_VERSION
,
'5.3.0'
)
>=
0
)
{
return
spl_autoload_register
(
array
(
'PHPExcel_Autoloader'
,
'load'
),
true
,
true
);
}
else
{
return
spl_autoload_register
(
array
(
'PHPExcel_Autoloader'
,
'load'
));
}
}
/**
* Autoload a class identified by name
*
* @param string $pClassName Name of the object to load
*/
public
static
function
load
(
$pClassName
)
{
if
((
class_exists
(
$pClassName
,
false
))
||
(
strpos
(
$pClassName
,
'PHPExcel'
)
!==
0
))
{
// Either already loaded, or not a PHPExcel class request
return
false
;
}
$pClassFilePath
=
PHPEXCEL_ROOT
.
str_replace
(
'_'
,
DIRECTORY_SEPARATOR
,
$pClassName
)
.
'.php'
;
if
((
file_exists
(
$pClassFilePath
)
===
false
)
||
(
is_readable
(
$pClassFilePath
)
===
false
))
{
// Can't load
return
false
;
}
require
(
$pClassFilePath
);
}
}
extension/Resources/Private/Classes/PHPExcel/CachedObjectStorage/APC.php
deleted
100644 → 0
View file @
3a962a14
<?php
/**
* PHPExcel_CachedObjectStorage_APC
*
* Copyright (c) 2006 - 2015 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
class
PHPExcel_CachedObjectStorage_APC
extends
PHPExcel_CachedObjectStorage_CacheBase
implements
PHPExcel_CachedObjectStorage_ICache
{
/**
* Prefix used to uniquely identify cache data for this worksheet
*
* @access private
* @var string
*/
private
$cachePrefix
=
null
;
/**
* Cache timeout
*
* @access private
* @var integer
*/
private
$cacheTime
=
600
;
/**
* Store cell data in cache for the current cell object if it's "dirty",
* and the 'nullify' the current cell object
*
* @access private
* @return void
* @throws PHPExcel_Exception
*/
protected
function
storeData
()
{
if
(
$this
->
currentCellIsDirty
&&
!
empty
(
$this
->
currentObjectID
))
{
$this
->
currentObject
->
detach
();
if
(
!
apc_store
(
$this
->
cachePrefix
.
$this
->
currentObjectID
.
'.cache'
,
serialize
(
$this
->
currentObject
),
$this
->
cacheTime
)
)
{
$this
->
__destruct
();
throw
new
PHPExcel_Exception
(
'Failed to store cell '
.
$this
->
currentObjectID
.
' in APC'
);
}
$this
->
currentCellIsDirty
=
false
;
}
$this
->
currentObjectID
=
$this
->
currentObject
=
null
;
}
/**
* Add or Update a cell in cache identified by coordinate address
*
* @access public
* @param string $pCoord Coordinate address of the cell to update
* @param PHPExcel_Cell $cell Cell to update
* @return PHPExcel_Cell
* @throws PHPExcel_Exception
*/
public
function
addCacheData
(
$pCoord
,
PHPExcel_Cell
$cell
)
{
if
((
$pCoord
!==
$this
->
currentObjectID
)
&&
(
$this
->
currentObjectID
!==
null
))
{
$this
->
storeData
();
}
$this
->
cellCache
[
$pCoord
]
=
true
;
$this
->
currentObjectID
=
$pCoord
;
$this
->
currentObject
=
$cell
;
$this
->
currentCellIsDirty
=
true
;
return
$cell
;
}
/**
* Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
*
* @access public
* @param string $pCoord Coordinate address of the cell to check
* @throws PHPExcel_Exception
* @return boolean
*/
public
function
isDataSet
(
$pCoord
)
{
// Check if the requested entry is the current object, or exists in the cache
if
(
parent
::
isDataSet
(
$pCoord
))
{
if
(
$this
->
currentObjectID
==
$pCoord
)
{
return
true
;
}
// Check if the requested entry still exists in apc
$success
=
apc_fetch
(
$this
->
cachePrefix
.
$pCoord
.
'.cache'
);
if
(
$success
===
false
)
{
// Entry no longer exists in APC, so clear it from the cache array
parent
::
deleteCacheData
(
$pCoord
);
throw
new
PHPExcel_Exception
(
'Cell entry '
.
$pCoord
.
' no longer exists in APC cache'
);
}
return
true
;
}
return
false
;
}
/**
* Get cell at a specific coordinate
*
* @access public
* @param string $pCoord Coordinate of the cell
* @throws PHPExcel_Exception
* @return PHPExcel_Cell Cell that was found, or null if not found
*/
public
function
getCacheData
(
$pCoord
)
{
if
(
$pCoord
===
$this
->
currentObjectID
)
{
return
$this
->
currentObject
;
}
$this
->
storeData
();
// Check if the entry that has been requested actually exists
if
(
parent
::
isDataSet
(
$pCoord
))
{
$obj
=
apc_fetch
(
$this
->
cachePrefix
.
$pCoord
.
'.cache'
);
if
(
$obj
===
false
)
{
// Entry no longer exists in APC, so clear it from the cache array
parent
::
deleteCacheData
(
$pCoord
);
throw
new
PHPExcel_Exception
(
'Cell entry '
.
$pCoord
.
' no longer exists in APC cache'
);
}
}
else
{
// Return null if requested entry doesn't exist in cache
return
null
;
}
// Set current entry to the requested entry
$this
->
currentObjectID
=
$pCoord
;
$this
->
currentObject
=
unserialize
(
$obj
);
// Re-attach this as the cell's parent
$this
->
currentObject
->
attach
(
$this
);
// Return requested entry
return
$this
->
currentObject
;
}
/**
* Get a list of all cell addresses currently held in cache
*
* @return string[]
*/
public
function
getCellList
()
{
if
(
$this
->
currentObjectID
!==
null
)
{
$this
->
storeData
();
}
return
parent
::
getCellList
();
}
/**
* Delete a cell in cache identified by coordinate address
*
* @access public
* @param string $pCoord Coordinate address of the cell to delete
* @throws PHPExcel_Exception
*/
public
function
deleteCacheData
(
$pCoord
)
{
// Delete the entry from APC
apc_delete
(
$this
->
cachePrefix
.
$pCoord
.
'.cache'
);
// Delete the entry from our cell address array
parent
::
deleteCacheData
(
$pCoord
);
}
/**
* Clone the cell collection
*
* @access public
* @param PHPExcel_Worksheet $parent The new worksheet
* @throws PHPExcel_Exception
* @return void
*/
public
function
copyCellCollection
(
PHPExcel_Worksheet
$parent
)
{
parent
::
copyCellCollection
(
$parent
);
// Get a new id for the new file name
$baseUnique
=
$this
->
getUniqueID
();
$newCachePrefix
=
substr
(
md5
(
$baseUnique
),
0
,
8
)
.
'.'
;
$cacheList
=
$this
->
getCellList
();
foreach
(
$cacheList
as
$cellID
)
{
if
(
$cellID
!=
$this
->
currentObjectID
)
{
$obj
=
apc_fetch
(
$this
->
cachePrefix
.
$cellID
.
'.cache'
);
if
(
$obj
===
false
)
{
// Entry no longer exists in APC, so clear it from the cache array
parent
::
deleteCacheData
(
$cellID
);
throw
new
PHPExcel_Exception
(
'Cell entry '
.
$cellID
.
' no longer exists in APC'
);
}
if
(
!
apc_store
(
$newCachePrefix
.
$cellID
.
'.cache'
,
$obj
,
$this
->
cacheTime
))
{
$this
->
__destruct
();
throw
new
PHPExcel_Exception
(
'Failed to store cell '
.
$cellID
.
' in APC'
);
}
}
}
$this
->
cachePrefix
=
$newCachePrefix
;
}
/**
* Clear the cell collection and disconnect from our parent
*
* @return void
*/
public
function
unsetWorksheetCells
()
{
if
(
$this
->
currentObject
!==
null
)
{
$this
->
currentObject
->
detach
();
$this
->
currentObject
=
$this
->
currentObjectID
=
null
;
}
// Flush the APC cache
$this
->
__destruct
();
$this
->
cellCache
=
array
();
// detach ourself from the worksheet, so that it can then delete this object successfully
$this
->
parent
=
null
;
}
/**
* Initialise this new cell collection
*
* @param PHPExcel_Worksheet $parent The worksheet for this cell collection
* @param array of mixed $arguments Additional initialisation arguments
*/
public
function
__construct
(
PHPExcel_Worksheet
$parent
,
$arguments
)
{
$cacheTime
=
(
isset
(
$arguments
[
'cacheTime'
]))
?
$arguments
[
'cacheTime'
]
:
600
;
if
(
$this
->
cachePrefix
===
null
)
{
$baseUnique
=
$this
->
getUniqueID
();
$this
->
cachePrefix
=
substr
(
md5
(
$baseUnique
),
0
,
8
)
.
'.'
;
$this
->
cacheTime
=
$cacheTime
;
parent
::
__construct
(
$parent
);
}
}
/**
* Destroy this cell collection
*/
public
function
__destruct
()
{
$cacheList
=
$this
->
getCellList
();
foreach
(
$cacheList
as
$cellID
)
{
apc_delete
(
$this
->
cachePrefix
.
$cellID
.
'.cache'
);
}
}
/**
* Identify whether the caching method is currently available
* Some methods are dependent on the availability of certain extensions being enabled in the PHP build
*
* @return boolean
*/
public
static
function
cacheMethodIsAvailable
()
{
if
(
!
function_exists
(
'apc_store'
))
{
return
false
;
}
if
(
apc_sma_info
()
===
false
)
{
return
false
;
}
return
true
;
}
}
extension/Resources/Private/Classes/PHPExcel/CachedObjectStorage/CacheBase.php
deleted
100644 → 0
View file @
3a962a14
<?php
/**
* PHPExcel_CachedObjectStorage_CacheBase
*
* Copyright (c) 2006 - 2015 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel_CachedObjectStorage
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
abstract
class
PHPExcel_CachedObjectStorage_CacheBase
{
/**
* Parent worksheet
*
* @var PHPExcel_Worksheet
*/
protected
$parent
;
/**
* The currently active Cell
*
* @var PHPExcel_Cell
*/
protected
$currentObject
=
null
;
/**
* Coordinate address of the currently active Cell
*
* @var string
*/
protected
$currentObjectID
=
null
;
/**
* Flag indicating whether the currently active Cell requires saving
*
* @var boolean
*/
protected
$currentCellIsDirty
=
true
;
/**
* An array of cells or cell pointers for the worksheet cells held in this cache,
* and indexed by their coordinate address within the worksheet
*
* @var array of mixed
*/
protected
$cellCache
=
array
();
/**
* Initialise this new cell collection
*
* @param PHPExcel_Worksheet $parent The worksheet for this cell collection
*/
public
function
__construct
(
PHPExcel_Worksheet
$parent
)
{
// Set our parent worksheet.
// This is maintained within the cache controller to facilitate re-attaching it to PHPExcel_Cell objects when
// they are woken from a serialized state
$this
->
parent
=
$parent
;
}
/**
* Return the parent worksheet for this cell collection
*
* @return PHPExcel_Worksheet
*/
public
function
getParent
()
{
return
$this
->
parent
;
}
/**
* Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell?
*
* @param string $pCoord Coordinate address of the cell to check
* @return boolean
*/
public
function
isDataSet
(
$pCoord
)
{
if
(
$pCoord
===
$this
->
currentObjectID
)
{
return
true
;
}
// Check if the requested entry exists in the cache
return
isset
(
$this
->
cellCache
[
$pCoord
]);
}
/**
* Move a cell object from one address to another
*
* @param string $fromAddress Current address of the cell to move
* @param string $toAddress Destination address of the cell to move
* @return boolean
*/
public
function
moveCell
(
$fromAddress
,
$toAddress
)
{
if
(
$fromAddress
===
$this
->
currentObjectID
)
{
$this
->
currentObjectID
=
$toAddress
;
}
$this
->
currentCellIsDirty
=
true
;
if
(
isset
(
$this
->
cellCache
[
$fromAddress
]))
{
$this
->
cellCache
[
$toAddress
]
=
&
$this
->
cellCache
[
$fromAddress
];
unset
(
$this
->
cellCache
[
$fromAddress
]);
}
return
true
;
}
/**
* Add or Update a cell in cache
*
* @param PHPExcel_Cell $cell Cell to update
* @return PHPExcel_Cell
* @throws PHPExcel_Exception
*/
public
function
updateCacheData
(
PHPExcel_Cell
$cell
)
{
return
$this
->
addCacheData
(
$cell
->
getCoordinate
(),
$cell
);
}
/**
* Delete a cell in cache identified by coordinate address
*
* @param string $pCoord Coordinate address of the cell to delete
* @throws PHPExcel_Exception
*/
public
function
deleteCacheData
(
$pCoord
)
{
if
(
$pCoord
===
$this
->
currentObjectID
&&
!
is_null
(
$this
->
currentObject
))
{
$this
->
currentObject
->
detach
();
$this
->
currentObjectID
=
$this
->
currentObject
=
null
;
}
if
(
is_object
(
$this
->
cellCache
[
$pCoord
]))
{
$this
->
cellCache
[
$pCoord
]
->
detach
();
unset
(
$this
->
cellCache
[
$pCoord
]);
}
$this
->
currentCellIsDirty
=
false
;
}
/**
* Get a list of all cell addresses currently held in cache
*
* @return string[]
*/
public
function
getCellList
()
{
return
array_keys
(
$this
->
cellCache
);
}
/**
* Sort the list of all cell addresses currently held in cache by row and column
*
* @return string[]
*/
public
function
getSortedCellList
()
{
$sortKeys
=
array
();
foreach
(
$this
->
getCellList
()
as
$coord
)
{
sscanf
(
$coord
,
'%[A-Z]%d'
,
$column
,
$row
);
$sortKeys
[
sprintf
(
'%09d%3s'
,
$row
,
$column
)]
=
$coord
;
}
ksort
(
$sortKeys
);
return
array_values
(
$sortKeys
);
}
/**
* Get highest worksheet column and highest row that have cell records
*
* @return array Highest column name and highest row number
*/
public
function
getHighestRowAndColumn
()
{
// Lookup highest column and highest row
$col
=
array
(
'A'
=>
'1A'
);
$row
=
array
(
1
);
foreach
(
$this
->
getCellList
()
as
$coord
)
{
sscanf
(
$coord
,
'%[A-Z]%d'
,
$c
,
$r
);
$row
[
$r
]
=
$r
;
$col
[
$c
]
=
strlen
(
$c
)
.
$c
;
}
if
(
!
empty
(
$row
))
{
// Determine highest column and row
$highestRow
=
max
(
$row
);
$highestColumn
=
substr
(
max
(
$col
),
1
);
}
return
array
(
'row'
=>
$highestRow
,
'column'
=>
$highestColumn
);
}
/**
* Return the cell address of the currently active cell object
*
* @return string
*/