1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-07 04:18:31 +01:00
phorge-phorge/src/applications/phortune/controller/PhortuneController.php

57 lines
1.6 KiB
PHP
Raw Normal View History

2013-03-28 09:10:34 -07:00
<?php
abstract class PhortuneController extends PhabricatorController {
protected function loadActiveAccount(PhabricatorUser $user) {
$accounts = id(new PhortuneAccountQuery())
->setViewer($user)
->withMemberPHIDs(array($user->getPHID()))
->execute();
if (!$accounts) {
return $this->createUserAccount($user);
} else if (count($accounts) == 1) {
return head($accounts);
} else {
throw new Exception('TODO: No account selection yet.');
}
}
2013-03-28 09:10:34 -07:00
protected function createUserAccount(PhabricatorUser $user) {
$request = $this->getRequest();
$xactions = array();
$xactions[] = id(new PhortuneAccountTransaction())
->setTransactionType(PhortuneAccountTransaction::TYPE_NAME)
->setNewValue(pht('Account (%s)', $user->getUserName()));
$xactions[] = id(new PhortuneAccountTransaction())
->setTransactionType(PhabricatorTransactions::TYPE_EDGE)
->setMetadataValue(
'edge:type',
PhabricatorEdgeConfig::TYPE_ACCOUNT_HAS_MEMBER)
->setNewValue(
array(
'=' => array($user->getPHID() => $user->getPHID()),
));
$account = id(new PhortuneAccount())
->attachMemberPHIDs(array());
2013-03-28 09:10:34 -07:00
$editor = id(new PhortuneAccountEditor())
->setActor($user)
->setContentSourceFromRequest($request);
2013-03-28 09:10:34 -07:00
// We create an account for you the first time you visit Phortune.
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
$editor->applyTransactions($account, $xactions);
unset($unguarded);
return $account;
}
}