2011-01-16 22:51:39 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group aphront
|
|
|
|
*/
|
2012-12-19 01:11:07 +01:00
|
|
|
abstract class AphrontController extends Phobject {
|
2011-01-16 22:51:39 +01:00
|
|
|
|
|
|
|
private $request;
|
2012-08-05 23:03:39 +02:00
|
|
|
private $currentApplication;
|
2013-05-30 23:09:02 +02:00
|
|
|
private $delegatingController;
|
|
|
|
|
|
|
|
public function setDelegatingController(
|
|
|
|
AphrontController $delegating_controller) {
|
|
|
|
$this->delegatingController = $delegating_controller;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getDelegatingController() {
|
|
|
|
return $this->delegatingController;
|
|
|
|
}
|
2011-01-16 22:51:39 +01:00
|
|
|
|
2011-01-26 22:21:12 +01:00
|
|
|
public function willBeginExecution() {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2011-01-16 22:51:39 +01:00
|
|
|
public function willProcessRequest(array $uri_data) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2012-08-05 23:12:43 +02:00
|
|
|
public function didProcessRequest($response) {
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
2011-01-16 22:51:39 +01:00
|
|
|
abstract public function processRequest();
|
|
|
|
|
|
|
|
final public function __construct(AphrontRequest $request) {
|
|
|
|
$this->request = $request;
|
|
|
|
}
|
|
|
|
|
|
|
|
final public function getRequest() {
|
|
|
|
return $this->request;
|
|
|
|
}
|
|
|
|
|
2011-02-28 04:47:22 +01:00
|
|
|
final public function delegateToController(AphrontController $controller) {
|
2013-05-30 23:09:02 +02:00
|
|
|
$controller->setDelegatingController($this);
|
|
|
|
|
|
|
|
$application = $this->getCurrentApplication();
|
|
|
|
if ($application) {
|
|
|
|
$controller->setCurrentApplication($application);
|
|
|
|
}
|
|
|
|
|
2011-02-28 04:47:22 +01:00
|
|
|
return $controller->processRequest();
|
|
|
|
}
|
|
|
|
|
2012-08-05 23:03:39 +02:00
|
|
|
final public function setCurrentApplication(
|
|
|
|
PhabricatorApplication $current_application) {
|
|
|
|
|
|
|
|
$this->currentApplication = $current_application;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
final public function getCurrentApplication() {
|
|
|
|
return $this->currentApplication;
|
|
|
|
}
|
|
|
|
|
2014-01-02 20:59:35 +01:00
|
|
|
public function getDefaultResourceSource() {
|
|
|
|
throw new Exception(
|
|
|
|
pht(
|
|
|
|
'A Controller must implement getDefaultResourceSource() before you '.
|
|
|
|
'can invoke requireResource() or initBehavior().'));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function requireResource($symbol) {
|
|
|
|
$response = CelerityAPI::getStaticResourceResponse();
|
|
|
|
$response->requireResource($symbol, $this->getDefaultResourceSource());
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function initBehavior($name, $config = array()) {
|
|
|
|
Javelin::initBehavior(
|
|
|
|
$name,
|
|
|
|
$config,
|
|
|
|
$this->getDefaultResourceSource());
|
|
|
|
}
|
|
|
|
|
2011-01-16 22:51:39 +01:00
|
|
|
}
|