drupal_get_schema_versions($module)
Returns an array of available schema versions for a module.
string $module: A module name.
array|bool If the module has updates, an array of available updates sorted by version. Otherwise, FALSE.
function drupal_get_schema_versions($module) { $updates = &drupal_static(__FUNCTION__, NULL); if (!isset($updates[$module])) { $updates = array(); foreach (\Drupal::moduleHandler()->getModuleList() as $loaded_module => $filename) { $updates[$loaded_module] = array(); } // Prepare regular expression to match all possible defined hook_update_N(). $regexp = '/^(?<module>.+)_update_(?<version>\d+)$/'; $functions = get_defined_functions(); // Narrow this down to functions ending with an integer, since all // hook_update_N() functions end this way, and there are other // possible functions which match '_update_'. We use preg_grep() here // instead of foreaching through all defined functions, since the loop // through all PHP functions can take significant page execution time // and this function is called on every administrative page via // system_requirements(). foreach (preg_grep('/_\d+$/', $functions['user']) as $function) { // If this function is a module update function, add it to the list of // module updates. if (preg_match($regexp, $function, $matches)) { $updates[$matches['module']][] = $matches['version']; } } // Ensure that updates are applied in numerical order. foreach ($updates as &$module_updates) { sort($module_updates, SORT_NUMERIC); } } return empty($updates[$module]) ? FALSE : $updates[$module]; }
© 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!schema.inc/function/drupal_get_schema_versions/8.1.x