Podmiana linku
$msg = 'losowałem losowo losowy ciąg znaków i podałem linka www.amxx.pl który nie będzie podmieniany ale podałem też link z innej strony www.google.pl który ma być zmieniony na redirectora, a reszta tekstu ma być nie tknięta';
if(preg_match_all('#((https?|ftp|file)://)?([a-zA-Z0-9\.\-]{1,})\.([a-zA-Z0-9]{1,6})(\:[0-9]{1,})?(\S{1,})?#si', $msg, $links)) {
$links = $links[0];
$linksToReplace = array();
foreach($links as $link) {
if(substr($link, 7, 9) != 'www.amxx.pl')
$linksToReplace[$link] = 'http://amxx.pl/redirect.php?u='.base64_encode($link);
}
if(count($linksToReplace) > 0)
$msg = strtr($msg, $linksToReplace);
}
Dodawanie i formatowanie wiadomości
public function addText($text, $formatBits=FORMAT_NONE, $R=0, $G=0, $B=0)
{
if ($formatBits & FORMAT_NEW_LINE)
$text.="\r\n";
$text=str_replace("\r\r", "\r", str_replace("\n", "\r\n", $text));
$html=str_replace("\r\n", '<br>', htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'));
if ($this->format!==NULL) {
$this->format.=pack(
'vC',
mb_strlen($this->text, 'UTF-8'),
(($formatBits & FORMAT_BOLD_TEXT)) |
(($formatBits & FORMAT_ITALIC_TEXT)) |
(($formatBits & FORMAT_UNDERLINE_TEXT)) |
((1 || $R!=$this->R || $G!=$this->G || $B!=$this->B) * 0x08)
);
$this->format.=pack('CCC', $R, $G, $B);
$this->R=$R;
$this->G=$G;
$this->B=$B;
$this->text.=$text;
}
if ($R || $G || $B) $html='<span style="color:#'.str_pad(dechex($R), 2, '0', STR_PAD_LEFT).str_pad(dechex($G), 2, '0', STR_PAD_LEFT).str_pad(dechex($B), 2, '0', STR_PAD_LEFT).';">'.$html.'</span>';
if ($formatBits & FORMAT_BOLD_TEXT) $html='<b>'.$html.'</b>';
if ($formatBits & FORMAT_ITALIC_TEXT) $html='<i>'.$html.'</i>';
if ($formatBits & FORMAT_UNDERLINE_TEXT) $html='<u>'.$html.'</u>';
$this->html.=$html;
return $this;
}
public function addBBcode($bbcode)
{
$tagsLength=0;
$heap=array();
$start=0;
$bbcode=str_replace('[br]', "\n", $bbcode);
while (preg_match('/\[(\/)?(b|i|u|color)(=#?[0-9a-fA-F]{6})?\]/', $bbcode, $out, PREG_OFFSET_CAPTURE, $start)) {
$s=substr($bbcode, $start, $out[0][1]-$start);
$c=array(0, 0, 0);
if (strlen($s)) {
$flags=0;
$c=array(0, 0, 0);
foreach ($heap as $h) {
switch ($h[0]) {
case 'b': { $flags|=0x01; break; }
case 'i': { $flags|=0x02; break; }
case 'u': { $flags|=0x04; break; }
case 'color': { $c=$h[1]; break; }
}
}
$this->addText($s, $flags, $c[0], $c[1], $c[2]);
}
$start=$out[0][1]+strlen($out[0][0]);
if ($out[1][0]=='') {
switch ($out[2][0]) {
case 'b':
case 'i':
case 'u': {
array_push($heap, array($out[2][0]));
break;
}
case 'color': {
$c=hexdec(substr($out[3][0], -6, 6));
$c=array(
($c >> 16) & 0xFF,
($c >> 8) & 0xFF,
($c >> 0) & 0xFF
);
array_push($heap, array('color', $c));
break;
}
}
$tagsLength+=strlen($out[0][0]);
} else {
array_pop($heap);
$tagsLength+=strlen($out[0][0]);
}
}
$s=substr($bbcode, $start);
if (strlen($s))
$this->addText($s);
return $this;
}
Wysyłanie wiadomości:
public function push($messages)
{
if (!$this->authorization->isAuthorized())
return false;
$count=0;
if (!is_array($messages))
$messages=array($messages);
$data=$this->authorization->getServerAndToken();
foreach ($messages as $message) {
$ch=$this->getSingleCurlHandle();
curl_setopt($ch, CURLOPT_URL, 'https://'.$data['server'].'/sendMessage/'.$this->gg);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'to='.join(',', $message->recipientNumbers).'&msg='.urlencode($message->getProtocolMessage()));
$r=curl_exec($ch);
$s=curl_getinfo($ch);
curl_close($ch);
$count+=(strpos($r, '<result><status>0</status></result>')!==false);
}
return $count;
}
Wiadomość nie jest wysyłana przez formularz tylko przez aplikację na shitdowsa