Вход Регистрация
Файл: lib.php
Строк: 762
<?
/***************************************************************************
 * ExBB v.1.1                                                              *
 * Copyright (c) 2002-20хх by Alexander Subhankulov aka Warlock            *
 *                                                                         *
 * http://www.exbb.revansh.com                                             *
 * email: admin@exbb.revansh.com                                           *
 *                                                                         *
 ***************************************************************************/
/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

function checkuser($un) {
global 
$exbb;

  if (
file_exists($exbb['home_path'].'members/'.$un.'.php')) {return true;}

  return 
false;

}

function 
getmember($un) {
global 
$exbb;

  if (
checkuser($un)) {
    
$filetoopen $exbb['home_path'].'members/'.$un.'.php';
    
$fp fopen($filetoopen,'r');
    
flock($fp,1);
    
$infa file($filetoopen);
    
fclose($fp);
    
$infa substr($infa[0],8,strlen($infa[0]));
    return 
$infa;
  } else {return 
false;}

}

function 
checklgn() {
global 
$exbb;
  if (isset(
$_SESSION['mid']) && $_SESSION['mid'] != 0) {
    return 
true;
  }
  elseif (isset(
$_SESSION['mid']) && $_SESSION['mid'] == 0) { $_SESSION['mid'] = 0; return false; }
  else { 
//first run
    
$id_cookie = (isset($_COOKIE['exbbn'])) ? $_COOKIE['exbbn'] : 0;
    
$pass_cookie = (isset($_COOKIE['exbbp'])) ? $_COOKIE['exbbp'] : '';
    if ( (!empty(
$id_cookie)) and (!empty($pass_cookie)) ) {

      
$inuser getmember($id_cookie);
      
$inuser = ($inuser) ? unserialize($inuser) : '';
    }

    if (
is_array($inuser) and $pass_cookie == md5($inuser['pass'])) {

       if (
$inuser['status'] == 'banned'error('Denial of access','You are banned!');

       
user_locale($inuser);

       
$_SESSION['mid'] = $inuser['id'];
       
$_SESSION['sts'] = $inuser['status'];
       
$_SESSION['time'] = $inuser['timedif'];
       
$_SESSION['lastposttime'] = isset($inuser['lastpost']['date']) ? $inuser['lastpost']['date'] : time()-180;
       
$_SESSION['last_visit'] = isset($inuser['last_visit']) ? $inuser['last_visit'] : time();

       
$inuser['last_visit'] = time();
       
save_file($exbb['home_path'].'members/'.$inuser['id'].'.php',$inuser);

       
my_setcookie('exbbn',$inuser['id']);
       
my_setcookie('exbbp',md5($inuser['pass']));
       
my_setcookie('lastvisit',$inuser['last_visit']);

       
access_log($inuser['name']);
       return 
true;
    }
    else {
        
$_SESSION = array();
        
$_SESSION['mid'] = 0;
        
$_SESSION['time'] = 0;
        
$_SESSION['lastposttime'] = time()-180;
        
$_SESSION['last_visit'] = isset($_COOKIE['lastvisit']) ? $_COOKIE['lastvisit'] : time();
        
my_setcookie('lastvisit',time());
        
access_log();
        return 
false;
    }
  } 
//is first run

}

function 
access_log($user 'Guest') {
global 
$exbb,$vars;

  if (!isset(
$vars['IP_ADDRESS'])) {
     
$vars['IP_ADDRESS'] = select_var( array(
                                            
=> $_SERVER['REMOTE_ADDR'],
                                            
=> $_SERVER['HTTP_X_FORWARDED_FOR'],
                                            
=> $_SERVER['HTTP_PROXY_USER']
                                              )
                                       );


     
$vars['IP_ADDRESS'] = preg_replace"/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/""\1.\2.\3.\4"$vars['IP_ADDRESS'] );

  }
  
$fp = @fopen($exbb['home_path'].'data/access_log.php','a');
  @
flock($fp,2);
  @
fwrite($fp,date("d.m.y - H:i:s",time()).' :: '.$user.' :: '.$vars['IP_ADDRESS']."n");
  @
fclose($fp);
return;

}

function 
user_locale($userinfo = array()) {

  global 
$exbb,$lang;

        
$l $exbb['default_lang'];
        
$s =  $exbb['default_style'];

        if (isset(
$userinfo['lang']) && !empty($userinfo['lang'])) $exbb['default_lang'] = $userinfo['lang'];
        if (isset(
$userinfo['skin']) && !empty($userinfo['skin'])) $exbb['default_style'] = $userinfo['skin'];

        if ( !
file_exists($exbb['home_path'] . 'language/' $exbb['default_lang'] . '/lang.php') )
        {
                
$exbb['default_lang'] = $l;
        }

        if ( !
file_exists($exbb['home_path'] . 'templates/' $exbb['default_style'] . '/board_body.tpl') )
        {
                
$exbb['default_style'] = $s;
        }

        if (
defined('IN_ADMIN'))
        {
                if( !
file_exists($exbb['home_path'] .'language/' $exbb['default_lang'] . '/lang_admin.php') )
                {
                        
$exbb['default_lang'] = 'russian';
                }

                include(
'./language/' $exbb['default_lang'] . '/lang_admin.php');
        }

        return;
}

