'" . $ltime . "'"); $res = mysql_result($req, 0); return ($res > 0 ? ' +' . $res . '' : false); } /* ----------------------------------------------------------------- Счетчик Фотоальбомов / фотографий юзеров ----------------------------------------------------------------- */ function count_photo() { global $realtime, $set; $albumcount = mysql_result(mysql_query("SELECT COUNT(DISTINCT `user_id`) FROM `cms_album_files`"), 0); $photocount = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_album_files`"), 0); $newcount = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_album_files` WHERE `time` > '" . ($realtime - 259200). "' AND `access` > '1'"), 0); return $albumcount . ' / ' . $photocount . ($newcount ? ' / +' . $newcount . '' : ''); } /* ----------------------------------------------------------------- Отображение различных меню ----------------------------------------------------------------- $delimiter - разделитель между пунктами $end_space - выводится в конце ----------------------------------------------------------------- */ function display_menu($val = array(), $delimiter = ' | ', $end_space = '') { $out = ''; foreach ($val as $key => $menu) { if (empty($menu)) unset($val[$key]); } if (empty($val)) return false; //ksort($val); $last = array_pop($val); foreach ($val as $menu) { $out .= $menu . $delimiter; } return $out . $last . $end_space; } function date_fixed($timestamp) { global $realtime; $datestamp = date('d.m.Y в H:i',$timestamp); $today = date("d.m.Y",$realtime); $yestoday = date("d.m.Y",$realtime-24*3600); $datestamp = str_replace($today,"Сегодня",$datestamp); $datestamp = str_replace($yestoday,"Вчера",$datestamp); return $datestamp; } function dnews2() { //////////////////////////////////////////////////////////// // Дата последней новости // //////////////////////////////////////////////////////////// global $set_user; $req = mysql_query("SELECT `time` FROM `news2` ORDER BY `time` DESC LIMIT 1"); if (mysql_num_rows($req)) { $res = mysql_fetch_array($req); return date("H:i d.m.y", $res['time'] + $set_user['sdvig'] * 3600); } else { return false; } } function wch($id = 0, $st = 0) { //////////////////////////////////////////////////////////// // Статистика поситителей чата Мод k202(k_2) // //////////////////////////////////////////////////////////// // $id поситителей в определённой комнате // // $st=1 поситителей в прихожей чата // //////////////////////////////////////////////////////////// global $realtime; if ($id) $users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > '" . ($realtime - 300) . "' AND `place` = 'chat,$id'"), 0); elseif ($st == 1) $users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > '" . ($realtime - 300) . "' AND `place` = 'chat'"), 0); else $users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > '" . ($realtime - 300) . "' AND `place` LIKE 'chat%'"), 0); return ($users); } function fdn() { return mysql_result(mysql_query("SELECT COUNT(*) FROM `dnevniki` WHERE `dnid` = 'txt'"), 0); } function dn_new($par=0) { global $realtime; global $user_id; $old = $realtime - (3 * 24 * 3600); $total = mysql_result(mysql_query("SELECT COUNT(*) FROM `dnevniki` LEFT JOIN `dn_rdm` ON `dnevniki`.`id` = `dn_rdm`.`dnid` AND `dn_rdm`.`user_id` = '" . $user_id . "' WHERE `dn_rdm`.`user_id` IS NULL AND `dnevniki`.`dnid` = 'txt' AND `vr` > '".$old."' "), 0); return $total; } function dnevniki_com_new() { global $realtime; global $user_id; $old = $realtime - (3 * 24 * 3600); return mysql_result(mysql_query("SELECT COUNT(*) FROM `dnevniki` LEFT JOIN `dnevniki_com_rdm` ON `dnevniki`.`id` = `dnevniki_com_rdm`.`comid` AND `dnevniki_com_rdm`.`userid` = '" . $user_id . "' WHERE `dnevniki_com_rdm`.`userid` IS NULL AND `dnevniki`.`dnid` = 'com' AND `dnevniki`.`time` > '".$old."' ORDER BY `dnevniki`.`time`;"), 0); } function dnevniki_total() { $newrec = dn_new(); $newcom = dnevniki_com_new(); return fdn().($newrec ? ' / +'.$newrec.'' : '').($newcom ? '/ +'.$newcom.'' : ''); } function counters() { //////////////////////////////////////////////////////////// // Показ различных счетчиков внизу страницы // //////////////////////////////////////////////////////////// global $headmod; $req = mysql_query("SELECT * FROM `cms_counters` WHERE `switch` = '1' ORDER BY `sort` ASC"); if (mysql_num_rows($req) > 0) { while ($res = mysql_fetch_array($req)) { $link1 = ($res['mode'] == 1 || $res['mode'] == 2) ? $res['link1'] : $res['link2']; $link2 = $res['mode'] == 2 ? $res['link1'] : $res['link2']; $count = ($headmod == 'mainpage') ? $link1 : $link2; if (!empty($count)) echo $count; } } } function usersonline() { //////////////////////////////////////////////////////////// // Счетчик посетителей онлайн // //////////////////////////////////////////////////////////// global $realtime, $user_id, $home; $users = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `lastdate` > '" . ($realtime - 300) . "'"), 0); $guests = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_guests` WHERE `lastdate` > '" . ($realtime - 300) . "'"), 0); $users_guests = $users + $guests; //return ($user_id ? 'На сайте: '.$users_guests.' | Рег: ' . kuser() . '' : 'На сайте: '.$users_guests.' | Рег: ' . kuser() . ''); return ($user_id ? 'На сайте: '.$users_guests.' ' : 'На сайте: '.$users_guests.''); } function zipcount() { //////////////////////////////////////////////////////////// // Вывод коэффициента сжатия Zlib // //////////////////////////////////////////////////////////// global $set; if ($set['gzip']) { $Contents = ob_get_contents(); $gzib_file = strlen($Contents); $gzib_file_out = strlen(gzcompress($Contents, 9)); $gzib_pro = round(100 - (100 / ($gzib_file / $gzib_file_out)), 1); echo 'gzip. ' . $gzib_pro . '% | '; } else { echo '
Cжатие выкл.
'; } } function timeonline() { //////////////////////////////////////////////////////////// // Счетсик времени, проведенного на сайте // //////////////////////////////////////////////////////////// global $realtime, $datauser, $user_id; if ($user_id) echo '
В онлайне: ' . gmdate('H:i:s', ($realtime - $datauser['sestime'])) . ''; } function forum_new($mod = 0) { //////////////////////////////////////////////////////////// // Счетчик непрочитанных тем на форуме // //////////////////////////////////////////////////////////// // $mod = 0 Возвращает число непрочитанных тем // // $mod = 1 Выводит ссылки на непрочитанное // //////////////////////////////////////////////////////////// global $user_id, $rights; if ($user_id) { $req = mysql_query("SELECT COUNT(*) FROM `forum` LEFT JOIN `cms_forum_rdm` ON `forum`.`id` = `cms_forum_rdm`.`topic_id` AND `cms_forum_rdm`.`user_id` = '" . $user_id . "' WHERE `forum`.`type`='t'" . ($rights >= 7 ? "" : " AND `forum`.`close` != '1'") . " AND (`cms_forum_rdm`.`topic_id` Is Null OR `forum`.`time` > `cms_forum_rdm`.`time`)"); $total = mysql_result($req, 0); if ($mod) echo '

