Вход Регистрация
Файл: gbcomm.php
Строк: 399
<?php

define
('IN_PHPBB'true);
$phpbb_root_path './';

include(
$phpbb_root_path 'extension.inc');
include(
$phpbb_root_path 'common.'.$phpEx);
include(
$phpbb_root_path 'includes/bbcode.'.$phpEx);
include(
$phpbb_root_path 'includes/functions_gb.'.$phpEx);
include(
$phpbb_root_path 'includes/functions_antispam.'.$phpEx);

function 
refresh_page($message ''
{
     global 
$template$lang$phpEx$view;
 
               
$template->assign_vars(array(
            
'META' => '<meta http-equiv="refresh" content="3;url=' append_sid("index.$phpEx") . '">')
            );

     
$msg $message '<br />' sprintf($lang['Guest_return'], '<a href="' append_sid("gb.$phpEx") . '">''</a> ') . '<br />' sprintf($lang['Click_return_index'], '<a href="' append_sid("index.$phpEx") . '">''</a>');

     
message_die(GENERAL_MESSAGE$msg);


$userdata session_pagestart($user_ipPAGE_GUESTBOOK);
init_userprefs($userdata);

$guest_config = array();
$guest_book = new guestbook();
$guest_config $guest_book->guest_config();
$time date('d.m - H:i');

$ban_information session_userban($user_ip$userdata['user_id']);
if (
$ban_information)
{
    
message_die(CRITICAL_MESSAGE'Вы не можете создавать новые темы и отвечать на старые, т.к. ваш '.$ban_information);
}

if ( 
$userdata['session_logged_in'] )
{
      switch (
$userdata['user_level'])    
      { 
         case 
ADMINdefine('STAFF'true); break;
         case 
MOD
        if ( 
$guest_config['permit_mod'] )
        {
               
define('STAFF'true);  
        }
    break;
      }
}
$hide = ( isset($HTTP_POST_VARS['hide']) ) ? ( ($HTTP_POST_VARS['hide']) ? TRUE ) : 0;
$unhide = ( isset($HTTP_POST_VARS['unhide']) ) ? ( ($HTTP_POST_VARS['unhide']) ? TRUE ) : 0;
$cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? TRUE FALSE;
$confirm = ( isset($HTTP_POST_VARS['confirm']) ) ? TRUE FALSE;
$delete = ( isset($HTTP_POST_VARS['delete']) ) ? TRUE FALSE;
$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;

if ( isset(
$HTTP_POST_VARS['idmsg']) || isset($HTTP_GET_VARS['idmsg']) )
{
    
$idmsg = ( isset($HTTP_POST_VARS['idmsg']) ) ? $HTTP_POST_VARS['idmsg'] : $HTTP_GET_VARS['idmsg'];
    
$idmsg intval($idmsg);    
}
else
{
    
$idmsg '';
}

if ( isset(
$HTTP_POST_VARS['view']) || isset($HTTP_GET_VARS['view']) )
{
    
$view = ( isset($HTTP_POST_VARS['view']) ) ? $HTTP_POST_VARS['view'] : $HTTP_GET_VARS['view'];
    
$view htmlspecialchars($view);    
}
else
{
    
$view '';
}

if ( isset(
$HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) )
{
    
$mode = ( isset($HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
    
$mode htmlspecialchars($mode);
}
else
{
    if ( 
$delete )
    {
        
$mode 'delete';
    }
    else
    {
        
$mode '';
    }
}

if ( 
$cancel )
{
    
redirect(append_sid("gb.$phpEx"TRUE));
}

$error_msg '';
$strip_var_list = array('email' => 'email''confirm_code' => 'confirm_code');

function 
get_crypted_name($name)
{
    global 
$board_config;

    
$code_start $board_config['board_startdate'] % 6597;
    
$first chr($code_start $board_config['board_startdate'] % 26);
    
$var $first md5($name $board_config['board_startdate']);

    return 
$var;
}

if (isset(
$HTTP_POST_VARS['submit']))
{

    
$html_entities_match = array('#&(?!(#[0-9]+;))#''#<#''#>#''#"#');
    
$html_entities_replace = array('&amp;''&lt;''&gt;''&quot;');    
    
$username = ( !empty($HTTP_POST_VARS['nick']) ) ? phpbb_clean_username($HTTP_POST_VARS['nick']) : $userdata['username'];
    
$email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['email'])) : '';
    
$message = ( !empty($HTTP_POST_VARS['message']) ) ? trim($HTTP_POST_VARS['message']) : '';
    
$maxlenght intval($guest_config['maxlenght_posts']);
    
$strip_var_list = array('email' => 'email''confirm_code' => 'confirm_code');
    
spam_hook(''$error_msg$username''$message);
    while( list(
$var$param) = @each($strip_var_list) )
    {
        
$param get_crypted_name($param);
        if ( !empty(
$HTTP_POST_VARS[$param]) )
        {
            $
$var trim(htmlspecialchars($HTTP_POST_VARS[$param]));
        }
    }
    
    if (!
$userdata['session_logged_in'] || ($userdata['session_logged_in'] && $username != $userdata['username']))
    {
        include(
$phpbb_root_path 'includes/functions_validate.'.$phpEx);
        
        
$result validate_username($username);
        if (
$result['error'])
        {
            
$error_msg .= (!empty($error_msg)) ? '<br />' $result['error_msg'] : $result['error_msg'];
        }
    }
    else
    {
        
$username $userdata['username'];
    }    
                        
        if ( 
strlen$message ) > $maxlenght )
        {
              
$error_msg .= (!empty($error_msg)) ? '<br />' sprintf($lang['Long_message'], $maxlenght)  : sprintf($lang['Long_message'], $maxlenght) ;
        }
        else if ( 
$message != '' )
        {   
              
$check $guest_book->check_post_error($message);
      
              if ( 
$check['error'] )
          {
                     
$error_msg .= (!empty($error_msg)) ? '<br />' $check['error_msg'] : $check['error_msg'];

              }
          else
          {
                     
$message $guest_book->word_wrap($message$guest_config['word_wrap_length']);
             
$bbcode_uid make_bbcode_uid();
             
$message preg_replace($html_entities_match$html_entities_replace$message);
             
$message bbencode_first_pass($message$bbcode_uid);
          }
    }
    else
    {
        
$error_msg .= (!empty($error_msg)) ? '<br />' $lang['Empty_message'] : $lang['Empty_message'];
    }
        
        
$data_ora time();
        
$agent trim(htmlspecialchars($HTTP_SERVER_VARS['HTTP_USER_AGENT'])); // ??? :(
        
$hide $guest_config['hide_posts'];
        
$flood_interval intval($guest_config['flood_interval']);
   
        if ( 
$flood_interval )
        {      
                
$time_request time() - $flood_interval;
                
$last_posting intval($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_flood']);
      
            if(!isset(
$HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_flood']) OR $last_posting $time_request)
            {  
                    
setcookie($board_config['cookie_name'] . '_flood',time(), time()+3600$board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
                }
                if(
$last_posting $time_request)
                {
                        
$error_msg .= (!empty($error_msg)) ? '<br />' $lang['Flood_Error'] : $lang['Flood_Error'];
                }     
        }
        
        if (!
$userdata['session_logged_in'])
        {
        if (empty(
$HTTP_POST_VARS['confirm_id']))
        {
            
$error TRUE;
            
$error_msg .= ( ( isset($error_msg) ) ? '' '' ) . $lang['Confirm_code_wrong'];
        }
        else
        {
            
$confirm_id htmlspecialchars($HTTP_POST_VARS['confirm_id']);
            if (!
preg_match('/^[A-Za-z0-9]+$/'$confirm_id))
            {
                
$confirm_id '';
            }
            
            
$sql 'SELECT code 
                FROM ' 
CONFIRM_TABLE 
                WHERE confirm_id = '
$confirm_id
                AND session_id = '" 
$userdata['session_id'] . "'";
            if (!(
$result $db->sql_query($sql)))
            {
                
message_die(GENERAL_ERROR'Could not obtain confirmation code'''__LINE____FILE__$sql);
            }
            
            if (
$row $db->sql_fetchrow($result))
            {
                if (
$row['code'] != $confirm_code)
                {
                    
$error TRUE;
                    
$error_msg .= ( ( isset($error_msg) ) ? '' '' ) . $lang['Confirm_code_wrong'];
                }
                else
                {
                    
$sql 'DELETE FROM ' CONFIRM_TABLE 
                        WHERE confirm_id = '
$confirm_id
                            AND session_id = '" 
$userdata['session_id'] . "'";
                    if (!
$db->sql_query($sql))
                    {
                        
message_die(GENERAL_ERROR'Could not delete confirmation code'''__LINE____FILE__$sql);
                    }
                }
            }
            else
            {        
                
$error TRUE;
                
$error_msg .= ( ( isset($error_msg) ) ? '' '' ) . $lang['Confirm_code_wrong'];
            }
            
$db->sql_freeresult($result);
        }
       }     
       if (!
$error_msg)
       {    
           if (
defined('STAFF') and $idmsg != ''
           {
                    
$sql "UPDATE " GUESTBOOK " SET nick = '$username', email = '".str_replace("'""''"$email)."', comento = '".str_replace("'""''"$message)."', bbcode_uid = '$bbcode_uid
                    WHERE id = '
$idmsg' LIMIT 1";
                
                
$message_sing $lang['Message_edited'];
           } 
           else 
           {
                    
$sql "INSERT INTO " GUESTBOOK " (nick, data_ora, email, comento, bbcode_uid, ipi, agent, user_id, hide)
                            VALUES ('
$username', '$data_ora', '".str_replace("'""''"$email)."', '".str_replace("'""''"$message)."', '$bbcode_uid', '$user_ip', '$agent', '".$userdata['user_id']."', '$hide')";
                    
                    
$message_sing $lang['Message_sing'];
                    
// Sobytie
                    
add_sobytie('''gb_post'''''''$userdata['user_id'], $username''$message$data_ora);    
                    
// Sobytie
           

    
               if( !(
$result $db->sql_query($sql)) )
               {
                        
message_die(GENERAL_ERROR'Could not query guestbook'''__LINE____FILE__$sql);
               }
               
refresh_page($message_sing); 
       }
       else 
       {
               
$field_nick = ( !empty($HTTP_POST_VARS['nick']) ) ? stripslashes($username) : '';
               
$field_email = ( !empty($HTTP_POST_VARS['email']) ) ? stripslashes($email) : '';
               
$field_comento = ( !empty($HTTP_POST_VARS['message']) ) ? stripslashes($message) : '';
               
$field_comento preg_replace('/:(([a-z0-9]:)?)' $bbcode_uid '/s'''$field_comento);
       }
}

$confirm_image '';
$strip_var_list = array('confirm_code' => 'confirm_code'); 
if (!
$userdata['session_logged_in'] )
{
    
$sql 'SELECT session_id FROM ' SESSIONS_TABLE
    if (!(
$result $db->sql_query($sql)))
    {
        
message_die(GENERAL_ERROR'Could not select session data'''__LINE____FILE__$sql);
    }

    if (
$row $db->sql_fetchrow($result))
    {
        
$confirm_sql '';
        do
        {
            
$confirm_sql .= (($confirm_sql != '') ? ', ' '') . "'" $row['session_id'] . "'";
        }
        while (
$row $db->sql_fetchrow($result));
        
        
$sql 'DELETE FROM ' .  CONFIRM_TABLE 
                  WHERE session_id NOT IN (
$confirm_sql)";        
        if (!
$db->sql_query($sql))
        {
            
message_die(GENERAL_ERROR'Could not delete stale confirm data'''__LINE____FILE__$sql);
        }
    }
    
$db->sql_freeresult($result);

    
$sql 'SELECT COUNT(session_id) AS attempts 
        FROM ' 
CONFIRM_TABLE 
        WHERE session_id = '" 
$userdata['session_id'] . "'";
    if (!(
$result $db->sql_query($sql)))
    {
        
message_die(GENERAL_ERROR'Could not obtain confirm code count'''__LINE____FILE__$sql);
    }

    if (
$row $db->sql_fetchrow($result))
    {
        if (
$row['attempts'] > 20)
        {
            
message_die(GENERAL_MESSAGE$lang['Too_many_']);
        }
    }
    
$db->sql_freeresult($result);

    
$allowed_symbols "0123456789";
    
$length 5;
    while(
true)
    {
        
$code='';
        for(
$i=0$i<$length$i++)
        {
            
$code.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)};
        }
        if(!
preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp/'$code)) break;
    }

    
$confirm_id md5(uniqid($user_ip));

    
$sql 'INSERT INTO ' CONFIRM_TABLE " (confirm_id, session_id, code) 
        VALUES ('
$confirm_id', '"$userdata['session_id'] . "', '$code')";
    
    if (!
$db->sql_query($sql))
    {
        
message_die(GENERAL_ERROR'Could not insert new confirm code information'''__LINE____FILE__$sql);
    }

    unset(
$code);
        
    
$confirm_image '<img src="' append_sid("profile.$phpEx?mode=confirm&amp;id=$confirm_id") . '" alt="" title="" />';
    
$s_hidden_fields .= '<input type="hidden" name="confirm_id" value="' $confirm_id '" />';

    
$template->assign_block_vars('switch_confirm', array());
}
        
foreach ( 
$strip_var_list as $var => $param )
{
    
$template->assign_vars(array(
        
'VAR_' strtoupper($param) => get_crypted_name($param))
    );
}
    
if ( (
defined('STAFF') and $mode == 'edit') or $mode == 'quote'
{
  
        if (
$mode == 'edit')
        {
                 
$sql "SELECT * FROM " GUESTBOOK 
                         WHERE id = '
$idmsg' LIMIT 1";
        }
        else
        { 
                 
$sql "SELECT nick, comento, bbcode_uid 
                         FROM " 
GUESTBOOK 
                         WHERE id = '
$idmsg' LIMIT 1";
        }                               
    if ( 
$result $db->sql_query($sql) ) 
    {
        
$row $db->sql_fetchrow($result);
             if (!
$row)  message_die(GENERAL_MESSAGE$lang['Guest_none_selected']);
             
        if (
$mode == 'edit'
        {
             
$field_email = ( !empty($row['email']) ) ? trim(stripslashes($row['email'])) : '';
                 
$field_nick = ( !empty($row['nick']) ) ? trim(stripslashes($row['nick'])) : ANONYMOUS;
                 
$bbcodes $row['bbcode_uid'];
                 
$editid $idmsg;
        }
               
        
$quote_nick = ( !empty($row['nick']) ) ? trim(stripslashes($row['nick'])) : ANONYMOUS;
        
$field_comento = ( !empty($row['comento']) ) ? stripslashes($row['comento']) : '';
            
$field_comento preg_replace('/:(([a-z0-9]:)?)' $row['bbcode_uid'] . '/s'''$field_comento);
             
            
$field_comento str_replace('<''&lt;'$field_comento);
        
$field_comento str_replace('>''&gt;'$field_comento);
        
$field_comento str_replace('<br />'"n"$field_comento);
                
            if ( 
$mode == 'quote' 
            {
            
$field_comento $quote_nick ',';
        }                
    }
}
 
switch( 
$view )
{
        default: 
    {
         
$title_msg $lang['Guestbook'];
         
$sql =  "SELECT COUNT(*) as total FROM " GUESTBOOK " WHERE hide = 0";
         
$hidepost =  'WHERE hide = 0';
    }
        break;

$result $db->sql_query($sql);
if( 
$result )
{
    
$row $db->sql_fetchrow($result);
    
$num $row['total'];           
}
      
$db->sql_freeresult($result);
      
        
$guest_config['posts_per_page'] = intval($guest_config['posts_per_page']);
        
$link_view_all = (defined('STAFF')) ? '<a href="' append_sid("gb.$phpEx?view=view_all") . '">'.$lang['Guest_view_all'].'</a>' '';
    
$link_view_hidden = (defined('STAFF')) ? '<a href="' append_sid("gb.$phpEx?view=hidden") . '">'.$lang['Guest_view_hidden'].'</a>' '';
    
$link_view_visible = (defined('STAFF')) ? '<a href="' append_sid("gb.$phpEx") . '">'.$lang['Guest_view_visible'].'</a>' '';
    
$pagination = (defined('STAFF')) ? generate_pagination("gb.$phpEx?mode=leggi&amp;view=$view"$num$guest_config['posts_per_page'], $start). ' 'generate_pagination("gb.$phpEx?mode=leggi"$num$guest_config['posts_per_page'], $start). ' ';
        
$field_view = (defined('STAFF')) ?  '<input type="hidden" name="view" value="'.$view.'" />' '';
    
$field_hide = (defined('STAFF')) ? '<input type="submit" name="hide" value="'.$lang['Guest_hide_selected'].'" class="subbutton" />' '';
    
$field_unhide = (defined('STAFF')) ? '<input type="submit" name="unhide" value="'.$lang['Guest_show_selected'].'" class="subbutton" />' '';
    
$field_delete = (defined('STAFF')) ? '<input type="submit" name="delete" value="'.$lang['Del2'].'" class="subbutton" />' '';
        
$s_hidden_fields '<input type="hidden" name="submit" value="'.$lang['Submit'].'" />';
        
$s_hidden_fields .= ($mode =='edit') ? '<input type="hidden" name="idmsg" value="'.$editid.'" />' $s_hidden_fields;
    
$s_hidden_fields .= '<input type="hidden" name="mode" value="'$guest_book->encrypt(time()) . '" />';
    
$s_hidden_fields .= '<input type="hidden" name="confirm_id" value="' $confirm_id '" />';

$page_title 'Написать';
include(
$phpbb_root_path 'includes/page_header.'.$phpEx); 

if ( 
$error_msg != '' )
{
    
$template->set_filenames(array(
        
'reg_header' => 'error_body.tpl')
    );
    
$template->assign_vars(array(
        
'ERROR_MESSAGE' => $error_msg)
    );
    
    
$template->assign_var_from_handle('ERROR_BOX''reg_header');
}

$template->set_filenames(array( 
        
'body' => 'gbcomm.tpl'
); 

    
$template->assign_vars(array(
        
'L_MESSAGE' => $lang['Message'], 
        
'TIME' => $time,
        
'L_GUESTBOOK' => $title_msg,
        
'CONFIRM_IMG' => $confirm_image
        
'L_USERNAME' => $lang['Username'],
                
'FIELD_HIDE' => $field_hide,
                
'FIELD_VIEW' => $field_view,
                
'FIELD_NICK' => $field_nick,
                
'FIELD_COMENTO' => $field_comento,
        
'U_GUESTBOOK' => append_sid("gb.$phpEx?"), 
        
'L_SUBJECT' => $lang['Subject'],
        
'L_POSTED' => $lang['Posted'], 
        
'L_DATE' => $lang['Date'],
        
'L_FROM' => $lang['From'],
        
'L_SUBMIT' => $lang['Submit'],
        
'L_DELETE' => $lang['Delete'],
        
'L_SELECT' => $lang['Select'],
        
'L_CAVEAT' => $lang['caveat'],
        
'L_MESSAGGIO' => $lang['Post'],
            
'L_EMPTY_MESSAGE' => $lang['Empty_message'],
        
'S_GUESTBOOK_ACTION' => append_sid("gbcomm.$phpEx?mode=scrivi"),
        
'S_HIDDEN_FIELDS' => $s_hidden_fields)
    );

if (
defined('STAFF'))
{
      
$template->assign_block_vars('switch_user_staff', array());
}

$template->pparse('body'); 
include(
$phpbb_root_path 'includes/page_tail.'.$phpEx); 

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