3 final class PhabricatorDashboardPortal
4 extends PhabricatorDashboardDAO
6 PhabricatorApplicationTransactionInterface
,
7 PhabricatorPolicyInterface
,
8 PhabricatorDestructibleInterface
,
9 PhabricatorProjectInterface
,
10 PhabricatorFulltextInterface
,
11 PhabricatorFerretInterface
{
14 protected $viewPolicy;
15 protected $editPolicy;
17 protected $properties = array();
19 public static function initializeNewPortal() {
22 ->setViewPolicy(PhabricatorPolicies
::getMostOpenPolicy())
23 ->setEditPolicy(PhabricatorPolicies
::POLICY_USER
)
24 ->setStatus(PhabricatorDashboardPortalStatus
::STATUS_ACTIVE
);
27 protected function getConfiguration() {
29 self
::CONFIG_AUX_PHID
=> true,
30 self
::CONFIG_SERIALIZATION
=> array(
31 'properties' => self
::SERIALIZATION_JSON
,
33 self
::CONFIG_COLUMN_SCHEMA
=> array(
37 ) + parent
::getConfiguration();
40 public function getPHIDType() {
41 return PhabricatorDashboardPortalPHIDType
::TYPECONST
;
44 public function getPortalProperty($key, $default = null) {
45 return idx($this->properties
, $key, $default);
48 public function setPortalProperty($key, $value) {
49 $this->properties
[$key] = $value;
53 public function getObjectName() {
54 return pht('Portal %d', $this->getID());
57 public function getURI() {
58 return '/portal/view/'.$this->getID().'/';
61 public function isArchived() {
62 $status_archived = PhabricatorDashboardPortalStatus
::STATUS_ARCHIVED
;
63 return ($this->getStatus() === $status_archived);
67 /* -( PhabricatorApplicationTransactionInterface )------------------------- */
70 public function getApplicationTransactionEditor() {
71 return new PhabricatorDashboardPortalEditor();
74 public function getApplicationTransactionTemplate() {
75 return new PhabricatorDashboardPortalTransaction();
79 /* -( PhabricatorPolicyInterface )----------------------------------------- */
82 public function getCapabilities() {
84 PhabricatorPolicyCapability
::CAN_VIEW
,
85 PhabricatorPolicyCapability
::CAN_EDIT
,
89 public function getPolicy($capability) {
90 switch ($capability) {
91 case PhabricatorPolicyCapability
::CAN_VIEW
:
92 return $this->getViewPolicy();
93 case PhabricatorPolicyCapability
::CAN_EDIT
:
94 return $this->getEditPolicy();
98 public function hasAutomaticCapability($capability, PhabricatorUser
$viewer) {
103 /* -( PhabricatorDestructibleInterface )----------------------------------- */
106 public function destroyObjectPermanently(
107 PhabricatorDestructionEngine
$engine) {
111 /* -( PhabricatorFulltextInterface )--------------------------------------- */
113 public function newFulltextEngine() {
114 return new PhabricatorDashboardPortalFulltextEngine();
117 /* -( PhabricatorFerretInterface )----------------------------------------- */
119 public function newFerretEngine() {
120 return new PhabricatorDashboardPortalFerretEngine();