function 
parsed_vars() {

 
$return = array();

 if ( 
is_array($_GET) ) {

   while( list(
$k$v) = each($_GET) ) {
     if ( 
is_array($_GET[$k]) ) {
        while( list(
$k2$v2) = each($_GET[$k]) ) {
          
$return[$k][ clean_key($k2) ] = clean_value($v2);
        }
     }
     else { 
$return[$k] = clean_value($v); }
   }
 }

 if ( 
is_array($_POST) ) {

   while( list(
$k$v) = each($_POST) ) {
     if ( 
is_array($_POST[$k]) ) {
        while( list(
$k2$v2) = each($_POST[$k]) ) {
          
$return[$k][ clean_key($k2) ] = clean_value($v2);
        }
     }
     else { 
$return[$k] = clean_value($v); }
   }
 }


 
$return['IP_ADDRESS'] = select_var( array(
                                            
=> $_SERVER['REMOTE_ADDR'],
                                            
=> $_SERVER['HTTP_X_FORWARDED_FOR'],
                                            
=> $_SERVER['HTTP_PROXY_USER']
                                           )
                                                 );

 
// valid IP?

 
$return['IP_ADDRESS'] = preg_replace"/^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})/""\1.\2.\3.\4"$return['IP_ADDRESS'] );

 
$return['request_method'] = strtolower($_SERVER['REQUEST_METHOD']);


        return 
$return;
}

function 
clean_key($key) {

 if (
$key == '') { return ''; }
 
$key preg_replace"/../"           ''  $key );
 
$key preg_replace"/__(.+?)__/"  ''  $key );
 
$key preg_replace"/^([w.-_]+)$/""$1"$key );
 return 
$key;
}

function 
clean_value($val) {

  if (
$val == '') { return '';  }
  
$val str_replace"&#032;"       ' '             $val );
  
$val str_replace"&"            '&amp;'         $val );
  
$val str_replace"<!--"         '&#60;&#33;--'  $val );
  
$val str_replace"-->"          '--&#62;'       $val );
  
$val preg_replace"/<script/i"  '&#60;script'   $val );
  
$val str_replace">"            '&gt;'          $val );
  
$val str_replace"<"            '&lt;'          $val );
  
$val str_replace"""           , '&quot;'        , $val );
  
$val = preg_replace( "/nn/"      , '<p>'           , $val );
  
$val = preg_replace( "/n/"        , '<br>'          , $val );
  
$val = preg_replace( "/\$/"      , '&#036;'        , $val );
  
$val = preg_replace( "/r/"        , ''              , $val );
  
$val = stripslashes($val);
  
$val = preg_replace( "/\/"       , '&#092;'        , $val );
  return 
$val;
}

function soft_clr_value(
$val) {

  if (
$val == '') { return '';  }
  
$val = str_replace( "&#032;"       , ' '             , $val );
  
$val str_replace"&"            '&amp;'         $val );
  
$val preg_replace"/<script/i"  '&#60;script'   $val );
  
$val str_replace"""           , '&quot;'        , $val );
  
$val = preg_replace( "/nn/"      , '<p>'           , $val );
  
$val = preg_replace( "/n/"        , '<br>'          , $val );
  
$val = preg_replace( "/\$/"      , '&#036;'        , $val );
  
$val = preg_replace( "/r/"        , ''              , $val );
  
$val = stripslashes($val);
  
$val = preg_replace( "/\/"       , '&#092;'        , $val );
  return 
$val;
}


function select_var(
$array) {

 if ( !is_array(
$array) ) return -1;

 #ksort(
$array);

 
$chosen = -1;

 foreach (
$array as $k => $v) {
   if (isset(
$v)) {
     
$chosen = $v;
     break;
   }
 }
 return 
$chosen;
}

function mark_forum() {
global 
$exbb,$vars,$lang;

  
$vars['forum'] = intval($vars['forum']);

  if (
$vars['forum'] == '') exit();

  my_setcookie('f'.
$vars['forum'], time() );
  
$url = $exbb['boardurl'].'/forums.php?forum='.$vars['forum'];
  error(
$lang['Info'],$lang['Forum_marked'],"<meta http-equiv='refresh' content='3; url=$url'>",0);

}

function mark_board() {
global 
$exbb,$vars,$lang,$inuser;

  
$_SESSION['last_visit'] = time();
  
$inuser['last_visit'] = time();
  save_file(
$exbb['home_path'].'members/'.$exbb['mem_id'].'.php',$inuser);

  
$url = $exbb['boardurl'].'/index.php';
  error(
$lang['Info'],$lang['Board_marked'],"<meta http-equiv='refresh' content='3; url=$url'>",0);

}

