Path: blob/master/src/applications/files/application/PhabricatorFilesApplication.php
12242 views
<?php12final class PhabricatorFilesApplication extends PhabricatorApplication {34public function getBaseURI() {5return '/file/';6}78public function getName() {9return pht('Files');10}1112public function getShortDescription() {13return pht('Store and Share Files');14}1516public function getIcon() {17return 'fa-file';18}1920public function getTitleGlyph() {21return "\xE2\x87\xAA";22}2324public function getFlavorText() {25return pht('Blob store for Pokemon pictures.');26}2728public function getApplicationGroup() {29return self::GROUP_UTILITIES;30}3132public function canUninstall() {33return false;34}3536public function getRemarkupRules() {37return array(38new PhabricatorEmbedFileRemarkupRule(),39new PhabricatorImageRemarkupRule(),40);41}4243public function supportsEmailIntegration() {44return true;45}4647public function getAppEmailBlurb() {48return pht(49'Send emails with file attachments to these addresses to upload '.50'files. %s',51phutil_tag(52'a',53array(54'href' => $this->getInboundEmailSupportLink(),55),56pht('Learn More')));57}5859protected function getCustomCapabilities() {60return array(61FilesDefaultViewCapability::CAPABILITY => array(62'caption' => pht('Default view policy for newly created files.'),63'template' => PhabricatorFileFilePHIDType::TYPECONST,64'capability' => PhabricatorPolicyCapability::CAN_VIEW,65),66);67}6869public function getRoutes() {70return array(71'/F(?P<id>[1-9]\d*)(?:\$(?P<lines>\d+(?:-\d+)?))?'72=> 'PhabricatorFileViewController',73'/file/' => array(74'(query/(?P<queryKey>[^/]+)/)?' => 'PhabricatorFileListController',75'view/(?P<id>[1-9]\d*)/'.76'(?:(?P<engineKey>[^/]+)/)?'.77'(?:\$(?P<lines>\d+(?:-\d+)?))?'78=> 'PhabricatorFileViewController',79'info/(?P<phid>[^/]+)/' => 'PhabricatorFileViewController',80'upload/' => 'PhabricatorFileUploadController',81'dropupload/' => 'PhabricatorFileDropUploadController',82'compose/' => 'PhabricatorFileComposeController',83'thread/(?P<phid>[^/]+)/' => 'PhabricatorFileLightboxController',84'delete/(?P<id>[1-9]\d*)/' => 'PhabricatorFileDeleteController',85$this->getEditRoutePattern('edit/')86=> 'PhabricatorFileEditController',87'imageproxy/' => 'PhabricatorFileImageProxyController',88'transforms/(?P<id>[1-9]\d*)/' =>89'PhabricatorFileTransformListController',90'uploaddialog/(?P<single>single/)?'91=> 'PhabricatorFileUploadDialogController',92'iconset/(?P<key>[^/]+)/' => array(93'select/' => 'PhabricatorFileIconSetSelectController',94),95'document/(?P<engineKey>[^/]+)/(?P<phid>[^/]+)/'96=> 'PhabricatorFileDocumentController',97'ui/' => array(98'detach/(?P<objectPHID>[^/]+)/(?P<filePHID>[^/]+)/'99=> 'PhabricatorFileDetachController',100'curtain/' => array(101'list/(?P<phid>[^/]+)/'102=> 'PhabricatorFileUICurtainListController',103'attach/(?P<objectPHID>[^/]+)/(?P<filePHID>[^/]+)/'104=> 'PhabricatorFileUICurtainAttachController',105),106),107) + $this->getResourceSubroutes(),108);109}110111public function getResourceRoutes() {112return array(113'/file/' => $this->getResourceSubroutes(),114);115}116117private function getResourceSubroutes() {118return array(119'(?P<kind>data|download)/'.120'(?:@(?P<instance>[^/]+)/)?'.121'(?P<key>[^/]+)/'.122'(?P<phid>[^/]+)/'.123'(?:(?P<token>[^/]+)/)?'.124'.*'125=> 'PhabricatorFileDataController',126'xform/'.127'(?:@(?P<instance>[^/]+)/)?'.128'(?P<transform>[^/]+)/'.129'(?P<phid>[^/]+)/'.130'(?P<key>[^/]+)/'131=> 'PhabricatorFileTransformController',132);133}134135public function getMailCommandObjects() {136return array(137'file' => array(138'name' => pht('Email Commands: Files'),139'header' => pht('Interacting with Files'),140'object' => new PhabricatorFile(),141'summary' => pht(142'This page documents the commands you can use to interact with '.143'files.'),144),145);146}147148public function getQuicksandURIPatternBlacklist() {149return array(150'/file/(data|download)/.*',151);152}153154}155156157