drupal_get_schema_versions($module)
Returns an array of available schema versions for a module.
Parameters
string $module: A module name.
Return value
array|bool If the module has updates, an array of available updates sorted by version. Otherwise, FALSE.
Related topics
- Schema API
- API to handle database schemas.
File
- core/includes/schema.inc, line 28
- Schema API handling functions.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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 ]; } |
Please login to continue.