function post_size() {
global 
$lang,$exbb,$vars;

  if (
$vars['request_method'] != 'post') {error($lang['Main_msg'],$lang['Correct_post']);}
  if ( strlen(
$_POST['inpost']) > $exbb['max_posts'] && !defined('IS_ADMIN') ) {error($lang['Message_sending'],$lang['Big_post']);}
  if ( strlen(trim(
$_POST['inpost'])) < 1) {error($lang['Message_sending'],$lang['Mess_needed']);}

}
function error(
$msg_title,$msg_text,$meta = '',$reas = true) {
global 
$exbb,$lang;

  
$title_page = $msg_title;
  if (empty(
$meta)) $return = ' <a href="javascript:history.go(-1)"> << '.$lang['Back'].'</a>';
  
$reasons = ($reas) ? '<b>'.$lang['Reasons'].'</b><ul><li>'.$lang['Wrong_pass'].'<li>'.$lang['Wrong_membername'].'<li><a href="register.php">'.$lang['User_unreg'].'</a></ul>' : '';
  include('./templates/'.
$exbb['default_style'].'all_header.tpl');
  include('./templates/'.
$exbb['default_style'].'error.tpl');
  include('./templates/'.
$exbb['default_style'].'footer.tpl');
  include('page_tail.php');
}

function save_statfile() {
global 
$exbb;

  
$filetomake = $exbb['home_path'].'data/boardstats.php';
  
$tofile="<?n$exbb['lastreg'] = '$exbb[lastreg]';n$exbb['last_id'] = '$exbb[last_id]';n$exbb['totalmembers'] = '$exbb[totalmembers]';n$exbb['totalthreads'] = '$exbb[totalthreads]';n$exbb['totalposts'] = '$exbb[totalposts]';n?>";
  $fp = @fopen($filetomake, 'w');
  flock($fp,LOCK_EX);
  @fwrite($fp, $tofile);
  fclose($fp);
  return;
}


function replace ($string)
{
$string = str_replace("nn",'<p>',$string);
$string = str_replace("n",'<br>',$string);
$string = str_replace("t",'',$string);
$string = str_replace("r",'',$string);
$string = str_replace('  ','',$string);
return $string;
}

function vm($ml = '') {

  $ml = preg_replace( "#[nr*'"<>&%!(){}[]?\/]#", "", $ml );

  if ( preg_match( "/^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,4}|[0-9]{1,4})(]?)$/", $ml) ) {
     return $ml;
  }
  else  {
         return FALSE;
        }
}

function seekHttp($rawText)
{
        $pattern=array(
                "#([trn ])([a-z0-9]+?){1}://([w-]+.([w-]+.)*[w]+(:[0-9]+)?(/[^ "nrt<]*)?)#i",
                "#([trn ])(www|ftp).(([w-]+.)*[w]+(:[0-9]+)?(/[^ "nrt<]*)?)#i",
                "#([n ])([a-z0-9-_.]+?)@([w-]+.([w-.]+.)*[w]+)#i");
        $replacement=array(
                '1<a href="2://3" target="_blank">2://3</a>',
                '1<a href="http://2.3" target="_blank">2.3</a>',
                "\1<a href="mailto:\2@\3">\2@\3</a>");
        $ret = ' ' . $rawText;
        $hyperlinkedText=preg_replace($pattern, $replacement, $ret);
        $hyperlinkedText = substr($hyperlinkedText, 1);
        return $hyperlinkedText;
}

function divideWord($content,$maxWordLength = '30') {
   $newContent = wordwrap($content, $maxWordLength, chr(13), 1);
   return $newContent;
}


function longDate($todt,$add = 0) {
global $lang;
  $currDay = strftime ("%d",$todt);
  $currMonth = strftime ("%m",$todt);
  $currYear = strftime ("%Y",$todt);
  $tm = date("H:i",$todt);
  #if ($add) { return $tm.' - '.$currDay.' '.$lang[$currMonth].', '.$currYear; }
  return $currDay.' '.$lang['rus_m'][$currMonth].', '.$currYear.' - '.$tm;
}

function joindate($time) {
   $months = array('00' => '','01' => 'Янв.','02' => 'Февр.','03' => 'Март','04' => 'Апр.','05' => 'Май','06' => 'Июнь','07' => 'Июль','08' => 'Авг.','09' => 'Сент.','10' => 'Окт.','11' => 'Нояб.','12' => 'Дек.');
   $currMonth = strftime ("%m",$time);
   $currYear = strftime ("%Y",$time);
   return $months["$currMonth"]." ".$currYear;
}

function my_setcookie($name, $value = "", $exp = 1) {

        $exipres = '';

        if ($exp == 1)
        {
          $expires = time() + 31536000;  #+ year (60*60*24*365 = 31536000)
        } else {$expires = time() - 1000;}

        @setcookie($name, $value, $expires, '/','');
}



function getlastvisit() {
global $lastvisitinfo;
    $lastvisitinfo = (isset($_COOKIE['f_visits'])) ? unserialize($_COOKIE['f_visits']) : array();
}

function setlastvisit($inforum) {
    $lastvisit = (isset($_COOKIE['f_visits'])) ? unserialize($_COOKIE['f_visits']) : array();
    $lastvisit[$inforum] = time();
    my_setcookie('f_visits',serialize($lastvisit));
}

