function _patchinfo_process_module in PatchInfo 8.2
Same name and namespace in other branches
- 8 patchinfo.module \_patchinfo_process_module()
- 7 patchinfo.module \_patchinfo_process_module()
Process patch information for a module.
Parameters
string $module: Machine readable module name.
array $patch_info: Patch info from module info.yml file.
Throws
\Exception
1 call to _patchinfo_process_module()
- patchinfo_system_info_alter in ./
patchinfo.module - Implements hook_system_info_alter().
File
- ./
patchinfo.module, line 256 - Patch Info primary module file.
Code
function _patchinfo_process_module($source_module, $module, array $patch_info) {
if (!empty($source_module) && !empty($module)) {
foreach ($patch_info as $key => $info) {
// Calculate an index for each patch, which is not 0.
$index = $key + 1;
if (!is_array($info)) {
continue;
}
$source = isset($info['source']) ? $info['source'] : '';
$info = isset($info['info']) ? $info['info'] : '';
// Extract URL from patch information, if any.
$info = explode(' ', $info);
$url = '';
if (filter_var($info[0], FILTER_VALIDATE_URL) !== FALSE) {
$url = $info[0];
unset($info[0]);
}
$info = implode(' ', $info);
// We need to wrap this in a try/catch, sice the code might be called
// during the update process from 8.x-1.x when the source_module and
// source fields are still missing. The alternative would be to check the
// schema everytime, which would be much more expensive.
try {
// Write patch information to db.
\Drupal::database()
->merge('patchinfo')
->keys([
'source_module' => $source_module,
'module' => $module,
'id' => $index,
])
->fields([
'url' => $url,
'info' => $info,
'source' => $source,
])
->execute();
} catch (Exception $e) {
watchdog_exception('patchinfo', $e);
}
}
}
}