home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / akce / web / phpbb2plus / phpBB2_plus_1.52.exe / phpBB2 / card.php < prev    next >
PHP Script  |  2004-07-18  |  23KB  |  430 lines

  1. <?php 
  2. /*************************************************************************** 
  3. *                            card.php 
  4. *             php Script needed for Yellow card mod (card ban/report mod)
  5. *
  6. *        giving the rigth POST actions, this file can:
  7. *        ban, unban, warn postes or report a post to the forums moderators
  8. *        now also posible to block a user for limited time if "protect user account" mod is pressent
  9. *        the moderators of the forum can have a email notification, 
  10. *        this can be controled in the ADMIN PANEL
  11. *
  12. *                       ------------------- 
  13. *   begin                : Feb 05, 2002 
  14. *   author             : Niels Chr. R°d Denmark < ncr@db9.dk > 
  15. *   www             : http://mods.db9.dk
  16. *   email                : ncr@db9.dk 
  17. *      ver.1.4.14.
  18. *   History:
  19. *    ver 0.9.0. - initial beta for RC-2
  20. *    ver 1.0.0. - initial release for RC-2
  21. *    ver 1.2.0. - initial release for phpBB2 ver 2.0.0.
  22. *    ver 1.2.4. - history started, major rechange on how this file works, now uses POST action, for improved security
  23. *    ver 1.2.5. - fixed that post report was send out evry time, regardless of the admin settings
  24. *    ver 1.2.6. - allow admin to warn, ban outside a forum (e.g. in viewprofile/memberlist)
  25. *    ver 1.2.7. - fixed that after ver 1.2.4. users was not banned when reatched the warn limit
  26. *    ver 1.2.8. - fixed that the first post report was not sendt out
  27. *    ver 1.2.9. - fixed a error that couses the "back" link not to work if not moderators
  28. *    ver 1.3.0. - now posible to send PM to users if they are resiving cards / users can write a message to moderators easy
  29. *    ver 1.3.1. - security update, this mod, now uses it own DB field, for counting warning cards
  30. *    ver 1.3.2. - now also posible to post a report into a specific report forum (defined in admin panel)
  31. *    ver 1.3.3. - fix some minor isues, regarding posting a report
  32. *    ver 1.4.0. - security update
  33. *    ver 1.4.1. - added block time, if protect useraccount mod is installed
  34. *    ver 1.4.2. - users are now banned imidiatly if they are logged in same time as they are getting a red card
  35. *    ver 1.4.3. - block email notification was not showing how long the user was blocked, now corrected
  36. *    ver 1.4.5. - minor update
  37. *    ver 1.4.6. - ver 1.4.1 introduced a bug, witch caused the ban email was not sendt out, this is now fixed
  38. *    ver 1.4.7. - now compatible with admin panel, ban users panel
  39. *    ver 1.4.8. - log ip of user witch have given block user card
  40. *    ver 1.4.9. - ver 1.4.8. had a typo, witch is corrected
  41. *    ver 1.4.10. - updated the RFC syntax in emails send out
  42. *     ver 1.4.11. - fix that admin is allowed to give cards, outside viewtopic.php
  43. *     ver 1.4.12. - replaced all RAPPORT and RAPORT with REPORT
  44. *     ver 1.4.13. - fixed some isues about RY card
  45. *    ver 1.4.14. - now uses 2.0.6. email format for subject
  46. *
  47. ***************************************************************************/ 
  48.  
  49. /*************************************************************************** 
  50. *   This program is free software; you can redistribute it and/or modify 
  51. *   it under the terms of the GNU General Public License as published by 
  52. *   the Free Software Foundation; either version 2 of the License, or 
  53. *   (at your option) any later version. 
  54. ***************************************************************************/ 
  55. define('IN_PHPBB', true); 
  56. // 
  57. // Load default header 
  58. // 
  59. $phpbb_root_path = "./"; 
  60. include($phpbb_root_path . 'extension.inc'); 
  61. include($phpbb_root_path . 'common.'.$phpEx); 
  62.  
  63. // Find what we are to do
  64. $mode = ( isset($HTTP_POST_VARS['report_x']) ) ? 'report' : 
  65.         ((isset($HTTP_POST_VARS['report_reset_x']) ) ? 'report_reset' : 
  66.             ((isset($HTTP_POST_VARS['ban_x']) ) ? 'ban' : 
  67.                 ((isset($HTTP_POST_VARS['unban_x']) ) ? 'unban' : 
  68.                     ((isset($HTTP_POST_VARS['warn_x']) ) ? 'warn' : 
  69.                         ((isset($HTTP_POST_VARS['block_x']) ) ? 'block' : ''
  70.                         )
  71.                     )
  72.  
  73.                 )
  74.             )
  75.         );
  76. $post_id = ( isset($HTTP_POST_VARS['post_id']) ) ? intval ($HTTP_POST_VARS['post_id']) : '';
  77. $user_id = ( isset($HTTP_POST_VARS[POST_USERS_URL]) ) ? intval ($HTTP_POST_VARS[POST_USERS_URL]) : '';
  78.  
  79. // check that we have all what is needed to know
  80. if ( !( $post_id + $user_id ) )
  81.     message_die(GENERAL_ERROR, "No user/post specified", "", __LINE__, __FILE__,'post_id="'.$post_id.'", user_id="'.$user_id.'"'); 
  82. if ( empty($mode) )
  83.     message_die(GENERAL_ERROR, "No action specified", "", __LINE__, __FILE__,'mode="'.$mode.'"'); 
  84.  
  85. $sql = 'SELECT DISTINCT forum_id, poster_id, post_bluecard FROM ' . POSTS_TABLE . ' WHERE post_id = "'.$post_id.'"'; 
  86. if( !$result = $db->sql_query($sql) ) 
  87.       message_die(GENERAL_ERROR, "Couldn't obtain forums information.", "", __LINE__, __FILE__, $sql); 
  88. $result = $db->sql_fetchrow($result);
  89. $blue_card = $result['post_bluecard'];
  90. if ( $post_id )
  91. {
  92.     // post mode
  93.     $forum_id = $result['forum_id'];
  94.     $poster_id = $result['poster_id'];
  95. } else
  96. if ( $user_id )
  97. {
  98.     //user mode
  99.     //forum_id will control witch permission, when no post_id is given, and a user_id is given instead
  100.     //disable the frum_id line will give no default access when no post_id is given
  101.     // installe extra permission mod, in order to enable this feature
  102. //    $forum_id = PAGE_CARD;
  103.     $poster_id = $user_id;
  104. }
  105.  
  106. $userdata = session_pagestart($user_ip, PAGE_CARD);
  107. init_userprefs($userdata);
  108.  
  109. //
  110. // Start auth check
  111. //
  112. $is_auth = array(); 
  113. $is_auth = auth(AUTH_ALL, $forum_id, $userdata);
  114.  
  115. if ($mode=="report_reset") 
  116.     if (! $is_auth['auth_mod'])
  117.         message_die(GENERAL_ERROR, $lang['Not_Authorised']);
  118.  
  119.     $sql = 'SELECT pt.post_subject, f.forum_name FROM '.POSTS_TEXT_TABLE.' pt, '.POSTS_TABLE.' p, '.FORUMS_TABLE.' f WHERE pt.post_id="'.$post_id.'" AND p.post_id=pt.post_id AND p.forum_id=f.forum_id';
  120.     if( !$result = $db->sql_query($sql) ) 
  121.              message_die(GENERAL_ERROR, "Couldn't get post subject information".$sql); 
  122.     $subject = $db->sql_fetchrow($result);
  123.     $post_subject=$subject['post_subject'];
  124.     $forum_name=$subject['forum_name'];
  125.  
  126.      $sql = 'UPDATE ' . POSTS_TABLE . ' SET post_bluecard="0" WHERE post_id="'.$post_id.'"'; 
  127.         if( !$result = $db->sql_query($sql) ) 
  128.               message_die(GENERAL_ERROR, "Couldn't update blue card information"); 
  129.     message_die(GENERAL_MESSAGE, $lang['Post_reset']."<br /><br />". 
  130.     sprintf($lang['Click_return_viewtopic'], "<a href=\"" . append_sid("viewtopic.$phpEx?p=".$post_id."#".$post_id). "\">", "</a>")); 
  131.  
  132. } else 
  133. if ($mode=="report") 
  134.     if (!$is_auth['auth_bluecard']) 
  135.     {
  136.         message_die(GENERAL_ERROR, $lang['Not_Authorised']); 
  137.     }
  138.  
  139.     $sql = 'SELECT f.forum_name, p.topic_id  FROM '.POSTS_TABLE.' p, '.FORUMS_TABLE.' f WHERE p.post_id="'.$post_id.'" AND  p.forum_id=f.forum_id';
  140.     if( !$result = $db->sql_query($sql) ) 
  141.              message_die(GENERAL_ERROR, "Couldn't get post subject information"); 
  142.  
  143.     $post_details = $db->sql_fetchrow($result);
  144.     $forum_name=$post_details['forum_name'];
  145.     $topic_id=$post_details['topic_id'];
  146.     $sql = 'SELECT pt.post_subject FROM '.POSTS_TEXT_TABLE.' pt, '.TOPICS_TABLE.' t WHERE t.topic_id="'.$topic_id.'" AND pt.post_id=t.topic_first_post_id';
  147.     if( !$result = $db->sql_query($sql) ) 
  148.              message_die(GENERAL_ERROR, "Couldn't get topic subject information".$sql); 
  149.     $post_details = $db->sql_fetchrow($result);
  150.     $post_subject=$post_details['post_subject'];
  151.  
  152.     $sql = 'SELECT p.topic_id FROM '.POSTS_TEXT_TABLE.' pt, '.POSTS_TABLE.' p  WHERE pt.post_subject="('.$post_id.')'.$post_subject.'" AND pt.post_id=p.post_id';
  153.     if( !$result = $db->sql_query($sql) ) 
  154.              message_die(GENERAL_ERROR, "Couldn't get topic subject information".$sql); 
  155.     $post_details = $db->sql_fetchrow($result);
  156.     $allready_reported= ($blue_card) ? $post_details['topic_id'] : '';
  157.  
  158.     $blue_card++;
  159.     $sql = 'UPDATE ' . POSTS_TABLE . ' SET post_bluecard="'.$blue_card.'" WHERE post_id="'.$post_id.'"'; 
  160.     if( !$result = $db->sql_query($sql) ) 
  161.              message_die(GENERAL_ERROR, "Couldn't update blue card information"); 
  162.     // 
  163.       // Obtain list of moderators of this forum 
  164.          $sql = "SELECT g.group_name, u.username, u.user_email, u.user_lang 
  165.              FROM " . AUTH_ACCESS_TABLE . " aa,  " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u 
  166.           WHERE aa.forum_id = $forum_id   AND aa.auth_mod = " . TRUE . " 
  167.              AND ug.group_id = aa.group_id   AND g.group_id = aa.group_id AND u.user_id = ug.user_id"; 
  168.       if( !$result_mods = $db->sql_query($sql) ) 
  169.         message_die(GENERAL_ERROR, "Couldn't obtain moderators information.", "", __LINE__, __FILE__, $sql); 
  170.     $total_mods = $db->sql_numrows($result_mods); 
  171.     $i=0; 
  172.       if (!$total_mods) 
  173.          message_die(GENERAL_MESSAGE, $lang['No_moderators']."<br /><br />".
  174.         (($board_config['report_forum'])? sprintf($lang['Send_message'], "<a href=\"" . append_sid("posting.$phpEx?mode=".(($allready_reported)?"reply&t=".$allready_reported:"newtopic&f=".$board_config['report_forum'])."&postreport=".$post_id). "\">", "</a>"):"").
  175.         sprintf($lang['Click_return_viewtopic'], "<a href=\"" . append_sid("viewtopic.$phpEx?p=".$post_id."#".$post_id). "\">", "</a>"));
  176.       if ((    $blue_card>=$board_config['bluecard_limit_2'] && (!(($blue_card-$board_config['bluecard_limit_2'])%$board_config['bluecard_limit']))) || $blue_card==$board_config['bluecard_limit_2']) 
  177.     { 
  178.         $mods_rowset = $db->sql_fetchrowset($result_mods); 
  179.           include($phpbb_root_path . 'includes/emailer.'.$phpEx); 
  180.           while ($i<$total_mods) 
  181.           { 
  182.             $script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path'])). '/viewtopic.'.$phpEx;
  183.             $server_name = trim($board_config['server_name']);
  184.             $server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://';
  185.             $server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/';
  186.                 $emailer = new emailer($board_config['smtp_delivery']); 
  187.                 $emailer->email_address($mods_rowset[$i]['user_email']); 
  188.                 $email_headers = "To: \"".$mods_rowset[$i]['username']."\" <".$mods_rowset[$i]['user_email']. ">\r\n"; 
  189.                 $email_headers .= "From: \"".$board_config['sitename']."\" <".$board_config['board_email'].">\r\n"; 
  190.                 $email_headers .= "Return-Path: " . (($userdata['user_email']&&$userdata['user_viewemail'])? $userdata['user_email']."\r\n":"\r\n"); 
  191.                 $email_headers .= "X-AntiAbuse: Board servername - " . $server_name . "\r\n"; 
  192.                 $email_headers .= "X-AntiAbuse: User_id - " . $userdata['user_id'] . "\r\n"; 
  193.                 $email_headers .= "X-AntiAbuse: Username - " . $userdata['username'] . "\r\n"; 
  194.                 $email_headers .= "X-AntiAbuse: User IP - " . decode_ip($user_ip) . "\r\n"; 
  195.                 $emailer->use_template("repport_post",(file_exists($phpbb_root_path . "language/lang_" . $mods_rowset[$i]['user_lang'] . "/email/repport_post.tpl"))?$mods_rowset[$i]['user_lang'] : ""); 
  196.                 $i++;
  197. //                $emailer->set_subject($lang['Post_repport']);
  198.                 $emailer->extra_headers($email_headers); 
  199.                 $emailer->assign_vars(array( 
  200.                'POST_URL' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_POST_URL . "=$post_id#$post_id",
  201.                'POST_SUBJECT' => $post_subject,
  202.                'FORUM_NAME' => $forum_name,
  203.                    'USER' => '"'.$userdata['username'].'"', 
  204.                    'NUMBER_OF_REPPORTS' => $blue_card, 
  205.                    'SITENAME' => $board_config['sitename'], 
  206.                    'BOARD_EMAIL' => $board_config['board_email'])); 
  207.                 $emailer->send(); 
  208.                 $emailer->reset(); 
  209.         } 
  210.     } 
  211.     message_die(GENERAL_MESSAGE, (($total_mods)?sprintf($lang['Post_repported'],$total_mods):$lang['Post_repported_1'])."<br /><br />". 
  212. (($board_config['report_forum'])? sprintf($lang['Send_message'], "<a href=\"" . append_sid("posting.$phpEx?mode=".(($allready_reported)?"reply&t=".$allready_reported:"newtopic&f=".$board_config['report_forum'])."&postreport=".$post_id). "\">", "</a>"):"").
  213. sprintf($lang['Click_return_viewtopic'], "<a href=\"" . append_sid("viewtopic.$phpEx?p=".$post_id."#".$post_id). "\">", "</a>")); 
  214. } else
  215. if ( $mode == 'unban' )
  216. {
  217.       $no_error_ban=FALSE; 
  218.     if (! $is_auth['auth_greencard'] )
  219.         message_die(GENERAL_ERROR, $lang['Not_Authorised']); 
  220.     // look up the user 
  221.     $sql = 'SELECT user_active, user_warnings FROM ' . USERS_TABLE . ' WHERE user_id="'.$poster_id.'"'; 
  222.     if( !$result = $db->sql_query($sql) ) 
  223.           message_die(GENERAL_ERROR, "Couldn't obtain judge information.", "", __LINE__, __FILE__, $sql); 
  224.     $the_user = $db->sql_fetchrow($result); 
  225.       // remove the user from ban list 
  226.       $sql = 'DELETE FROM ' . BANLIST_TABLE . ' WHERE ban_userid="'.$poster_id.'"'; 
  227.       if (! $result = $db->sql_query($sql) ) 
  228.             message_die(GENERAL_ERROR, "Couldn't remove ban_userid info into database", "", __LINE__, __FILE__, $sql); 
  229.       // update the user table with new status 
  230.       $sql = 'UPDATE ' . USERS_TABLE . ' SET user_warnings="0" WHERE user_id="'.$poster_id.'"';
  231.       if(! $result = $db->sql_query($sql) ) 
  232.         message_die(GENERAL_ERROR, "Couldn't update user status information", "", __LINE__, __FILE__, $sql);
  233.     $message = $lang['Ban_update_green']."<br /><br />".
  234.         sprintf($lang['Send_PM_user'], "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&u=$poster_id"). "\">", "</a>"); 
  235.       $e_temp="ban_reactivated"; 
  236. //      $e_subj=$lang['Ban_reactivate']; 
  237.       $no_error_ban=true; 
  238. } else
  239.  
  240. if ( $mode == 'ban' )
  241. {
  242.       $no_error_ban=FALSE; 
  243.     if (! $is_auth['auth_ban'] )
  244.         message_die(GENERAL_ERROR, $lang['Not_Authorised']); 
  245.     // look up the user 
  246.     $sql = 'SELECT user_active, user_level FROM ' . USERS_TABLE . ' WHERE user_id="'.$poster_id.'"'; 
  247.     if( !$result = $db->sql_query($sql) ) 
  248.           message_die(GENERAL_ERROR, "Couldn't obtain judge information.", "", __LINE__, __FILE__, $sql); 
  249.     $the_user = $db->sql_fetchrow($result); 
  250.     if ($the_user['user_level']== ADMIN )
  251.         message_die(GENERAL_ERROR, $lang['Ban_no_admin']); 
  252.  
  253.     // insert the user in the ban list 
  254.       $sql = 'SELECT ban_userid FROM ' . BANLIST_TABLE . ' WHERE ban_userid="'.$poster_id.'"'; 
  255.       if( $result = $db->sql_query($sql) ) 
  256.       { 
  257.         if (!$db->sql_fetchrowset($result)) 
  258.         { 
  259.             // insert the user in the ban list 
  260.             $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_userid) VALUES ($poster_id)"; 
  261.             if (!$result = $db->sql_query($sql) ) 
  262.                 message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql); 
  263.             // update the user table with new status 
  264.              $sql = 'UPDATE ' . USERS_TABLE . ' SET user_warnings="'.$board_config['max_user_bancard'].'" WHERE user_id="'.$poster_id.'"'; 
  265.             if(! $result = $db->sql_query($sql) ) 
  266.                 message_die(GENERAL_ERROR, "Couldn't update user status information", "", __LINE__, __FILE__, $sql);
  267.             $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET session_logged_in="0" WHERE session_user_id="'.$poster_id.'"';
  268.             if ( !$db->sql_query($sql) )
  269.             {
  270.                 message_die(GENERAL_ERROR, "Couldn't update banned sessions from database", "", __LINE__, __FILE__, $sql);
  271.             }
  272.             $no_error_ban=true; 
  273.             $message = $lang['Ban_update_red'];
  274.             $e_temp="ban_block"; 
  275. //            $e_subj=$lang['Card_banned']; 
  276.         } else 
  277.           { 
  278.               $no_error_ban = true; 
  279.             $message = $lang['user_already_banned']; 
  280.           } 
  281.     } else message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql); 
  282. } else
  283.  
  284. if ( $mode == 'block' )
  285. {
  286.     if (empty($board_config['block_time']) )
  287.         message_die(GENERAL_ERROR, "Protect user account mod not installed, this is required for this operation"); 
  288.       $no_error_ban=FALSE; 
  289.     if (! $is_auth['auth_ban'] )
  290.         message_die(GENERAL_ERROR, $lang['Not_Authorised']); 
  291.     // look up the user 
  292.     $sql = 'SELECT user_active, user_level FROM ' . USERS_TABLE . ' WHERE user_id="'.$poster_id.'"'; 
  293.     if( !$result = $db->sql_query($sql) ) 
  294.           message_die(GENERAL_ERROR, "Couldn't obtain judge information.", "", __LINE__, __FILE__, $sql); 
  295.     $the_user = $db->sql_fetchrow($result); 
  296.     if ($the_user['user_level']== ADMIN )
  297.         message_die(GENERAL_ERROR, $lang['Block_no_admin']); 
  298.     // update the user table with new status 
  299.     $sql = 'UPDATE ' . USERS_TABLE . ' SET user_block_by="'.$user_ip.'", user_blocktime="'.(time()+$board_config['RY_block_time']*60).'" WHERE user_id="'.$poster_id.'"'; 
  300.     if(! $result = $db->sql_query($sql) ) 
  301.         message_die(GENERAL_ERROR, "Couldn't update user status information", "", __LINE__, __FILE__, $sql);
  302.     $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET session_logged_in="0", session_user_id=".ANONYMOUS." WHERE session_user_id="'.$poster_id.'"'; 
  303.     if ( !$db->sql_query($sql) )
  304.     {
  305.         message_die(GENERAL_ERROR, "Couldn't update blocked sessions from database", "", __LINE__, __FILE__, $sql);
  306.     }
  307.  
  308.     $no_error_ban=true; 
  309.     $block_time = make_time_text ($board_config['RY_block_time']);
  310.     $message = sprintf($lang['Block_update'],$block_time) . "<br /><br />".
  311.     sprintf($lang['Send_PM_user'], "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&u=$poster_id"). "\">", "</a>");
  312.     $e_temp="card_block"; 
  313. //    $e_subj=sprintf($lang['Card_blocked'],$block_time); 
  314. } else
  315.  
  316. if ( $mode == 'warn' )
  317. {
  318.       $no_error_ban=FALSE; 
  319.     if (! $is_auth['auth_ban'] )
  320.         message_die(GENERAL_ERROR, $lang['Not_Authorised']); 
  321.     // look up the user 
  322.     $sql = 'SELECT user_active, user_warnings, user_level FROM ' . USERS_TABLE . ' WHERE user_id="'.$poster_id.'"'; 
  323.     if( !$result = $db->sql_query($sql) ) 
  324.           message_die(GENERAL_ERROR, "Couldn't obtain judge information.", "", __LINE__, __FILE__, $sql); 
  325.     $the_user = $db->sql_fetchrow($result); 
  326.     if ($the_user['user_level']== ADMIN )
  327.         message_die(GENERAL_ERROR, $lang['Ban_no_admin']); 
  328.  
  329.     //update the warning counter
  330.     $sql = 'UPDATE ' . USERS_TABLE . ' SET user_warnings=user_warnings+1 WHERE user_id="'.$poster_id.'"'; 
  331.     if(! $result = $db->sql_query($sql) ) 
  332.         message_die(GENERAL_ERROR, "Couldn't update user status information", "", __LINE__, __FILE__, $sql);
  333.  
  334.       // se if the user are to be banned, if so do it ... 
  335.       if ($the_user['user_warnings']+1>=$board_config['max_user_bancard']) 
  336.       { 
  337.     $sql = 'SELECT ban_userid FROM ' . BANLIST_TABLE . ' WHERE ban_userid="'.$poster_id.'"'; 
  338.     if( $result = $db->sql_query($sql) ) 
  339.     { 
  340.         if (!$db->sql_fetchrowset($result)) 
  341.         { 
  342.             // insert the user in the ban list 
  343.             $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_userid) VALUES ($poster_id)"; 
  344.             if (!$result = $db->sql_query($sql) ) 
  345.                 message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql); 
  346.             // update the user table with new status 
  347.             $sql = 'UPDATE ' . SESSIONS_TABLE . ' SET session_logged_in="0" WHERE session_user_id="'.$poster_id.'"';
  348.             if ( !$db->sql_query($sql) )
  349.             {
  350.                 message_die(GENERAL_ERROR, "Couldn't update banned sessions from database", "", __LINE__, __FILE__, $sql);
  351.             }
  352.             $no_error_ban=true; 
  353.             $message = $lang['Ban_update_red'];
  354.             $e_temp="ban_block"; 
  355. //            $e_subj=$lang['Ban_blocked']; 
  356.             } else 
  357.             {     
  358.             $no_error_ban = true; 
  359.             $message = $lang['user_already_banned'];
  360.             } 
  361.          } else message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql); 
  362.     } else
  363.     {
  364.         // the user shall not be baned this time, update the counter
  365.           $message = sprintf($lang['Ban_update_yellow'],$the_user['user_warnings']+1,$board_config['max_user_bancard'])."<br /><br />".
  366. sprintf($lang['Send_PM_user'], "<a href=\"" . append_sid("privmsg.$phpEx?mode=post&u=$poster_id"). "\">", "</a>");        $no_error_ban=true; 
  367.           $e_temp="ban_warning"; 
  368. //          $e_subj=$lang['Ban_warning']; 
  369.     }
  370. }
  371.  
  372. if ($no_error_ban) 
  373.     $sql = 'SELECT username, user_warnings, user_email, user_lang FROM ' . USERS_TABLE . ' WHERE user_id="'.$poster_id.'"'; 
  374.       if( !$result = $db->sql_query($sql) ) 
  375.         message_die(GENERAL_ERROR, "Couldn't find the users personal information", "", __LINE__, __FILE__, $sql); 
  376.     $warning_data=$db->sql_fetchrow($result); 
  377.       if (!empty($warning_data['user_email'])) 
  378.       { 
  379.         include($phpbb_root_path . 'includes/emailer.'.$phpEx); 
  380.         $script_name = preg_replace('/^\/?(.*?)\/?$/', '\1', trim($board_config['script_path'])). '/viewtopic.'.$phpEx;
  381.         $server_name = trim($board_config['server_name']);
  382.         $server_protocol = ( $board_config['cookie_secure'] ) ? 'https://' : 'http://';
  383.         $server_port = ( $board_config['server_port'] <> 80 ) ? ':' . trim($board_config['server_port']) . '/' : '/';
  384.             $emailer = new emailer($board_config['smtp_delivery']);
  385.             $email_headers = "TO: '".$warning_data['username']."' <".$warning_data['user_email']. ">\r\n";
  386.         $email_headers .= ($userdata['user_email'] && $userdata['user_viewemail']) ? 
  387.             "FROM: \"".$userdata['username']."\" <".$userdata['user_email'].">\r\n"  : 
  388.             "FROM: \"".$board_config['sitename']."\" <" .$board_config['board_email'] . ">\r\n"; 
  389.           $emailer->use_template($e_temp, stripslashes($warning_data['user_lang'])); 
  390.             $emailer->email_address($warning_data['user_email']); 
  391. //            $emailer->set_subject($e_subj); 
  392.             $emailer->extra_headers($email_headers); 
  393.             $emailer->assign_vars(array( 
  394.                 'SITENAME' => $board_config['sitename'], 
  395.                 'WARNINGS' => $warning_data['user_warnings'], 
  396.                 'TOTAL_WARN' => $board_config['max_user_bancard'], 
  397.             'POST_URL' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_POST_URL . "=$post_id#$post_id",
  398.                 'EMAIL_SIG' => str_replace("<br />", "\n", "-- \n" . $board_config['board_email_sig']), 
  399.                 'WARNER' => $userdata['username'], 
  400.             'BLOCK_TIME' => $block_time,
  401.                 'WARNED_POSTER' => $warning_data['username'])
  402.         ); 
  403. //            if ($e_subj)
  404. //        {
  405.             $emailer->send(); 
  406. //        }
  407.             $emailer->reset(); 
  408.     }
  409.     else
  410.     {
  411.          $message .= "<br/><br/>".$lang['user_no_email']; 
  412.     }
  413. else 
  414. {
  415.     $message = 'Error card.php file'; 
  416. }
  417.  
  418. $message .= ( $post_id != '-1' ) ? "<br /><br />". sprintf($lang['Click_return_viewtopic'], "<a href=\"" . append_sid("viewtopic.$phpEx?p=".$post_id."#".$post_id). "\">", "</a>"):"<br /><br />". sprintf($lang['Click_return_index'], "<a href=\"" . append_sid("index.".$phpEx). "\">", "</a>"); 
  419. message_die(GENERAL_MESSAGE, $message); 
  420. include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
  421.  
  422. ?>