Page MenuHomePhabricator

D12247.diff
No OneTemporary

D12247.diff

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
@@ -2550,6 +2550,7 @@
'PhabricatorSubscriptionsEditController' => 'applications/subscriptions/controller/PhabricatorSubscriptionsEditController.php',
'PhabricatorSubscriptionsEditor' => 'applications/subscriptions/editor/PhabricatorSubscriptionsEditor.php',
'PhabricatorSubscriptionsListController' => 'applications/subscriptions/controller/PhabricatorSubscriptionsListController.php',
+ 'PhabricatorSubscriptionsSubscribeEmailCommand' => 'applications/subscriptions/command/PhabricatorSubscriptionsSubscribeEmailCommand.php',
'PhabricatorSubscriptionsTransactionController' => 'applications/subscriptions/controller/PhabricatorSubscriptionsTransactionController.php',
'PhabricatorSubscriptionsUIEventListener' => 'applications/subscriptions/events/PhabricatorSubscriptionsUIEventListener.php',
'PhabricatorSubscriptionsUnsubscribeEmailCommand' => 'applications/subscriptions/command/PhabricatorSubscriptionsUnsubscribeEmailCommand.php',
@@ -5937,6 +5938,7 @@
'PhabricatorSubscriptionsEditController' => 'PhabricatorController',
'PhabricatorSubscriptionsEditor' => 'PhabricatorEditor',
'PhabricatorSubscriptionsListController' => 'PhabricatorController',
+ 'PhabricatorSubscriptionsSubscribeEmailCommand' => 'MetaMTAEmailTransactionCommand',
'PhabricatorSubscriptionsTransactionController' => 'PhabricatorController',
'PhabricatorSubscriptionsUIEventListener' => 'PhabricatorEventListener',
'PhabricatorSubscriptionsUnsubscribeEmailCommand' => 'MetaMTAEmailTransactionCommand',
diff --git a/src/applications/subscriptions/command/PhabricatorSubscriptionsSubscribeEmailCommand.php b/src/applications/subscriptions/command/PhabricatorSubscriptionsSubscribeEmailCommand.php
new file mode 100644
--- /dev/null
+++ b/src/applications/subscriptions/command/PhabricatorSubscriptionsSubscribeEmailCommand.php
@@ -0,0 +1,74 @@
+<?php
+
+final class PhabricatorSubscriptionsSubscribeEmailCommand
+ extends MetaMTAEmailTransactionCommand {
+
+ public function getCommand() {
+ return 'subscribe';
+ }
+
+ public function getCommandSyntax() {
+ return '**!subscribe** //username #project ...//';
+ }
+
+ public function getCommandSummary() {
+ return pht('Add users or projects as subscribers.');
+ }
+
+ public function getCommandDescription() {
+ return pht(
+ 'Add one or more subscribers to the object. You can add users '.
+ 'by providing their usernames, or add projects by adding their '.
+ 'hashtags. For example, use `!subscribe alincoln #ios` to add the '.
+ 'user `alincoln` and the project with hashtag `#ios` as subscribers.'.
+ "\n\n".
+ 'Subscribers which are invalid or unrecognized will be ignored. This '.
+ 'command has no effect if you do not specify any subscribers.'.
+ "\n\n".
+ 'Users who are CC\'d on the email itself are also automatically '.
+ 'subscribed if Phabricator knows which accounts are linked to their '.
+ 'email addresses.');
+ }
+
+ public function getCommandAliases() {
+ return array(
+ 'cc',
+ );
+ }
+
+ public function isCommandSupportedForObject(
+ PhabricatorApplicationTransactionInterface $object) {
+ return ($object instanceof PhabricatorSubscribableInterface);
+ }
+
+ public function buildTransactions(
+ PhabricatorUser $viewer,
+ PhabricatorApplicationTransactionInterface $object,
+ PhabricatorMetaMTAReceivedMail $mail,
+ $command,
+ array $argv) {
+
+ $subscriber_phids = id(new PhabricatorObjectListQuery())
+ ->setViewer($viewer)
+ ->setAllowedTypes(
+ array(
+ PhabricatorPeopleUserPHIDType::TYPECONST,
+ PhabricatorProjectProjectPHIDType::TYPECONST,
+ ))
+ ->setObjectList(implode(' ', $argv))
+ ->setAllowPartialResults(true)
+ ->execute();
+
+ $xactions = array();
+
+ $xactions[] = $object->getApplicationTransactionTemplate()
+ ->setTransactionType(PhabricatorTransactions::TYPE_SUBSCRIBERS)
+ ->setNewValue(
+ array(
+ '+' => array_fuse($subscriber_phids),
+ ));
+
+ return $xactions;
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Fri, Dec 20, 10:49 PM (16 h, 19 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6912179
Default Alt Text
D12247.diff (4 KB)

Event Timeline