Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
get.php
Go to the documentation of this file.
1 <?php
13 
14 require dirname(__DIR__) . '/app/bootstrap.php';
15 
18 $configCacheFile = BP . '/var/resource_config.json';
19 
20 $isAllowed = function ($resource, array $allowedResources) {
21  foreach ($allowedResources as $allowedResource) {
22  if (0 === stripos($resource, $allowedResource)) {
23  return true;
24  }
25  }
26  return false;
27 };
28 
29 $request = new \Magento\MediaStorage\Model\File\Storage\Request(
30  new Request(
31  new PhpCookieReader(),
32  new Magento\Framework\Stdlib\StringUtils()
33  )
34 );
35 $relativePath = $request->getPathInfo();
36 if (file_exists($configCacheFile) && is_readable($configCacheFile)) {
37  $config = json_decode(file_get_contents($configCacheFile), true);
38 
39  //checking update time
40  if (filemtime($configCacheFile) + $config['update_time'] > time()) {
41  $mediaDirectory = $config['media_directory'];
42  $allowedResources = $config['allowed_resources'];
43 
44  // Serve file if it's materialized
45  if ($mediaDirectory) {
47  require_once 'errors/404.php';
48  exit;
49  }
50  $mediaAbsPath = $mediaDirectory . '/' . $relativePath;
51  if (is_readable($mediaAbsPath)) {
52  if (is_dir($mediaAbsPath)) {
53  require_once 'errors/404.php';
54  exit;
55  }
56  $transfer = new \Magento\Framework\File\Transfer\Adapter\Http(
57  new \Magento\Framework\HTTP\PhpEnvironment\Response(),
58  new \Magento\Framework\File\Mime()
59  );
60  $transfer->send($mediaAbsPath);
61  exit;
62  }
63  }
64  }
65 }
66 
67 // Materialize file in application
68 $params = $_SERVER;
69 if (empty($mediaDirectory)) {
70  $params[ObjectManagerFactory::INIT_PARAM_DEPLOYMENT_CONFIG] = [];
71  $params[Factory::PARAM_CACHE_FORCED_OPTIONS] = ['frontend_options' => ['disable_save' => true]];
72 }
75 $app = $bootstrap->createApplication(
76  \Magento\MediaStorage\App\Media::class,
77  [
78  'mediaDirectory' => $mediaDirectory,
79  'configCacheFile' => $configCacheFile,
80  'isAllowed' => $isAllowed,
81  'relativeFileName' => $relativePath,
82  ]
83 );
84 $bootstrap->run($app);
static create($rootDir, array $initParams, ObjectManagerFactory $factory=null)
Definition: Bootstrap.php:119
$config
Definition: fraud_order.php:17
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$mediaDirectory
Definition: get.php:16
$resource
Definition: bulk.php:12
exit
Definition: redirect.phtml:12
$app
Definition: get.php:75
if(file_exists($configCacheFile) &&is_readable($configCacheFile)) $params
Definition: get.php:68
$isAllowed
Definition: get.php:20
$allowedResources
Definition: get.php:17
const BP
Definition: autoload.php:14
if(empty($mediaDirectory)) $bootstrap
Definition: get.php:73
$configCacheFile
Definition: get.php:18
$relativePath
Definition: get.php:35
$request
Definition: get.php:29