abstract class PHPExcel_CachedObjectStorage_CacheBase in Loft Data Grids 7.2
Same name and namespace in other branches
- 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/CachedObjectStorage/CacheBase.php \PHPExcel_CachedObjectStorage_CacheBase
PHPExcel_CachedObjectStorage_CacheBase
@category PHPExcel @package PHPExcel_CachedObjectStorage @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
Hierarchy
Expanded class hierarchy of PHPExcel_CachedObjectStorage_CacheBase
File
- vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ CachedObjectStorage/ CacheBase.php, line 36
View source
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;
}
// function __construct()
/**
* 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]);
}
// function isDataSet()
/**
* 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;
}
// function moveCell()
/**
* 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);
}
// function updateCacheData()
/**
* 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;
}
// function deleteCacheData()
/**
* Get a list of all cell addresses currently held in cache
*
* @return string[]
*/
public function getCellList() {
return array_keys($this->_cellCache);
}
// function getCellList()
/**
* 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);
}
// function sortCellList()
/**
* 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
*/
public function getCurrentAddress() {
return $this->_currentObjectID;
}
/**
* Return the column address of the currently active cell object
*
* @return string
*/
public function getCurrentColumn() {
sscanf($this->_currentObjectID, '%[A-Z]%d', $column, $row);
return $column;
}
/**
* Return the row address of the currently active cell object
*
* @return integer
*/
public function getCurrentRow() {
sscanf($this->_currentObjectID, '%[A-Z]%d', $column, $row);
return (int) $row;
}
/**
* Get highest worksheet column
*
* @param string $row Return the highest column for the specified row,
* or the highest column of any row if no row number is passed
* @return string Highest column name
*/
public function getHighestColumn($row = null) {
if ($row == null) {
$colRow = $this
->getHighestRowAndColumn();
return $colRow['column'];
}
$columnList = array(
1,
);
foreach ($this
->getCellList() as $coord) {
sscanf($coord, '%[A-Z]%d', $c, $r);
if ($r != $row) {
continue;
}
$columnList[] = PHPExcel_Cell::columnIndexFromString($c);
}
return PHPExcel_Cell::stringFromColumnIndex(max($columnList) - 1);
}
/**
* Get highest worksheet row
*
* @param string $column Return the highest row for the specified column,
* or the highest row of any column if no column letter is passed
* @return int Highest row number
*/
public function getHighestRow($column = null) {
if ($column == null) {
$colRow = $this
->getHighestRowAndColumn();
return $colRow['row'];
}
$rowList = array(
0,
);
foreach ($this
->getCellList() as $coord) {
sscanf($coord, '%[A-Z]%d', $c, $r);
if ($c != $column) {
continue;
}
$rowList[] = $r;
}
return max($rowList);
}
/**
* Generate a unique ID for cache referencing
*
* @return string Unique Reference
*/
protected function _getUniqueID() {
if (function_exists('posix_getpid')) {
$baseUnique = posix_getpid();
}
else {
$baseUnique = mt_rand();
}
return uniqid($baseUnique, true);
}
/**
* Clone the cell collection
*
* @param PHPExcel_Worksheet $parent The new worksheet
* @return void
*/
public function copyCellCollection(PHPExcel_Worksheet $parent) {
$this->_currentCellIsDirty;
$this
->_storeData();
$this->_parent = $parent;
if ($this->_currentObject !== NULL && is_object($this->_currentObject)) {
$this->_currentObject
->attach($this);
}
}
// function copyCellCollection()
/**
* Remove a row, deleting all cells in that row
*
* @param string $row Row number to remove
* @return void
*/
public function removeRow($row) {
foreach ($this
->getCellList() as $coord) {
sscanf($coord, '%[A-Z]%d', $c, $r);
if ($r == $row) {
$this
->deleteCacheData($coord);
}
}
}
/**
* Remove a column, deleting all cells in that column
*
* @param string $column Column ID to remove
* @return void
*/
public function removeColumn($column) {
foreach ($this
->getCellList() as $coord) {
sscanf($coord, '%[A-Z]%d', $c, $r);
if ($c == $column) {
$this
->deleteCacheData($coord);
}
}
}
/**
* 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() {
return true;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
PHPExcel_CachedObjectStorage_CacheBase:: |
protected | property | * An array of cells or cell pointers for the worksheet cells held in this cache, * and indexed by their coordinate address within the worksheet * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
protected | property | * Flag indicating whether the currently active Cell requires saving * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
protected | property | * The currently active Cell * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
protected | property | * Coordinate address of the currently active Cell * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
protected | property | * Parent worksheet * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public static | function | * Identify whether the caching method is currently available * Some methods are dependent on the availability of certain extensions being enabled in the PHP build * * | 6 |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Clone the cell collection * * | 8 |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | Delete a cell in cache identified by coordinate address | 5 |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Get a list of all cell addresses currently held in cache * * | 10 |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Return the cell address of the currently active cell object * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Return the column address of the currently active cell object * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Return the row address of the currently active cell object * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Get highest worksheet column * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Get highest worksheet row * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Get highest worksheet column and highest row that have cell records * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Return the parent worksheet for this cell collection * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Sort the list of all cell addresses currently held in cache by row and column * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Is a value set in the current PHPExcel_CachedObjectStorage_ICache for an indexed cell? * * | 5 |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Move a cell object from one address to another * * | 2 |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | Remove a column, deleting all cells in that column | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | Remove a row, deleting all cells in that row | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | Add or Update a cell in cache | |
PHPExcel_CachedObjectStorage_CacheBase:: |
protected | function | * Generate a unique ID for cache referencing * * | |
PHPExcel_CachedObjectStorage_CacheBase:: |
public | function | * Initialise this new cell collection * * | 7 |