protected function getDefaultPrivateReplyHandlerEmailAddress(PhabricatorObjectHandle $handle, $prefix)
 {
     if ($handle->getType() != PhabricatorPHIDConstants::PHID_TYPE_USER) {
         // You must be a real user to get a private reply handler address.
         return null;
     }
     $receiver = $this->getMailReceiver();
     $receiver_id = $receiver->getID();
     $user_id = $handle->getAlternateID();
     $hash = PhabricatorMetaMTAReceivedMail::computeMailHash($receiver->getMailKey(), $handle->getPHID());
     $domain = $this->getReplyHandlerDomain();
     $address = "{$prefix}{$receiver_id}+{$user_id}+{$hash}@{$domain}";
     return $this->getSingleReplyHandlerPrefix($address);
 }
 private function validateHandle(PhabricatorObjectHandle $handle)
 {
     switch ($this->filter) {
         case 'active':
         case 'user':
         case 'author':
             if ($handle->getType() !== PhabricatorPHIDConstants::PHID_TYPE_USER) {
                 throw new Exception("PHID must be a user PHID!");
             }
             break;
         case 'package':
         case 'packagecommits':
             if ($handle->getType() !== PhabricatorPHIDConstants::PHID_TYPE_OPKG) {
                 throw new Exception("PHID must be a package PHID!");
             }
             break;
         case 'project':
             if ($handle->getType() !== PhabricatorPHIDConstants::PHID_TYPE_PROJ) {
                 throw new Exception("PHID must be a project PHID!");
             }
             break;
         case 'audits':
         case 'commits':
             break;
         default:
             throw new Exception("Unknown filter '{$this->filter}'!");
     }
 }
 protected function getDefaultPrivateReplyHandlerEmailAddress(PhabricatorObjectHandle $handle, $prefix)
 {
     if ($handle->getType() != PhabricatorPeopleUserPHIDType::TYPECONST) {
         // You must be a real user to get a private reply handler address.
         return null;
     }
     $user = id(new PhabricatorPeopleQuery())->setViewer(PhabricatorUser::getOmnipotentUser())->withPHIDs(array($handle->getPHID()))->executeOne();
     if (!$user) {
         // This may happen if a user was subscribed to something, and was then
         // deleted.
         return null;
     }
     $receiver = $this->getMailReceiver();
     $receiver_id = $receiver->getID();
     $user_id = $user->getID();
     $hash = PhabricatorObjectMailReceiver::computeMailHash($receiver->getMailKey(), $handle->getPHID());
     $domain = $this->getReplyHandlerDomain();
     $address = "{$prefix}{$receiver_id}+{$user_id}+{$hash}@{$domain}";
     return $this->getSingleReplyHandlerPrefix($address);
 }
 protected function buildHandleInformationDictionary(PhabricatorObjectHandle $handle)
 {
     return array('phid' => $handle->getPHID(), 'uri' => PhabricatorEnv::getProductionURI($handle->getURI()), 'typeName' => $handle->getTypeName(), 'type' => $handle->getType(), 'name' => $handle->getName(), 'fullName' => $handle->getFullName(), 'status' => $handle->getStatus());
 }