| @@ 563-577 (lines=15) @@ | ||
| 560 | * @param Member|null $member |
|
| 561 | * @return boolean |
|
| 562 | */ |
|
| 563 | public function canAbort($member = null) |
|
| 564 | { |
|
| 565 | if (!$member) { |
|
| 566 | $member = Member::currentUser(); |
|
| 567 | } |
|
| 568 | if (!$member) { |
|
| 569 | return false; |
|
| 570 | } |
|
| 571 | ||
| 572 | if (Permission::checkMember($member, 'ADMIN')) { |
|
| 573 | return true; |
|
| 574 | } |
|
| 575 | ||
| 576 | return $this->PipelineCancellers()->byID($member->ID) |
|
| 577 | || $member->inGroups($this->PipelineCancellerGroups()); |
|
| 578 | } |
|
| 579 | ||
| 580 | /** |
|
| @@ 586-599 (lines=14) @@ | ||
| 583 | * @param Member|null $member |
|
| 584 | * @return boolean |
|
| 585 | */ |
|
| 586 | public function canApprove($member = null) |
|
| 587 | { |
|
| 588 | if (!$member) { |
|
| 589 | $member = Member::currentUser(); |
|
| 590 | } |
|
| 591 | if (!$member) { |
|
| 592 | return false; |
|
| 593 | } |
|
| 594 | ||
| 595 | if (Permission::checkMember($member, 'ADMIN')) { |
|
| 596 | return true; |
|
| 597 | } |
|
| 598 | return $this->PipelineApprovers()->byID($member->ID) |
|
| 599 | || $member->inGroups($this->PipelineApproverGroups()); |
|
| 600 | } |
|
| 601 | ||
| 602 | /** |
|