Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
File.php
Go to the documentation of this file.
1 <?php
27 #require_once 'Zend/Cache/Core.php';
28 
29 
37 {
38 
42  const MODE_AND = 'AND';
43  const MODE_OR = 'OR';
44 
66  protected $_specificOptions = array(
67  'master_file' => null,
68  'master_files' => null,
69  'master_files_mode' => 'OR',
70  'ignore_missing_master_files' => false
71  );
72 
80  private $_masterFile_mtimes = null;
81 
89  public function __construct(array $options = array())
90  {
91  foreach ($options as $name => $value) {
92  $this->setOption($name, $value);
93  }
94  if (!isset($this->_specificOptions['master_files'])) {
95  Zend_Cache::throwException('master_files option must be set');
96  }
97  }
98 
104  public function setMasterFiles(array $masterFiles)
105  {
106  $this->_specificOptions['master_file'] = null; // to keep a compatibility
107  $this->_specificOptions['master_files'] = null;
108  $this->_masterFile_mtimes = array();
109 
110  clearstatcache();
111  $i = 0;
112  foreach ($masterFiles as $masterFile) {
113  if (file_exists($masterFile)) {
114  $mtime = filemtime($masterFile);
115  } else {
116  $mtime = false;
117  }
118 
119  if (!$this->_specificOptions['ignore_missing_master_files'] && !$mtime) {
120  Zend_Cache::throwException('Unable to read master_file : ' . $masterFile);
121  }
122 
123  $this->_masterFile_mtimes[$i] = $mtime;
124  $this->_specificOptions['master_files'][$i] = $masterFile;
125  if ($i === 0) { // to keep a compatibility
126  $this->_specificOptions['master_file'] = $masterFile;
127  }
128 
129  $i++;
130  }
131  }
132 
141  public function setMasterFile($masterFile)
142  {
143  $this->setMasterFiles(array($masterFile));
144  }
145 
156  public function setOption($name, $value)
157  {
158  if ($name == 'master_file') {
159  $this->setMasterFile($value);
160  } else if ($name == 'master_files') {
161  $this->setMasterFiles($value);
162  } else {
163  parent::setOption($name, $value);
164  }
165  }
166 
175  public function load($id, $doNotTestCacheValidity = false, $doNotUnserialize = false)
176  {
177  if (!$doNotTestCacheValidity) {
178  if ($this->test($id)) {
179  return parent::load($id, true, $doNotUnserialize);
180  }
181  return false;
182  }
183  return parent::load($id, true, $doNotUnserialize);
184  }
185 
192  public function test($id)
193  {
194  $lastModified = parent::test($id);
195  if ($lastModified) {
196  if ($this->_specificOptions['master_files_mode'] == self::MODE_AND) {
197  // MODE_AND
198  foreach($this->_masterFile_mtimes as $masterFileMTime) {
199  if ($masterFileMTime) {
200  if ($lastModified > $masterFileMTime) {
201  return $lastModified;
202  }
203  }
204  }
205  } else {
206  // MODE_OR
207  $res = true;
208  foreach($this->_masterFile_mtimes as $masterFileMTime) {
209  if ($masterFileMTime) {
210  if ($lastModified <= $masterFileMTime) {
211  return false;
212  }
213  }
214  }
215  return $lastModified;
216  }
217  }
218  return false;
219  }
220 
221 }
222 
setMasterFile($masterFile)
Definition: File.php:141
$id
Definition: fieldset.phtml:14
setMasterFiles(array $masterFiles)
Definition: File.php:104
load($id, $doNotTestCacheValidity=false, $doNotUnserialize=false)
Definition: File.php:175
$value
Definition: gender.phtml:16
static throwException($msg, Exception $e=null)
Definition: Cache.php:205
__construct(array $options=array())
Definition: File.php:89
setOption($name, $value)
Definition: File.php:156
$i
Definition: gallery.phtml:31
if(!isset($_GET['name'])) $name
Definition: log.php:14