function set_font($attr) {

  if (!is_array($attr)) return '';

  if ( preg_match( "/;/", $attr['1'] ) ) {
    $attr = explode( ';', $attr['1'] );
    $attr['1'] = $attr[0];
  }

  if ($attr['s'] == 'size') {

    #$attr['1'] = $attr['1'] + 7;
    if ($attr['1'] > 30) $attr['1'] = 30;

    return "<span style='font-size:".$attr['1']."pt;line-height:100%'>".$attr['2']."</span>";
  }
  elseif ($attr['s'] == 'col') {
    return "<span style='color:".$attr['1']."'>".$attr['2']."</span>";
  }
  elseif ($attr['s'] == 'font') {
    return "<span style='font-family:".$attr['1']."'>".$attr['2']."</span>";
  }
}

function set_code($code="") {
  $code = preg_replace( "#s{2}#", ' &nbsp;', $code );
  $code = str_replace('<','&lt;',$code);
  $code = str_replace('>','&gt;',$code);
  $code = str_replace('&lt;br&gt;','<br>',$code);
  $code = str_replace(']','&#93;',$code);
  $code = str_replace('[','&#91;',$code);
  $code = str_replace('(','&#40',$code); //избавимся от смайликов :) ;) :(
  $code = str_replace(')','&#41',$code);
  $code = str_replace('&amp;#036;','$',$code);
  $code = str_replace('&amp;quot;','"',$code);
  $code = '<span class=small>Код:</span><table cellpadding="3" cellspacing="0" bgcolor="#FFFFFF" width="100%" border="1" bordercolor="#CCCCCC"><tr><td class=dats>'.$code.'</td></tr></table>';
  return $code;
}

function set_php($code="") {
  $code = str_replace('&lt;','<',$code);
  $code = str_replace('&gt;','>',$code);
  $code = str_replace('<br>',"n",$code);
  $code = str_replace('<p>',"nn",$code);
  $code = str_replace('&amp;','&',$code);
  $code = str_replace('&#036;','$',$code);
  $code = str_replace('&quot;','"',$code);
  $code = str_replace('&#092;','', $code );
  $code = '<span class=small>PHP:</span><table cellpadding="3" cellspacing="0" bgcolor="#FFFFFF" width="100%" border="1" bordercolor="#CCCCCC"><tr><td class=dats>'.highlight_string($code, true).'</td></tr></table>';
  $code = str_replace('(','&#40',$code); //избавимся от смайликов :) ;) :(
  $code = str_replace(')','&#41',$code);
  $code = str_replace(']','&#93;',$code);
  $code = str_replace('[','&#91;',$code);
  return $code;
}

function set_rus($code="") {

  $replace = array ('Щ',    'Ш',   'Э',   'Ч',   'Ю',   'Ж',   'Ё',   'Я',   'я',   'а',  'б',  'в',  'г',  'д',  'э',   'е',  'ё',   'ж',   'з',  'и',  'й',  'к',  'л',  'м',  'н',  'о',  'п',  'р',   'щ',   'ш',   'с',  'т',  'ю',   'у',  'ф',  'ч',   'х',  'ц',   'ъ',    'ы',  'ь',   'А',  'Б',  'В',  'Г',  'Д',  'Е',  'З',  'И',  'К',  'Л',  'М',  'Н',  'О',  'П',  'Р',  'С',  'Т',  'У',  'Ф',  'Х',  'Ц');
  $search = array ("'Sch'","'Sh'","'Ye'","'Ch'","'Yu'","'Zh'","'Jo'","'Ja'","'ja'","'a'","'b'","'v'","'g'","'d'","'ye'","'e'","'yo'","'zh'","'z'","'i'","'I'","'k'","'l'","'m'","'n'","'o'","'p'","'r'","'sch'","'sh'","'s'","'t'","'yu'","'u'","'f'","'ch'","'h'","'c'","''''","'y'","'''","'A'","'B'","'V'","'G'","'D'","'E'","'Z'","'I'","'K'","'L'","'M'","'N'","'O'","'P'","'R'","'S'","'T'","'U'","'F'","'H'","'C'");

  return '[s]Перевод с транслита[/s]:<br />'.preg_replace ($search, $replace, $code);
}

