From 4cff0f936e586c2ec4a1ec598091e9bc6e2eee2c Mon Sep 17 00:00:00 2001 From: Marco Villegas Date: Fri, 24 Oct 2014 11:59:29 -0500 Subject: [PATCH] Issue #2363121: Restrict action into issues after versioncontrol_project_issue_git event processors. - Allow release-like branches notifications. - Allow notifications for branches which contains the project issue nid in the branch name. --- .../drupalorg_versioncontrol.module | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drupalorg_versioncontrol/drupalorg_versioncontrol.module b/drupalorg_versioncontrol/drupalorg_versioncontrol.module index a65933f..1c58ee9 100644 --- a/drupalorg_versioncontrol/drupalorg_versioncontrol.module +++ b/drupalorg_versioncontrol/drupalorg_versioncontrol.module @@ -228,3 +228,35 @@ function drupalorg_versioncontrol_form_alter(&$form, &$form_state, $form_id) { unset($form['retry']); } } + +/** + * Implements hook_versioncontrol_project_issue_git_issue_notification_project_issue_nids_alter(). + */ +function drupalorg_versioncontrol_versioncontrol_project_issue_git_issue_notification_project_issue_nids_alter(&$valid_issue_nids, $context) { + $ref = $context['ref']; + $repository = $ref->getRepository(); + if (!versioncontrol_project_repository_has_project($repository)) { + // Nothing to do. + return; + } + $project_node = versioncontrol_project_project_load($repository->project_nid); + if ($project_node->type == 'project_core') { + // Core. + $valid_branch_name_regex = '/^(\d+)(\.(\d+))?\.x$/'; + } + else { + // Contrib. + $valid_branch_name_regex = '/^((\d+)(\.(\d+))?\.x)-(\d+)\.x$/'; + } + if (preg_match($valid_branch_name_regex, $ref->refname)) { + // Allow notifications on any issue if the branch looks like a release branch. + return; + } + // Only allow non-release branches notifications if the project issue nid is + // in the refname. + foreach ($valid_issue_nids as $key => $valid_issue_nid) { + if (!preg_match("/\b$valid_issue_nid\b/", $ref->refname)) { + unset($valid_issue_nids[$key]); + } + } +} -- 1.7.10.4