You are here

public function UpdateManager::getProjects in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/update/src/UpdateManager.php \Drupal\update\UpdateManager::getProjects()
  2. 9 core/modules/update/src/UpdateManager.php \Drupal\update\UpdateManager::getProjects()

File

core/modules/update/src/UpdateManager.php, line 137

Class

UpdateManager
Default implementation of UpdateManagerInterface.

Namespace

Drupal\update

Code

public function getProjects() {
  if (empty($this->projects)) {

    // Retrieve the projects from storage, if present.
    $this->projects = $this
      ->projectStorage('update_project_projects');
    if (empty($this->projects)) {

      // Still empty, so we have to rebuild.
      $module_data = $this->moduleExtensionList
        ->reset()
        ->getList();
      $theme_data = $this->themeHandler
        ->rebuildThemeData();
      $project_info = new ProjectInfo();
      $project_info
        ->processInfoList($this->projects, $module_data, 'module', TRUE);
      $project_info
        ->processInfoList($this->projects, $theme_data, 'theme', TRUE);
      if ($this->updateSettings
        ->get('check.disabled_extensions')) {
        $project_info
          ->processInfoList($this->projects, $module_data, 'module', FALSE);
        $project_info
          ->processInfoList($this->projects, $theme_data, 'theme', FALSE);
      }

      // Allow other modules to alter projects before fetching and comparing.
      $this->moduleHandler
        ->alter('update_projects', $this->projects);

      // Store the site's project data for at most 1 hour.
      $this->keyValueStore
        ->setWithExpire('update_project_projects', $this->projects, 3600);
    }
  }
  return $this->projects;
}