Пример #1
0
 /**
  * Return one-level child directories for specified path
  *
  * @param string $path Parent directory path
  * @return Varien_Data_Collection_Filesystem
  */
 public function getDirsCollection($path)
 {
     if (Mage::helper('Mage_Core_Helper_File_Storage_Database')->checkDbUsage()) {
         $subDirectories = Mage::getModel('Mage_Core_Model_File_Storage_Directory_Database')->getSubdirectories($path);
         foreach ($subDirectories as $directory) {
             $fullPath = rtrim($path, DS) . DS . $directory['name'];
             $this->_filesystem->ensureDirectoryExists($fullPath, 0777, $path);
         }
     }
     $conditions = array('reg_exp' => array(), 'plain' => array());
     foreach ($this->getConfig()->dirs->exclude->children() as $dir) {
         $conditions[$dir->getAttribute('regexp') ? 'reg_exp' : 'plain'][(string) $dir] = true;
     }
     // "include" section takes precedence and can revoke directory exclusion
     foreach ($this->getConfig()->dirs->include->children() as $dir) {
         unset($conditions['regexp'][(string) $dir], $conditions['plain'][(string) $dir]);
     }
     $regExp = $conditions['reg_exp'] ? '~' . implode('|', array_keys($conditions['reg_exp'])) . '~i' : null;
     $collection = $this->getCollection($path)->setCollectDirs(true)->setCollectFiles(false)->setCollectRecursively(false);
     $storageRootLength = strlen($this->getHelper()->getStorageRoot());
     foreach ($collection as $key => $value) {
         $rootChildParts = explode(DIRECTORY_SEPARATOR, substr($value->getFilename(), $storageRootLength));
         if (array_key_exists($rootChildParts[0], $conditions['plain']) || $regExp && preg_match($regExp, $value->getFilename())) {
             $collection->removeItemByKey($key);
         }
     }
     return $collection;
 }
Пример #2
0
 /**
  * Constructor
  *
  * @param Magento_Filesystem $filesystem
  */
 public function __construct(Magento_Filesystem $filesystem)
 {
     $this->_filesystem = $filesystem;
     $this->_filesystem->setIsAllowCreateDirectories(true);
     $this->_filesystem->ensureDirectoryExists($this->getStorageRoot());
     $this->_filesystem->setWorkingDirectory($this->getStorageRoot());
 }
Пример #3
0
 /**
  * @param Mage_Core_Model_Event_Manager $eventDispatcher
  * @param Mage_Core_Model_Cache $cacheManager
  * @param Magento_Filesystem $filesystem
  * @param Mage_Core_Model_Resource_Abstract $resource
  * @param Varien_Data_Collection_Db $resourceCollection
  * @param array $data
  */
 public function __construct(Mage_Core_Model_Event_Manager $eventDispatcher, Mage_Core_Model_Cache $cacheManager, Magento_Filesystem $filesystem, Mage_Core_Model_Resource_Abstract $resource = null, Varien_Data_Collection_Db $resourceCollection = null, array $data = array())
 {
     parent::__construct($eventDispatcher, $cacheManager, $resource, $resourceCollection, $data);
     $baseDir = Mage::getSingleton('Mage_Catalog_Model_Product_Media_Config')->getBaseMediaPath();
     $this->_filesystem = $filesystem;
     $this->_filesystem->setIsAllowCreateDirectories(true);
     $this->_filesystem->ensureDirectoryExists($baseDir);
     $this->_filesystem->setIsAllowCreateDirectories(false);
     $this->_filesystem->setWorkingDirectory($baseDir);
 }
Пример #4
0
 /**
  * Constructor to inject dependencies
  *
  * @param Magento_Filesystem $filesystem
  * @param array $data
  */
 public function __construct(Magento_Filesystem $filesystem, $data = array())
 {
     if (isset($data['resourceModel'])) {
         $this->_resourceModel = $data['resourceModel'];
     }
     $this->_filesystem = $filesystem;
     $this->_filesystem->setIsAllowCreateDirectories(true);
     $this->_filesystem->setWorkingDirectory(Mage::getBaseDir('media'));
     $this->_baseMediaPath = $this->_getConfig()->getBaseMediaPath();
     $this->_baseTmpMediaPath = $this->_getConfig()->getBaseTmpMediaPath();
     $this->_filesystem->ensureDirectoryExists($this->_baseMediaPath);
     $this->_filesystem->ensureDirectoryExists($this->_baseTmpMediaPath);
 }
Пример #5
0
 /**
  * Set collection specific parameters and make sure backups folder will exist
  *
  * @param Magento_Filesystem $filesystem
  */
 public function __construct(Magento_Filesystem $filesystem)
 {
     parent::__construct();
     $this->_baseDir = Mage::getBaseDir('var') . DS . 'backups';
     $this->_filesystem = $filesystem;
     $this->_filesystem->setIsAllowCreateDirectories(true);
     $this->_filesystem->ensureDirectoryExists($this->_baseDir);
     $this->_filesystem->setWorkingDirectory($this->_baseDir);
     $this->_hideBackupsForApache();
     // set collection specific params
     $extensions = Mage::helper('Mage_Backup_Helper_Data')->getExtensions();
     foreach ($extensions as $value) {
         $extensions[] = '(' . preg_quote($value, '/') . ')';
     }
     $extensions = implode('|', $extensions);
     $this->setOrder('time', self::SORT_ORDER_DESC)->addTargetDir($this->_baseDir)->setFilesFilter('/^[a-z0-9\\-\\_]+\\.' . $extensions . '$/')->setCollectRecursively(false);
 }
