/** * {@inheritdoc} */ 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 = system_rebuild_module_data(); $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; }
/** * Tests updates with a hidden base theme. */ function testUpdateHiddenBaseTheme() { module_load_include('compare.inc', 'update'); // Install the subtheme. \Drupal::service('theme_handler')->install(array('update_test_subtheme')); // Add a project and initial state for base theme and subtheme. $system_info = array('update_test_basetheme' => array('project' => 'update_test_basetheme', 'hidden' => TRUE), 'update_test_subtheme' => array('project' => 'update_test_subtheme', 'hidden' => FALSE)); $this->config('update_test.settings')->set('system_info', $system_info)->save(); $projects = \Drupal::service('update.manager')->getProjects(); $theme_data = \Drupal::service('theme_handler')->rebuildThemeData(); $project_info = new ProjectInfo(); $project_info->processInfoList($projects, $theme_data, 'theme', TRUE); $this->assertTrue(!empty($projects['update_test_basetheme']), 'Valid base theme (update_test_basetheme) was found.'); }
/** * Tests updates with a hidden base theme. */ function testUpdateHiddenBaseTheme() { module_load_include('compare.inc', 'update'); // Enable the subtheme. theme_enable(array('update_test_subtheme')); // Add a project and initial state for base theme and subtheme. $system_info = array('update_test_basetheme' => array('project' => 'update_test_basetheme', 'hidden' => TRUE), 'update_test_subtheme' => array('project' => 'update_test_subtheme', 'hidden' => FALSE)); \Drupal::config('update_test.settings')->set('system_info', $system_info)->save(); $projects = update_get_projects(); $theme_data = system_rebuild_theme_data(); $project_info = new ProjectInfo(); $project_info->processInfoList($projects, $theme_data, 'theme', TRUE); $this->assertTrue(!empty($projects['update_test_basetheme']), 'Valid base theme (update_test_basetheme) was found.'); }