/** * Delete Expired Captcha Images * * @return Mage_Captcha_Model_Observer */ public function deleteExpiredImages() { foreach (Mage::app()->getWebsites(true) as $website) { $expire = time() - Mage::helper('Mage_Captcha_Helper_Data')->getConfigNode('timeout', $website->getDefaultStore()) * 60; $imageDirectory = Mage::helper('Mage_Captcha_Helper_Data')->getImgDir($website); foreach ($this->_filesystem->getNestedKeys($imageDirectory) as $filePath) { if ($this->_filesystem->isFile($filePath) && pathinfo($filePath, PATHINFO_EXTENSION) == 'png' && $this->_filesystem->getMTime($filePath) < $expire) { $this->_filesystem->delete($filePath); } } } return $this; }
protected function _generateRow($filename) { $filename = preg_replace('~[/\\\\]+~', DIRECTORY_SEPARATOR, $filename); return array('filename' => $filename, 'basename' => basename($filename), 'mtime' => $this->_filesystem->getMTime($filename)); }
/** * Merge files, located under the same folder, into one and return file name of merged file * * @param array $files list of names relative to the same folder * @param string $contentType * @return string * @throws Magento_Exception if not existing file requested for merge */ protected function _mergeFiles($files, $contentType) { $filesToMerge = array(); $mergedFile = array(); $jsDir = Mage::getBaseDir('js'); $publicDir = $this->_buildPublicViewFilename(''); foreach ($files as $file) { $params = array(); $this->_updateParamDefaults($params); $filesToMerge[$file] = $this->_publishViewFile($file, $params); $mergedFile[] = str_replace('\\', '/', str_replace(array($jsDir, $publicDir), '', $filesToMerge[$file])); } $mergedFile = self::PUBLIC_MERGE_DIR . DS . md5(implode('|', $mergedFile)) . ".{$contentType}"; $mergedFile = $this->_buildPublicViewFilename($mergedFile); $mergedMTimeFile = $mergedFile . '.dat'; $filesMTimeData = ''; foreach ($filesToMerge as $file) { $filesMTimeData .= $this->_filesystem->getMTime($file); } if ($this->_filesystem->has($mergedFile) && $this->_filesystem->has($mergedMTimeFile) && $filesMTimeData == $this->_filesystem->read($mergedMTimeFile)) { return $mergedFile; } if (!$this->_filesystem->isDirectory(dirname($mergedFile))) { $this->_filesystem->createDirectory(dirname($mergedFile), 0777); } $result = array(); foreach ($filesToMerge as $file) { if (!$this->_filesystem->has($file)) { throw new Magento_Exception("Unable to locate file '{$file}' for merging."); } $content = $this->_filesystem->read($file); if ($contentType == self::CONTENT_TYPE_CSS) { $offset = $this->_getFilesOffset($file, dirname($mergedFile)); $content = $this->_applyCssUrlOffset($content, $offset); } $result[] = $content; } $result = ltrim(implode($result)); if ($contentType == self::CONTENT_TYPE_CSS) { $result = $this->_popCssImportsUp($result); } $this->_filesystem->write($mergedFile, $result); $this->_filesystem->write($mergedMTimeFile, $filesMTimeData); return $mergedFile; }