Пример #6
0
 /**
  * Get captcha image directory
  *
  * @param mixed $website
  * @return string
  */
 public function getImgDir($website = null)
 {
     $mediaDir = $this->_config->getOptions()->getDir('media');
     $captchaDir = Magento_Filesystem::getPathFromArray(array($mediaDir, 'captcha', $this->_app->getWebsite($website)->getCode()));
     $this->_filesystem->setWorkingDirectory($mediaDir);
     $this->_filesystem->setIsAllowCreateDirectories(true);
     $this->_filesystem->ensureDirectoryExists($captchaDir, 0755);
     return $captchaDir . Magento_Filesystem::DIRECTORY_SEPARATOR;
 }
Пример #7
0
 /**
  * Save directory to storage
  *
  * @param array $dir
  * @return bool
  */
 public function saveDir($dir)
 {
     if (!isset($dir['name']) || !strlen($dir['name']) || !isset($dir['path'])) {
         return false;
     }
     $path = strlen($dir['path']) ? $dir['path'] . DS . $dir['name'] : $dir['name'];
     $path = $this->getMediaBaseDirectory() . DS . $path;
     try {
         $this->_filesystem->ensureDirectoryExists($path);
     } catch (Exception $e) {
         $this->_logger->log($e->getMessage());
         Mage::throwException($this->_helper->__('Unable to create directory: %s', $path));
     }
     return true;
 }
Пример #8
0
 /**
  * Save package file to var/connect.
  *
  * @return boolean
  */
 public function savePackage()
 {
     if ($this->getData('file_name') != '') {
         $fileName = $this->getData('file_name');
         $this->unsetData('file_name');
     } else {
         $fileName = $this->getName();
     }
     if (!preg_match('/^[a-z0-9]+[a-z0-9\\-\\_\\.]*([\\/\\\\]{1}[a-z0-9]+[a-z0-9\\-\\_\\.]*)*$/i', $fileName)) {
         return false;
     }
     if (!$this->getPackageXml()) {
         $this->generatePackageXml();
     }
     if (!$this->getPackageXml()) {
         return false;
     }
     try {
         $path = Mage::helper('Mage_Connect_Helper_Data')->getLocalPackagesPath();
         $this->_filesystem->write($path . 'package.xml', $this->getPackageXml());
         $this->unsPackageXml();
         $this->unsTargets();
         $xml = Mage::helper('Mage_Core_Helper_Data')->assocToXml($this->getData());
         $xml = new Varien_Simplexml_Element($xml->asXML());
         // prepare dir to save
         $parts = explode(DS, $fileName);
         array_pop($parts);
         $newDir = implode(DS, $parts);
         if (!empty($newDir) && !$this->_filesystem->isDirectory($path . $newDir)) {
             $this->_filesystem->ensureDirectoryExists($path, $newDir, 0777);
         }
         $this->_filesystem->write($path . $fileName . '.xml', $xml->asNiceXml());
     } catch (Magento_Filesystem_Exception $e) {
         return false;
     }
     return true;
 }
Пример #9
0
 /**
  * Get themes root directory absolute path
  *
  * @return string
  */
 protected function _getPreviewImagePublishedRootDir()
 {
     /** @var $design Mage_Core_Model_Design_Package */
     $design = $this->_objectManager->get('Mage_Core_Model_Design_Package');
     $dirPath = $design->getPublicDir();
     $this->_filesystem->setIsAllowCreateDirectories(true);
     $this->_filesystem->ensureDirectoryExists($dirPath);
     $this->_filesystem->setWorkingDirectory($dirPath);
     return $dirPath;
 }
Пример #10
0
 public function testEnsureDirectoryExistsNoDir()
 {
     $dir = '/tmp/path1/path2';
     $adapterMock = $this->getMockBuilder('Magento_Filesystem_AdapterInterface')->getMock();
     $adapterMock->expects($this->at(0))->method('isDirectory')->with('/tmp')->will($this->returnValue(true));
     $adapterMock->expects($this->at(1))->method('isDirectory')->with($dir)->will($this->returnValue(false));
     $adapterMock->expects($this->at(2))->method('isDirectory')->with('/tmp/path1')->will($this->returnValue(false));
     $adapterMock->expects($this->at(3))->method('isDirectory')->with('/tmp')->will($this->returnValue(true));
     $adapterMock->expects($this->exactly(4))->method('isDirectory');
     $adapterMock->expects($this->at(4))->method('createDirectory')->with('/tmp/path1');
     $adapterMock->expects($this->at(5))->method('createDirectory')->with('/tmp/path1/path2');
     $adapterMock->expects($this->exactly(2))->method('createDirectory');
     $filesystem = new Magento_Filesystem($adapterMock);
     $filesystem->setWorkingDirectory('/tmp');
     $filesystem->setIsAllowCreateDirectories(true);
     $filesystem->ensureDirectoryExists($dir, 0644);
 }