function ikoncode($post) {

  $post = preg_replace("#<p>#is",'<br><br>', $post);
  $post = str_replace('<br>',' <br> ',$post);

  $post = preg_replace("#[hr]#i",'<hr width=40% align=left>',$post);


  $post = preg_replace("#[code](.+?)[/code]#ies","set_code('\1')",$post);
  $post = preg_replace("#[php](.+?)[/php]#ies","set_php('\1')",$post);

  #Translite
  $post = preg_replace("#[rus](.+?)[/rus]#ies","set_rus('\1')",$post);


  $post = preg_replace("#[q]s*(.*?)s*[/q]#is","<span class=small>Цитата:</span><table cellpadding=3 cellspacing=0 bgcolor=#FFFFFF width=85% border=1 bordercolor=#EEEEEE><tr><td class=dats>$1</td></tr></table>",$post);
  $post = preg_replace("#[quote]s*(.*?)s*[/quote]#is","<span class=small>Цитата:</span><table cellpadding=3 cellspacing=0 bgcolor=#FFFFFF width=85% border=1 bordercolor=#EEEEEE><tr><td class=dats>$1</td></tr></table>",$post);

  $post = preg_replace("#[url](S+?)[/url]#i","<a href=$1 target="_blank">$1</a>",$post);
  $post = preg_replace("#[urls*=s*&quot;s*(S+?)s*&quot;s*](.*?)[/url]#i","<a href=$1 target=_blank>$2</a>",$post);
  $post = preg_replace("#[urls*=s*(S+?)s*](.*?)[/url]#i","<a href=$1 target="_blank">$2</a>",$post);

  $post = preg_replace( "#(^|s)((http|https|news|ftp)://w+S+)#i"  , "$1<a href=$2 target="_blank">$2</a>", $post );

  $post = preg_replace("#[c](.*?)[/c]#is","<center>$1</center>",$post);
  $post = preg_replace("#[center](.+?)[/center]#is","<center>$1</center>",$post);
  $post = preg_replace("#[s](.*?)[/s]#is","<span class=small>$1</span>",$post);

  $post = preg_replace( "#[b](.+?)[/b]#is", "<b>\1</b>", $post );
  $post = preg_replace( "#[i](.+?)[/i]#is", "<i>\1</i>", $post );
  $post = preg_replace( "#[u](.+?)[/u]#is", "<u>\1</u>", $post );

   while ( preg_match( "#[size=([^]]+)](.+?)[/size]#ies", $post ) ) {
        $post = preg_replace( "#[size=([^]]+)](.+?)[/size]#ies"    , "set_font(array('s'=>'size','1'=>'\1','2'=>'\2'))", $post );
   }

   while ( preg_match( "#[font=([^]]+)](.*?)[/font]#ies", $post ) ) {
        $post = preg_replace( "#[font=([^]]+)](.*?)[/font]#ies"    , "set_font(array('s'=>'font','1'=>'\1','2'=>'\2'))", $post );
   }

   while ( preg_match( "#[color=([^]]+)](.+?)[/color]#ies", $post ) ) {
        $post = preg_replace( "#[color=([^]]+)](.+?)[/color]#ies"  , "set_font(array('s'=>'col' ,'1'=>'\1','2'=>'\2'))", $post );
  }

  $post = preg_replace( "#[email](S+?)[/email]#i", "<a href='mailto:\1'>\1</a>", $post );
  $post = preg_replace( "#[emails*=s*&quot;([.w-]+@[.w-]+.[.w-]+)s*&quot;s*](.*?)[/email]#i", "<a href='mailto:\1'>\2</a>", $post );
  $post = preg_replace( "#[emails*=s*([.w-]+@[.w-]+.[w-]+)s*](.*?)[/email]#i", "<a href='mailto:\1'>\2</a>", $post );

  $post = preg_replace("#[img](.*?)(script:|?|&|;)(.*?)[/img]#is","$1$2$3<br><span class=small>[<font color=red>No dynamic images</font>]</span>",$post);
  $post = preg_replace("#[img](.*?)(mailto:)(.*?)[/img]#is","$1$2$3<br><span class=small>[<font color=red>!!!</font>]</span>",$post);
  $post = preg_replace("#[img](.+?)[/img]#is","<img src="$1">",$post);

  $post = preg_replace("#([list])(.+?)([/list])#is","<ul>$2</ul>",$post);
  $post = preg_replace("#([list=)(A|1)(])(.+?)([/list])#is","<OL TYPE=$2>$4</OL>",$post);
  $post = preg_replace("#([*])#is","<li>",$post);

  $post = preg_replace("/([FLASH SIZE=1])(.+?)([/FLASH])/is","<OBJECT CLASSID='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' WIDTH=80 HEIGHT=60><PARAM NAME=movie VALUE="$2"><PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><PARAM NAME=scale VALUE=exactfit><PARAM NAME=menu VALUE=false><EMBED src="$2" quality=high menu=false scale=exactfit WIDTH=80 HEIGHT=60 swLiveConnect=true TYPE="application/x-shockwave-flash"></EMBED></OBJECT>",$post);
  $post = preg_replace("/([FLASH SIZE=2])(.+?)([/FLASH])/is","<OBJECT CLASSID='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' WIDTH=160 HEIGHT=120><PARAM NAME=movie VALUE="$2"><PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><PARAM NAME=scale VALUE=exactfit><PARAM NAME=menu VALUE=false><EMBED src="$2" quality=high menu=false scale=exactfit WIDTH=160 HEIGHT=120 swLiveConnect=true TYPE="application/x-shockwave-flash"></EMBED></OBJECT>",$post);
  $post = preg_replace("/([FLASH SIZE=3])(.+?)([/FLASH])/is","<OBJECT CLASSID='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' WIDTH=320 HEIGHT=240><PARAM NAME=movie VALUE="$2"><PARAM NAME=PLAY VALUE=TRUE><PARAM NAME=LOOP VALUE=TRUE><PARAM NAME=QUALITY VALUE=HIGH><PARAM NAME=scale VALUE=exactfit><PARAM NAME=menu VALUE=false><EMBED src="$2" quality=high menu=false scale=exactfit WIDTH=320 HEIGHT=240 swLiveConnect=true TYPE="application/x-shockwave-flash"></EMBED></OBJECT>",$post);
  $post = preg_replace("/([FLASH=)(S+?)(,)(.+?)(])(.+?)([/FLASH])/is"," <embed src="$6" menu=false scale=exactfit HEIGHT="$4" WIDTH="$2" quality="high"></embed> ",$post);
  $post = preg_replace("/([sound])(S+?)(.mid|.midi|.wav)([/sound])/is","<EMBED SRC="$2$3" AUTOSTART=FALSE LOOP=FALSE WIDTH=100></EMBED> ",$post);
  $post = str_replace(' <br> ','<br>',$post);
  $post = stripslashes($post);
  return $post;

}

