redmine

[decide-note] Fixed moving issue to other project

... ... @@ -52,28 +52,57 @@ if ($isGoodSignature === false) {
$redmine_admin = new Redmine\Client('https://redmine.ut.mephi.ru', REDMINE_LOGIN, REDMINE_PASSWORD);
$issue = $redmine_admin->api('issue')->show($_GET['issueId'])['issue'];
$assignedTo = $redmine_admin->api('user' )->show($issue['assigned_to']['id']);
$assignedTo = $redmine_admin->api('user' )->show($issue['assigned_to']['id'])['user'];
$api_key = $assignedTo['user']['api_key'];
$api_key = $assignedTo['api_key'];
$redmine = new Redmine\Client('https://redmine.ut.mephi.ru', $api_key);
function addUserToProject(&$redmine, $user_id, $project_id) {
function addUserToProject(&$redmine, $user_id, $project_id, $role_id) {
error_log("addUserToProject(redmine, $user_id, $project_id, $role_id)");
$current_membership = $redmine->api('membership')->all($project_id);
foreach ($current_membership['memberships'] as $global_key => $member){
if ($member['user']['id'] == $user_id){
$cur_roles=array();
$membership_id = $current_membership['memberships'][$global_key]['id'];
foreach($current_membership['memberships'][$global_key]['roles'] as $role) {
if ($role['id'] == $role_id) {
//print "already there!\n";
return true;
}
$cur_roles[] = $role['id'];
}
return $redmine->api('membership')->update($membership_id, array ('role_ids' => array_merge($cur_roles, array(ROLE_CUSTOMER))));
$role_ids = array('role_ids' => array_merge($cur_roles, array($role_id)));
//print "updating\n";
//print_r($role_ids);
return $redmine->api('membership')->update($membership_id, $role_ids);
}
}
return $redmine->api('membership')->create($project_id, array('user_id' => $user_id, 'role_ids' => array(ROLE_CUSTOMER)));
//print "creating\n";
return $redmine->api('membership')->create($project_id, array('user_id' => $user_id, 'role_ids' => array($role_id)));
}
function removeUserFromProject(&$redmine, $user_id, $project_id, $role_id) {
error_log("removeUserFromProject(redmine, $user_id, $project_id, $role_id)");
$current_membership = $redmine->api('membership')->all($project_id);
foreach ($current_membership['memberships'] as $global_key => $member){
if ($member['user']['id'] == $user_id){
$role_ids=array();
$membership_id = $current_membership['memberships'][$global_key]['id'];
foreach($current_membership['memberships'][$global_key]['roles'] as $role) {
if ($role['id'] == $role_id) {
continue;
}
$role_ids[] = $role['id'];
}
return $redmine->api('membership')->update($membership_id, $role_ids);
}
}
return true;
}
switch ($_GET['action']) {
case 'agree':
case 'move':
header('Content-Type: text/plain');
$recipientId = NULL;
... ... @@ -95,15 +124,29 @@ switch ($_GET['action']) {
die('Произошла ошибка. Пожалуйста, повторите попытку позже. Cannot find login of user with ID: '.$recipientId);
}
//print_r($issue);die();
/*$result = addUserToProject($redmine, $recipientId, $issue['project']['id']);
if ($result !== TRUE) {
$project_id = redmine_proj_identifier2id(strtolower(explode('@', $recipient['mail'])[0]));
addUserToProject($redmine_admin, $assignedTo['id'], $project_id, ROLE_CUSTOMER);
addUserToProject($redmine_admin, $assignedTo['id'], $project_id, ROLE_MOVER);
/*$result =*/
/*if ($result !== TRUE) {
mail('admin@ut.mephi.ru', 'Got error on decide-note.php', print_r($_GET, 1));
die('Произошла ошибка. Пожалуйста, повторите попытку позже. Cannot add user '.$recipientId.' to project '.$issue['project']['id'].': '.print_r($result, 1));
}*/
//print @json_encode($redmine->api('issue')->update($issue['id'], array('status_id' => STATUSID_NEW, 'project_id' => redmine_proj_identifier2id(strtolower(explode('@', $recipient['mail'])[0])), 'assigned_to_id' => $recipient['id'])));
$result = $redmine->api('issue')->update($issue['id'], array('status_id' => STATUSID_NEW, 'project_id' => redmine_proj_identifier2id(strtolower(explode('@', $recipient['mail'])[0])), 'assigned_to_id' => $recipient['id']));
$issue_props = array(
'project_id' => $project_id,
'assigned_to_id' => $recipient['id']
);
if ($_GET['action'] == 'agree')
$issue_props['status_id'] = STATUSID_NEW;
//print_r($issue_props);die();
$result = $redmine->api('issue')->update($issue['id'], $issue_props);
removeUserFromProject($redmine_admin, $assignedTo['id'], $project_id, ROLE_MOVER);
if ($result !== TRUE) {
mail('admin@ut.mephi.ru', 'Got error on decide-note.php', print_r($_GET, 1));
die('Произошла ошибка. Пожалуйста, повторите попытку позже. Cannot update the issue '.$issue['project']['id'].': '.print_r($result, 1));
... ...
Inflect @ a60c8e42
Subproject commit 754ec13a3789333e9c0a2f858116d0aec7edd238
Subproject commit a60c8e42622081bce1e8a04c0d18eef53791418b
... ...