Непрочитанное ' . ($total ? '(' . $total . ')' : '') . '

'; else return $total; } else { if ($mod) echo '

Последние 10 тем

'; else return false; } } function dnews() { //////////////////////////////////////////////////////////// // Дата последней новости // //////////////////////////////////////////////////////////// global $set_user; $req = mysql_query("SELECT `time` FROM `news` ORDER BY `time` DESC LIMIT 1"); if (mysql_num_rows($req)) { $res = mysql_fetch_array($req); return date("H:i d.m.y", $res['time'] + $set_user['sdvig'] * 3600); } else { return false; } } function kuser() { //////////////////////////////////////////////////////////// // Колличество зарегистрированных пользователей // //////////////////////////////////////////////////////////// global $realtime; $total = mysql_result(mysql_query("SELECT COUNT(*) FROM `users`"), 0); $res = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `datereg` > '" . ($realtime - 86400) . "'"), 0); if ($res > 0) $total .= ' +' . $res . ''; return $total; } function wfrm() { //////////////////////////////////////////////////////////// // Статистика Форума // //////////////////////////////////////////////////////////// global $user_id, $rights, $home; $total_thm = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type` = 't'" . ($rights >= 7 ? "" : " AND `close` != '1'")), 0); $total_msg = mysql_result(mysql_query("SELECT COUNT(*) FROM `forum` WHERE `type` = 'm'" . ($rights >= 7 ? "" : " AND `close` != '1'")), 0); $out = $total_thm . ' / ' . $total_msg . ''; if ($user_id) { $new = forum_new(); if ($new) $out .= ' / +' . $new . ''; } return $out; } function dload() { //////////////////////////////////////////////////////////// // Статистика загрузок // //////////////////////////////////////////////////////////// global $realtime; $total = mysql_result(mysql_query("SELECT COUNT(*) FROM `download` WHERE `type` = 'file'"), 0); $old = $realtime - (3 * 24 * 3600); $new = mysql_result(mysql_query("SELECT COUNT(*) FROM `download` WHERE `time` > '" . $old . "' AND `type` = 'file'"), 0); if ($new > 0) $total .= ' / +' . $new . ''; return $total; } function fgal($mod = 0) { //////////////////////////////////////////////////////////// // Статистика галлереи // //////////////////////////////////////////////////////////// // Если вызвать с параметром 1, будет выдавать только колличество новых картинок global $realtime; $old = $realtime - (3 * 24 * 3600); $new = mysql_result(mysql_query("SELECT COUNT(*) FROM `gallery` WHERE `time` > '" . $old . "' AND `type` = 'ft'"), 0); if ($mod == 0) { $total = mysql_result(mysql_query("SELECT COUNT(*) FROM `gallery` WHERE `type` = 'ft'"), 0); $out = $total; if ($new > 0) $out .= ' / +' . $new . ''; } else { $out = $new; } return $out; } function stlib() { //////////////////////////////////////////////////////////// // Статистика библиотеки // //////////////////////////////////////////////////////////// global $realtime, $rights; $countf = mysql_result(mysql_query("SELECT COUNT(*) FROM `lib` WHERE `type` = 'bk' AND `moder` = '1'"), 0); $old = $realtime - (3 * 24 * 3600); $countf1 = mysql_result(mysql_query("SELECT COUNT(*) FROM `lib` WHERE `time` > '" . $old . "' AND `type` = 'bk' AND `moder` = '1'"), 0); $out = $countf; if ($countf1 > 0) $out = $out . ' / +' . $countf1 . ''; $countm = mysql_result(mysql_query("SELECT COUNT(*) FROM `lib` WHERE `type` = 'bk' AND `moder` = '0'"), 0); if (($rights == 5 || $rights >= 6) && $countm > 0) $out = $out . "/ Мод:$countm"; return $out; } //function wch($id = false, $mod = false) { //////////////////////////////////////////////////////////// // Статистика Чата // //////////////////////////////////////////////////////////// //TODO: Написать функцию статистики Чата //return 0; } function gbook($mod = 0) { //////////////////////////////////////////////////////////// // Статистика гостевой // //////////////////////////////////////////////////////////// // Если вызвать с параметром 1, то будет выдавать колличество новых в гостевой // Если вызвать с параметром 2, то будет выдавать колличество новых в Админ-Клубе global $realtime, $rights; switch ($mod) { case 1: $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `guest` WHERE `adm`='0' AND `time` > '" . ($realtime - 86400) . "'"), 0); break; case 2: if ($rights >= 1) $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `guest` WHERE `adm`='1' AND `time` > '" . ($realtime - 86400) . "'"), 0); break; default: $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `guest` WHERE `adm`='0' AND `time` > '" . ($realtime - 86400) . "'"), 0); if ($rights >= 1) { $req = mysql_query("SELECT COUNT(*) FROM `guest` WHERE `adm`='1' AND `time`>'" . ($realtime - 86400) . "'"); $count = $count . ' / ' . mysql_result($req, 0) . ''; } } return $count; } function tags($var = '') { //////////////////////////////////////////////////////////// // Обработка ссылок и тэгов BBCODE в тексте // //////////////////////////////////////////////////////////// $var = preg_replace(array ('#\[php\](.*?)\[\/php\]#se'), array ("''.highlight('$1').''"), str_replace("]\n", "]", $var)); $var = preg_replace('#\[b\](.*?)\[/b\]#si', '\1', $var); $var = preg_replace('#\[i\](.*?)\[/i\]#si', '\1', $var); $var = preg_replace('#\[u\](.*?)\[/u\]#si', '\1', $var); $var = preg_replace('#\[s\](.*?)\[/s\]#si', '\1', $var); $var = preg_replace('#\[red\](.*?)\[/red\]#si', '\1', $var); $var = preg_replace('#\[green\](.*?)\[/green\]#si', '\1', $var); $var = preg_replace('#\[blue\](.*?)\[/blue\]#si', '\1', $var); $var = preg_replace('#\[c\](.*?)\[/c\]#si', '
\1
', $var); $var = preg_replace_callback('~\\[url=(https?://.+?)\\](.+?)\\[/url\\]|(https?://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&_=/%-:#]*)~', 'url_replace', $var); return $var; } function highlight($php) { // Служебная функция подсветки PHP кода (прислал FlySelf) $php = strtr($php, array ( '
' => '', '\\' => 'slash_JOHNCMS' )); $php = html_entity_decode(trim($php), ENT_QUOTES, 'UTF-8'); $php = substr($php, 0, 2) != "" : $php; $php = highlight_string(stripslashes($php), true); $php = strtr($php, array ( 'slash_JOHNCMS' => '\', ':' => ':', '[' => '[', ' ' => ' ' )); return '
' . $php . '
'; } function url_replace($m) { // Служебная функция парсинга URL (прислал FlySelf) if (!isset($m[3])) return '' . str_replace(':', ':', $m[2]) . ''; else { $m[3] = str_replace(':', ':', $m[3]); return '' . $m[3] . ''; } } function notags($var = '') { //////////////////////////////////////////////////////////// // Вырезание BBcode тэгов из текста // //////////////////////////////////////////////////////////// $var = strtr($var, array ( '[green]' => '', '[/green]' => '', '[red]' => '', '[/red]' => '', '[blue]' => '', '[/blue]' => '', '[b]' => '', '[/b]' => '', '[i]' => '', '[/i]' => '', '[u]' => '', '[/u]' => '', '[s]' => '', '[/s]' => '', '[c]' => '', '[/c]' => '' )); return $var; } function antilink($var) { //////////////////////////////////////////////////////////// // Маскировка ссылок в тексте // //////////////////////////////////////////////////////////// //TODO: Убрать eregi //$var = eregi_replace("((https?|ftp)://)([[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%]*(\\?[[:alnum:]?+&_=/;%]*)?)?)", "[реклама]", $var); $var = strtr($var, array ( ".ru" => "***", ".com" => "***", ".net" => "***", ".org" => "***", ".info" => "***", ".mobi" => "***", ".wen" => "***", ".kmx" => "***", ".h2m" => "***" )); return $var; } function trans($str) { //////////////////////////////////////////////////////////// // Транслитерация текста // //////////////////////////////////////////////////////////// $str = strtr($str, array ( 'a' => 'а', 'b' => 'б', 'v' => 'в', 'g' => 'г', 'd' => 'д', 'e' => 'е', 'yo' => 'ё', 'zh' => 'ж', 'z' => 'з', 'i' => 'и', 'j' => 'й', 'k' => 'к', 'l' => 'л', 'm' => 'м', 'n' => 'н', 'o' => 'о', 'p' => 'п', 'r' => 'р', 's' => 'с', 't' => 'т', 'u' => 'у', 'f' => 'ф', 'h' => 'х', 'c' => 'ц', 'ch' => 'ч', 'w' => 'ш', 'sh' => 'щ', 'q' => 'ъ', 'y' => 'ы', 'x' => 'э', 'yu' => 'ю', 'ya' => 'я', 'A' => 'А', 'B' => 'Б', 'V' => 'В', 'G' => 'Г', 'D' => 'Д', 'E' => 'Е', 'YO' => 'Ё', 'ZH' => 'Ж', 'Z' => 'З', 'I' => 'И', 'J' => 'Й', 'K' => 'К', 'L' => 'Л', 'M' => 'М', 'N' => 'Н', 'O' => 'О', 'P' => 'П', 'R' => 'Р', 'S' => 'С', 'T' => 'Т', 'U' => 'У', 'F' => 'Ф', 'H' => 'Х', 'C' => 'Ц', 'CH' => 'Ч', 'W' => 'Ш', 'SH' => 'Щ', 'Q' => 'Ъ', 'Y' => 'Ы', 'X' => 'Э', 'YU' => 'Ю', 'YA' => 'Я' )); return $str; } function unhtmlentities($string) { //////////////////////////////////////////////////////////// // Декодирование htmlentities, PHP4совместимый режим // //////////////////////////////////////////////////////////// $string = str_replace('&', '&', $string); $string = preg_replace('~�*([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string); $string = preg_replace('~�*([0-9]+);~e', 'chr(\\1)', $string); $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip($trans_tbl); return strtr($string, $trans_tbl); } function pagenav($base_url, $start, $max_value, $num_per_page) { //////////////////////////////////////////////////////////// // Функция постраничной навигации // //////////////////////////////////////////////////////////// // За основу взята аналогичная функция от форума SMF2.0 // //////////////////////////////////////////////////////////// $pgcont = 4; $pgcont = (int)($pgcont - ($pgcont % 2)) / 2; if ($start >= $max_value) $start = max(0, (int)$max_value - (((int)$max_value % (int)$num_per_page) == 0 ? $num_per_page : ((int)$max_value % (int)$num_per_page))); else $start = max(0, (int)$start - ((int)$start % (int)$num_per_page)); $base_link = '%s '; $pageindex = $start == 0 ? '' : sprintf($base_link, $start - $num_per_page, '<<'); if ($start > $num_per_page * $pgcont) $pageindex .= sprintf($base_link, 0, '1'); if ($start > $num_per_page * ($pgcont + 1)) $pageindex .= ' ... '; for ($nCont = $pgcont; $nCont >= 1; $nCont--) if ($start >= $num_per_page * $nCont) { $tmpStart = $start - $num_per_page * $nCont; $pageindex .= sprintf($base_link, $tmpStart, $tmpStart / $num_per_page + 1); } $pageindex .= '[' . ($start / $num_per_page + 1) . '] '; $tmpMaxPages = (int)(($max_value - 1) / $num_per_page) * $num_per_page; for ($nCont = 1; $nCont <= $pgcont; $nCont++) if ($start + $num_per_page * $nCont <= $tmpMaxPages) { $tmpStart = $start + $num_per_page * $nCont; $pageindex .= sprintf($base_link, $tmpStart, $tmpStart / $num_per_page + 1); } if ($start + $num_per_page * ($pgcont + 1) < $tmpMaxPages) $pageindex .= ' ... '; if ($start + $num_per_page * $pgcont < $tmpMaxPages) $pageindex .= sprintf($base_link, $tmpMaxPages, $tmpMaxPages / $num_per_page + 1); if ($start + $num_per_page < $max_value) { $display_page = ($start + $num_per_page) > $max_value ? $max_value : ($start + $num_per_page); $pageindex .= sprintf($base_link, $display_page, '>>'); } return $pageindex; } function timecount($var) { //////////////////////////////////////////////////////////// // Функция пересчета на дни, или часы // //////////////////////////////////////////////////////////// $str = ''; if ($var < 0) $var = 0; $day = ceil($var / 86400); if ($var > 345600) { $str = $day . ' дней'; } elseif ($var >= 172800) { $str = $day . ' дня'; } elseif ($var >= 86400) { $str = '1 день'; } else { $str = gmdate('G:i:s', $var); } return $str; } function formatsize($size) { //////////////////////////////////////////////////////////// // Форматирование размера файлов // //////////////////////////////////////////////////////////// if ($size >= 1073741824) { $size = round($size / 1073741824 * 100) / 100 . ' Gb'; } elseif ($size >= 1048576) { $size = round($size / 1048576 * 100) / 100 . ' Mb'; } elseif ($size >= 1024) { $size = round($size / 1024 * 100) / 100 . ' Kb'; } else { $size = $size . ' b'; } return $size; } function check($str) { //////////////////////////////////////////////////////////// // Проверка переменных // //////////////////////////////////////////////////////////// $str = htmlentities(trim($str), ENT_QUOTES, 'UTF-8'); $str = nl2br($str); $str = strtr($str, array ( chr(0)=> '', chr(1)=> '', chr(2)=> '', chr(3)=> '', chr(4)=> '', chr(5)=> '', chr(6)=> '', chr(7)=> '', chr(8)=> '', chr(9)=> '', chr(10)=> '', chr(11)=> '', chr(12)=> '', chr(13)=> '', chr(14)=> '', chr(15)=> '', chr(16)=> '', chr(17)=> '', chr(18)=> '', chr(19)=> '', chr(20)=> '', chr(21)=> '', chr(22)=> '', chr(23)=> '', chr(24)=> '', chr(25)=> '', chr(26)=> '', chr(27)=> '', chr(28)=> '', chr(29)=> '', chr(30)=> '', chr(31)=> '' )); $str = str_replace("\'", "'", $str); $str = str_replace('\\', "\", $str); $str = str_replace("|", "I", $str); $str = str_replace("||", "I", $str); $str = str_replace("/\\\$/", "$", $str); $str = mysql_real_escape_string($str); return $str; } function checkout($str, $br = 0, $tags = 0) { //////////////////////////////////////////////////////////// // Обработка текстов перед выводом на экран // //////////////////////////////////////////////////////////// // $br=1 с обработкой переносов строк // // $br=2 подстановка пробела, вместо переноса // // $tags=1 с обработкой тэгов // // $tags=2 с вырезанием тэгов // //////////////////////////////////////////////////////////// $str = htmlentities($str, ENT_QUOTES, 'UTF-8'); if ($br == 1) $str = nl2br($str); elseif ($br == 2) $str = str_replace("\r\n", ' ', $str); if ($tags == 1) $str = tags($str); elseif ($tags == 2) $str = notags($str); $str = strtr($str, array ( chr(0)=> '', chr(1)=> '', chr(2)=> '', chr(3)=> '', chr(4)=> '', chr(5)=> '', chr(6)=> '', chr(7)=> '', chr(8)=> '', chr(9)=> '', chr(10)=> '', chr(11)=> '', chr(12)=> '', chr(13)=> '', chr(14)=> '', chr(15)=> '', chr(16)=> '', chr(17)=> '', chr(18)=> '', chr(19)=> '', chr(20)=> '', chr(21)=> '', chr(22)=> '', chr(23)=> '', chr(24)=> '', chr(25)=> '', chr(26)=> '', chr(27)=> '', chr(28)=> '', chr(29)=> '', chr(30)=> '', chr(31)=> '' )); return $str; } function smileys($str, $adm = 0) { //////////////////////////////////////////////////////////// // Обработка смайлов // //////////////////////////////////////////////////////////// // $adm=1 покажет и обычные и Админские смайлы // // $adm=2 пересоздаст кэш смайлов // //////////////////////////////////////////////////////////// global $rootpath; // Записываем КЭШ смайлов if ($adm == 2) { // Обрабатываем простые смайлы $array1 = array (); $path = $rootpath . 'smileys/simply/'; $dir = opendir($path); while ($file = readdir($dir)) { $name = explode(".", $file); if ($name[1] == 'gif' || $name[1] == 'jpg' || $name[1] == 'png') { $array1[':' . $name[0]] = ''; ++$count; } } closedir($dir); // Обрабатываем Админские смайлы $array2 = array (); $array3 = array (); $path = $rootpath . 'smileys/admin/'; $dir = opendir($path); while ($file = readdir($dir)) { $name = explode(".", $file); if ($name[1] == 'gif' || $name[1] == 'jpg' || $name[1] == 'png') { $array2[':' . trans($name[0]) . ':'] = ''; $array3[':' . $name[0] . ':'] = ''; ++$count; } } // Обрабатываем смайлы в каталогах $array4 = array (); $array5 = array (); $cat = glob($rootpath . 'smileys/user/*', GLOB_ONLYDIR); $total = count($cat); for ($i = 0; $i < $total; $i++) { $dir = opendir($cat[$i]); while ($file = readdir($dir)) { $name = explode(".", $file); if ($name[1] == 'gif' || $name[1] == 'jpg' || $name[1] == 'png') { $array4[':' . trans($name[0]) . ':'] = ''; $array5[':' . $name[0] . ':'] = ''; ++$count; } } closedir($dir); } $smileys = serialize(array_merge($array1, $array4, $array5)); $smileys_adm = serialize(array_merge($array2, $array3)); // Записываем в файл Кэша if ($fp = fopen($rootpath . 'cache/smileys_cache.dat', 'w')) { fputs($fp, $smileys . "\r\n" . $smileys_adm); fclose($fp); return $count; } else { return false; } } else { // Выдаем кэшированные смайлы if (file_exists($rootpath . 'cache/smileys_cache.dat')) { $file = file($rootpath . 'cache/smileys_cache.dat'); $smileys = unserialize($file[0]); if ($adm) $smileys = array_merge($smileys, unserialize($file[1])); return strtr($str, $smileys); } else { return $str; } } } function display_error($error = false, $link = '') { //////////////////////////////////////////////////////////// // Сообщения об ошибках // //////////////////////////////////////////////////////////// if ($error) { $out = '

ОШИБКА!'; if (is_array($error)) { foreach ($error as $val)$out .= '

' . $val . '
'; } else { $out .= '
' . $error; } $out .= '

' . $link . '

'; return $out; } else { return false; } } function rus_lat($str) { //////////////////////////////////////////////////////////// // Транслитерация с Русского в латиницу // //////////////////////////////////////////////////////////// $str = strtr($str, array ( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'e', 'ж' => 'j', 'з' => 'z', 'и' => 'i', 'й' => 'i', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ъ' => "", 'ы' => 'y', 'ь' => "", 'э' => 'ye', 'ю' => 'yu', 'я' => 'ya' )); return $str; } function show_user($user = array (), $status = 0, $ip = 0, $str = '', $text = '', $sub = '') { //////////////////////////////////////////////////////////// // Отображение пользователей // //////////////////////////////////////////////////////////// // $user (array) - массив запроса в таблицу `users` // // $status (boolean) - показать статус // // $ip (int) - отображение IP и UserAgent // // 0 - не показывать // // 1 - показать // // 2 - показать ссылку на IP поиск // // $str (string) - строка выводится после Ника юзера // // $text (string) - выводится после строки со статусом // // $sub (string) - строка выводится в области "sub" // //////////////////////////////////////////////////////////// global $set_user, $realtime, $user_id, $admp, $home; $out = false; if (!$user['id']) { $out = 'Гость'; if (!empty($user['name'])) $out .= ': ' . $user['name']; if (!empty($str)) $out .= ' ' . $str; } else { if ($set_user['avatar']) { $out .= '
'; if (file_exists(('../files/avatar/' . $user['id'] . '.png'))) $out .= '' . $user['name'] . ' '; else $out .= '' . $user['name'] . ' '; $out .= ''; } if ($user['sex']) $out .= ' '; else $out .= ' '; $out .= !$user_id || $user_id == $user['id'] ? '' . $user['name'] . '' : '' . $user['name'] . ''; $rights = array ( 0 => '', 1 => '(GMod)', 2 => '(CMod)', 3 => '(FMod)', 4 => '(DMod)', 5 => '(LMod)', 6 => '(Smd)', 7 => '(Adm)', 9 => '' ); $out .= ' ' . $rights[$user['rights']]; $out .= ($realtime > $user['lastdate'] + 300 ? ' [Off]' : ' [ON]'); if (!empty($str)) $out .= ' ' . $str; if ($status && !empty($user['status'])) $out .= '
 ' . $user['status'] . '
'; if ($set_user['avatar']) $out .= '
'; } if ($text) $out .= '
' . $text . '
'; if ($sub || $ip) { $out .= '
'; if (!empty($sub)) $out .= $sub; if ($ip) { $out .= '
UserAgent: ' . $user['browser'] . '
'; if ($ip == 2) $out .= 'IP Address' . long2ip($user['ip']) . '
'; else $out .= 'IP Address: ' . long2ip($user['ip']) . '
'; } $out .= ''; } return $out; } function ip_valid($ip = '') { //////////////////////////////////////////////////////////// // Функция валидации IP адреса // //////////////////////////////////////////////////////////// $d = explode('.', $ip); for ($x = 0; $x < 4; $x++) if (!is_numeric($d[$x]) || ($d[$x] < 0) || ($d[$x] > 255)) return false; return $ip; } function antiflood() { //////////////////////////////////////////////////////////// // Глобальная система Антифлуда // //////////////////////////////////////////////////////////// // Режимы работы: // // 1 - Адаптивный // // 2 - День / Ночь // // 3 - День // // 4 - Ночь // //////////////////////////////////////////////////////////// global $set, $user_id, $datauser, $realtime; $default = array ( 'mode' => 2, 'day' => 10, 'night' => 30, 'dayfrom' => 10, 'dayto' => 22 ); $af = isset($set['antiflood']) ? unserialize($set['antiflood']) : $default; switch ($af['mode']) { case 1: // Адаптивный режим $onltime = $realtime - 600; $adm = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `rights` > 0 AND `lastdate` > '$onltime'"), 0); $limit = $adm > 0 ? $af['day'] : $af['night']; break; case 3: // День $limit = $af['day']; break; case 4: // Ночь $limit = $af['night']; break; default: // По умолчанию день / ночь $c_time = date('G', $realtime); $limit = $c_time > $af['day'] && $c_time < $af['night'] ? $af['day'] : $af['night']; } if ($datauser['rights'] > 0) $limit = 4; // Для Администрации задаем лимит в 4 секунды $flood = $datauser['lastpost'] + $limit - $realtime; if ($flood > 0) return $flood; else return false; } function mobileads($mad_siteId = NULL) { //////////////////////////////////////////////////////////// // Рекламная сеть mobileads.ru // //////////////////////////////////////////////////////////// $out = ''; $mad_socketTimeout = 2; // таймаут соединения с сервером mobileads.ru ini_set("default_socket_timeout", $mad_socketTimeout); $mad_pageEncoding = "UTF-8"; // устанавливаем кодировку страницы $mad_ua = urlencode(@$_SERVER['HTTP_USER_AGENT']); $mad_ip = urlencode(@$_SERVER['REMOTE_ADDR']); $mad_xip = urlencode(@$_SERVER['HTTP_X_FORWARDED_FOR']); $mad_ref = urlencode(@$_SERVER['SERVER_NAME'] . @$_SERVER['REQUEST_URI']); $mad_lines = ""; $mad_fp = @fsockopen("mobileads.ru", 80, $mad_errno, $mad_errstr, $mad_socketTimeout); if ($mad_fp) { // переменная $mad_lines будет содержать массив, непарные элементы которого будут ссылками, парные - названием $mad_lines = @file("http://mobileads.ru/links?id=$mad_siteId&ip=$mad_ip&xip=$mad_xip&ua=$mad_ua&ref=$mad_ref"); } @fclose($mad_fp); // вывод ссылок for ($malCount = 0; $malCount < count($mad_lines); $malCount += 2) { $linkURL = trim($mad_lines[$malCount]); $linkName = iconv("Windows-1251", $mad_pageEncoding, $mad_lines[$malCount + 1]); $out .= '' . $linkName . '
'; } $_SESSION['mad_links'] = $out; $_SESSION['mad_time'] = $realtime; return $out; } function forum_link($m) { //////////////////////////////////////////////////////////// // Вспомогательная Функция обработки ссылок форума // //////////////////////////////////////////////////////////// global $home; if (!isset ($m[3])) { return '[url=' . $m[1] . ']' . $m[2] . '[/url]'; } else { $p = parse_url($m[3]); if ('http://' . $p['host'] . $p['path'] . '?id=' == $home . '/forum/index.php?id=') { $thid = abs(intval(preg_replace('/(.*?)id=/si', '', $m[3]))); $req = mysql_query("SELECT `text` FROM `forum` WHERE `id`= '$thid' AND `type` = 't' AND `close` != '1'"); if (mysql_num_rows($req) > 0) { $res = mysql_fetch_array($req); $name = strtr($res['text'], array('"' => '', '&' => '', '<' => '', '>' => '', ''' => '', '[' => '', ']' => '')); if (mb_strlen($name) > 40) $name = mb_substr($name, 0, 40) . '...'; return '[url=' . $m[3] . ']' . $name . '[/url]'; } else { return $m[3]; } } else return $m[3]; } } /* ################################################################################ ## ## ## Старые функции, которые постепенно будут удаляться. ## ## НЕ ИСПОЛЬЗУЙТЕ их в своих модулях!!! ## ## ## ################################################################################ */ function provcat($catalog) { $cat1 = mysql_query("select * from `download` where type = 'cat' and id = '" . $catalog . "';"); $cat2 = mysql_num_rows($cat1); $adrdir = mysql_fetch_array($cat1); if (($cat2 == 0) || (!is_dir("$adrdir[adres]/$adrdir[name]"))) { echo 'Ошибка при выборе категории
К категориям
'; require_once('../incfiles/end.php'); exit; } } function deletcat($catalog) { $dir = opendir($catalog); while (($file = readdir($dir))) { if (is_file($catalog . "/" . $file)) { unlink($catalog . "/" . $file); } else if (is_dir($catalog . "/" . $file) && ($file != ".") && ($file != "..")) { deletcat($catalog . "/" . $file); } } closedir($dir); rmdir($catalog); } function format($name) { $f1 = strrpos($name, "."); $f2 = substr($name, $f1 + 1, 999); $fname = strtolower($f2); return $fname; } ?>