mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 02:02:41 +01:00
176 lines
4.7 KiB
PHP
176 lines
4.7 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* Copyright 2012 Facebook, Inc.
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
final class PackageModifyMail extends PackageMail {
|
||
|
|
||
|
protected $addOwners;
|
||
|
protected $removeOwners;
|
||
|
protected $allOwners;
|
||
|
protected $touchedRepos;
|
||
|
protected $addPaths;
|
||
|
protected $removePaths;
|
||
|
|
||
|
public function __construct(
|
||
|
PhabricatorOwnersPackage $package,
|
||
|
$add_owners,
|
||
|
$remove_owners,
|
||
|
$all_owners,
|
||
|
$touched_repos,
|
||
|
$add_paths,
|
||
|
$remove_paths) {
|
||
|
|
||
|
$this->package = $package;
|
||
|
|
||
|
$this->addOwners = $add_owners;
|
||
|
$this->removeOwners = $remove_owners;
|
||
|
$this->allOwners = $all_owners;
|
||
|
$this->touchedRepos = $touched_repos;
|
||
|
$this->addPaths = $add_paths;
|
||
|
$this->removePaths = $remove_paths;
|
||
|
}
|
||
|
|
||
|
protected function getVerb() {
|
||
|
return 'Modified';
|
||
|
}
|
||
|
|
||
|
protected function isNewThread() {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
protected function needSend() {
|
||
|
$package = $this->getPackage();
|
||
|
if ($package->getOldPrimaryOwnerPHID() !== $package->getPrimaryOwnerPHID()
|
||
|
|| $package->getOldAuditingEnabled() != $package->getAuditingEnabled()
|
||
|
|| $this->addOwners
|
||
|
|| $this->removeOwners
|
||
|
|| $this->addPaths
|
||
|
|| $this->removePaths) {
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function loadData() {
|
||
|
$this->mailTo = $this->allOwners;
|
||
|
|
||
|
$phids = array_mergev(array(
|
||
|
$this->allOwners,
|
||
|
$this->touchedRepos,
|
||
|
array(
|
||
|
$this->getPackage()->getActorPHID(),
|
||
|
),
|
||
|
));
|
||
|
$this->handles = id(new PhabricatorObjectHandleData($phids))->loadHandles();
|
||
|
}
|
||
|
|
||
|
protected function renderDescriptionSection() {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
protected function renderPrimaryOwnerSection() {
|
||
|
$package = $this->getPackage();
|
||
|
$handles = $this->getHandles();
|
||
|
|
||
|
$old_primary_owner_phid = $package->getOldPrimaryOwnerPHID();
|
||
|
$primary_owner_phid = $package->getPrimaryOwnerPHID();
|
||
|
if ($old_primary_owner_phid == $primary_owner_phid) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
$section = array();
|
||
|
$section[] = 'PRIMARY OWNER CHANGE';
|
||
|
$section[] = ' Old owner: ' .
|
||
|
$handles[$old_primary_owner_phid]->getName();
|
||
|
$section[] = ' New owner: ' .
|
||
|
$handles[$primary_owner_phid]->getName();
|
||
|
$section[] = '';
|
||
|
|
||
|
return implode("\n", $section);
|
||
|
}
|
||
|
|
||
|
protected function renderOwnersSection() {
|
||
|
$section = array();
|
||
|
$add_owners = $this->addOwners;
|
||
|
$remove_owners = $this->removeOwners;
|
||
|
$handles = $this->getHandles();
|
||
|
|
||
|
if ($add_owners) {
|
||
|
$add_owners = array_select_keys($handles, $add_owners);
|
||
|
$add_owners = mpull($add_owners, 'getName');
|
||
|
$section[] = 'ADDED OWNERS';
|
||
|
$section[] = ' '.implode(', ', $add_owners);
|
||
|
}
|
||
|
|
||
|
if ($remove_owners) {
|
||
|
if ($add_owners) {
|
||
|
$section[] = '';
|
||
|
}
|
||
|
$remove_owners = array_select_keys($handles, $remove_owners);
|
||
|
$remove_owners = mpull($remove_owners, 'getName');
|
||
|
$section[] = 'REMOVED OWNERS';
|
||
|
$section[] = ' '.implode(', ', $remove_owners);
|
||
|
}
|
||
|
|
||
|
if ($section) {
|
||
|
return implode("\n", $section);
|
||
|
} else {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function renderAuditingEnabledSection() {
|
||
|
$package = $this->getPackage();
|
||
|
$old_auditing_enabled = $package->getOldAuditingEnabled();
|
||
|
$auditing_enabled = $package->getAuditingEnabled();
|
||
|
if ($old_auditing_enabled == $auditing_enabled) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
$section = array();
|
||
|
$section[] = 'AUDITING ENABLED STATUS CHANGE';
|
||
|
$section[] = ' Old value: '.
|
||
|
($old_auditing_enabled ? 'Enabled' : 'Disabled');
|
||
|
$section[] = ' New value: '.
|
||
|
($auditing_enabled ? 'Enabled' : 'Disabled');
|
||
|
return implode("\n", $section);
|
||
|
}
|
||
|
|
||
|
protected function renderPathsSection() {
|
||
|
$section = array();
|
||
|
if ($this->addPaths) {
|
||
|
$section[] = 'ADDED PATHS';
|
||
|
foreach ($this->addPaths as $repository_phid => $paths) {
|
||
|
$section[] = $this->renderRepoSubSection($repository_phid, $paths);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($this->removePaths) {
|
||
|
if ($this->addPaths) {
|
||
|
$section[] = '';
|
||
|
}
|
||
|
$section[] = 'REMOVED PATHS';
|
||
|
foreach ($this->removePaths as $repository_phid => $paths) {
|
||
|
$section[] = $this->renderRepoSubSection($repository_phid, $paths);
|
||
|
}
|
||
|
}
|
||
|
return implode("\n", $section);
|
||
|
}
|
||
|
|
||
|
}
|