Файл: sys/fnc/links.php
Строк: 79
<?php
function img_preg($arr) {
if (function_exists('set_time_limit')) {
@set_time_limit(60);
}
$ext = substr($arr[1], -3);
$myhost = md5($arr[1]) . '.' . $ext;
$nonpic = "/style/icons/img_null.png";
$ext_valid = array('jpg', 'jpeg', 'png', 'gif');
if (is_file(H . 'sys/cache/images/' . $myhost)) {
return '<a href="http://' . $_SERVER['HTTP_HOST'] . '/linkGo?go=' . base64_encode(html_entity_decode($arr[1])) . '">
<img src="/sys/cache/images/' . $myhost . '" alt="' . $_SERVER['HTTP_HOST'] . '-image" />
</a>';
} elseif (in_array($ext, $ext_valid) && getDomain('http://' . $_SERVER['HTTP_HOST']) !== getDomain($arr[1])) {
$ext = substr($arr[1], -3);
$myhost = md5($arr[1]) . '.' . $ext;
$locale = H . 'sys/tmp/' . $myhost;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $arr[1]);
$fp = fopen($locale, "w+");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_REFERER, $arr[1]);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {
unlink($locale); // удаляем ненужный файл
// делаем что-то ещё (пишем адрес в лог, выводим ошибку, etc...)
}
curl_close($ch);
fclose($fp);
require_once H . "sys/classes/ImgType.class.php";
if (is_file(H . 'sys/tmp/' . $myhost) && filesize(H . 'sys/tmp/' . $myhost) !== 0) {
$image = new ImgType();
$image->load(H . 'sys/tmp/' . $myhost);
$image->resizeToWidth(128);
$image->save(H . 'sys/cache/images/' . $myhost);
}
return '
<a href="http://' . $_SERVER['HTTP_HOST'] . '/linkGo?go=' . base64_encode(html_entity_decode($arr[1])) . '">
<img src="/sys/cache/images/' . $myhost . '" alt="' . $_SERVER['HTTP_HOST'] . '-image" />
</a>';
} else
return '<img src="' . $nonpic . '" width="128" height="128" />';
}
function getDomain($domain) {
preg_match('~^(?:http://)?([^/]+)~i', $domain, $matches);
$host = isset($matches[1]) ? $matches[1] : false;
preg_match('/[^.]+.[^.]+$/', $host, $matches);
return isset($matches[0]) ? $matches[0] : false;
}
function links_preg1($arr) {
global $set;
#-----------------------------------------------------#
$arr[1] = str_replace(PHP_EOL, '', $arr[1]);
if (preg_match('~^ *(javascript|data)~i', $arr[1]))
return '#error JavaScript';
#-----------------------------------------------------#
$LinkRe = str_replace(array('http://', 'www.', 'https://'), null, $arr[2]);
if (preg_match('#^http://' . preg_quote($_SERVER['HTTP_HOST']) . '#', $arr[1]) || !preg_match('#://#', $arr[1])) {
return '<a class="link_bb_2" href="' . $arr[1] . '">' . $LinkRe . '</a>';
} else {
return '<a' . ($set['web'] ? ' target="_blank"' : null) . ' class="link_bb" href="http://' . $_SERVER['HTTP_HOST'] . '/linkGo?go=' . base64_encode(html_entity_decode($arr[1])) . '">' . $LinkRe . '</a>';
}
}
function links_preg2($arr) {
global $set;
//не увеерн что это тут нужно
#-----------------------------------------------------#
$arr[1] = str_replace(PHP_EOL, '', $arr[1]);
if (preg_match('~^ *(javascript|data)~i', $arr[1])) {
return '#error JavaScript';
}
#-----------------------------------------------------#
$LinkRe = str_replace(array('http://', 'www.', 'https://'), null, "Ссылка");
if (preg_match('#^http://' . preg_quote($_SERVER['HTTP_HOST']) . '#', $arr[2])) {
return $arr[1] . '<a class="link_bb_2" href="' . $arr[2] . '">' . $LinkRe . '</a>' . $arr[4];
} else {
return $arr[1] . '<a' . ($set['web'] ? ' target="_blank"' : null) . ' class="link_bb" href="http://' . $_SERVER['HTTP_HOST'] . '/linkGo?go=' . base64_encode(html_entity_decode($arr[2])) . '">' . $LinkRe . '</a>' . $arr[4];
}
}
function links($msg) {
global $set;
if ($set['bb_img']) {
$msg = preg_replace_callback('/[img](.+)[/img]/isU', 'img_preg', $msg);
}
if ($set['bb_url']) {
$msg = preg_replace_callback('/[url=(.+)](.+)[/url]/isU', 'links_preg1', $msg);
}
if ($set['bb_http']) {
$msg = preg_replace_callback('~(^|s)([a-z]+://([^ rnt`'"]+))(s|$)~iu', 'links_preg2', $msg);
}
return $msg;
}