update_get_update_list()
Returns a list of all the pending database updates.
An associative array keyed by module name which contains all information about database updates that need to be run, and any updates that are not going to proceed due to missing requirements. The system module will always be listed first.
The subarray for each module can contain the following keys:
function update_get_update_list() { // Make sure that the system module is first in the list of updates. $ret = array('system' => array()); $modules = drupal_get_installed_schema_version(NULL, FALSE, TRUE); foreach ($modules as $module => $schema_version) { // Skip uninstalled and incompatible modules. if ($schema_version == SCHEMA_UNINSTALLED || update_check_incompatibility($module)) { continue; } // Display a requirements error if the user somehow has a schema version // from the previous Drupal major version. if ($schema_version < \Drupal::CORE_MINIMUM_SCHEMA_VERSION) { $ret[$module]['warning'] = '<em>' . $module . '</em> module cannot be updated. Its schema version is ' . $schema_version . ', which is from an earlier major release of Drupal. You will need to <a href="https://www.drupal.org/node/2127611">migrate the data for this module</a> instead.'; continue; } // Otherwise, get the list of updates defined by this module. $updates = drupal_get_schema_versions($module); if ($updates !== FALSE) { // \Drupal::moduleHandler()->invoke() returns NULL for non-existing hooks, // so if no updates are removed, it will == 0. $last_removed = \Drupal::moduleHandler()->invoke($module, 'update_last_removed'); if ($schema_version < $last_removed) { $ret[$module]['warning'] = '<em>' . $module . '</em> module cannot be updated. Its schema version is ' . $schema_version . '. Updates up to and including ' . $last_removed . ' have been removed in this release. In order to update <em>' . $module . '</em> module, you will first <a href="https://www.drupal.org/upgrade">need to upgrade</a> to the last version in which these updates were available.'; continue; } $updates = array_combine($updates, $updates); foreach (array_keys($updates) as $update) { if ($update == \Drupal::CORE_MINIMUM_SCHEMA_VERSION) { $ret[$module]['warning'] = '<em>' . $module . '</em> module cannot be updated. It contains an update numbered as ' . \Drupal::CORE_MINIMUM_SCHEMA_VERSION . ' which is reserved for the earliest installation of a module in Drupal ' . \Drupal::CORE_COMPATIBILITY . ', before any updates. In order to update <em>' . $module . '</em> module, you will need to install a version of the module with valid updates.'; continue 2; } if ($update > $schema_version) { // The description for an update comes from its Doxygen. $func = new ReflectionFunction($module . '_update_' . $update); $description = str_replace(array("\n", '*', '/'), '', $func->getDocComment()); $ret[$module]['pending'][$update] = "$update - $description"; if (!isset($ret[$module]['start'])) { $ret[$module]['start'] = $update; } } } if (!isset($ret[$module]['start']) && isset($ret[$module]['pending'])) { $ret[$module]['start'] = $schema_version; } } } if (empty($ret['system'])) { unset($ret['system']); } return $ret; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!includes!update.inc/function/update_get_update_list/8.1.x