/** * Retrieve storage model * If storage not defined - retrieve current storage * * params = array( * connection => string, - define connection for model if needed * init => bool - force initialization process for storage model * settings => array - configuration for storage modules * ) * * @param int|null $storage * @param array $params * @return Mage_Core_Model_File_Storage_Abstract | false */ public function getStorageModel($storage = null, $params = array()) { if (is_null($storage)) { $storage = Mage::helper('core/file_storage')->getCurrentStorageCode(); } $model = false; if ($storage == self::STORAGE_MEDIA_FILE_SYSTEM || $storage == self::STORAGE_MEDIA_DATABASE) { return parent::getStorageModel($storage, $params); } $options = Mage::getConfig()->getNode(self::XML_CONFIG_PATH); if (!isset($params['settings'])) { $params['settings'] = []; } $options = Mage::helper('uaudio_storage')->getStorageOptions(); if (isset($options[$storage])) { $model = Mage::getSingleton($options[$storage]['model'], $params['settings']); } if (!$model) { return false; } if (isset($params['init']) && $params['init']) { $model->init(); } return $model; }
/** * test for Mage_Core_Model_File_Storage::getScriptConfig() * * @magentoConfigFixture current_store system/media_storage_configuration/configuration_update_time 1000 */ public function testGetScriptConfig() { $config = Mage_Core_Model_File_Storage::getScriptConfig(); $this->assertInternalType('array', $config); $this->assertArrayHasKey('media_directory', $config); $this->assertArrayHasKey('allowed_resources', $config); $this->assertArrayHasKey('update_time', $config); $this->assertEquals(Mage::getBaseDir('media'), $config['media_directory']); $this->assertInternalType('array', $config['allowed_resources']); $this->assertContains('css', $config['allowed_resources']); $this->assertContains('css_secure', $config['allowed_resources']); $this->assertContains('js', $config['allowed_resources']); $this->assertContains('theme', $config['allowed_resources']); $this->assertEquals(1000, $config['update_time']); }
public function getStorageModel($storage = null, $params = []) { $storageModel = parent::getStorageModel($storage, $params); if ($storageModel === false) { if (is_null($storage)) { $storage = Mage::helper('core/file_storage')->getCurrentStorageCode(); } switch ($storage) { case self::STORAGE_MEDIA_S3: /** @var Arkade_S3_Model_Core_File_Storage_S3 $storageModel */ $storageModel = Mage::getModel('arkade_s3/core_file_storage_s3'); break; default: return false; } if (isset($params['init']) && $params['init']) { $storageModel->init(); } } return $storageModel; }
} $relativeFilename = str_replace($mediaDirectory . '/', '', $pathInfo); checkResource($relativeFilename, $allowedResources); sendFile($filePath); } /* Store or website code */ $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : ''; /* Run store or run website */ $mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store'; if (empty($mediaDirectory)) { Mage::init($mageRunCode, $mageRunType); } else { Mage::init($mageRunCode, $mageRunType, array('cache' => array('disallow_save' => true)), array('Mage_Core')); } if (!$mediaDirectory) { $config = Mage_Core_Model_File_Storage::getScriptConfig(); $mediaDirectory = str_replace($publicDirectory, '', $config['media_directory']); $allowedResources = array_merge($allowedResources, $config['allowed_resources']); $relativeFilename = str_replace($mediaDirectory . '/', '', $pathInfo); $fp = fopen($configCacheFile, 'w'); if (flock($fp, LOCK_EX | LOCK_NB)) { ftruncate($fp, 0); fwrite($fp, json_encode($config)); } flock($fp, LOCK_UN); fclose($fp); checkResource($relativeFilename, $allowedResources); } if (0 !== stripos($pathInfo, $mediaDirectory . '/')) { sendNotFoundPage(); }