Differential D17402 Diff 41846 src/applications/badges/xaction/PhabricatorBadgesBadgeAwardTransaction.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/badges/xaction/PhabricatorBadgesBadgeAwardTransaction.php
- This file was added.
<?php | |||||
final class PhabricatorBadgesBadgeAwardTransaction | |||||
extends PhabricatorBadgesBadgeTransactionType { | |||||
const TRANSACTIONTYPE = 'badge.award'; | |||||
public function generateOldValue($object) { | |||||
return mpull($object->getAwards(), 'getRecipientPHID'); | |||||
} | |||||
public function applyExternalEffects($object, $value) { | |||||
$awards = $object->getAwards(); | |||||
$awards = mpull($awards, null, 'getRecipientPHID'); | |||||
foreach ($value as $phid) { | |||||
$award = idx($awards, $phid); | |||||
if (!$award) { | |||||
$award = PhabricatorBadgesAward::initializeNewBadgesAward( | |||||
$this->getActor(), | |||||
$object, | |||||
$phid); | |||||
$award->save(); | |||||
$awards[] = $award; | |||||
} | |||||
} | |||||
$object->attachAwards($awards); | |||||
return; | |||||
} | |||||
public function getTitle() { | |||||
$new = $this->getNewValue(); | |||||
if (!is_array($new)) { | |||||
$new = array(); | |||||
} | |||||
$handles = $this->renderHandleList($new); | |||||
return pht( | |||||
'%s awarded this badge to %s recipient(s): %s.', | |||||
$this->renderAuthor(), | |||||
new PhutilNumber(count($new)), | |||||
$handles); | |||||
} | |||||
public function getTitleForFeed() { | |||||
$new = $this->getNewValue(); | |||||
if (!is_array($new)) { | |||||
$new = array(); | |||||
} | |||||
$handles = $this->renderHandleList($new); | |||||
return pht( | |||||
'%s awarded %s to %s recipient(s): %s.', | |||||
$this->renderAuthor(), | |||||
$this->renderObject(), | |||||
new PhutilNumber(count($new)), | |||||
$handles); | |||||
} | |||||
} |