/** * 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; }
/** * 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()); }
/** * @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); }
/** * 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); }
/** * 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); }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
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); }