class UpdateRoot

Same name and namespace in other branches
  1. 9 core/modules/update/src/UpdateRoot.php \Drupal\update\UpdateRoot
  2. 10 core/modules/update/src/UpdateRoot.php \Drupal\update\UpdateRoot

Gets the root path used by the legacy Update Manager.

Hierarchy

Expanded class hierarchy of UpdateRoot

Deprecated

in drupal:11.2.0 and is removed from drupal:12.0.0. There is no replacement. Use composer to manage the code for your site.

See also

https://www.drupal.org/node/3522119

1 string reference to 'UpdateRoot'
update.services.yml in core/modules/update/update.services.yml
core/modules/update/update.services.yml
1 service uses UpdateRoot
update.root in core/modules/update/update.services.yml
Drupal\update\UpdateRoot

File

core/modules/update/src/UpdateRoot.php, line 16

Namespace

Drupal\update
View source
class UpdateRoot {
  
  /**
   * The Drupal kernel.
   *
   * @var \Drupal\Core\DrupalKernelInterface
   */
  protected $drupalKernel;
  
  /**
   * The request stack.
   *
   * @var \Symfony\Component\HttpFoundation\RequestStack
   */
  protected $requestStack;
  
  /**
   * The update root.
   *
   * @var string
   */
  protected $updateRoot;
  
  /**
   * Constructs an UpdateRoot 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) {
    @trigger_error(__CLASS__ . ' is deprecated in drupal:11.2.0 and is removed from drupal:12.0.0. There is no replacement. Use composer to manage the code for your site. See https://www.drupal.org/node/3522119', E_USER_DEPRECATED);
    $this->drupalKernel = $drupal_kernel;
    $this->requestStack = $request_stack;
  }
  
  /**
   * Sets the root path under which projects are installed or updated.
   *
   * @param string $update_root
   *   The update root.
   */
  public function set(string $update_root) : void {
    $this->updateRoot = $update_root;
  }
  
  /**
   * 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
   *   The root path for project installation or update.
   */
  public function __toString() : string {
    // Return the $updateRoot when it is set.
    if (isset($this->updateRoot)) {
      return $this->updateRoot;
    }
    // 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 install 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\Functional\UpdateTestBase::setUp().
    if (DRUPAL_TEST_IN_CHILD_SITE) {
      $kernel = $this->drupalKernel;
      $request = $this->requestStack
        ->getCurrentRequest();
      $root_path .= '/' . $kernel::findSitePath($request);
    }
    return $root_path;
  }

}

Members

Title Sort descending Modifiers Object type Summary
UpdateRoot::$drupalKernel protected property The Drupal kernel.
UpdateRoot::$requestStack protected property The request stack.
UpdateRoot::$updateRoot protected property The update root.
UpdateRoot::set public function Sets the root path under which projects are installed or updated.
UpdateRoot::__construct public function Constructs an UpdateRoot instance.
UpdateRoot::__toString public function Gets the root path under which projects are installed or updated.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.