Page MenuHomePhorge

PhabricatorApplicationTransactionWarningResponse.php
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

PhabricatorApplicationTransactionWarningResponse.php

<?php
final class PhabricatorApplicationTransactionWarningResponse
extends AphrontProxyResponse {
private $viewer;
private $object;
private $exception;
private $cancelURI;
public function setObject($object) {
$this->object = $object;
return $this;
}
public function getObject() {
return $this->object;
}
public function setCancelURI($cancel_uri) {
$this->cancelURI = $cancel_uri;
return $this;
}
public function setException(
PhabricatorApplicationTransactionWarningException $exception) {
$this->exception = $exception;
return $this;
}
public function getException() {
return $this->exception;
}
protected function buildProxy() {
return new AphrontDialogResponse();
}
public function reduceProxyResponse() {
$request = $this->getRequest();
$viewer = $request->getViewer();
$object = $this->getObject();
$xactions = $this->getException()->getTransactions();
$xaction_groups = mgroup($xactions, 'getTransactionType');
$warnings = array();
foreach ($xaction_groups as $xaction_group) {
$xaction = head($xaction_group);
$warning = $xaction->newWarningForTransactions(
$object,
$xaction_group);
if (!($warning instanceof PhabricatorTransactionWarning)) {
throw new Exception(
pht(
'Expected "newTransactionWarning()" to return an object of '.
'class "PhabricatorTransactionWarning", got something else '.
'("%s") from transaction of class "%s".',
phutil_describe_type($warning),
get_class($xaction)));
}
$warnings[] = $warning;
}
$dialog = id(new AphrontDialogView())
->setViewer($viewer);
$last_key = last_key($warnings);
foreach ($warnings as $warning_key => $warning) {
$paragraphs = $warning->getWarningParagraphs();
foreach ($paragraphs as $paragraph) {
$dialog->appendParagraph($paragraph);
}
if ($warning_key !== $last_key) {
$dialog->appendChild(phutil_tag('hr'));
}
}
$title_texts = array();
$continue_texts = array();
$cancel_texts = array();
foreach ($warnings as $warning) {
$title_text = $warning->getTitleText();
if ($title_text !== null) {
$title_texts[] = $title_text;
}
$continue_text = $warning->getContinueActionText();
if ($continue_text !== null) {
$continue_texts[] = $continue_text;
}
$cancel_text = $warning->getCancelActionText();
if ($cancel_text !== null) {
$cancel_texts[] = $cancel_text;
}
}
$title_texts = array_unique($title_texts);
if (count($title_texts) === 1) {
$title = head($title_texts);
} else {
$title = pht('Warnings');
}
$continue_texts = array_unique($continue_texts);
if (count($continue_texts) === 1) {
$continue_action = head($continue_texts);
} else {
$continue_action = pht('Continue');
}
$cancel_texts = array_unique($cancel_texts);
if (count($cancel_texts) === 1) {
$cancel_action = head($cancel_texts);
} else {
$cancel_action = null;
}
$dialog
->setTitle($title)
->addSubmitButton($continue_action);
if ($cancel_action === null) {
$dialog->addCancelButton($this->cancelURI);
} else {
$dialog->addCancelButton($this->cancelURI, $cancel_action);
}
$passthrough = $request->getPassthroughRequestParameters();
foreach ($passthrough as $key => $value) {
$dialog->addHiddenInput($key, $value);
}
$dialog->addHiddenInput('editEngine.warnings', 1);
return $this->getProxy()->setDialog($dialog);
}
}

File Metadata

Mime Type
text/x-php
Expires
Mon, May 12, 11:18 AM (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
103621
Default Alt Text
PhabricatorApplicationTransactionWarningResponse.php (3 KB)

Event Timeline