1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-04 20:52:43 +01:00
phorge-phorge/src/applications/maniphest/xaction/ManiphestTaskPointsTransaction.php
Chad Little 904480dc3c Generate newValue for ManiphestTaskPointTransaction
Summary: I think this is the correct fix, sets a consistent value for transactions, old and new, for Maniphest point values.

Test Plan:
Edit title, see no point feed story, set points, see point story, set points to same value, see no story, remove points, see remove point story.

{F4958233}

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Differential Revision: https://secure.phabricator.com/D17885
2017-05-15 11:18:54 -07:00

84 lines
1.9 KiB
PHP

<?php
final class ManiphestTaskPointsTransaction
extends ManiphestTaskTransactionType {
const TRANSACTIONTYPE = 'points';
public function generateOldValue($object) {
return $this->getValueForPoints($object->getPoints());
}
public function generateNewValue($object, $value) {
return $this->getValueForPoints($value);
}
public function applyInternalEffects($object, $value) {
$object->setPoints($value);
}
public function shouldHideForFeed() {
return true;
}
public function shouldHide() {
if (!ManiphestTaskPoints::getIsEnabled()) {
return true;
}
return false;
}
public function getTitle() {
$old = $this->getOldValue();
$new = $this->getNewValue();
if ($old === null) {
return pht(
'%s set the point value for this task to %s.',
$this->renderAuthor(),
$this->renderNewValue());
} else if ($new === null) {
return pht(
'%s removed the point value for this task.',
$this->renderAuthor());
} else {
return pht(
'%s changed the point value for this task from %s to %s.',
$this->renderAuthor(),
$this->renderOldValue(),
$this->renderNewValue());
}
}
public function validateTransactions($object, array $xactions) {
$errors = array();
foreach ($xactions as $xaction) {
$new = $xaction->getNewValue();
if (strlen($new) && !is_numeric($new)) {
$errors[] = $this->newInvalidError(
pht('Points value must be numeric or empty.'));
continue;
}
if ((double)$new < 0) {
$errors[] = $this->newInvalidError(
pht('Points value must be nonnegative.'));
continue;
}
}
return $errors;
}
private function getValueForPoints($value) {
if (!strlen($value)) {
$value = null;
}
if ($value !== null) {
$value = (double)$value;
}
return $value;
}
}