PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 2.2.0
Visualizer – Tables & Charts Manager with Built-in AI Generator v2.2.0
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
← All changes | vendor/phpoffice/phpexcel/Classes/PHPExcel/CachedObjectStorage/DiscISAM.php +219 -208 3.1.02.2.0 View file →
@@ -1,208 +1,219 @@
1 -<?php
2 -
3 -/**
4 - * PHPExcel_CachedObjectStorage_DiscISAM
5 - *
6 - * Copyright (c) 2006 - 2015 PHPExcel
7 - *
8 - * This library is free software; you can redistribute it and/or
9 - * modify it under the terms of the GNU Lesser General Public
10 - * License as published by the Free Software Foundation; either
11 - * version 2.1 of the License, or (at your option) any later version.
12 - *
13 - * This library is distributed in the hope that it will be useful,
14 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 - * Lesser General Public License for more details.
17 - *
18 - * You should have received a copy of the GNU Lesser General Public
19 - * License along with this library; if not, write to the Free Software
20 - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 - *
22 - * @category PHPExcel
23 - * @package PHPExcel_CachedObjectStorage
24 - * @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
25 - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
26 - * @version ##VERSION##, ##DATE##
27 - */
28 -class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache
29 -{
30 - /**
31 - * Name of the file for this cache
32 - *
33 - * @var string
34 - */
35 - private $fileName = null;
36 -
37 - /**
38 - * File handle for this cache file
39 - *
40 - * @var resource
41 - */
42 - private $fileHandle = null;
43 -
44 - /**
45 - * Directory/Folder where the cache file is located
46 - *
47 - * @var string
48 - */
49 - private $cacheDirectory = null;
50 -
51 - /**
52 - * Store cell data in cache for the current cell object if it's "dirty",
53 - * and the 'nullify' the current cell object
54 - *
55 - * @return void
56 - * @throws PHPExcel_Exception
57 - */
58 - protected function storeData()
59 - {
60 - if ($this->currentCellIsDirty && !empty($this->currentObjectID)) {
61 - $this->currentObject->detach();
62 -
63 - fseek($this->fileHandle, 0, SEEK_END);
64 -
65 - $this->cellCache[$this->currentObjectID] = array(
66 - 'ptr' => ftell($this->fileHandle),
67 - 'sz' => fwrite($this->fileHandle, serialize($this->currentObject))
68 - );
69 - $this->currentCellIsDirty = false;
70 - }
71 - $this->currentObjectID = $this->currentObject = null;
72 - }
73 -
74 - /**
75 - * Add or Update a cell in cache identified by coordinate address
76 - *
77 - * @param string $pCoord Coordinate address of the cell to update
78 - * @param PHPExcel_Cell $cell Cell to update
79 - * @return PHPExcel_Cell
80 - * @throws PHPExcel_Exception
81 - */
82 - public function addCacheData($pCoord, PHPExcel_Cell $cell)
83 - {
84 - if (($pCoord !== $this->currentObjectID) && ($this->currentObjectID !== null)) {
85 - $this->storeData();
86 - }
87 -
88 - $this->currentObjectID = $pCoord;
89 - $this->currentObject = $cell;
90 - $this->currentCellIsDirty = true;
91 -
92 - return $cell;
93 - }
94 -
95 - /**
96 - * Get cell at a specific coordinate
97 - *
98 - * @param string $pCoord Coordinate of the cell
99 - * @throws PHPExcel_Exception
100 - * @return PHPExcel_Cell Cell that was found, or null if not found
101 - */
102 - public function getCacheData($pCoord)
103 - {
104 - if ($pCoord === $this->currentObjectID) {
105 - return $this->currentObject;
106 - }
107 - $this->storeData();
108 -
109 - // Check if the entry that has been requested actually exists
110 - if (!isset($this->cellCache[$pCoord])) {
111 - // Return null if requested entry doesn't exist in cache
112 - return null;
113 - }
114 -
115 - // Set current entry to the requested entry
116 - $this->currentObjectID = $pCoord;
117 - fseek($this->fileHandle, $this->cellCache[$pCoord]['ptr']);
118 - $this->currentObject = unserialize(fread($this->fileHandle, $this->cellCache[$pCoord]['sz']));
119 - // Re-attach this as the cell's parent
120 - $this->currentObject->attach($this);
121 -
122 - // Return requested entry
123 - return $this->currentObject;
124 - }
125 -
126 - /**
127 - * Get a list of all cell addresses currently held in cache
128 - *
129 - * @return string[]
130 - */
131 - public function getCellList()
132 - {
133 - if ($this->currentObjectID !== null) {
134 - $this->storeData();
135 - }
136 -
137 - return parent::getCellList();
138 - }
139 -
140 - /**
141 - * Clone the cell collection
142 - *
143 - * @param PHPExcel_Worksheet $parent The new worksheet
144 - */
145 - public function copyCellCollection(PHPExcel_Worksheet $parent)
146 - {
147 - parent::copyCellCollection($parent);
148 - // Get a new id for the new file name
149 - $baseUnique = $this->getUniqueID();
150 - $newFileName = $this->cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache';
151 - // Copy the existing cell cache file
152 - copy($this->fileName, $newFileName);
153 - $this->fileName = $newFileName;
154 - // Open the copied cell cache file
155 - $this->fileHandle = fopen($this->fileName, 'a+');
156 - }
157 -
158 - /**
159 - * Clear the cell collection and disconnect from our parent
160 - *
161 - */
162 - public function unsetWorksheetCells()
163 - {
164 - if (!is_null($this->currentObject)) {
165 - $this->currentObject->detach();
166 - $this->currentObject = $this->currentObjectID = null;
167 - }
168 - $this->cellCache = array();
169 -
170 - // detach ourself from the worksheet, so that it can then delete this object successfully
171 - $this->parent = null;
172 -
173 - // Close down the temporary cache file
174 - $this->__destruct();
175 - }
176 -
177 - /**
178 - * Initialise this new cell collection
179 - *
180 - * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
181 - * @param array of mixed $arguments Additional initialisation arguments
182 - */
183 - public function __construct(PHPExcel_Worksheet $parent, $arguments)
184 - {
185 - $this->cacheDirectory = ((isset($arguments['dir'])) && ($arguments['dir'] !== null))
186 - ? $arguments['dir']
187 - : PHPExcel_Shared_File::sys_get_temp_dir();
188 -
189 - parent::__construct($parent);
190 - if (is_null($this->fileHandle)) {
191 - $baseUnique = $this->getUniqueID();
192 - $this->fileName = $this->cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache';
193 - $this->fileHandle = fopen($this->fileName, 'a+');
194 - }
195 - }
196 -
197 - /**
198 - * Destroy this cell collection
199 - */
200 - public function __destruct()
201 - {
202 - if (!is_null($this->fileHandle)) {
203 - fclose($this->fileHandle);
204 - unlink($this->fileName);
205 - }
206 - $this->fileHandle = null;
207 - }
208 -}
1 +<?php
2 +/**
3 + * PHPExcel
4 + *
5 + * Copyright (c) 2006 - 2014 PHPExcel
6 + *
7 + * This library is free software; you can redistribute it and/or
8 + * modify it under the terms of the GNU Lesser General Public
9 + * License as published by the Free Software Foundation; either
10 + * version 2.1 of the License, or (at your option) any later version.
11 + *
12 + * This library is distributed in the hope that it will be useful,
13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 + * Lesser General Public License for more details.
16 + *
17 + * You should have received a copy of the GNU Lesser General Public
18 + * License along with this library; if not, write to the Free Software
19 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 + *
21 + * @category PHPExcel
22 + * @package PHPExcel_CachedObjectStorage
23 + * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25 + * @version ##VERSION##, ##DATE##
26 + */
27 +
28 +
29 +/**
30 + * PHPExcel_CachedObjectStorage_DiscISAM
31 + *
32 + * @category PHPExcel
33 + * @package PHPExcel_CachedObjectStorage
34 + * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 + */
36 +class PHPExcel_CachedObjectStorage_DiscISAM extends PHPExcel_CachedObjectStorage_CacheBase implements PHPExcel_CachedObjectStorage_ICache {
37 +
38 + /**
39 + * Name of the file for this cache
40 + *
41 + * @var string
42 + */
43 + private $_fileName = NULL;
44 +
45 + /**
46 + * File handle for this cache file
47 + *
48 + * @var resource
49 + */
50 + private $_fileHandle = NULL;
51 +
52 + /**
53 + * Directory/Folder where the cache file is located
54 + *
55 + * @var string
56 + */
57 + private $_cacheDirectory = NULL;
58 +
59 +
60 + /**
61 + * Store cell data in cache for the current cell object if it's "dirty",
62 + * and the 'nullify' the current cell object
63 + *
64 + * @return void
65 + * @throws PHPExcel_Exception
66 + */
67 + protected function _storeData() {
68 + if ($this->_currentCellIsDirty && !empty($this->_currentObjectID)) {
69 + $this->_currentObject->detach();
70 +
71 + fseek($this->_fileHandle,0,SEEK_END);
72 +
73 + $this->_cellCache[$this->_currentObjectID] = array(
74 + 'ptr' => ftell($this->_fileHandle),
75 + 'sz' => fwrite($this->_fileHandle, serialize($this->_currentObject))
76 + );
77 + $this->_currentCellIsDirty = false;
78 + }
79 + $this->_currentObjectID = $this->_currentObject = null;
80 + } // function _storeData()
81 +
82 +
83 + /**
84 + * Add or Update a cell in cache identified by coordinate address
85 + *
86 + * @param string $pCoord Coordinate address of the cell to update
87 + * @param PHPExcel_Cell $cell Cell to update
88 + * @return PHPExcel_Cell
89 + * @throws PHPExcel_Exception
90 + */
91 + public function addCacheData($pCoord, PHPExcel_Cell $cell) {
92 + if (($pCoord !== $this->_currentObjectID) && ($this->_currentObjectID !== null)) {
93 + $this->_storeData();
94 + }
95 +
96 + $this->_currentObjectID = $pCoord;
97 + $this->_currentObject = $cell;
98 + $this->_currentCellIsDirty = true;
99 +
100 + return $cell;
101 + } // function addCacheData()
102 +
103 +
104 + /**
105 + * Get cell at a specific coordinate
106 + *
107 + * @param string $pCoord Coordinate of the cell
108 + * @throws PHPExcel_Exception
109 + * @return PHPExcel_Cell Cell that was found, or null if not found
110 + */
111 + public function getCacheData($pCoord) {
112 + if ($pCoord === $this->_currentObjectID) {
113 + return $this->_currentObject;
114 + }
115 + $this->_storeData();
116 +
117 + // Check if the entry that has been requested actually exists
118 + if (!isset($this->_cellCache[$pCoord])) {
119 + // Return null if requested entry doesn't exist in cache
120 + return null;
121 + }
122 +
123 + // Set current entry to the requested entry
124 + $this->_currentObjectID = $pCoord;
125 + fseek($this->_fileHandle, $this->_cellCache[$pCoord]['ptr']);
126 + $this->_currentObject = unserialize(fread($this->_fileHandle, $this->_cellCache[$pCoord]['sz']));
127 + // Re-attach this as the cell's parent
128 + $this->_currentObject->attach($this);
129 +
130 + // Return requested entry
131 + return $this->_currentObject;
132 + } // function getCacheData()
133 +
134 +
135 + /**
136 + * Get a list of all cell addresses currently held in cache
137 + *
138 + * @return string[]
139 + */
140 + public function getCellList() {
141 + if ($this->_currentObjectID !== null) {
142 + $this->_storeData();
143 + }
144 +
145 + return parent::getCellList();
146 + }
147 +
148 +
149 + /**
150 + * Clone the cell collection
151 + *
152 + * @param PHPExcel_Worksheet $parent The new worksheet
153 + * @return void
154 + */
155 + public function copyCellCollection(PHPExcel_Worksheet $parent) {
156 + parent::copyCellCollection($parent);
157 + // Get a new id for the new file name
158 + $baseUnique = $this->_getUniqueID();
159 + $newFileName = $this->_cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache';
160 + // Copy the existing cell cache file
161 + copy ($this->_fileName,$newFileName);
162 + $this->_fileName = $newFileName;
163 + // Open the copied cell cache file
164 + $this->_fileHandle = fopen($this->_fileName,'a+');
165 + } // function copyCellCollection()
166 +
167 +
168 + /**
169 + * Clear the cell collection and disconnect from our parent
170 + *
171 + * @return void
172 + */
173 + public function unsetWorksheetCells() {
174 + if(!is_null($this->_currentObject)) {
175 + $this->_currentObject->detach();
176 + $this->_currentObject = $this->_currentObjectID = null;
177 + }
178 + $this->_cellCache = array();
179 +
180 + // detach ourself from the worksheet, so that it can then delete this object successfully
181 + $this->_parent = null;
182 +
183 + // Close down the temporary cache file
184 + $this->__destruct();
185 + } // function unsetWorksheetCells()
186 +
187 +
188 + /**
189 + * Initialise this new cell collection
190 + *
191 + * @param PHPExcel_Worksheet $parent The worksheet for this cell collection
192 + * @param array of mixed $arguments Additional initialisation arguments
193 + */
194 + public function __construct(PHPExcel_Worksheet $parent, $arguments) {
195 + $this->_cacheDirectory = ((isset($arguments['dir'])) && ($arguments['dir'] !== NULL))
196 + ? $arguments['dir']
197 + : PHPExcel_Shared_File::sys_get_temp_dir();
198 +
199 + parent::__construct($parent);
200 + if (is_null($this->_fileHandle)) {
201 + $baseUnique = $this->_getUniqueID();
202 + $this->_fileName = $this->_cacheDirectory.'/PHPExcel.'.$baseUnique.'.cache';
203 + $this->_fileHandle = fopen($this->_fileName,'a+');
204 + }
205 + } // function __construct()
206 +
207 +
208 + /**
209 + * Destroy this cell collection
210 + */
211 + public function __destruct() {
212 + if (!is_null($this->_fileHandle)) {
213 + fclose($this->_fileHandle);
214 + unlink($this->_fileName);
215 + }
216 + $this->_fileHandle = null;
217 + } // function __destruct()
218 +
219 +}