Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

sms.inc.php

Go to the documentation of this file.
00001 <?
00013 class SMS
00014 {
00018     public $toNumber = null;
00019 
00023     public $fromNumber = null;
00024 
00028     public $providers;
00029 
00035     public function __construct()
00036     { 
00037         $this->providers = array(
00038             'alltel' => new EmailSMSProvider('Cingular', '###@message.alltel.com'),
00039             'cingular' => new EmailSMSProvider('Cingular', '###@cingularME.com'),
00040             'nextel' => new EmailSMSProvider('Nextel', '###@messaging.nextel.com'),
00041             'sprint' => new EmailSMSProvider('Sprint', '###@messaging.sprintpcs.com'),
00042             'tmobile' => new EmailSMSProvider('T-Mobile', '###@@tmomail.net'),
00043             'uscellular' => new EmailSMSProvider('US Cellular', '###@email.uscc.net'),
00044             'verizon' => new EmailSMSProvider('Verizon', '###@vtext.com'),
00045             'virgin' => new EmailSMSProvider('Virgin Mobile', '###@vmobl.com'),
00046         );
00047 
00048         //services we need to test...
00049         //alltel
00050         //nextel
00051         //sprint
00052         //tmobile
00053         //virgin-mobile
00054     }
00055 
00062     public function setTo($number, $provider)
00063     {
00064         $this->toNumber = $this->getProvider($number, $provider);
00065     }
00066 
00073     public function setFrom($number, $provider)
00074     {
00075         $this->fromNumber = $this->getProvider($number, $provider);
00076     }
00077 
00084     public function send($message, $from = null)
00085     {
00086         //did we get a from?
00087         if ($from === null && $this->FromNumber instanceOf SMSProvider)
00088             $from = $this->fromNumber->getEmail();
00089 
00090         //if its still blank... set our default!
00091         if ($from == '')
00092         {
00093             if (Config::get('sms_from_email'))
00094                 $from = Config::get('sms_from_email');
00095             else if (Config::get('mailer_from'))
00096                 $from = Config::get('mailer_from');
00097             else
00098                 throw new Exception("Undefined from email.");
00099         }
00100             
00101         //send it off!
00102         $this->toNumber->send($message, $from);
00103     }
00104 
00111     public function getProvider($number, $provider)
00112     {
00113         if ($this->providers[$provider] instanceOf SMSProvider)
00114         {
00115             $provider = $this->providers[$provider];
00116             $provider->prepNumber($number);
00117             
00118             return $provider;
00119         }
00120         else
00121             throw new Exception("Provider '$provider' not found.");
00122     }
00123 }
00124 
00128 abstract class SMSProvider
00129 {
00133     public $name;
00134 
00138     public $number;
00139     
00145     public function __construct($name)
00146     {
00147         $this->name = $name;
00148     }
00149 
00156     public static function formatNumber($number)
00157     {
00158         return preg_replace("/[^0-9]*/", "", $number);
00159     }
00160 
00166     public function prepNumber($number)
00167     {
00168         //format number..
00169         $number = self::formatNumber($number);
00170         
00171         //save
00172         $this->number = $number;
00173     }
00174 
00181     abstract public function send($message, $from);
00182 }
00183 
00189 class EmailSMSProvider extends SMSProvider
00190 {
00194     private $email;
00195     
00202     public function __construct($name, $email)
00203     {
00204         parent::__construct($name);
00205 
00206         $this->email = $email;
00207     }
00208 
00214     public function getEmail()
00215     {
00216         return str_replace("###", $this->number, $this->email);
00217     }
00218 
00225     public function send($message, $from)
00226     {
00227         //put our number in.
00228         $email = $this->getEmail();
00229         
00230         //where does it go?
00231         Mail::send($email, '', $message, '', $from);
00232     }
00233 }
00234 
00236 ?>

Generated on Fri Oct 27 12:26:40 2006 for BaseJumper by doxygen 1.3.9.1