Просмотр файла includes/functions_gb.php

Размер файла: 9.54Kb
<?php

if ( !defined('IN_PHPBB') )
{
	die("Hacking attempt");
}

define ('GUESTBOOK', $table_prefix.'guestbook');
define ('GUESTBOOK_CONFIG_TABLE', $table_prefix.'guest_config');

$language = $userdata['user_lang'];

if( !file_exists($phpbb_root_path . 'language/lang_' . $language . '/lang_book.'.$phpEx) )
{
   $language = $board_config['default_lang'];
}

if( !file_exists($phpbb_root_path . 'language/lang_' . $language . '/lang_book.'.$phpEx) )
{
   $language = 'english';
}

include($phpbb_root_path . 'language/lang_' . $language . '/lang_book.' . $phpEx);


 class guestbook
 {
    var $guestbook_config = array();
    var $patterns_b = "#\[b\](.*?)\[/b\]#si";
    var $patterns_i = "#\[i\](.*?)\[/i\]#si";
    var $patterns_u = "#\[u\](.*?)\[/u\]#si";
	var $patterns_img = "#\[img\]([^?].*?)\[/img\]#si";
	var $patterns_url0 = "#\[url\](.*?)\[/url\]#si";
	var $patterns_url = "#\[url\]([\w]+?://[^ \"\n\r\t<]*?)\[/url\]#is";
	var $patterns_url1 = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";
	var $patterns_url2 = "#\[url=([\w]+?://[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is";
	var $patterns_url3 = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\](.*?)\[/url\]#is";
	var $patterns_url4 = "#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is";
	var $patterns_url5 = "#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is";
	var $patterns_email = "#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
	var $patterns_email1 = "#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i";
    var $patterns_code = "#\[code\](.*?)\[/code\]#si";
    var $patterns_code1 = "#\[/code\]#si";
    var $patterns_code2 = "#\[code\]#si";
    var $patterns_quote = "#\[quote\](.*?)\[/quote\]#si";
    var $patterns_quote1 = "#\[quote=\"(.*?)\"\](.*?)\[/quote\]#si";
    var $patterns_quote2 = "#/\[quote=\"(.*?)\"\]/#si";
    var $patterns_quote3 = "#\[/quote\]#si";
    var $patterns_quote4 = "#\[quote\]#si";
    var $patterns_color = "#\[color=(\#[0-9A-F]{6}|[a-z]+)\](.*?)\[/color\]#si";
    var $patterns_color1 = "#\[color=(\#[0-9A-F]{6}|[a-z]+)\]#si";
    var $patterns_color2 = "#\[/color\]#si";
    var $patterns_size = "#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si";
    var $patterns_size1 = "#\[size=([1-2]?[0-9])\]#si";
    var $patterns_size2 = "#\[/size\]#si";
    
  function guestbook()
  {
    global $db;
    
    $sql = "SELECT * FROM " . GUESTBOOK_CONFIG_TABLE;
    if( !($result = $db->sql_query($sql)) )
      {
	    message_die(CRITICAL_ERROR, "Could not query config information from guestbook", "", __LINE__, __FILE__, $sql);
      }

     while ( $row = $db->sql_fetchrow($result) )
      {
        $this->guestbook_config[$row['config_name']] = $row['config_value'];
      }
      
      $db->sql_freeresult($result);
  }
  
  function guest_config()
  {
     return $this->guestbook_config;
  }
  
  function guest_counter()
  {
     $this->guestbook_config['contatore'] = intval($this->guestbook_config['contatore']) + 1;
     $this->update_guestbook('contatore', $this->guestbook_config['contatore']);
  }

function globalRegCheck( $string ) {
 
  if ( preg_match($this->patterns_img, $string)
   || preg_match($this->patterns_url, $string)
   || preg_match($this->patterns_url1, $string)
   || preg_match($this->patterns_url2, $string)
   || preg_match($this->patterns_url3, $string)
   || preg_match($this->patterns_url4, $string)
   || preg_match($this->patterns_url5, $string)
   || preg_match($this->patterns_email, $string)
   || preg_match($this->patterns_email1, $string)
   || preg_match($this->patterns_code, $string)
   || preg_match($this->patterns_code1, $string)
   || preg_match($this->patterns_code2, $string)
   || preg_match($this->patterns_quote, $string)
   || preg_match($this->patterns_quote1, $string)
   || preg_match($this->patterns_quote2, $string)
   || preg_match($this->patterns_quote3, $string)
   || preg_match($this->patterns_quote4, $string)
   || preg_match($this->patterns_color, $string)
   || preg_match($this->patterns_color1, $string)
   || preg_match($this->patterns_color2, $string)
   || preg_match($this->patterns_size, $string)
   || preg_match($this->patterns_size1, $string) 
   || preg_match($this->patterns_size2, $string)  
   )
   {
	 return true;
   }
  else {
          return false;
 	   }
  }

