Page MenuHomePhorge

DeepcloneController.php
No OneTemporary

DeepcloneController.php

<?php
final class DeepcloneController extends ManiphestController
{
public function handleRequest(AphrontRequest $request)
{
$task_id = $request->getURIData('id');
$viewer = $this->getViewer();
if (!$task_id) {
throw new Exception("Task ID: $task_id");
return new Aphront404Response();
}
$task = id(new ManiphestTaskQuery())
->setViewer($viewer)
->withPHIDs(array($task_id))
->requireCapabilities(
array(
PhabricatorPolicyCapability::CAN_VIEW,
PhabricatorPolicyCapability::CAN_EDIT,
)
)
->needSubscriberPHIDs(true)
->executeOne();
if (!$task) {
throw new Exception("Task ID: $task_id");
return new Aphront404Response();
}
if ($request->isFormPost()) {
return $this->triggerTransaction($request, $task);
// $properties = $provider->readFormValuesFromRequest($request);
// list($errors, $issues, $properties) = $provider->processEditForm(
// $request,
// $properties);
// $xactions = array();
// if (!$errors) {
// if ($is_new) {
// if (!phutil_nonempty_string($config->getProviderType())) {
// $config->setProviderType($provider->getProviderType());
// }
// if (!phutil_nonempty_string($config->getProviderDomain())) {
// $config->setProviderDomain($provider->getProviderDomain());
// }
// }
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_LOGIN)
// ->setNewValue($request->getInt('allowLogin', 0));
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_REGISTRATION)
// ->setNewValue($request->getInt('allowRegistration', 0));
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_LINK)
// ->setNewValue($request->getInt('allowLink', 0));
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_UNLINK)
// ->setNewValue($request->getInt('allowUnlink', 0));
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_TRUST_EMAILS)
// ->setNewValue($request->getInt('trustEmails', 0));
// if ($provider->supportsAutoLogin()) {
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_AUTO_LOGIN)
// ->setNewValue($request->getInt('autoLogin', 0));
// }
// foreach ($properties as $key => $value) {
// $xactions[] = id(new PhabricatorAuthProviderConfigTransaction())
// ->setTransactionType(
// PhabricatorAuthProviderConfigTransaction::TYPE_PROPERTY)
// ->setMetadataValue('auth:property', $key)
// ->setNewValue($value);
// }
// if ($is_new) {
// $config->save();
// }
// $editor = id(new PhabricatorAuthProviderConfigEditor())
// ->setActor($viewer)
// ->setContentSourceFromRequest($request)
// ->setContinueOnNoEffect(true);
// try {
// $editor->applyTransactions($config, $xactions);
// $next_uri = $config->getURI();
// return id(new AphrontRedirectResponse())->setURI($next_uri);
// } catch (Exception $ex) {
// $validation_exception = $ex;
// }
// }
} else {
return $this->buildForm($task);
}
}
private function buildForm(ManiphestTask $task)
{
$form = id(new AphrontFormView())
->setUser($this->getViewer())
->appendChild(
id(new AphrontFormCheckboxControl())
->setLabel(pht('Copy Comments'))
->addCheckbox(
'copy_comments',
1,
pht('Copy all the comments of the task/s to the new task/s'),
)
)
->appendChild(
id(new AphrontFormCheckboxControl())
->setLabel('Deep Clone Task')
->addCheckbox(
'deep_clone',
1,
'Create a clone of all the sub tasks of this task',
)
);
$handle = $this->getHandle($task);
$cancel_uri = "/{$handle->getName()}";
$form
->appendChild(
id(new AphrontFormSubmitControl())
->addCancelButton($cancel_uri)
->setValue(pht('Clone'))
);
$form_box = id(new PHUIObjectBoxView())
->setHeaderText($this->generateTitle($task))
// ->setFormErrors($errors)
// ->setValidationException($validation_exception)
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setForm($form);
$view = id(new PHUITwoColumnView())
->setFooter(array(
$form_box,
));
return $this->newPage()
->setTitle($this->generateTitle($task))
->appendChild($view);
}
private function generateTitle(ManiphestTask $task)
{
$handle = $this->getHandle($task);
return pht('Deep clone task "%s" (%s)', $task->getTitle(), $handle->getName());
}
private function getHandle(ManiphestTask $task)
{
$viewer = $this->getViewer();
$handles = $viewer->loadHandles(array($task->getPHID()));
$handle = $handles[$task->getPHID()];
return $handle;
}
private function triggerTransaction(AphrontRequest $request, ManiphestTask $task) {
$deepCloneRaw = $request->getStr('deep_clone');
$deepClone = $deepCloneRaw === '1';
$copyCommentsRaw = $request->getStr('copy_comments');
$copyComments = $copyCommentsRaw === '1';
throw new Exception("Deep Clone $deepClone $deepCloneRaw Copy Comments $copyComments $copyCommentsRaw");
}
}

File Metadata

Mime Type
text/x-php
Expires
Sun, May 11, 06:11 (3 d, 32 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1182709
Default Alt Text
DeepcloneController.php (6 KB)

Event Timeline