Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 protected function _generateRow($filename)
 {
     $filename = preg_replace('~[/\\\\]+~', DIRECTORY_SEPARATOR, $filename);
     return array('filename' => $filename, 'basename' => basename($filename), 'mtime' => $this->_filesystem->getMTime($filename));
 }
Пример #3
0
 /**
  * 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;
 }