class UpdateReady

Same name in other branches
  1. 9 core/modules/update/src/Form/UpdateReady.php \Drupal\update\Form\UpdateReady
  2. 8.9.x core/modules/update/src/Form/UpdateReady.php \Drupal\update\Form\UpdateReady
  3. 10 core/modules/update/src/Form/UpdateReady.php \Drupal\update\Form\UpdateReady

Configure update settings for this site.

@internal

Hierarchy

Expanded class hierarchy of UpdateReady

1 string reference to 'UpdateReady'
update.routing.yml in core/modules/update/update.routing.yml
core/modules/update/update.routing.yml

File

core/modules/update/src/Form/UpdateReady.php, line 19

Namespace

Drupal\update\Form
View source
class UpdateReady extends FormBase {
    
    /**
     * The root location under which updated projects will be saved.
     *
     * @var string
     */
    protected $root;
    
    /**
     * The module handler.
     *
     * @var \Drupal\Core\Extension\ModuleHandlerInterface
     */
    protected $moduleHandler;
    
    /**
     * The state key value store.
     *
     * @var \Drupal\Core\State\StateInterface
     */
    protected $state;
    
    /**
     * The Site path.
     *
     * @var string
     */
    protected $sitePath;
    
    /**
     * Constructs a new UpdateReady object.
     *
     * @param string $root
     *   The root location under which updated projects will be saved.
     * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
     *   The object that manages installed modules in a Drupal installation.
     * @param \Drupal\Core\State\StateInterface $state
     *   The state key value store.
     * @param string $site_path
     *   The site path.
     */
    public function __construct($root, ModuleHandlerInterface $module_handler, StateInterface $state, $site_path) {
        $this->root = $root;
        $this->moduleHandler = $module_handler;
        $this->state = $state;
        $this->sitePath = $site_path;
    }
    
    /**
     * {@inheritdoc}
     */
    public function getFormId() {
        return 'update_manager_update_ready_form';
    }
    
    /**
     * {@inheritdoc}
     */
    public static function create(ContainerInterface $container) {
        return new static($container->get('update.root'), $container->get('module_handler'), $container->get('state'), $container->getParameter('site.path'));
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildForm(array $form, FormStateInterface $form_state) {
        $this->moduleHandler
            ->loadInclude('update', 'inc', 'update.manager');
        if (!_update_manager_check_backends($form, 'update')) {
            return $form;
        }
        $form['backup'] = [
            '#prefix' => '<strong>',
            '#markup' => $this->t('Back up your database and site before you continue. <a href=":backup_url">Learn how</a>.', [
                ':backup_url' => 'https://www.drupal.org/node/22281',
            ]),
            '#suffix' => '</strong>',
        ];
        $form['maintenance_mode'] = [
            '#title' => $this->t('Perform updates with site in maintenance mode (strongly recommended)'),
            '#type' => 'checkbox',
            '#default_value' => TRUE,
        ];
        $form['actions'] = [
            '#type' => 'actions',
        ];
        $form['actions']['submit'] = [
            '#type' => 'submit',
            '#value' => $this->t('Continue'),
        ];
        return $form;
    }
    
    /**
     * {@inheritdoc}
     */
    public function submitForm(array &$form, FormStateInterface $form_state) {
        $session = $this->getRequest()
            ->getSession();
        // Store maintenance_mode setting so we can restore it when done.
        $session->set('maintenance_mode', $this->state
            ->get('system.maintenance_mode'));
        if ($form_state->getValue('maintenance_mode') == TRUE) {
            $this->state
                ->set('system.maintenance_mode', TRUE);
        }
        $projects = $session->remove('update_manager_update_projects');
        if ($projects) {
            // Make sure the Updater registry is loaded.
            drupal_get_updaters();
            $updates = [];
            $directory = _update_manager_extract_directory();
            $project_real_location = NULL;
            foreach ($projects as $project => $url) {
                $project_location = $directory . '/' . $project;
                $updater = Updater::factory($project_location, $this->root);
                $project_real_location = \Drupal::service('file_system')->realpath($project_location);
                $updates[] = [
                    'project' => $project,
                    'updater_name' => get_class($updater),
                    'local_url' => $project_real_location,
                ];
            }
            // If the owner of the last directory we extracted is the same as the
            // owner of our configuration directory (e.g. sites/default) where we're
            // trying to install the code, there's no need to prompt for FTP/SSH
            // credentials. Instead, we instantiate a Drupal\Core\FileTransfer\Local
            // and invoke update_authorize_run_update() directly.
            if (fileowner($project_real_location) == fileowner($this->sitePath)) {
                $this->moduleHandler
                    ->loadInclude('update', 'inc', 'update.authorize');
                $filetransfer = new Local($this->root, \Drupal::service('file_system'));
                $response = update_authorize_run_update($filetransfer, $updates);
                if ($response instanceof Response) {
                    $form_state->setResponse($response);
                }
            }
            else {
                // The page title must be passed here to ensure it is initially used
                // when authorize.php loads for the first time with the FTP/SSH
                // credentials form.
                system_authorized_init('update_authorize_run_update', __DIR__ . '/../../update.authorize.inc', [
                    $updates,
                ], $this->t('Update manager'));
                $form_state->setRedirectUrl(system_authorized_get_url());
            }
        }
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
DependencySerializationTrait::$_entityStorages protected property
DependencySerializationTrait::$_serviceIds protected property
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
FormBase::$configFactory protected property The config factory. 2
FormBase::$requestStack protected property The request stack. 1
FormBase::$routeMatch protected property The route match.
FormBase::config protected function Retrieves a configuration object.
FormBase::configFactory protected function Gets the config factory for this form. 2
FormBase::container private function Returns the service container.
FormBase::currentUser protected function Gets the current user. 2
FormBase::getRequest protected function Gets the request object.
FormBase::getRouteMatch protected function Gets the route match.
FormBase::logger protected function Gets the logger for a specific channel.
FormBase::redirect protected function Returns a redirect response object for the specified route.
FormBase::resetConfigFactory public function Resets the configuration factory.
FormBase::setConfigFactory public function Sets the config factory for this form.
FormBase::setRequestStack public function Sets the request stack object to use.
FormBase::validateForm public function Form validation handler. Overrides FormInterface::validateForm 57
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 16
MessengerTrait::messenger public function Gets the messenger. 16
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 2
RedirectDestinationTrait::getDestinationArray protected function Prepares a &#039;destination&#039; URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 3
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UpdateReady::$moduleHandler protected property The module handler.
UpdateReady::$root protected property The root location under which updated projects will be saved.
UpdateReady::$sitePath protected property The Site path.
UpdateReady::$state protected property The state key value store.
UpdateReady::buildForm public function Form constructor. Overrides FormInterface::buildForm
UpdateReady::create public static function Instantiates a new instance of this class. Overrides FormBase::create
UpdateReady::getFormId public function Returns a unique string identifying the form. Overrides FormInterface::getFormId
UpdateReady::submitForm public function Form submission handler. Overrides FormInterface::submitForm
UpdateReady::__construct public function Constructs a new UpdateReady object.

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