function setsmiles($sm) {
static $sm_code,$sm_img;

  if( empty($sm_code) ) {
    $smilies = get_file('./data/smiles.php');
    $sm_code = array();
    $sm_img = array();
    foreach ($smilies as $code=>$data) {
      $code = str_replace(')',')',$code);
      $code = str_replace('(','(',$code);
      $sm_code[] = "'$code'";
      $sm_img[] = '<img src="./im/emoticons/'.$data['img'].'" border="0">';
    }
  }
  return preg_replace($sm_code,$sm_img,$sm);
}


function whosonline($where,$show = false) {
global $exbb,$vars,$memberoutput,$guests,$members;

    $guests = 0;
    $members = 0;
    $currenttime = time();
    $userexpire = $currenttime - ($exbb['membergone'] * 60);

    $ip = $vars['IP_ADDRESS'];
    $b = is_search_bot();

    $filetoopen = $exbb['home_path'].'data/onlinedata.php';
    $onlinedata = get_file($filetoopen);
    if (!is_array($onlinedata)) $onlinedata = array();
    $fp = @fopen($filetoopen,'r+');
    @flock($fp,2);
    $onlinedata[$ip]['n'] = $exbb['member'];
    $onlinedata[$ip]['id'] = $exbb['mem_id'];
    $onlinedata[$ip]['t'] = $currenttime;
    $onlinedata[$ip]['in'] = $where;
    if (!empty($b)) $onlinedata[$ip]['b'] = $b;
    $memberoutput = array();
    $remove_id = 0;
    foreach ($onlinedata as $id=>$info) {
       if ($userexpire > $info['t']) { unset($onlinedata[$id]); continue;}
       if ($info['n'] == $exbb['member'] && $id != $ip) { $remove_id = $id;}
       if ($show) {
         switch ($info['id']) {
            case 0: $guests++; break 1;
            default: $memberoutput[] = '<a href="profile.php?action=show&member='.$info['id'].'">'.$info['n'].'</a>';
                     break 1;
         }
       }
    }
    unset($onlinedata[$remove_id]);
    $memberoutput = array_unique($memberoutput);
    $members = count($memberoutput);
    $memberoutput = implode ( ' &raquo; ', $memberoutput);
    save_opened_file($fp,$onlinedata);
    $filetoopen = $exbb['home_path'].'data/max_online.php';
    $m_online =  @file($filetoopen);
    if ( !is_array($m_online) ) $m_online = array($currenttime,0);
    $now_online = $members + $guests;
    if ($m_online[1] < $now_online) {
       $fp = @fopen($filetoopen,'w');
       @flock($fp,2);
       @fwrite($fp,$currenttime."n".$now_online);
       @fclose($fp);
    }

    return $b;
}

function is_search_bot() {

    if ( strstr($_SERVER['HTTP_USER_AGENT'], 'Yandex') ) { return 'Yandex';}
    elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') ) {return 'Google';}
    elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'Slurp') ) {return 'Slurp';}
    elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'WebCrawler') ) {return 'WebCrawler';}
    elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'ZyBorg') ) {return 'ZyBorg';}

    return '';
}


function max_online(){
global $exbb;

    $filetoopen = $exbb['home_path'].'data/max_online.php';
    $m_online =  @file($filetoopen);
    if ( !is_array($m_online) ) return array(time(),0);
    return $m_online;
}

function bads_filter($check,$replc = 1) {
global $exbb;

     $filetoopen = $exbb['home_path'].'data/badwords.php';
     $badwords = @file($filetoopen);
     unset($badwords[0]);
     if (count($badwords)) {
       $bad = array();
       $good = array();
       foreach ($badwords as $words) {
         list($bw, $gw) = explode('=',$words);
         $bad[] = '#b(' . trim($bw) . ')b#i';
         $good[] = trim($gw);
       }
       if (count($bad)) $ok = preg_replace($bad,$good,$check);
     } else {
         $ok = $check;
     }

     if( $replc ) {  return $ok; }
     if ($check != $ok) return true; //есть плохие слова
}