function word_wrap( $text, $size, $force = true, $tag = '' ) {
     if( $this->guestbook_config['word_wrap'] ) {
		$withN = explode("\n\r", trim($text));
		$globalWrap = "";
		for( $a=0; $za=count($withN), $a < $za; $a++ ) {
			$ex = explode(" ", trim($withN[$a]));
			for( $b=0; $zb = count($ex), $b < $zb; $b++ ) {
				if($this->globalRegCheck($ex[$b]) ) {
					$globalWrap .= $ex[$b];
				}
				else {
					$provvisory = "";
					$where = 0;
					if($force == false) {
						if( strlen($ex[$b]) > $size && !is_numeric($ex[$b]) ) {

                            if($tag !='') {
							   for($c=0; $zc = (ceil(strlen($ex[$b])/$size)), $c < $zc; $c++) {
								$provvisory .= substr($ex[$b],$where,$size).$tag;
								$where += $size;
							   }
							} else {
							  $provvisory = substr($ex[$b],$where,$size);
							}
						}
						else {
							$provvisory = $ex[$b];
						}
					}
					else {
						if( strlen($ex[$b])>$size ) {
                            if($tag !='') {
							   for($c=0; $zc = (ceil(strlen($ex[$b])/$size)), $c < $zc; $c++) {
								$provvisory .= substr($ex[$b],$where,$size).$tag;
								$where += $size;
							   }
							} else {
							  $provvisory = substr($ex[$b],$where,$size);
							}
						}
						else {
							$provvisory = $ex[$b];
						}
					}
					$globalWrap .= $provvisory;
				}
				$globalWrap .= " ";
			}
			$globalWrap .= "\n\r";
		}
		return $globalWrap;
      }
       else {
             return $text;
           }
	}

function check_post_error ($message)
{
  global $lang;

   if ( $this->guestbook_config['no_only_quote'] )
        {
		 $text = preg_replace('/(\[quote)(.*)(\[\/quote\])/si', '', $message);
         if (trim($text) == '')  return array('error' => true, 'error_msg' => $lang['Empty_message']);
        }
   if ( $this->guestbook_config['no_only_smilies'] )
     {
       $text =  smilies_pass($message);
       $text = preg_replace("/(\<img)(.*?)(\>)/si", "", $text);
       if ($this->check_bbcode_error($text) == '')  return array('error' => true, 'error_msg' => $lang['Empty_message']);
     }

   if ($this->check_bbcode_error($message) == '')
     {
        return array('error' => true, 'error_msg' => $lang['Empty_message']);
     }
     
    return array('error' => false, 'error_msg' => '');
}

function check_bbcode_error ($text)
{
    if (trim($text) == '') return $text;
    
  $text = preg_replace ($this->patterns_b, '\\1', $text);
  $text = ($text != '') ? trim(preg_replace ($this->patterns_i, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_u, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_img, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_url0, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_url, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_url1, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_url2, '\\2', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_url3, '\\2', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_email, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_email1, '\\2', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_code, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_quote, '\\1', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_quote1, '\\2', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_color, '\\2', $text)) : $text;
  $text = ($text != '') ? trim(preg_replace ($this->patterns_size, '\\2', $text)) : $text;

   return $text;
}

function update_guestbook($config_name, $config_value)
  {
    global $db;
    
    $sql = "UPDATE " . GUESTBOOK_CONFIG_TABLE . " SET
		    config_value = '" . str_replace("\'", "''", $config_value) . "'
		    WHERE config_name = '$config_name'";
			
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Failed to update general configuration for GUESTBOOK", "", __LINE__, __FILE__, $sql);
			}

     $this->guestbook_config[$config_name] = $config_value;
  }
  
 function ed($t) {
      $password = $this->guestbook_config['password'];
      $password = date("Ymd") - $password;
      $r = md5($password);
      $c=0;
      $v = "";
      for ($i=0;$i<strlen($t);$i++) {
         if ($c==strlen($r)) $c=0;
         $v.= substr($t,$i,1) ^ substr($r,$c,1);
         $c++;
      }
      return $v;
   }
   
   function encrypt($t){
      srand((double)microtime()*1000000);
      $r = md5(rand(0,32000));
      $c=0;
      $v = "";
      for ($i=0;$i<strlen($t);$i++){
         if ($c==strlen($r)) $c=0;
         $v.= substr($r,$c,1) .
             (substr($t,$i,1) ^ substr($r,$c,1));
         $c++;
      }
      return base64_encode($this->ed($v));
   }
   
   function decrypt($t) {
      $t = $this->ed(base64_decode($t));
      $v = "";
      for ($i=0;$i<strlen($t);$i++){
         $md5 = substr($t,$i,1);
         $i++;
         $v.= (substr($t,$i,1) ^ $md5);
      }
      return $v;
   }
}

?>