diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2020,15 +2020,6 @@ 'PhabricatorMailReplyHandler' => 'applications/metamta/replyhandler/PhabricatorMailReplyHandler.php', 'PhabricatorMailSetupCheck' => 'applications/config/check/PhabricatorMailSetupCheck.php', 'PhabricatorMailgunConfigOptions' => 'applications/config/option/PhabricatorMailgunConfigOptions.php', - 'PhabricatorMailingListDatasource' => 'applications/mailinglists/typeahead/PhabricatorMailingListDatasource.php', - 'PhabricatorMailingListListPHIDType' => 'applications/mailinglists/phid/PhabricatorMailingListListPHIDType.php', - 'PhabricatorMailingListQuery' => 'applications/mailinglists/query/PhabricatorMailingListQuery.php', - 'PhabricatorMailingListSearchEngine' => 'applications/mailinglists/query/PhabricatorMailingListSearchEngine.php', - 'PhabricatorMailingListsApplication' => 'applications/mailinglists/application/PhabricatorMailingListsApplication.php', - 'PhabricatorMailingListsController' => 'applications/mailinglists/controller/PhabricatorMailingListsController.php', - 'PhabricatorMailingListsEditController' => 'applications/mailinglists/controller/PhabricatorMailingListsEditController.php', - 'PhabricatorMailingListsListController' => 'applications/mailinglists/controller/PhabricatorMailingListsListController.php', - 'PhabricatorMailingListsManageCapability' => 'applications/mailinglists/capability/PhabricatorMailingListsManageCapability.php', 'PhabricatorMainMenuSearchView' => 'view/page/menu/PhabricatorMainMenuSearchView.php', 'PhabricatorMainMenuView' => 'view/page/menu/PhabricatorMainMenuView.php', 'PhabricatorManagementWorkflow' => 'infrastructure/management/PhabricatorManagementWorkflow.php', @@ -2067,7 +2058,6 @@ 'PhabricatorMetaMTAMailableDatasource' => 'applications/metamta/typeahead/PhabricatorMetaMTAMailableDatasource.php', 'PhabricatorMetaMTAMailableFunctionDatasource' => 'applications/metamta/typeahead/PhabricatorMetaMTAMailableFunctionDatasource.php', 'PhabricatorMetaMTAMailgunReceiveController' => 'applications/metamta/controller/PhabricatorMetaMTAMailgunReceiveController.php', - 'PhabricatorMetaMTAMailingList' => 'applications/mailinglists/storage/PhabricatorMetaMTAMailingList.php', 'PhabricatorMetaMTAMemberQuery' => 'applications/metamta/query/PhabricatorMetaMTAMemberQuery.php', 'PhabricatorMetaMTAPermanentFailureException' => 'applications/metamta/exception/PhabricatorMetaMTAPermanentFailureException.php', 'PhabricatorMetaMTAReceivedMail' => 'applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php', @@ -5435,15 +5425,6 @@ 'PhabricatorMailReceiverTestCase' => 'PhabricatorTestCase', 'PhabricatorMailSetupCheck' => 'PhabricatorSetupCheck', 'PhabricatorMailgunConfigOptions' => 'PhabricatorApplicationConfigOptions', - 'PhabricatorMailingListDatasource' => 'PhabricatorTypeaheadDatasource', - 'PhabricatorMailingListListPHIDType' => 'PhabricatorPHIDType', - 'PhabricatorMailingListQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', - 'PhabricatorMailingListSearchEngine' => 'PhabricatorApplicationSearchEngine', - 'PhabricatorMailingListsApplication' => 'PhabricatorApplication', - 'PhabricatorMailingListsController' => 'PhabricatorController', - 'PhabricatorMailingListsEditController' => 'PhabricatorMailingListsController', - 'PhabricatorMailingListsListController' => 'PhabricatorMailingListsController', - 'PhabricatorMailingListsManageCapability' => 'PhabricatorPolicyCapability', 'PhabricatorMainMenuSearchView' => 'AphrontView', 'PhabricatorMainMenuView' => 'AphrontView', 'PhabricatorManagementWorkflow' => 'PhutilArgumentWorkflow', @@ -5477,11 +5458,6 @@ 'PhabricatorMetaMTAMailableDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 'PhabricatorMetaMTAMailableFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 'PhabricatorMetaMTAMailgunReceiveController' => 'PhabricatorMetaMTAController', - 'PhabricatorMetaMTAMailingList' => array( - 'PhabricatorMetaMTADAO', - 'PhabricatorPolicyInterface', - 'PhabricatorDestructibleInterface', - ), 'PhabricatorMetaMTAMemberQuery' => 'PhabricatorQuery', 'PhabricatorMetaMTAPermanentFailureException' => 'Exception', 'PhabricatorMetaMTAReceivedMail' => 'PhabricatorMetaMTADAO', diff --git a/src/applications/differential/customfield/DifferentialSubscribersField.php b/src/applications/differential/customfield/DifferentialSubscribersField.php --- a/src/applications/differential/customfield/DifferentialSubscribersField.php +++ b/src/applications/differential/customfield/DifferentialSubscribersField.php @@ -78,7 +78,6 @@ array( PhabricatorPeopleUserPHIDType::TYPECONST, PhabricatorProjectProjectPHIDType::TYPECONST, - PhabricatorMailingListListPHIDType::TYPECONST, )); } diff --git a/src/applications/mailinglists/application/PhabricatorMailingListsApplication.php b/src/applications/mailinglists/application/PhabricatorMailingListsApplication.php deleted file mode 100644 --- a/src/applications/mailinglists/application/PhabricatorMailingListsApplication.php +++ /dev/null @@ -1,48 +0,0 @@ - array( - '(?:query/(?P[^/]+)/)?' - => 'PhabricatorMailingListsListController', - 'edit/(?:(?P[1-9]\d*)/)?' - => 'PhabricatorMailingListsEditController', - ), - ); - } - - public function getTitleGlyph() { - return '@'; - } - - protected function getCustomCapabilities() { - return array( - PhabricatorMailingListsManageCapability::CAPABILITY => array( - 'default' => PhabricatorPolicies::POLICY_ADMIN, - ), - ); - } - -} diff --git a/src/applications/mailinglists/capability/PhabricatorMailingListsManageCapability.php b/src/applications/mailinglists/capability/PhabricatorMailingListsManageCapability.php deleted file mode 100644 --- a/src/applications/mailinglists/capability/PhabricatorMailingListsManageCapability.php +++ /dev/null @@ -1,16 +0,0 @@ -getRequest()->getUser(); - - $nav = new AphrontSideNavFilterView(); - $nav->setBaseURI(new PhutilURI($this->getApplicationURI())); - - if ($for_app) { - $nav->addFilter('edit', pht('Create List')); - } - - id(new PhabricatorMailingListSearchEngine()) - ->setViewer($user) - ->addNavigationItems($nav->getMenu()); - - $nav->selectFilter(null); - - return $nav; - } - - public function buildApplicationMenu() { - return $this->buildSideNavView(true)->getMenu(); - } - - protected function buildApplicationCrumbs() { - $crumbs = parent::buildApplicationCrumbs(); - - $can_manage = $this->hasApplicationCapability( - PhabricatorMailingListsManageCapability::CAPABILITY); - - $crumbs->addAction( - id(new PHUIListItemView()) - ->setName(pht('Create List')) - ->setHref($this->getApplicationURI('edit/')) - ->setIcon('fa-plus-square') - ->setDisabled(!$can_manage) - ->setWorkflow(!$can_manage)); - - return $crumbs; - } - -} diff --git a/src/applications/mailinglists/controller/PhabricatorMailingListsEditController.php b/src/applications/mailinglists/controller/PhabricatorMailingListsEditController.php deleted file mode 100644 --- a/src/applications/mailinglists/controller/PhabricatorMailingListsEditController.php +++ /dev/null @@ -1,131 +0,0 @@ -getRequest(); - $viewer = $request->getUser(); - - $this->requireApplicationCapability( - PhabricatorMailingListsManageCapability::CAPABILITY); - - $list_id = $request->getURIData('id'); - if ($list_id) { - $page_title = pht('Edit Mailing List'); - $list = id(new PhabricatorMailingListQuery()) - ->setViewer($viewer) - ->withIDs(array($list_id)) - ->executeOne(); - if (!$list) { - return new Aphront404Response(); - } - } else { - $page_title = pht('Create Mailing List'); - $list = new PhabricatorMetaMTAMailingList(); - } - - $e_email = true; - $e_uri = null; - $e_name = true; - $errors = array(); - - $crumbs = $this->buildApplicationCrumbs(); - - if ($request->isFormPost()) { - $list->setName($request->getStr('name')); - $list->setEmail($request->getStr('email')); - $list->setURI($request->getStr('uri')); - - $e_email = null; - $e_name = null; - - if (!strlen($list->getEmail())) { - $e_email = pht('Required'); - $errors[] = pht('Email is required.'); - } - - if (!strlen($list->getName())) { - $e_name = pht('Required'); - $errors[] = pht('Name is required.'); - } else if (preg_match('/[ ,]/', $list->getName())) { - $e_name = pht('Invalid'); - $errors[] = pht('Name must not contain spaces or commas.'); - } - - if ($list->getURI()) { - if (!PhabricatorEnv::isValidRemoteURIForLink($list->getURI())) { - $e_uri = pht('Invalid'); - $errors[] = pht('Mailing list URI must point to a valid web page.'); - } - } - - if (!$errors) { - try { - $list->save(); - return id(new AphrontRedirectResponse()) - ->setURI($this->getApplicationURI()); - } catch (AphrontDuplicateKeyQueryException $ex) { - $e_email = pht('Duplicate'); - $errors[] = pht('Another mailing list already uses that address.'); - } - } - } - - $form = new AphrontFormView(); - $form->setUser($request->getUser()); - if ($list->getID()) { - $form->setAction($this->getApplicationURI('/edit/'.$list->getID().'/')); - } else { - $form->setAction($this->getApplicationURI('/edit/')); - } - - $form - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Email')) - ->setName('email') - ->setValue($list->getEmail()) - ->setCaption(pht('Email will be delivered to this address.')) - ->setError($e_email)) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('Name')) - ->setName('name') - ->setError($e_name) - ->setCaption(pht('Human-readable display and autocomplete name.')) - ->setValue($list->getName())) - ->appendChild( - id(new AphrontFormTextControl()) - ->setLabel(pht('URI')) - ->setName('uri') - ->setError($e_uri) - ->setCaption(pht('Optional link to mailing list archives or info.')) - ->setValue($list->getURI())) - ->appendChild( - id(new AphrontFormSubmitControl()) - ->setValue(pht('Save')) - ->addCancelButton($this->getApplicationURI())); - - if ($list->getID()) { - $crumbs->addTextCrumb(pht('Edit Mailing List')); - } else { - $crumbs->addTextCrumb(pht('Create Mailing List')); - } - - $form_box = id(new PHUIObjectBoxView()) - ->setHeaderText($page_title) - ->setFormErrors($errors) - ->setForm($form); - - return $this->buildApplicationPage( - array( - $crumbs, - $form_box, - ), - array( - 'title' => $page_title, - )); - } - -} diff --git a/src/applications/mailinglists/controller/PhabricatorMailingListsListController.php b/src/applications/mailinglists/controller/PhabricatorMailingListsListController.php deleted file mode 100644 --- a/src/applications/mailinglists/controller/PhabricatorMailingListsListController.php +++ /dev/null @@ -1,25 +0,0 @@ -queryKey = idx($data, 'queryKey'); - } - - public function processRequest() { - $controller = id(new PhabricatorApplicationSearchController()) - ->setQueryKey($this->queryKey) - ->setSearchEngine(new PhabricatorMailingListSearchEngine()) - ->setNavigation($this->buildSideNavView()); - - return $this->delegateToController($controller); - } - -} diff --git a/src/applications/mailinglists/phid/PhabricatorMailingListListPHIDType.php b/src/applications/mailinglists/phid/PhabricatorMailingListListPHIDType.php deleted file mode 100644 --- a/src/applications/mailinglists/phid/PhabricatorMailingListListPHIDType.php +++ /dev/null @@ -1,71 +0,0 @@ -withPHIDs($phids); - } - - public function loadHandles( - PhabricatorHandleQuery $query, - array $handles, - array $objects) { - - foreach ($handles as $phid => $handle) { - $list = $objects[$phid]; - - $handle->setName($list->getName()); - $handle->setURI($list->getURI()); - } - } - - public function canLoadNamedObject($name) { - return preg_match('/^.+@.+/', $name); - } - - public function loadNamedObjects( - PhabricatorObjectQuery $query, - array $names) { - - $id_map = array(); - foreach ($names as $name) { - // Maybe normalize these some day? - $id = $name; - $id_map[$id][] = $name; - } - - $objects = id(new PhabricatorMailingListQuery()) - ->setViewer($query->getViewer()) - ->withEmails(array_keys($id_map)) - ->execute(); - - $results = array(); - foreach ($objects as $id => $object) { - $email = $object->getEmail(); - foreach (idx($id_map, $email, array()) as $name) { - $results[$name] = $object; - } - } - - return $results; - } - -} diff --git a/src/applications/mailinglists/query/PhabricatorMailingListQuery.php b/src/applications/mailinglists/query/PhabricatorMailingListQuery.php deleted file mode 100644 --- a/src/applications/mailinglists/query/PhabricatorMailingListQuery.php +++ /dev/null @@ -1,86 +0,0 @@ -ids = $ids; - return $this; - } - - public function withPHIDs($phids) { - $this->phids = $phids; - return $this; - } - - public function withEmails(array $emails) { - $this->emails = $emails; - return $this; - } - - public function withNames(array $names) { - $this->names = $names; - return $this; - } - - protected function loadPage() { - $table = new PhabricatorMetaMTAMailingList(); - $conn_r = $table->establishConnection('r'); - - $data = queryfx_all( - $conn_r, - 'SELECT * FROM %T %Q %Q %Q', - $table->getTableName(), - $this->buildWhereClause($conn_r), - $this->buildOrderClause($conn_r), - $this->buildLimitClause($conn_r)); - - return $table->loadAllFromArray($data); - } - - protected function buildWhereClause(AphrontDatabaseConnection $conn_r) { - $where = array(); - - if ($this->ids) { - $where[] = qsprintf( - $conn_r, - 'id IN (%Ld)', - $this->ids); - } - - if ($this->phids) { - $where[] = qsprintf( - $conn_r, - 'phid IN (%Ls)', - $this->phids); - } - - if ($this->names) { - $where[] = qsprintf( - $conn_r, - 'name IN (%Ls)', - $this->names); - } - - if ($this->emails) { - $where[] = qsprintf( - $conn_r, - 'email IN (%Ls)', - $this->emails); - } - - $where[] = $this->buildPagingClause($conn_r); - - return $this->formatWhereClause($where); - } - - public function getQueryApplicationClass() { - return 'PhabricatorMailingListsApplication'; - } - -} diff --git a/src/applications/mailinglists/query/PhabricatorMailingListSearchEngine.php b/src/applications/mailinglists/query/PhabricatorMailingListSearchEngine.php deleted file mode 100644 --- a/src/applications/mailinglists/query/PhabricatorMailingListSearchEngine.php +++ /dev/null @@ -1,91 +0,0 @@ -appendChild( - id(new AphrontFormMarkupControl()) - ->setValue(pht('No query filters are available for mailing lists.'))); - } - - protected function getURI($path) { - return '/mailinglists/'.$path; - } - - protected function getBuiltinQueryNames() { - return array( - 'all' => pht('All Lists'), - ); - } - - public function buildSavedQueryFromBuiltin($query_key) { - $query = $this->newSavedQuery(); - $query->setQueryKey($query_key); - - switch ($query_key) { - case 'all': - return $query; - } - - return parent::buildSavedQueryFromBuiltin($query_key); - } - - protected function renderResultList( - array $lists, - PhabricatorSavedQuery $query, - array $handles) { - assert_instances_of($lists, 'PhabricatorMetaMTAMailingList'); - - $view = id(new PHUIObjectItemListView()); - - $can_manage = PhabricatorPolicyFilter::hasCapability( - $this->requireViewer(), - $this->getApplication(), - PhabricatorMailingListsManageCapability::CAPABILITY); - - foreach ($lists as $list) { - $item = new PHUIObjectItemView(); - - $item->setHeader($list->getName()); - $item->setHref($list->getURI()); - $item->addAttribute($list->getEmail()); - $item->addAction( - id(new PHUIListItemView()) - ->setIcon('fa-pencil') - ->setHref($this->getApplicationURI('/edit/'.$list->getID().'/')) - ->setDisabled(!$can_manage) - ->setWorkflow(!$can_manage)); - - $view->addItem($item); - } - - return $view; - } - -} diff --git a/src/applications/mailinglists/storage/PhabricatorMetaMTAMailingList.php b/src/applications/mailinglists/storage/PhabricatorMetaMTAMailingList.php deleted file mode 100644 --- a/src/applications/mailinglists/storage/PhabricatorMetaMTAMailingList.php +++ /dev/null @@ -1,77 +0,0 @@ - true, - self::CONFIG_COLUMN_SCHEMA => array( - 'name' => 'text128', - 'email' => 'text128', - 'uri' => 'text255?', - ), - self::CONFIG_KEY_SCHEMA => array( - 'key_phid' => null, - 'phid' => array( - 'columns' => array('phid'), - 'unique' => true, - ), - 'email' => array( - 'columns' => array('email'), - 'unique' => true, - ), - 'name' => array( - 'columns' => array('name'), - 'unique' => true, - ), - ), - ) + parent::getConfiguration(); - } - - -/* -( PhabricatorPolicyInterface )----------------------------------------- */ - - - public function getCapabilities() { - return array( - PhabricatorPolicyCapability::CAN_VIEW, - ); - } - - public function getPolicy($capability) { - return PhabricatorPolicies::getMostOpenPolicy(); - } - - public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { - return false; - } - - public function describeAutomaticCapability($capability) { - return null; - } - - -/* -( PhabricatorDestructibleInterface )----------------------------------- */ - - - public function destroyObjectPermanently( - PhabricatorDestructionEngine $engine) { - - $this->openTransaction(); - $this->delete(); - $this->saveTransaction(); - } - -} diff --git a/src/applications/mailinglists/typeahead/PhabricatorMailingListDatasource.php b/src/applications/mailinglists/typeahead/PhabricatorMailingListDatasource.php deleted file mode 100644 --- a/src/applications/mailinglists/typeahead/PhabricatorMailingListDatasource.php +++ /dev/null @@ -1,39 +0,0 @@ -getViewer(); - $raw_query = $this->getRawQuery(); - - $query = id(new PhabricatorMailingListQuery()); - $lists = $this->executeQuery($query); - - $results = array(); - foreach ($lists as $list) { - $results[] = id(new PhabricatorTypeaheadResult()) - ->setName($list->getName()) - ->setURI($list->getURI()) - ->setPHID($list->getPHID()); - } - - // TODO: It would be slightly preferable to do this as part of the query, - // this is just simpler for the moment. - - return $this->filterResultsAgainstTokens($results); - } - -} diff --git a/src/applications/metamta/query/PhabricatorMetaMTAActorQuery.php b/src/applications/metamta/query/PhabricatorMetaMTAActorQuery.php --- a/src/applications/metamta/query/PhabricatorMetaMTAActorQuery.php +++ b/src/applications/metamta/query/PhabricatorMetaMTAActorQuery.php @@ -39,9 +39,6 @@ case PhabricatorPeopleExternalPHIDType::TYPECONST: $this->loadExternalUserActors($actors, $phids); break; - case PhabricatorMailingListListPHIDType::TYPECONST: - $this->loadMailingListActors($actors, $phids); - break; default: $this->loadUnknownActors($actors, $phids); break; @@ -124,28 +121,6 @@ } } - private function loadMailingListActors(array $actors, array $phids) { - assert_instances_of($actors, 'PhabricatorMetaMTAActor'); - - $lists = id(new PhabricatorMailingListQuery()) - ->setViewer($this->getViewer()) - ->withPHIDs($phids) - ->execute(); - $lists = mpull($lists, null, 'getPHID'); - - foreach ($phids as $phid) { - $actor = $actors[$phid]; - - $list = idx($lists, $phid); - if (!$list) { - $actor->setUndeliverable(PhabricatorMetaMTAActor::REASON_UNLOADABLE); - continue; - } - - $actor->setName($list->getName()); - $actor->setEmailAddress($list->getEmail()); - } - } private function loadUnknownActors(array $actors, array $phids) { foreach ($phids as $phid) { diff --git a/src/applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php b/src/applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php --- a/src/applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php +++ b/src/applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php @@ -100,13 +100,7 @@ } $users = id(new PhabricatorUserEmail()) ->loadAllWhere('address IN (%Ls)', $addresses); - $user_phids = mpull($users, 'getUserPHID'); - - $mailing_lists = id(new PhabricatorMetaMTAMailingList()) - ->loadAllWhere('email in (%Ls)', $addresses); - $mailing_list_phids = mpull($mailing_lists, 'getPHID'); - - return array_merge($user_phids, $mailing_list_phids); + return mpull($users, 'getUserPHID'); } public function processReceivedMail() { diff --git a/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableDatasource.php b/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableDatasource.php --- a/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableDatasource.php +++ b/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableDatasource.php @@ -19,7 +19,6 @@ return array( new PhabricatorPeopleDatasource(), new PhabricatorProjectDatasource(), - new PhabricatorMailingListDatasource(), ); } diff --git a/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableFunctionDatasource.php b/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableFunctionDatasource.php --- a/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableFunctionDatasource.php +++ b/src/applications/metamta/typeahead/PhabricatorMetaMTAMailableFunctionDatasource.php @@ -21,7 +21,6 @@ new PhabricatorPeopleDatasource(), new PhabricatorProjectMembersDatasource(), new PhabricatorProjectDatasource(), - new PhabricatorMailingListDatasource(), ); } diff --git a/src/applications/phid/query/PhabricatorObjectListQuery.php b/src/applications/phid/query/PhabricatorObjectListQuery.php --- a/src/applications/phid/query/PhabricatorObjectListQuery.php +++ b/src/applications/phid/query/PhabricatorObjectListQuery.php @@ -143,27 +143,6 @@ } } - $mailing_list_app = PhabricatorApplication::getByClass( - 'PhabricatorMailingListsApplication'); - if ($mailing_list_app->isInstalled()) { - if ($names) { - // We still haven't been able to resolve everything; try mailing lists - // by name as a last resort. - $lists = id(new PhabricatorMailingListQuery()) - ->setViewer($this->getViewer()) - ->withNames($names) - ->execute(); - - $lists = mpull($lists, null, 'getName'); - foreach ($names as $key => $name) { - if (isset($lists[$name])) { - $results[$name] = $lists[$name]; - unset($names[$key]); - } - } - } - } - return $results; } diff --git a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php --- a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php +++ b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php @@ -484,7 +484,6 @@ $key, array( PhabricatorProjectProjectPHIDType::TYPECONST, - PhabricatorMailingListListPHIDType::TYPECONST, )); } diff --git a/src/docs/book/phabricator.book b/src/docs/book/phabricator.book --- a/src/docs/book/phabricator.book +++ b/src/docs/book/phabricator.book @@ -137,10 +137,6 @@ "name": "Macro", "include": "(^src/applications/macro/)" }, - "mailinglists": { - "name": "Mailing Lists", - "include": "(^src/applications/mailinglists/)" - }, "maniphest": { "name": "Maniphest", "include": "(^src/applications/maniphest/)"