function topic_icon($topic, $read_time=-1) {
global $exbb;

 $icon_path = './templates/'.$exbb['default_style'].'im';

 $read_time = $read_time > $exbb['last_visit'] ? $read_time : $exbb['last_visit'];
 if ($topic['state'] == 'pinned') return '<img src="'.$icon_path.'/folder_sticky.gif" border="0">';
 if ($topic['state'] == 'closed') return '<img src="'.$icon_path.'/locked.gif" border="0">';
 if ($topic['state'] == 'moved') return '<img src="'.$icon_path.'/moved.gif" border="0">';
 if (($topic['posts'] >= $exbb['hot_topic']) and ( (isset($read_time) )  && ($topic['postdate'] <= $read_time ))) return '<img src="'.$icon_path.'/tc_hot.gif" border="0">';
 if ($topic['posts'] >= $exbb['hot_topic']) return '<img src="'.$icon_path.'/to_hot.gif" border="0">';
 if ($read_time  && ($topic['postdate'] > $read_time)) return '<img src="'.$icon_path.'/to_new.gif" border="0">';
 return '<img src="'.$icon_path.'/tc_new.gif" border="0">';

}


function forumjump($allfrm) {
global $exbb,$lang,$jumphtml;
$jumphtml = '
<SCRIPT LANGUAGE="JavaScript">
<!--
function menu(){
var URL = document.jump.jumpto.options[document.jump.jumpto.selectedIndex].value;
top.location.href = URL; target = "_self";
}
// -->
</SCRIPT>
<form action="forums.php" method="post" name="jump">
<select name="jumpto" onchange="menu()">
<option value="index.php">'.$lang['Forum_jump'];
$last_cat = -1;
foreach($allfrm as $forumid=>$val){
  if ($val['catid'] != $last_cat) { #start if $categoryplace
    $jumphtml .= '<option value="'.$exbb['boardurl']."/index.php">n";
    $jumphtml .= '<option value="'.$exbb['boardurl'].'/index.php">-- &nbsp; '.$val['catname']."n";
    $jumphtml .= '<option value="'.$exbb['boardurl'].'/forums.php?forum='.$forumid.'" target="_self"> '.$val['name']."n";
  } else {
       $jumphtml .= '<option value="'.$exbb['boardurl'].'/forums.php?forum='.$forumid.'" target="_self"> '.$val['name']."n";
  }
  $last_cat = $val['catid'];
}
$jumphtml .= "</select></form>";
}


function moderator($where,$data) {
global $exbb,$modoutput,$lang,$lang_moder;

  $inmembmod = false;
  $mod_url = array();
  if (!empty($data[$where]['moderator'])) {
    $moderators = unserialize($data[$where]['moderator']);

    foreach ($moderators as $id=>$name) {
      $mod_url[] = '<a href="profile.php?action=show&member='.$id.'">'.$name.'</a>';
      if ($exbb['mem_id'] == $id) $inmembmod = true;
    }
  }
  $modoutput = ( count($mod_url) ) ? implode(', ', $mod_url) : $lang['no'];
  $lang_moder = ( count($mod_url) > 1 ) ? $lang['Moderators'] : $lang['Moderator'];
  if (defined('IS_ADMIN')) $inmembmod = true;
  return $inmembmod;
}

function sendmail($from_name,$from_address,$message,$subject = '',$to_bcc = array()) {
global $exbb;
  @set_time_limit(600);
  $headers = "MIME-Version: 1.0rnContent-type: text/plain; charset=windows-1251rnContent-transfer-encoding: 8bitrnDate: " . gmdate('D, d M Y H:i:s', time()) . " UTrnX-Priority: 3rnX-MSMail-Priority: NormalrnX-Mailer: PHPrn";
  $headers .= 'Return-Path: '.$from_address."rn";
  $headers .= 'From: '.$from_name.' <'.$from_address.">rn";
  #$to = reset($to_bcc);
  #unset($to_bcc[0]);
  #if (count($to_bcc)) $headers .= 'Bcc: '.implode( ', ' , $to_bcc ) . "rn";
  if ( is_array($to_bcc) ) {
      $cur_mails = get_file($exbb['home_path'].'data/users.php');
      if ( is_array($cur_mails) ) foreach ($to_bcc as $id=>$to) mail($cur_mails[$id]['m'], $subject, $message, $headers);
  }
  else {
      mail($to_bcc, $subject, $message, $headers);
  }

  unset($headers,$to_bcc,$cur_mails,$subject,$message);
}

