Файл: system/inc/functions.php
Строк: 622
<?php
/**
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) 2013, Taras Chornyi, Sergiy Mazurenko, Ivan Kotliar
* @link http://perf-engine.net
* @package PerfEngine
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
function display_error($content)
{
echo "<div class="error">{$content}</div>n";
}
function redirect($link)
{
header('Location: '.$link);
exit;
}
function go($link)
{
redirect($link);
}
function dlext($ext)
{
if(preg_match('/gif|png|jpg|jpeg|bmp|ico|tiff/i', $ext))
{
return img('image.png');
}
elseif(preg_match('/mp3|mid|aac|midi|amr|wav|m4u/i', $ext))
{
return img('music.png');
}
elseif(preg_match('/mp4|avi|3gp|wmv/i', $ext))
{
return img('video.png');
}
elseif(preg_match('/apk|apt/i', $ext))
{
return img('android.png');
}
elseif(preg_match('/ipa|jar|jad|exe|deb|sis|sisx/i', $ext))
{
return img('application.png');
}
elseif(preg_match('/zip|rar|cab|tar|gz|bz|7z/i', $ext))
{
return img('box.png');
}
else
{
return img('topic.png');
}
}
function import_lib($lib_name)
{
if(file_exists(SYS.'/libs/'.$lib_name.'.php'))
{
require_once(SYS.'/libs/'.$lib_name.'.php');
}
else
{
echo 'Library <b>'.$lib_name.'</b> has not exists!';
return 0;
}
}
function rtime($var)
{
global $lang;
if ($var == NULL)
{
$var = time();
}
$real_time = date('d.m.Y '._t('time_in').' H:i', $var);
$date = date('d.m.Y', $var);
$time = date('H:i', $var);
if ($date == date('d.m.Y')) {
$real_time = date(''._t('today').' '._t('time_in').' H:i', $var);
}
if ($date == date('d.m.Y', time()-60*60*24)) {
$real_time = date(''._t('yesterday').' '._t('time_in').' H:i', $var);
}
return $real_time;
}
function birthday($var)
{
$birthday_timestamp = strtotime($var);
$age = date('Y') - date('Y', $birthday_timestamp);
if (date('md', $birthday_timestamp) > date('md')) {
$age--;
}
return $age;
}
function escape($var)
{
return input($var);
}
function input($var)
{
global $db;
return htmlspecialchars(substr($db->quote(trim($var)), 1, -1), ENT_QUOTES);
}
function output($var)
{
return smiles(bb_tags(nl2br($var)));
}
function num($var)
{
return abs(intval($var));
}
function crypto($var)
{
return md5(md5(base64_encode($var) . file_get_contents(SYS.'/ini/_password_salt.txt')));
}
function bb_tags($var)
{
global $system;
if($system['bb_b'] == 1) $var = preg_replace('/[b](.+)[/b]/isU', '<b>$1</b>', str_replace("]n", "]", $var));
if($system['bb_u'] == 1) $var = preg_replace('/[u](.+)[/u]/isU', '<span style="text-decoration:underline;">$1</span>', $var);
if($system['bb_s'] == 1) $var = preg_replace('/[s](.+)[/s]/isU', '<s>$1</s>', $var);
if($system['bb_i'] == 1) $var = preg_replace('/[i](.+)[/i]/isU', '<i>$1</i>', $var);
if($system['bb_big'] == 1) $var = preg_replace('/[big](.+)[/big]/isU', '<span style="font-size:large;">$1</span>', $var);
if($system['bb_small'] == 1) $var = preg_replace('/[small](.+)[/small]/isU', '<span style="font-size:small;">$1</span>', $var);
if($system['bb_red'] == 1) $var = preg_replace('/[red](.+)[/red]/isU', '<span style="color:#ff0000;">$1</span>', $var);
if($system['bb_yellow'] == 1) $var = preg_replace('/[yellow](.+)[/yellow]/isU', '<span style="color:#ffff22;">$1</span>', $var);
if($system['bb_green'] == 1) $var = preg_replace('/[green](.+)[/green]/isU', '<span style="color:#00bb00;">$1</span>', $var);
if($system['bb_blue'] == 1) $var = preg_replace('/[blue](.+)[/blue]/isU', '<span style="color:#0000bb;">$1</span>', $var);
if($system['bb_color'] == 1) $var = preg_replace('/[color=(.+)](.+)[/color]/isU', '<span style="color:$1;">$2</span>', $var);
if($system['bb_quote'] == 1) $var = preg_replace('/[quote](.+)[/quote]/isU', '<div class="quote">$1</div>', $var);
if($system['bb_size'] == 1) $var = preg_replace('/[size=([0-9]+)](.+)[/size]/isU', '<h$1 style="padding: 0px;">$2</h$1>', $var);
$var = preg_replace_callback('/[img]([0-9]+)[/img]/isU', 'pics_parser', $var);
$var = preg_replace_callback('/[file]([0-9]+)[/file]/isU', 'files_parser', $var);
$var = preg_replace_callback('/[code](.+)[/code]/isU', 'highlight_php', $var);
$var = preg_replace_callback("/[url=(https?://.+?)](.+?)[/url]|(https?://([a-zA-Zа-яА-Я0-9іїёґ./[]#;&_-)(:?=+]*))/iu", 'link_parser', $var);
$var = preg_replace('/([a-zA-Z0-9_-.]*)@([a-zA-Z0-9_-.]*).([a-z]*)b/i', '<a href="mailto:$1@$2.$3">$1@$2.$3</a>', $var);
return $var;
}
function highlight_php($source)
{
// print_r($source);
$php = strtr($source[1], array
(
'<br />' => '',
'\' => 'slash'
));
$php = html_entity_decode($php, ENT_QUOTES, 'UTF-8');
$php = stripslashes($php);
$php = str_replace("n", '', $php);
if(!strpos($php, "<?") && substr($php, 0, 2) != "<?")
{
$php = "<?phpn".trim($php)."n?>";
}
$code = trim($php);
$code = highlight_string($code, true);
$code = strtr($code, array (
'slash' => '\',
'[' => '[',
' ' => ' ',
));
if(substr($php, 0, 2) == "<?")
{
$code = preg_replace('/<?php<br />|?>/i', '<!--CODE-->', $code);
}
return '<pre><div class="code">'.$code.'</div></pre>';
}
function link_parser($linkInfo)
{
if(!$linkInfo[1])
{
return '<a target="_blank" href="'.$linkInfo[0].'">'.$linkInfo[0].'</a>';
}
else
{
return '<a target="_blank" href="'.$linkInfo[1].'">'.$linkInfo[2].'</a>';
}
}
function pics_parser($picInfo)
{
global $db;
if($picInfo[1] && is_numeric($picInfo[1]))
{
if($db->query("SELECT * FROM `albums_photo` WHERE `id` = '{$picInfo[1]}'")->rowCount() == 1)
{
$pic = $db->query("SELECT * FROM `albums_photo` WHERE `id` = '{$picInfo[1]}'")->fetch();
return '<a href="/albums/photo/'.$pic['id'].'"><img src="/cache/albums/thumbs/'.$pic['server_name'].'.jpg" alt="" /></a>';
}
else
{
return $picInfo[0];
}
}
else
{
return $picInfo[0];
}
}
function files_parser($fileInfo)
{
global $db;
if($fileInfo[1] && is_numeric($fileInfo[1]))
{
if($db->query("SELECT * FROM `downloads_files` WHERE `id` = '{$fileInfo[1]}'")->rowCount() == 1)
{
$file = $db->query("SELECT * FROM `downloads_files` WHERE `id` = '{$fileInfo[1]}'")->fetch();
return dlext($file['ext']).' <a href="/downloads/file/'.$file['id'].'">'. $file['name'].'.'.$file['ext'].'</a> ['.size($file['size']).']';
}
else
{
return $fileInfo[0];
}
}
else
{
return $fileInfo[0];
}
}
function smiles($var)
{
global $db;
$smiles = $db->query("SELECT * FROM `smiles` WHERE `type` = '1'");
while($sm = $smiles->fetch())
{
$var = str_replace($sm['smile'], '<img src="/files/smiles/'.$sm['id'].'.'.$sm['ext'].'" alt="'.$sm['smile'].'" />', $var);
}
return $var;
}
function browser_type()
{
$useragent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|msie|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|e-|e/|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(-|2|g)|yas-|your|zeto|zte-/i',substr($useragent,0,4)))
{
return 'wap';
}
else
{
return 'web';
}
}
function subtok($string,$chr,$pos,$len = NULL)
{
return implode($chr,array_slice(explode($chr,$string),$pos,$len));
}
function browser($agent)
{
if(empty($agent))
{
$agent = $_SERVER['HTTP_USER_AGENT'];
}
if (stripos($agent, 'Avant Browser') !== false)
{
return 'Avant Browser';
}
elseif (stripos($agent, 'Acoo Browser') !== false)
{
return 'Acoo Browser';
}
elseif (stripos($agent, 'MyIE2') !== false)
{
return 'MyIE2';
}
elseif (preg_match('|Iron/([0-9a-z.]*)|i', $agent, $pocket))
{
return 'SRWare Iron ' . subtok($pocket[1], '.', 0, 2);
}
elseif(preg_match('|OPR/([0-9a-z.]*)|i', $agent, $pocket))
{
return 'Opera ' . subtok($pocket[1], '.', 0, 3);
}
elseif (preg_match('|Chrome/([0-9a-z.]*)|i', $agent, $pocket))
{
return 'Chrome ' . subtok($pocket[1], '.', 0, 3);
}
elseif (preg_match('#(Maxthon|NetCaptor)( [0-9a-z.]*)?#i', $agent, $pocket))
{
return $pocket[1] . $pocket[2];
}
elseif (stripos($agent, 'Safari') !== false && preg_match('|Version/([0-9]{1,2}.[0-9]{1,2})|i', $agent, $pocket))
{
return 'Safari ' . subtok($pocket[1], '.', 0, 3);
}
elseif (preg_match('#(NetFront|K-Meleon|Netscape|Galeon|Epiphany|Konqueror|Safari|Opera Mini|Opera Mobile/Opera Mobi)/([0-9a-z.]*)#i', $agent, $pocket))
{
return $pocket[1] . ' ' . subtok($pocket[2], '.', 0, 2);
}
elseif (stripos($agent, 'Opera') !== false && preg_match('|Version/([0-9]{1,2}.[0-9]{1,2})|i', $agent, $pocket))
{
return 'Opera ' . $pocket[1];
}
elseif (preg_match('|Opera[/ ]([0-9a-z.]*)|i', $agent, $pocket))
{
return 'Opera ' . subtok($pocket[1], '.', 0, 2);
}
elseif (preg_match('|Orca/([ 0-9a-z.]*)|i', $agent, $pocket))
{
return 'Orca ' . subtok($pocket[1], '.', 0, 2);
}
elseif (preg_match('#(SeaMonkey|Firefox|GranParadiso|Minefield|Shiretoko)/([0-9a-z.]*)#i', $agent, $pocket))
{
return $pocket[1] . ' ' . subtok($pocket[2], '.', 0, 3);
}
elseif (preg_match('|rv:([0-9a-z.]*)|i', $agent, $pocket) && strpos($agent, 'Mozilla/') !== false)
{
return 'Mozilla ' . subtok($pocket[1], '.', 0, 2);
}
elseif (preg_match('|Lynx/([0-9a-z.]*)|i', $agent, $pocket))
{
return 'Lynx ' . subtok($pocket[1], '.', 0, 2);
}
elseif (preg_match('|MSIE ([0-9a-z.]*)|i', $agent, $pocket))
{
return 'IE ' . subtok($pocket[1], '.', 0, 2);
}
elseif (preg_match('|Googlebot/([0-9a-z.]*)|i', $agent, $pocket))
{
return 'Google Bot ' . subtok($pocket[1], '/', 0, 2);
}
elseif (preg_match('|Yandex|i', $agent))
{
return 'Yandex Bot ';
}
elseif (preg_match('|Nokia([0-9a-z.-_]*)|i', $agent, $pocket))
{
return 'Nokia '.$pocket[1];
}
else
{
$agent = preg_replace('|http://|i', '', $agent);
$agent = strtok($agent, '/ ');
$agent = substr($agent, 0, 22);
$agent = subtok($agent, '.', 0, 2);
if (!empty($agent))
{
return $agent;
}
}
return 'Unknown';
}
function img($name)
{
if(file_exists(Core::themePath().'/icons/'. $name))
{
return '<img src="'.Core::themeUrl().'/icons/'. $name .'" alt="Icon" /> ';
}
else
{
return '<img src="/template/icons/'. $name .'" alt="Icon" /> ';
}
}
function nick($user_id, $string = '', $no_pic = false)
{
$id = num($user_id);
global $db;
if($db->query("SELECT * FROM `users` WHERE `id` = '$id'")->rowCount() == 1)
{
$user = $db->query("SELECT * FROM `users` WHERE `id` = '$id'")->fetch();
if($no_pic == true)
{
return img('gender_'.$user['gender'].'.png').' <a href="/user/profile/'.$user['id'].'">'. (isset($user['color_nick']) ? '<span style="color: #'.$user['color_nick'].';">'. $user['nick'] .'</span>' : $user['nick']) .'</a> '.($user['time'] > (time()-300) ? img('on.png') : img('off.png')).($string != '' ? '<br/> '.$string : false);
}
else
{
return '<table cellpadding="0" cellspacing="0"><tr><td>'.avatar($user_id, true).'</td> <td> '.img('gender_'.$user['gender'].'.png').' <a href="/user/profile/'.$user['id'].'">'. (isset($user['color_nick']) ? '<span style="color: #'.$user['color_nick'].';">'. $user['nick'] .'</span>' : $user['nick']) .'</a> '. ($user['level'] >= 6 ? '<span style="color:#ff0000;">(Adm)</span>' : ($user['level'] > 2 && $user['level'] <= 5 ? '<span style="color: #22b14c;">(Mod)</span>' : null)) .' '.($user['time'] > (time()-300) ? img('on.png') : img('off.png')).($string != '' ? '<br/> '.$string : false).'</td></tr></table>';
}
}
else
{
return 'Non-exists';
}
}
function tnick($user_id)
{
global $db;
$user_id = abs(intval($user_id));
if($db->query("SELECT * FROM `users` WHERE `id` = '". $user_id ."'")->rowCount() == 1)
{
$us = $db->query("SELECT * FROM `users` WHERE `id` = '". $user_id ."'")->fetch();
return $us['nick'];
}
else
{
return '<a href="#top">Non-exists</a>';
}
}
function avatar($user_id, $mini = false)
{
$photo_id = num($user_id);
if(file_exists(ROOT.'/files/avatars/'.$photo_id.($mini == true ? '_mini' : null).'.jpg'))
{
return '<img src="/files/avatars/'.$photo_id.($mini == true ? '_mini' : null).'.jpg" alt="Photo" />';
}
else
{
return img('no_photo'.($mini == true ? '_mini' : null).'.jpg');
}
}
function cyrlat($string)
{
$var = strtr($string, array("Ґ" => "G", "Ё" => "YO", "Є" => "YE", "Ї" => "YI", "І" => "I",
"і" => "i", "ґ" => "g", "ё" => "yo", "є" => "ye",
"ї" => "yi", "А" => "A", "Б" => "B", "В" => "V", "Г" => "G",
"Д" => "D", "Е" => "E", "Ж" => "ZH", "З" => "Z", "И" => "I",
"Й" => "Y", "К" => "K", "Л" => "L", "М" => "M", "Н" => "N",
"О" => "O", "П" => "P", "Р" => "R", "С" => "S", "Т" => "T",
"У" => "U", "Ф" => "F", "Х" => "H", "Ц" => "TS", "Ч" => "CH",
"Ш" => "SH", "Щ" => "SCH", "Ъ" => "", "Ы" => "I", "Ь" => "",
"Э" => "E", "Ю" => "YU", "Я" => "YA", "а" => "a", "б" => "b",
"в" => "v", "г" => "g", "д" => "d", "е" => "e", "ж" => "zh",
"з" => "z", "и" => "i", "й" => "y", "к" => "k", "л" => "l",
"м" => "m", "н" => "n", "о" => "o", "п" => "p", "р" => "r",
"с" => "s", "т" => "t", "у" => "u", "ф" => "f", "х" => "h",
"ц" => "ts", "ч" => "ch", "ш" => "sh", "щ" => "sch", "ъ" => "",
"ы" => "i", "ь" => "", "э" => "e", "ю" => "yu", "я" => "ya",
" " => "_", "-" => "_"));
return $var;
}
function size($var)
{
if ($var >= 1073741824) return round($var/1073741824, 2) .' Gb';
else if ($var >= 1048576) return round($var/1048576, 2) .' Mb';
elseif($var >= 1024) return round($var/1024, 2) .' Kb';
else return round($var) .' b';
}
function user_level($user_id)
{
global $db, $lang;
$user_id = abs(intval($user_id));
if($db->query("SELECT * FROM `users` WHERE `id` = '$user_id'")->rowCount() == 1)
{
$level = $db->query("SELECT level FROM `users` WHERE `id` = '$user_id'")->fetchColumn();
if($level == 1)
{
return _t('usermod');
}
elseif($level == 2)
{
return _t('albumsmod');
}
elseif($level == 3)
{
return _t('forummod');
}
elseif($level == 4)
{
return _t('chatmod');
}
elseif($level == 5)
{
return _t('super_moder');
}
elseif($level == 6)
{
return _t('administrator');
}
elseif($level == 7)
{
return _t('super_admin');
}
else
{
return 'Undefined';
}
}
else
{
return 'User not exists';
}
}
function level($level)
{
global $lang;
if($level == 1)
{
return _t('usermod');;
}
elseif($level == 2)
{
return _t('albumsmod');
}
elseif($level == 3)
{
return _t('forummod');
}
elseif($level == 4)
{
return _t('chatmod');
}
elseif($level == 5)
{
return _t('super_moder');
}
elseif($level == 6)
{
return _t('administrator');
}
elseif($level == 7)
{
return _t('super_admin');
}
else
{
return 'Undefined';
}
}
function user_panel()
{
global $lang, $user;
return (isset($user) ? '<a href="/user/panel">'. _t('user_panel') .'</a>' : '<a href="/user/sign_in">'. _t('sign_in') .'</a> <a href="/user/sign_up">'. _t('sign_up') .'</a>') . ($user['level'] >= 6 ? ' <a href="/padmin/">'. _t('admin_panel').'</a>' : NULL);
}
function rrmdir($dir)
{
if (is_dir($dir))
{
$objects = scandir($dir);
foreach ($objects as $object)
{
if ($object != "." && $object != "..")
{
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
function textarea($rows = 5, $cols = 20, $content = '', $name = 'text', $data = array('id' => 'area'))
{
if(!User::logged()) return false;
echo '[<a href="/pages/tags">'._t('tags').'</a> | <a href="/pages/smiles">'._t('smiles').'</a> | <a href="/pages/rules">'._t('rules').'</a>]<br/>';
if(browser_type() == 'web'):
?>
<button type="button" onclick="bbTag('b');"><?=img('bb/bold.png')?></button>
<button type="button" onclick="bbTag('i');"><?=img('bb/italic.png')?></button>
<button type="button" onclick="bbTag('u');"><?=img('bb/underline.png')?></button>
<button type="button" onclick="bbUrl();"><?=img('bb/link.png')?></button>
<button type="button" onclick="bbTag('code');"><?=img('bb/php.png')?></button>
<br/>
<script type="text/javascript">
function tagPos(str)
{
return str.length;
}
function bbTag(tag)
{
var txtarea = document.getElementById('<?=$data['id'];?>');
if (txtarea.selectionStart == null)
{
var rng = document.selection.createRange();
// rng.setSelectionRange(tagPos('['+tag+']'), tagPos('['+tag+']'));
}
else
{
txtarea.value = txtarea.value.substring(0, txtarea.selectionStart) + "["+tag+"]" + txtarea.value.substring(txtarea.selectionStart, txtarea.selectionEnd) + "[/"+tag+"]" + txtarea.value.substring(txtarea.selectionEnd);
}
if(txtarea.setSelectionRange)
{
txtarea.focus();
txtarea.setSelectionRange(tagPos(txtarea.value+"["+tag+"]"), tagPos(txtarea.value+"["+tag+"]"));
}
else if(txtarea.createTextRange)
{
var range = txtarea.createTextRange();
range.collapse(true);
range.moveEnd(value, tagPos(txtarea.value+"["+tag+"]"));
range.moveStart(value, tagPos(txtarea.value+"["+tag+"]"));
//alert(range.moveStart('character', pos));
range.select();
}
}
function bbUrl()
{
var url = prompt('Enter Address', 'http://');
var txtarea = document.getElementById('<?=$data['id'];?>');
var value = txtarea.value+'[url='+url+']Link...[/url]';
if(url != null)
{
txtarea.value = value;
}
if(txtarea.setSelectionRange)
{
txtarea.focus();
txtarea.setSelectionRange(tagPos(txtarea.value+'[url='+url+']'), tagPos(txtarea.value+'[url='+url+']'));
}
else if(txtarea.createTextRange)
{
var range = txtarea.createTextRange();
range.collapse(true);
range.moveEnd(value, tagPos(txtarea.value+'[url='+url+']'));
range.moveStart(value, tagPos(txtarea.value+'[url='+url+']'));
//alert(range.moveStart('character', pos));
range.select();
}
}
</script>
<?php
endif;
echo '<textarea name="'.$name.'"'.(!empty($rows) ? ' rows="'.$rows.'"' : null).(!empty($cols) ? ' cols="'.$cols.'"' : null);
foreach($data as $key=>$value)
{
echo ' '.$key.'="'.$value.'"';
}
echo '>'.(!empty($content) ? $content : null).'</textarea>';
}
function antiflood($table, $row, $value, $time = 15, $params = array('time_row' => 'time', 'user_row' => 'user_id'))
{
global $db;
if($db->query("SELECT * FROM `".$table."` WHERE `".$params['time_row']."` > '". (time()-$time) ."' AND `".$row."` = '".$value."' AND `".$params['user_row']."` = '". User::Id() ."'")->rowCount() == 0)
{
return false;
}
else
{
return true;
}
}
function NotFound()
{
redirect('/pages/not_found');
}
function pagelink()
{
return URL.'/'.$_SERVER['REQUEST_URI'];
}
function CoreAlert()
{
if(isset($_SESSION['alert']))
{
echo '<div class="'.$_SESSION['alert']['type'].'">'.$_SESSION['alert']['value'].'</div>';
}
$_SESSION['alert'] = null;
}