[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/metamta/controller/ -> PhabricatorMetaMTASendGridReceiveController.php (source)

   1  <?php
   2  
   3  final class PhabricatorMetaMTASendGridReceiveController
   4    extends PhabricatorMetaMTAController {
   5  
   6    public function shouldRequireLogin() {
   7      return false;
   8    }
   9  
  10    public function processRequest() {
  11  
  12      // No CSRF for SendGrid.
  13      $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
  14  
  15      $request = $this->getRequest();
  16      $user = $request->getUser();
  17  
  18      $raw_headers = $request->getStr('headers');
  19      $raw_headers = explode("\n", rtrim($raw_headers));
  20      $raw_dict = array();
  21      foreach (array_filter($raw_headers) as $header) {
  22        list($name, $value) = explode(':', $header, 2);
  23        $raw_dict[$name] = ltrim($value);
  24      }
  25  
  26      $headers = array(
  27        'to'      => $request->getStr('to'),
  28        'from'    => $request->getStr('from'),
  29        'subject' => $request->getStr('subject'),
  30      ) + $raw_dict;
  31  
  32      $received = new PhabricatorMetaMTAReceivedMail();
  33      $received->setHeaders($headers);
  34      $received->setBodies(array(
  35        'text' => $request->getStr('text'),
  36        'html' => $request->getStr('from'),
  37      ));
  38  
  39      $file_phids = array();
  40      foreach ($_FILES as $file_raw) {
  41        try {
  42          $file = PhabricatorFile::newFromPHPUpload(
  43            $file_raw,
  44            array(
  45              'authorPHID' => $user->getPHID(),
  46            ));
  47          $file_phids[] = $file->getPHID();
  48        } catch (Exception $ex) {
  49          phlog($ex);
  50        }
  51      }
  52      $received->setAttachments($file_phids);
  53      $received->save();
  54  
  55      $received->processReceivedMail();
  56  
  57      $response = new AphrontWebpageResponse();
  58      $response->setContent(pht("Got it! Thanks, SendGrid!\n"));
  59      return $response;
  60    }
  61  
  62  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1