Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 29 |
PublicStream | |
0.00% |
0 / 1 |
|
0.00% |
0 / 7 |
110 | |
0.00% |
0 / 29 |
getType | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getName | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getDescription | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getDirectoryPath | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getExternalUrl | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
baseUrl | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
basePath | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 10 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\Core\StreamWrapper\PublicStream. | |
*/ | |
namespace Drupal\Core\StreamWrapper; | |
use Drupal\Component\Utility\UrlHelper; | |
use Drupal\Core\DrupalKernel; | |
use Drupal\Core\Site\Settings; | |
use Symfony\Component\HttpFoundation\Request; | |
/** | |
* Defines a Drupal public (public://) stream wrapper class. | |
* | |
* Provides support for storing publicly accessible files with the Drupal file | |
* interface. | |
*/ | |
class PublicStream extends LocalStream { | |
/** | |
* {@inheritdoc} | |
*/ | |
public static function getType() { | |
return StreamWrapperInterface::LOCAL_NORMAL; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getName() { | |
return t('Public files'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getDescription() { | |
return t('Public local files served by the webserver.'); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getDirectoryPath() { | |
return static::basePath(); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getExternalUrl() { | |
$path = str_replace('\\', '/', $this->getTarget()); | |
return static::baseUrl() . '/' . UrlHelper::encodePath($path); | |
} | |
/** | |
* Finds and returns the base URL for public://. | |
* | |
* Defaults to the current site's base URL plus directory path. | |
* | |
* Note that this static method is used by \Drupal\system\Form\FileSystemForm | |
* so you should alter that form or substitute a different form if you change | |
* the class providing the stream_wrapper.public service. | |
* | |
* @return string | |
* The external base URL for public:// | |
*/ | |
public static function baseUrl() { | |
$settings_base_url = Settings::get('file_public_base_url', ''); | |
if ($settings_base_url) { | |
return (string) $settings_base_url; | |
} | |
else { | |
return $GLOBALS['base_url'] . '/' . static::basePath(); | |
} | |
} | |
/** | |
* Returns the base path for public://. | |
* | |
* If we have a setting for the public:// scheme's path, we use that. | |
* Otherwise we build a reasonable default based on the site.path service if | |
* it's available, or a default behavior based on the request. | |
* | |
* Note that this static method is used by \Drupal\system\Form\FileSystemForm | |
* so you should alter that form or substitute a different form if you change | |
* the class providing the stream_wrapper.public service. | |
* | |
* The site path is injectable from the site.path service: | |
* @code | |
* $base_path = PublicStream::basePath(\Drupal::service('site.path')); | |
* @endcode | |
* | |
* @param \SplString $site_path | |
* (optional) The site.path service parameter, which is typically the path | |
* to sites/ in a Drupal installation. This allows you to inject the site | |
* path using services from the caller. If omitted, this method will use the | |
* global service container or the kernel's default behavior to determine | |
* the site path. | |
* | |
* @return string | |
* The base path for public:// typically sites/default/files. | |
*/ | |
public static function basePath(\SplString $site_path = NULL) { | |
if ($site_path === NULL) { | |
// Find the site path. Kernel service is not always available at this | |
// point, but is preferred, when available. | |
if (\Drupal::hasService('kernel')) { | |
$site_path = \Drupal::service('site.path'); | |
} | |
else { | |
// If there is no kernel available yet, we call the static | |
// findSitePath(). | |
$site_path = DrupalKernel::findSitePath(Request::createFromGlobals()); | |
} | |
} | |
return Settings::get('file_public_path', $site_path . '/files'); | |
} | |
} |