Skip to content
Snippets Groups Projects

Issue #3360762: Retrieve related MRs for the issue via the api-d7 endpoint

+ 33
0
@@ -9981,6 +9981,11 @@ function drupalorg_restws_response_alter(&$response, $function, $formatName, $re
_drupalorg_expand_comments($response['field_issue_credit']);
_drupalorg_expand_comments($response['comments']);
}
if (isset($parameters['related_mrs']) && $parameters['related_mrs'] === '1') {
// Include related merge requests links in the response.
_drupalorg_expand_related_mrs($response);
}
break;
}
}
@@ -10006,6 +10011,34 @@ function drupalorg_restws_response_alter(&$response, $function, $formatName, $re
}
}
/**
* Includes related merge requests links.
*/
function _drupalorg_expand_related_mrs(&$response) {
if (empty($response['type']) || $response['type'] !== 'project_issue') {
return;
}
$wrapper = entity_metadata_wrapper('node', (object) $response);
$mrs_iids = [];
foreach (DrupalorgIssueFork::loadIssueForks($wrapper) as $issue_fork) {
$branches = $issue_fork->getBranches();
foreach ($branches as $branch) {
$mrs_iids = array_merge($mrs_iids, array_keys($branch->merge_requests));
}
}
$mrs_iids = array_unique($mrs_iids);
if (!empty($mrs_iids) && ($repository = versioncontrol_project_repository_load($response['field_project']['id']))) {
$repository_url = $repository->getUrlHandler()->getRepositoryViewUrl();
$mr_urls = [];
foreach ($mrs_iids as $mr_iid) {
$mr_urls[] = $repository_url . '/-/merge_requests/' . $mr_iid;
}
$response['related_mrs'] = $mr_urls;
}
}
/**
* Includes related information in the comments.
*/
Loading