function attach_upload($oldid = "",$name = "",$mode = 'post') {
global $exbb,$lang,$vars,$HTTP_POST_FILES;


        $FILE_NAME = $HTTP_POST_FILES['FILE_UPLOAD']['name'];
        $FILE_SIZE = $HTTP_POST_FILES['FILE_UPLOAD']['size'];

        $attach = array( 'attach_id'   => "",
                         'attach_file' => "",
                       );

        if ($HTTP_POST_FILES['FILE_UPLOAD']['name'] == "" or !$HTTP_POST_FILES['FILE_UPLOAD']['name'] or ($HTTP_POST_FILES['FILE_UPLOAD']['name'] == 'none') ) return $attach;


        if ($FILE_SIZE > $exbb['uploadsize']) error($lang['Info'],$lang['Attach_tobig'],'',0);

        $FILE_NAME = preg_replace( "/[^w.]/", "_", $FILE_NAME );

    if ($mode == 'post') {
        $storage_name = (empty($name)) ? 'file-'.$vars['forum'].'-'.time().'.ext' : $name;

        if ($vars['previewfirst'] == 'yes'){
          return array( 'FILE_NAME' => $FILE_NAME );
        }

        if (! @move_uploaded_file( $HTTP_POST_FILES['FILE_UPLOAD']['tmp_name'], $exbb['home_path'].'uploads/'.$storage_name) )
        {
            error($lang['Info'],$lang['upload_failed'],'',0);
        }
        else
        {
            @chmod( $exbb['home_path'].'uploads/'.$storage_name, 0777 );
        }


        $filetoopen = $exbb['home_path'].'forum'.$vars['forum'].'/attaches-'.$vars['topic'].'.php';
        $alldata = ( file_exists($filetoopen) ) ? get_file($filetoopen) : array();
        $id = (empty($oldid)) ? count($alldata) + 1 : $oldid;
        $alldata[$id]['id'] = $storage_name;
        $alldata[$id]['hits'] = 0;
        $alldata[$id]['file'] = $FILE_NAME;
        save_file($filetoopen,$alldata);

        $attach['attach_id']  = $id;
        $attach['attach_file'] = $FILE_NAME;
        return $attach;
    } else {
        
        preg_match('#image/[x-]*([a-z]+)#', $HTTP_POST_FILES['FILE_UPLOAD']['type'], $filetype);
        switch ( $filetype[1] ) {
            case 'jpeg':
            case 'pjpeg':
            case 'jpg': $type = '.jpg';
                break;
            case 'gif': $type = '.gif';
                break;
            case 'png': $type = '.png';
                break;
            default:
                return $attach;
                break;
        }

        if ( (isset($HTTP_POST_FILES['FILE_UPLOAD']['type'])) && ($HTTP_POST_FILES['FILE_UPLOAD']['size'] > $exbb['avatar_size']) ) return $attach;

        $storage_name = 'personal/' . $exbb['mem_id'] . '-avatar' . $type;
        if ( file_exists($exbb['home_path'] . 'im/avatars/' . $storage_name) ) @unlink($exbb['home_path'] . 'im/avatars' . $storage_name);

        if (! @move_uploaded_file( $HTTP_POST_FILES['FILE_UPLOAD']['tmp_name'], $exbb['home_path']. 'im/avatars/' .$storage_name) )
        {
            return $attach;
        }
        else
        {
            @chmod( $exbb['home_path'] . 'im/avatars' . $storage_name, 0777 );
            list($width, $height) = @getimagesize($exbb['home_path'].$storage_name);
            if ( $width <= $exbb['avatar_max_width'] && $height <= $exbb['avatar_max_height'] ) {
                $attach['attach_file'] = $storage_name;
            } else {@unlink($exbb['home_path'] . 'im/avatars' . $storage_name);}
        }
        return $attach;
    }

        

}


function sort_by_catid($a, $b) {
    if ($a['catid'] == $b['catid']) return 0;
    return ($a['catid'] < $b['catid']) ? -1 : 1;
}
function sort_by_position($a, $b) {
    if ($a['position'] == $b['position']) return 0;
    return ($a['position'] < $b['position']) ? -1 : 1;
}

function sort_by_postdate($a, $b) {
    if ($a['postdate'] == $b['postdate']) return 0;
    return ($a['postdate'] > $b['postdate']) ? -1 : 1;
}

function get_file($filename) {
  if ( $fp = @fopen($filename,'r') ) lock_file($fp,1);
  $str = @fread($fp,filesize($filename));
  @fclose($fp);
  return unserialize( substr($str,8,strlen($str)) );
}

function save_file($filename,$arr){
  $fp = fopen($filename,'w');
  lock_file($fp);
  fwrite($fp,'<?die;?>'.serialize($arr));
  fclose($fp);
}

function save_opened_file(&$pointer,$arr) {
  fseek ($pointer,0);
  fwrite($pointer,'<?die;?>'.serialize($arr));
  fflush($pointer);
  flock($pointer,3);
  fclose($pointer);
  return;
}

function myprint($arr = array()) {
echo '<pre>';
print_r($arr);
echo '</pre>';
return;
}

function lock_file(&$file,$mode = 2) {

  if ( preg_match('/[c-z]:\.*/i', $_SERVER['PATH']) ) return;
  $i = 0;
  while ( !flock($file,$mode) ) {
      sleep(1);
      $i++;
      if ($i>=10) {
          @fclose($file);
          die('Access to file blocked! Try again later<br>You may save your message:<br>'.$_POST['inpost']);
      }
  }

}
?>
Онлайн: 0
Реклама