Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/maniphest/relationship/ManiphestTaskCloseAsDuplicateRelationship.php
12256 views
1
<?php
2
3
final class ManiphestTaskCloseAsDuplicateRelationship
4
extends ManiphestTaskRelationship {
5
6
const RELATIONSHIPKEY = 'task.close-as-duplicate';
7
8
public function getEdgeConstant() {
9
return ManiphestTaskIsDuplicateOfTaskEdgeType::EDGECONST;
10
}
11
12
protected function getActionName() {
13
return pht('Close As Duplicate');
14
}
15
16
protected function getActionIcon() {
17
return 'fa-times';
18
}
19
20
public function canRelateObjects($src, $dst) {
21
return ($dst instanceof ManiphestTask);
22
}
23
24
public function shouldAppearInActionMenu() {
25
return false;
26
}
27
28
public function getDialogTitleText() {
29
return pht('Close As Duplicate');
30
}
31
32
public function getDialogHeaderText() {
33
return pht('Close This Task As a Duplicate Of');
34
}
35
36
public function getDialogButtonText() {
37
return pht('Merge Into Selected Task');
38
}
39
40
protected function newRelationshipSource() {
41
return id(new ManiphestTaskRelationshipSource())
42
->setSelectedFilter('open');
43
}
44
45
public function getRequiredRelationshipCapabilities() {
46
return array(
47
PhabricatorPolicyCapability::CAN_VIEW,
48
PhabricatorPolicyCapability::CAN_EDIT,
49
);
50
}
51
52
public function canUndoRelationship() {
53
return false;
54
}
55
56
public function getMaximumSelectionSize() {
57
return 1;
58
}
59
60
public function willUpdateRelationships($object, array $add, array $rem) {
61
$task = head($add);
62
return $this->newMergeIntoTransactions($task);
63
}
64
65
public function didUpdateRelationships($object, array $add, array $rem) {
66
$viewer = $this->getViewer();
67
$content_source = $this->getContentSource();
68
69
$task = head($add);
70
$xactions = $this->newMergeFromTransactions(array($object));
71
72
$task->getApplicationTransactionEditor()
73
->setActor($viewer)
74
->setContentSource($content_source)
75
->setContinueOnMissingFields(true)
76
->setContinueOnNoEffect(true)
77
->applyTransactions($task, $xactions);
78
}
79
80
}
81
82