[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorSMSSendWorker 4 extends PhabricatorSMSWorker { 5 6 public function getMaximumRetryCount() { 7 return PhabricatorSMS::MAXIMUM_SEND_TRIES; 8 } 9 10 public function getWaitBeforeRetry(PhabricatorWorkerTask $task) { 11 return phutil_units('1 minute in seconds'); 12 } 13 14 public function doWork() { 15 $viewer = PhabricatorUser::getOmnipotentUser(); 16 17 $task_data = $this->getTaskData(); 18 19 $sms = id(new PhabricatorSMS()) 20 ->loadOneWhere('id = %d', $task_data['smsID']); 21 22 if (!$sms) { 23 throw new PhabricatorWorkerPermanentFailureException( 24 pht('SMS object was not found.')); 25 } 26 27 // this has the potential to be updated asynchronously 28 if ($sms->getSendStatus() == PhabricatorSMS::STATUS_SENT) { 29 return; 30 } 31 32 $adapter = PhabricatorEnv::getEnvConfig('sms.default-adapter'); 33 $adapter = newv($adapter, array()); 34 if ($sms->hasBeenSentAtLeastOnce()) { 35 $up_to_date_status = $adapter->pollSMSSentStatus($sms); 36 if ($up_to_date_status) { 37 $sms->setSendStatus($up_to_date_status); 38 if ($up_to_date_status == PhabricatorSMS::STATUS_SENT) { 39 $sms->save(); 40 return; 41 } 42 } 43 // TODO - re-jigger this so we can try if appropos (e.g. rate limiting) 44 return; 45 } 46 47 $from_number = PhabricatorEnv::getEnvConfig('sms.default-sender'); 48 // always set the from number if we get this far in case of configuration 49 // changes. 50 $sms->setFromNumber($from_number); 51 52 $adapter->setTo($sms->getToNumber()); 53 $adapter->setFrom($sms->getFromNumber()); 54 $adapter->setBody($sms->getBody()); 55 // give the provider name the same treatment as phone number 56 $sms->setProviderShortName($adapter->getProviderShortName()); 57 58 try { 59 $result = $adapter->send(); 60 list($sms_id, $sent_status) = $adapter->getSMSDataFromResult($result); 61 } catch (PhabricatorWorkerPermanentFailureException $e) { 62 $sms->setSendStatus(PhabricatorSMS::STATUS_FAILED_PERMANENTLY); 63 $sms->save(); 64 throw $e; 65 } catch (Exception $e) { 66 $sms->setSendStatus(PhabricatorSMS::STATUS_FAILED_PERMANENTLY); 67 $sms->save(); 68 throw new PhabricatorWorkerPermanentFailureException( 69 $e->getMessage()); 70 } 71 $sms->setProviderSMSID($sms_id); 72 $sms->setSendStatus($sent_status); 73 $sms->save(); 74 } 75 76 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |