public function save()
 {
     if ($this->getID()) {
         return parent::save();
     }
     // NOTE: When mail is sent from CLI scripts that run tasks in-process, we
     // may re-enter this method from within scheduleTask(). The implementation
     // is intended to avoid anything awkward if we end up reentering this
     // method.
     $this->openTransaction();
     // Save to generate a mail ID and PHID.
     $result = parent::save();
     // Write the recipient edges.
     $editor = new PhabricatorEdgeEditor();
     $edge_type = PhabricatorMetaMTAMailHasRecipientEdgeType::EDGECONST;
     $recipient_phids = array_merge($this->getToPHIDs(), $this->getCcPHIDs());
     $expanded_phids = $this->expandRecipients($recipient_phids);
     $all_phids = array_unique(array_merge($recipient_phids, $expanded_phids));
     foreach ($all_phids as $curr_phid) {
         $editor->addEdge($this->getPHID(), $edge_type, $curr_phid);
     }
     $editor->save();
     // Queue a task to send this mail.
     $mailer_task = PhabricatorWorker::scheduleTask('PhabricatorMetaMTAWorker', $this->getID(), array('priority' => PhabricatorWorker::PRIORITY_ALERTS));
     $this->saveTransaction();
     return $result;
 }
Пример #2
0
 public function save()
 {
     if ($this->getID()) {
         return parent::save();
     }
     // NOTE: When mail is sent from CLI scripts that run tasks in-process, we
     // may re-enter this method from within scheduleTask(). The implementation
     // is intended to avoid anything awkward if we end up reentering this
     // method.
     $this->openTransaction();
     // Save to generate a task ID.
     $result = parent::save();
     // Queue a task to send this mail.
     $mailer_task = PhabricatorWorker::scheduleTask('PhabricatorMetaMTAWorker', $this->getID(), PhabricatorWorker::PRIORITY_ALERTS);
     $this->saveTransaction();
     return $result;
 }