Exemplo n.º 1
0
function drawtext($x, $y, $text, $r, $g, $b)
{
    global $m, $font;
    if (!$text) {
        return;
    }
    // remove special characters because we haven't got proper font
    // or something else. I don't know why, but we have a problem with
    // that characters on flash map.
    $text = clear_utf($text);
    $t = new SWFTextField(SWFTEXTFIELD_NOEDIT | SWFTEXTFIELD_NOSELECT);
    $t->setFont($font);
    $t->setHeight(8);
    $t->setColor($r, $g, $b);
    $t->addString($text);
    $i = $m->add($t);
    $i->moveTo($x, $y);
}
Exemplo n.º 2
0
 function SendSMS($number, $message, $messageid = 0)
 {
     $msg_len = mb_strlen($message);
     if (!$msg_len) {
         return trans('SMS message is empty!');
     }
     if (!empty($this->CONFIG['sms']['debug_phone'])) {
         $number = $this->CONFIG['sms']['debug_phone'];
     }
     $prefix = !empty($this->CONFIG['sms']['prefix']) ? $this->CONFIG['sms']['prefix'] : '';
     $number = preg_replace('/[^0-9]/', '', $number);
     $number = preg_replace('/^0+/', '', $number);
     // add prefix to the number if needed
     if ($prefix && substr($number, 0, strlen($prefix)) != $prefix) {
         $number = $prefix . $number;
     }
     // message ID must be unique
     if (!$messageid) {
         $messageid = '0.' . time();
     }
     $message = preg_replace("/\r/", "", $message);
     $data = array('number' => $number, 'message' => $message, 'messageid' => $messageid);
     // call external SMS handler(s)
     $data = $this->ExecHook('send_sms_before', $data);
     if ($data['abort']) {
         return $data['result'];
     }
     $number = $data['number'];
     $message = $data['message'];
     $messageid = $data['messageid'];
     if (empty($this->CONFIG['sms']['service'])) {
         return trans('SMS "service" not set!');
     } else {
         $service = $this->CONFIG['sms']['service'];
     }
     switch ($service) {
         case 'smscenter':
             if (!function_exists('curl_init')) {
                 return trans('Curl extension not loaded!');
             }
             if (empty($this->CONFIG['sms']['username'])) {
                 return trans('SMSCenter username not set!');
             }
             if (empty($this->CONFIG['sms']['password'])) {
                 return trans('SMSCenter username not set!');
             }
             if (empty($this->CONFIG['sms']['from'])) {
                 return trans('SMS "from" not set!');
             } else {
                 $from = $this->CONFIG['sms']['from'];
             }
             if ($msg_len < 160) {
                 $type_sms = 'sms';
             } else {
                 if ($msg_len <= 459) {
                     $type_sms = 'concat';
                 } else {
                     return trans('SMS Message too long!');
                 }
             }
             if (strlen($number) > 16 || strlen($number) < 4) {
                 return trans('Wrong phone number format!');
             }
             $type = !empty($this->CONFIG['sms']['smscenter_type']) ? $this->CONFIG['sms']['smscenter_type'] : 'dynamic';
             $message .= $type == 'static' ? "\n\n" . $from : '';
             $args = array('user' => $this->CONFIG['sms']['username'], 'pass' => $this->CONFIG['sms']['password'], 'type' => $type_sms, 'number' => $number, 'text' => $message, 'from' => $from);
             $encodedargs = array();
             foreach (array_keys($args) as $thiskey) {
                 array_push($encodedargs, urlencode($thiskey) . "=" . urlencode($args[$thiskey]));
             }
             $encodedargs = implode('&', $encodedargs);
             $curl = curl_init();
             curl_setopt($curl, CURLOPT_URL, 'http://api.statsms.net/send.php');
             curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
             curl_setopt($curl, CURLOPT_POST, 1);
             curl_setopt($curl, CURLOPT_POSTFIELDS, $encodedargs);
             curl_setopt($curl, CURLOPT_TIMEOUT, 10);
             $page = curl_exec($curl);
             if (curl_error($curl)) {
                 return 'SMS communication error. ' . curl_error($curl);
             }
             $info = curl_getinfo($curl);
             if ($info['http_code'] != '200') {
                 return 'SMS communication error. Http code: ' . $info['http_code'];
             }
             curl_close($curl);
             $smsc = explode(', ', $page);
             $smsc_result = array();
             foreach ($smsc as $element) {
                 $tmp = explode(': ', $element);
                 array_push($smsc_result, $tmp[1]);
             }
             switch ($smsc_result[0]) {
                 case '002':
                 case '003':
                 case '004':
                 case '008':
                 case '011':
                     return MSG_SENT;
                 case '001':
                     return 'Smscenter error 001, Incorrect login or password';
                 case '009':
                     return 'Smscenter error 009, GSM network error (probably wrong prefix number)';
                 case '012':
                     return 'Smscenter error 012, System error please contact smscenter administrator';
                 case '104':
                     return 'Smscenter error 104, Incorrect sender field or field empty';
                 case '201':
                     return 'Smscenter error 201, System error please contact smscenter administrator';
                 case '202':
                     return 'Smscenter error 202, Unsufficient funds on account to send this text';
                 case '204':
                     return 'Smscenter error 204, Account blocked';
                 default:
                     return 'Smscenter error ' . $smsc_result[0] . '. Please contact smscenter administrator';
             }
             break;
         case 'smstools':
             $dir = !empty($this->CONFIG['sms']['smstools_outdir']) ? $this->CONFIG['sms']['smstools_outdir'] : '/var/spool/sms/outgoing';
             if (!file_exists($dir)) {
                 return trans('SMSTools outgoing directory not exists ($a)!', $dir);
             }
             if (!is_writable($dir)) {
                 return trans('Unable to write to SMSTools outgoing directory ($a)!', $dir);
             }
             $filename = $dir . '/lms-' . $messageid . '-' . $number;
             $message = clear_utf($message);
             $file = sprintf("To: %s\n\n%s", $number, $message);
             if ($fp = fopen($filename, 'w')) {
                 fwrite($fp, $file);
                 fclose($fp);
             } else {
                 return trans('Unable to create file $a!', $filename);
             }
             return MSG_NEW;
             break;
         default:
             return trans('Unknown SMS service!');
     }
 }