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); }
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!'); } }