Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 11 |
| UpdateRootFactory | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
12 | |
0.00% |
0 / 11 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| get | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\update\UpdateRootFactory. | |
| */ | |
| namespace Drupal\update; | |
| use Drupal\Core\DrupalKernelInterface; | |
| use Symfony\Component\HttpFoundation\RequestStack; | |
| /** | |
| * Gets the root path used by the Update Manager to install or update projects. | |
| */ | |
| class UpdateRootFactory { | |
| /** | |
| * The Drupal kernel. | |
| * | |
| * @var \Drupal\Core\DrupalKernelInterface | |
| */ | |
| protected $drupalKernel; | |
| /** | |
| * The request stack. | |
| * | |
| * @var \Symfony\Component\HttpFoundation\RequestStack | |
| */ | |
| protected $requestStack; | |
| /** | |
| * Constructs an UpdateRootFactory instance. | |
| * | |
| * @param \Drupal\Core\DrupalKernelInterface $drupal_kernel | |
| * The Drupal kernel. | |
| * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack | |
| * The request stack. | |
| */ | |
| public function __construct(DrupalKernelInterface $drupal_kernel, RequestStack $request_stack) { | |
| $this->drupalKernel = $drupal_kernel; | |
| $this->requestStack = $request_stack; | |
| } | |
| /** | |
| * Gets the root path under which projects are installed or updated. | |
| * | |
| * The Update Manager will ensure that project files can only be copied to | |
| * specific subdirectories of this root path. | |
| * | |
| * @return string | |
| */ | |
| public function get() { | |
| // Normally the Update Manager's root path is the same as the app root (the | |
| // directory in which the Drupal site is installed). | |
| $root_path = $this->drupalKernel->getAppRoot(); | |
| // When running in a test site, change the root path to be the testing site | |
| // directory. This ensures that it will always be writable by the webserver | |
| // (thereby allowing the actual extraction and installation of projects by | |
| // the Update Manager to be tested) and also ensures that new project files | |
| // added there won't be visible to the parent site and will be properly | |
| // cleaned up once the test finishes running. This is done here (rather | |
| // than having the tests enable a module which overrides the update root | |
| // factory service) to ensure that the parent site is automatically kept | |
| // clean without relying on test authors to take any explicit steps. See | |
| // also \Drupal\update\Tests\UpdateTestBase::setUp(). | |
| if (DRUPAL_TEST_IN_CHILD_SITE) { | |
| $kernel = $this->drupalKernel; | |
| $request = $this->requestStack->getCurrentRequest(); | |
| $root_path .= '/' . $kernel::findSitePath($request); | |
| } | |
| return $root_path; | |
| } | |
| } |