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 / posting.php < prev    next >
PHP Script  |  2004-07-18  |  63KB  |  1,799 lines

  1. <?php
  2. /***************************************************************************
  3.  *                                posting.php
  4.  *                            -------------------
  5.  *   begin                : Saturday, Feb 13, 2001
  6.  *   copyright            : (C) 2001 The phpBB Group
  7.  *   email                : support@phpbb.com
  8.  *
  9.  *   $Id: posting.php,v 1.159.2.21 2004/03/13 15:08:22 acydburn Exp $
  10.  *
  11.  *
  12.  ***************************************************************************/
  13.  
  14. /***************************************************************************
  15.  *
  16.  *   This program is free software; you can redistribute it and/or modify
  17.  *   it under the terms of the GNU General Public License as published by
  18.  *   the Free Software Foundation; either version 2 of the License, or
  19.  *   (at your option) any later version.
  20.  *
  21.  ***************************************************************************/
  22.  
  23. define('IN_PHPBB', true);
  24. $phpbb_root_path = './';
  25. include($phpbb_root_path . 'extension.inc');
  26. include($phpbb_root_path . 'common.'.$phpEx);
  27. include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
  28. include($phpbb_root_path . 'includes/functions_post.'.$phpEx);
  29. //-- mod : post icon -------------------------------------------------------------------------------
  30. //-- add
  31. include($phpbb_root_path . 'includes/def_icons.'.$phpEx);
  32. //-- fin mod : post icon ---------------------------------------------------------------------------
  33. //-- add
  34. include_once($phpbb_root_path . 'includes/functions_calendar.'.$phpEx);
  35. //-- fin mod : calendar ---------------------------------------------------------------------------- 
  36. include($phpbb_root_path . 'includes/functions_bookmark.'.$phpEx);
  37. //
  38. // Check and set various parameters
  39. //
  40. $params = array('submit' => 'post', 'news_category' => 'news_category', 'preview' => 'preview', 'delete' => 'delete', 'poll_delete' => 'poll_delete', 'poll_add' => 'add_poll_option', 'poll_edit' => 'edit_poll_option', 'mode' => 'mode');
  41. while( list($var, $param) = @each($params) )
  42. {
  43.     if ( !empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]) )
  44.     {
  45.         $$var = ( !empty($HTTP_POST_VARS[$param]) ) ? htmlspecialchars($HTTP_POST_VARS[$param]) : htmlspecialchars($HTTP_GET_VARS[$param]);
  46.     }
  47.     else
  48.     {
  49.         $$var = '';
  50.     }
  51. }
  52.  
  53. $confirm = isset($HTTP_POST_VARS['confirm']) ? true : false;
  54.  
  55. $params = array('forum_id' => POST_FORUM_URL, 'topic_id' => POST_TOPIC_URL, 'post_id' => POST_POST_URL, 'lock_subject' => 'lock_subject');
  56. while( list($var, $param) = @each($params) )
  57. {
  58.     if ( !empty($HTTP_POST_VARS[$param]) || !empty($HTTP_GET_VARS[$param]) )
  59.     {
  60.         $$var = ( !empty($HTTP_POST_VARS[$param]) ) ? intval($HTTP_POST_VARS[$param]) : intval($HTTP_GET_VARS[$param]);
  61.     }
  62.     else
  63.     {
  64.         $$var = '';
  65.     }
  66. }
  67.  
  68. $refresh = $preview || $poll_add || $poll_edit || $poll_delete;
  69. //-- mod : post icon -------------------------------------------------------------------------------
  70. //-- add
  71. $post_icon = isset($HTTP_POST_VARS['post_icon']) ? intval($HTTP_POST_VARS['post_icon']) : 0;
  72. //-- fin mod : post icon ---------------------------------------------------------------------------
  73.  
  74. //
  75. // Set topic type
  76. //
  77. $topic_type = ( !empty($HTTP_POST_VARS['topictype']) ) ? intval($HTTP_POST_VARS['topictype']) : POST_NORMAL;
  78. //-- mod : calendar --------------------------------------------------------------------------------
  79. //-- add
  80. $year    = ( !empty($HTTP_POST_VARS['topic_calendar_year']) ) ? intval($HTTP_POST_VARS['topic_calendar_year']) : '';
  81. $month    = ( !empty($HTTP_POST_VARS['topic_calendar_month']) ) ? intval($HTTP_POST_VARS['topic_calendar_month']) : '';
  82. $day    = ( !empty($HTTP_POST_VARS['topic_calendar_day']) ) ? intval($HTTP_POST_VARS['topic_calendar_day']) : '';
  83. $hour    = ( !empty($HTTP_POST_VARS['topic_calendar_hour']) ) ? intval($HTTP_POST_VARS['topic_calendar_hour']) : '';
  84. $min    = ( !empty($HTTP_POST_VARS['topic_calendar_min']) ) ? intval($HTTP_POST_VARS['topic_calendar_min']) : '';
  85. $d_day    = ( !empty($HTTP_POST_VARS['topic_calendar_duration_day']) ) ? intval($HTTP_POST_VARS['topic_calendar_duration_day']) : '';
  86. $d_hour    = ( !empty($HTTP_POST_VARS['topic_calendar_duration_hour']) ) ? intval($HTTP_POST_VARS['topic_calendar_duration_hour']) : '';
  87. $d_min    = ( !empty($HTTP_POST_VARS['topic_calendar_duration_min']) ) ? intval($HTTP_POST_VARS['topic_calendar_duration_min']) : '';
  88. if ( empty($year) || empty($month) || empty($day) )
  89. {
  90.     $year = '';
  91.     $month = '';
  92.     $day = '';
  93.     $hour = '';
  94.     $min = '';
  95.     $d_day = '';
  96.     $d_hour = '';
  97.     $d_min = '';
  98. }
  99. if (empty($hour) && empty($min))
  100. {
  101.     $hour = '';
  102.     $min = '';
  103.     $d_hour = '';
  104.     $d_min = '';
  105. }
  106.  
  107. // start event
  108. $topic_calendar_time = 0;
  109. if (!empty($year))
  110. {
  111.     $topic_calendar_time = mktime( intval($hour), intval($min), 0, intval($month), intval($day), intval($year) );
  112. }
  113.  
  114. // duration
  115. $topic_calendar_duration = 0;
  116. $d_dur = $d_day . $d_hour . $d_min;
  117. if ( !empty($topic_calendar_time) && !empty($d_dur) )
  118. {
  119.     $topic_calendar_duration = intval($d_day) * 86400 + intval($d_hour) * 3600 + intval($d_min) * 60;
  120.     if ($topic_calendar_duration < 0)
  121.     {
  122.         $topic_calendar_duration = 0;
  123.     }
  124. }
  125. //-- fin mod : calendar ----------------------------------------------------------------------------
  126.  
  127. //-- mod : announces -------------------------------------------------------------------------------
  128. //-- add
  129. $topic_announce_duration = ( !empty($HTTP_POST_VARS['topicduration']) ) ? intval($HTTP_POST_VARS['topicduration']) : 0;
  130. if (in_array($topic_type, array(POST_ANNOUNCE, POST_GLOBAL_ANNOUNCE)))
  131. {
  132.     if (empty($topic_announce_duration)) $topic_announce_duration = $board_config['announcement_duration'];
  133. }
  134. else
  135. {
  136.     $topic_announce_duration = 0;
  137. }
  138. //-- fin mod : announces ---------------------------------------------------------------------------
  139.  
  140. //
  141. // If the mode is set to topic review then output
  142. // that review ...
  143. //
  144. if ( $mode == 'topicreview' )
  145. {
  146.     require($phpbb_root_path . 'includes/topic_review.'.$phpEx);
  147.  
  148.     topic_review($topic_id, false);
  149.     exit;
  150. }
  151. else if ( $mode == 'smilies' )
  152. {
  153.     generate_smilies('window', PAGE_POSTING);
  154.     exit;
  155. }
  156.  
  157. //
  158. // Start session management
  159. //
  160. $userdata = session_pagestart($user_ip, PAGE_POSTING);
  161. init_userprefs($userdata);
  162. //
  163. // End session management
  164. //
  165.  
  166. //
  167. // Was cancel pressed? If so then redirect to the appropriate
  168. // page, no point in continuing with any further checks
  169. //
  170. if ( isset($HTTP_POST_VARS['cancel']) )
  171. {
  172.     if ( $postreport )
  173. {
  174.     $redirect = 'viewtopic.$phpEx?' . POST_POST_URL . '=$postreport';
  175.     $post_append = '';
  176. } else
  177.     if ( $post_id )
  178.     {
  179.         $redirect = "viewtopic.$phpEx?" . POST_POST_URL . "=$post_id";
  180.         $post_append = "#$post_id";
  181.     }
  182.     else if ( $topic_id )
  183.     {
  184.         $redirect = "viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id";
  185.         $post_append = '';
  186.     }
  187.     else if ( $forum_id )
  188.     {
  189.         $redirect = "viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id";
  190.         $post_append = '';
  191.     }
  192.     else
  193.     {
  194.         $redirect = "index.$phpEx";
  195.         $post_append = '';
  196.     }
  197.  
  198.     redirect(append_sid($redirect, true) . $post_append);
  199. }
  200.  
  201. //
  202. // What auth type do we need to check?
  203. //
  204. $is_auth = array();
  205. //-- mod : calendar --------------------------------------------------------------------------------
  206. //-- add
  207. $is_auth_type = '';
  208. $is_auth_type_cal = '';
  209. //-- fin mod : calendar ----------------------------------------------------------------------------
  210.  
  211. switch( $mode )
  212. {
  213.     case 'newtopic':
  214.         if ( $topic_type == POST_ANNOUNCE )
  215.         {
  216.             $is_auth_type = 'auth_announce';
  217.         }
  218.         //-- mod : announces -------------------------------------------------------------------------------
  219. //-- add
  220.         else if ( $topic_type == POST_GLOBAL_ANNOUNCE )
  221.         {
  222.             $is_auth_type = 'auth_global_announce';
  223.         }
  224. //-- fin mod : announces ---------------------------------------------------------------------------
  225.  
  226.         else if ( $topic_type == POST_STICKY )
  227.         {
  228.             $is_auth_type = 'auth_sticky';
  229.         }
  230.         else
  231.         {
  232.             $is_auth_type = 'auth_post';
  233.         }
  234.         //-- mod : calendar --------------------------------------------------------------------------------
  235. //-- add
  236.         if (!empty($topic_calendar_time))
  237.         {
  238.             $is_auth_type_cal = 'auth_cal';
  239.         }
  240. //-- fin mod : calendar ----------------------------------------------------------------------------
  241.  
  242.         break;
  243.     case 'reply':
  244.     case 'quote':
  245.         $is_auth_type = 'auth_reply';
  246.         break;
  247.     case 'editpost':
  248.         $is_auth_type = 'auth_edit';
  249.         break;
  250.     case 'delete':
  251.     case 'poll_delete':
  252.         $is_auth_type = 'auth_delete';
  253.         break;
  254.     case 'vote':
  255.         $is_auth_type = 'auth_vote';
  256.         break;
  257.     case 'topicreview':
  258.         $is_auth_type = 'auth_read';
  259.         break;
  260.     default:
  261.         message_die(GENERAL_MESSAGE, $lang['No_post_mode']);
  262.         break;
  263. }
  264.  
  265. //
  266. // Here we do various lookups to find topic_id, forum_id, post_id etc.
  267. // Doing it here prevents spoofing (eg. faking forum_id, topic_id or post_id
  268. //
  269. $error_msg = '';
  270. $post_data = array();
  271. switch ( $mode )
  272. {
  273.     case 'newtopic':
  274.         if ( empty($forum_id) )
  275.         {
  276.             message_die(GENERAL_MESSAGE, $lang['Forum_not_exist']);
  277.         }
  278.  
  279.         $sql = "SELECT * 
  280.             FROM " . FORUMS_TABLE . " 
  281.             WHERE forum_id = $forum_id";
  282.         break;
  283.  
  284.     case 'reply':
  285.     case 'vote':
  286.         if ( empty( $topic_id) )
  287.         {
  288.             message_die(GENERAL_MESSAGE, $lang['No_topic_id']);
  289.         }
  290.  
  291.         $sql = "SELECT f.*, t.topic_status, t.topic_title  
  292.             FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t
  293.             WHERE t.topic_id = $topic_id
  294.                 AND f.forum_id = t.forum_id";
  295.         break;
  296.  
  297.     case 'quote':
  298.     case 'editpost':
  299.     case 'delete':
  300.     case 'poll_delete':
  301.         if ( empty($post_id) )
  302.         {
  303.             message_die(GENERAL_MESSAGE, $lang['No_post_id']);
  304.         }
  305.         //-- mod : announces -------------------------------------------------------------------------------
  306. // here we added
  307. //    , t.topic_announce_duration
  308. //-- modify
  309. //-- mod : post icon -------------------------------------------------------------------------------
  310. // here we added
  311. //    , t.topic_icon
  312. //    , p.post_icon
  313. //-- modify
  314. //-- mod : calendar --------------------------------------------------------------------------------
  315. // here we added
  316. //    , t.topic_calendar_time, t.topic_calendar_duration
  317. //-- modify
  318.  
  319.         $select_sql = ( !$submit ) ? ", t.topic_title, t.topic_desc, t.news_id, t.topic_calendar_time, t.topic_calendar_duration, t.topic_icon, t.topic_announce_duration, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_subject, p.post_icon, pt.post_text, pt.bbcode_uid, u.username, u.user_id, u.user_sig" : '';
  320.         $from_sql = ( !$submit ) ? ", " . POSTS_TEXT_TABLE . " pt, " . USERS_TABLE . " u" : '';
  321.         $where_sql = ( !$submit ) ? "AND pt.post_id = p.post_id AND u.user_id = p.poster_id" : '';
  322.  
  323.         $sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . " 
  324.             FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f" . $from_sql . " 
  325.             WHERE p.post_id = $post_id 
  326.                 AND t.topic_id = p.topic_id 
  327.                 AND f.forum_id = p.forum_id
  328.                 $where_sql";
  329.         break;
  330.  
  331.     default:
  332.         message_die(GENERAL_MESSAGE, $lang['No_valid_mode']);
  333. }
  334.  
  335. if ( $result = $db->sql_query($sql) )
  336. {
  337.     $post_info = $db->sql_fetchrow($result);
  338.     $db->sql_freeresult($result);
  339.  
  340.     $forum_id = $post_info['forum_id'];
  341.     //-- mod : categories hierarchy --------------------------------------------------------------------
  342. //-- delete
  343. //    $forum_name = $post_info['forum_name'];
  344. //-- add
  345.     $forum_name = get_object_lang(POST_FORUM_URL . $post_info['forum_id'], 'name');
  346. //-- fin mod : categories hierarchy ----------------------------------------------------------------
  347.     //-- mod : calendar --------------------------------------------------------------------------------
  348. //-- add
  349.     if (!empty($post_info['topic_calendar_duration']))
  350.     {
  351.         $post_info['topic_calendar_duration']++;
  352.     }
  353. //-- fin mod : calendar ----------------------------------------------------------------------------
  354.  
  355.     $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $post_info);
  356.  
  357.     if ( $post_info['forum_status'] == FORUM_LOCKED && !$is_auth['auth_mod']) 
  358.     { 
  359.        message_die(GENERAL_MESSAGE, $lang['Forum_locked']); 
  360.     } 
  361.     else if ( $mode != 'newtopic' && $post_info['topic_status'] == TOPIC_LOCKED && !$is_auth['auth_mod']) 
  362.     { 
  363.        message_die(GENERAL_MESSAGE, $lang['Topic_locked']); 
  364.     } 
  365.  
  366.     if ( $mode == 'editpost' || $mode == 'delete' || $mode == 'poll_delete' )
  367.     {
  368.         $topic_id = $post_info['topic_id'];
  369.  
  370.         $post_data['poster_post'] = ( $post_info['poster_id'] == $userdata['user_id'] ) ? true : false;
  371.         $post_data['first_post'] = ( $post_info['topic_first_post_id'] == $post_id ) ? true : false;
  372.         $post_data['last_post'] = ( $post_info['topic_last_post_id'] == $post_id ) ? true : false;
  373.         $post_data['last_topic'] = ( $post_info['forum_last_post_id'] == $post_id ) ? true : false;
  374.         $post_data['has_poll'] = ( $post_info['topic_vote'] ) ? true : false; 
  375.         $post_data['topic_type'] = $post_info['topic_type'];
  376.         //-- mod : calendar --------------------------------------------------------------------------------
  377. //-- add
  378.         $post_data['topic_calendar_time'] = $post_info['topic_calendar_time'];
  379.         $post_data['topic_calendar_duration'] = $post_info['topic_calendar_duration'];
  380. //-- fin mod : calendar ----------------------------------------------------------------------------
  381.  
  382.         //-- mod : post icon -------------------------------------------------------------------------------
  383. //-- add
  384.         $post_data['post_icon'] = $post_info['post_icon'];
  385. //-- fin mod : post icon ---------------------------------------------------------------------------
  386.  
  387.         //-- mod : announces -------------------------------------------------------------------------------
  388. //-- add
  389.         $post_data['topic_announce_duration'] = $post_info['topic_announce_duration'];
  390. //-- fin mod : announces ---------------------------------------------------------------------------
  391.  
  392.         $post_data['poster_id'] = $post_info['poster_id'];
  393.  
  394.         if ( $post_data['first_post'] && $post_data['has_poll'] )
  395.         {
  396.             $sql = "SELECT * 
  397.                 FROM " . VOTE_DESC_TABLE . " vd, " . VOTE_RESULTS_TABLE . " vr 
  398.                 WHERE vd.topic_id = $topic_id 
  399.                     AND vr.vote_id = vd.vote_id 
  400.                 ORDER BY vr.vote_option_id";
  401.             if ( !($result = $db->sql_query($sql)) )
  402.             {
  403.                 message_die(GENERAL_ERROR, 'Could not obtain vote data for this topic', '', __LINE__, __FILE__, $sql);
  404.             }
  405.  
  406.             $poll_options = array();
  407.             $poll_results_sum = 0;
  408.             if ( $row = $db->sql_fetchrow($result) )
  409.             {
  410.                 $poll_title = $row['vote_text'];
  411.                 $poll_id = $row['vote_id'];
  412.                 $poll_length = $row['vote_length'] / 86400;
  413.  
  414.                 do
  415.                 {
  416.                     $poll_options[$row['vote_option_id']] = $row['vote_option_text']; 
  417.                     $poll_results_sum += $row['vote_result'];
  418.                 }
  419.                 while ( $row = $db->sql_fetchrow($result) );
  420.             }
  421.             $db->sql_freeresult($result);
  422.  
  423.             $post_data['edit_poll'] = ( ( !$poll_results_sum || $is_auth['auth_mod'] ) && $post_data['first_post'] ) ? true : 0;
  424.         }
  425.         else 
  426.         {
  427.             $post_data['edit_poll'] = ($post_data['first_post'] && $is_auth['auth_pollcreate']) ? true : false;
  428.         }
  429.         
  430.         //
  431.         // Can this user edit/delete the post/poll?
  432.         //
  433.         if ( $post_info['poster_id'] != $userdata['user_id'] && !$is_auth['auth_mod'] )
  434.         {
  435.             $message = ( $delete || $mode == 'delete' ) ? $lang['Delete_own_posts'] : $lang['Edit_own_posts'];
  436.             $message .= '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
  437.  
  438.             message_die(GENERAL_MESSAGE, $message);
  439.         }
  440.         else if ( !$post_data['last_post'] && !$is_auth['auth_mod'] && ( $mode == 'delete' || $delete ) )
  441.         {
  442.             message_die(GENERAL_MESSAGE, $lang['Cannot_delete_replied']);
  443.         }
  444.         else if ( !$post_data['edit_poll'] && !$is_auth['auth_mod'] && ( $mode == 'poll_delete' || $poll_delete ) )
  445.         {
  446.             message_die(GENERAL_MESSAGE, $lang['Cannot_delete_poll']);
  447.         }
  448.     }
  449.     else
  450.     {
  451.         if ( $mode == 'quote' )
  452.         {
  453.             $topic_id = $post_info['topic_id'];
  454.         }
  455.  
  456.         $post_data['first_post'] = ( $mode == 'newtopic' ) ? true : 0;
  457.         $post_data['last_post'] = false;
  458.         $post_data['has_poll'] = false;
  459.         $post_data['edit_poll'] = false;
  460.     }
  461.     // BEGIN cmx_slash_news_mod
  462.     if( $board_config['allow_news'] && $post_data['first_post'] &&  $is_auth['auth_post'] && 
  463.         ($is_auth['auth_news'] || ( $is_auth['auth_mod'] && $mode == 'editpost') ) )
  464.     {
  465.         if( $mode == 'editpost' )
  466.         {
  467.             $post_data['news_id'] = $post_info['news_id'];
  468.         }
  469.         else
  470.         {
  471.             $post_data['news_id'] = 0;
  472.         }
  473.         $post_data['disp_news'] = true;
  474.     }
  475.     else
  476.     {
  477.         $post_data['disp_news'] = false;
  478.     }
  479. // END cmx_slash_news_mod 
  480. }
  481. else
  482. {
  483.     message_die(GENERAL_MESSAGE, $lang['No_such_post']);
  484. }
  485.  
  486. //
  487. // The user is not authed, if they're not logged in then redirect
  488. // them, else show them an error message
  489. //
  490. //-- mod : calendar --------------------------------------------------------------------------------
  491. // here we added
  492. //     || (!empty($is_auth_type_cal) && !$is_auth[$is_auth_type_cal])
  493. //-- modify
  494.  
  495. if ( !$is_auth[$is_auth_type] || (!empty($is_auth_type_cal) && !$is_auth[$is_auth_type_cal]) )
  496. {
  497.     if ( $userdata['session_logged_in'] )
  498.     {
  499.         //-- mod : calendar --------------------------------------------------------------------------------
  500. //-- add
  501.         if (!empty($is_auth_type_cal) && !$is_auth[$is_auth_type_cal])
  502.         {
  503.             message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_' . $is_auth_type_cal], $is_auth[$is_auth_type_cal . "_type"]));
  504.         }
  505. //-- fin mod : calendar ----------------------------------------------------------------------------
  506.  
  507.         message_die(GENERAL_MESSAGE, sprintf($lang['Sorry_' . $is_auth_type], $is_auth[$is_auth_type . "_type"]));
  508.     }
  509.  
  510.     switch( $mode )
  511.     {
  512.         case 'newtopic':
  513.             $redirect = "mode=newtopic&" . POST_FORUM_URL . "=" . $forum_id;
  514.             break;
  515.         case 'reply':
  516.         case 'topicreview':
  517.             $redirect = "mode=reply&" . POST_TOPIC_URL . "=" . $topic_id;
  518.             break;
  519.         case 'quote':
  520.         case 'editpost':
  521.             $redirect = "mode=quote&" . POST_POST_URL ."=" . $post_id;
  522.             break;
  523.     }
  524.     $redirect .= ($post_reportid) ? '&post_reportid=$post_reportid' : '';
  525.     redirect(append_sid("login.$phpEx?redirect=posting.$phpEx&" . $redirect, true));
  526. }
  527.  
  528. //
  529. // Set toggles for various options
  530. //
  531. if ( !$board_config['allow_html'] )
  532. {
  533.     $html_on = 0;
  534. }
  535. else
  536. {
  537.     $html_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['disable_html']) ) ? 0 : TRUE ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? $board_config['allow_html'] : $userdata['user_allowhtml'] );
  538. }
  539.  
  540. if ( !$board_config['allow_bbcode'] )
  541. {
  542.     $bbcode_on = 0;
  543. }
  544. else
  545. {
  546.     $bbcode_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['disable_bbcode']) ) ? 0 : TRUE ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? $board_config['allow_bbcode'] : $userdata['user_allowbbcode'] );
  547. }
  548.  
  549. if ( !$board_config['allow_smilies'] )
  550. {
  551.     $smilies_on = 0;
  552. }
  553. else
  554. {
  555.     $smilies_on = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['disable_smilies']) ) ? 0 : TRUE ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? $board_config['allow_smilies'] : $userdata['user_allowsmile'] );
  556. }
  557.  
  558. if ( ($submit || $refresh) && $is_auth['auth_read'])
  559. {
  560.     $notify_user = ( !empty($HTTP_POST_VARS['notify']) ) ? TRUE : 0;
  561. }
  562. else
  563. {
  564.     if ( $mode != 'newtopic' && $userdata['session_logged_in'] && $is_auth['auth_read'] )
  565.     {
  566.         $sql = "SELECT topic_id 
  567.             FROM " . TOPICS_WATCH_TABLE . "
  568.             WHERE topic_id = $topic_id 
  569.                 AND user_id = " . $userdata['user_id'];
  570.         if ( !($result = $db->sql_query($sql)) )
  571.         {
  572.             message_die(GENERAL_ERROR, 'Could not obtain topic watch information', '', __LINE__, __FILE__, $sql);
  573.         }
  574.  
  575.         $notify_user = ( $db->sql_fetchrow($result) ) ? TRUE : $userdata['user_notify'];
  576.         $db->sql_freeresult($result);
  577.     }
  578.     else
  579.     {
  580.         $notify_user = ( $userdata['session_logged_in'] && $is_auth['auth_read'] ) ? $userdata['user_notify'] : 0;
  581.     }
  582. }
  583.  
  584. $attach_sig = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['attach_sig']) ) ? TRUE : 0 ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? 0 : $userdata['user_attachsig'] );
  585. $setbm = ( $submit || $refresh ) ? ( ( !empty($HTTP_POST_VARS['setbm']) ) ? TRUE : 0 ) : ( ( $userdata['user_id'] == ANONYMOUS ) ? 0 : $userdata['user_setbm'] );
  586. execute_posting_attachment_handling();
  587. // --------------------
  588. //  What shall we do?
  589. //
  590. // BEGIN cmx_slash_news_mod
  591. //
  592. // Get News Categories.
  593. //
  594. if( $userdata['session_logged_in'] && $post_data['disp_news'] )
  595. {
  596.     if ( $mode == 'edit' && empty($post_id) )
  597.     {
  598.         message_die(GENERAL_MESSAGE, $lang['No_post_id']);
  599.     }
  600.  
  601.      $sql = 'SELECT n.* FROM ' . NEWS_TABLE . ' n WHERE 1 ORDER BY n.news_category';
  602.  
  603.     if ( !($result = $db->sql_query($sql)) )
  604.     {
  605.         message_die(GENERAL_ERROR, 'Could not obtain news data', '', __LINE__, __FILE__, $sql);
  606.     }
  607.  
  608.     $news_sel = array();
  609.     $news_cat = array();
  610.     while ( $row = $db->sql_fetchrow($result) )
  611.     {
  612.         if( ($news_category > 0 && $news_category == $row['news_id']) || 
  613.             ($post_data['news_id'] > 0 && $post_data['news_id'] == $row['news_id']) )
  614.         {
  615.                 $news_sel = $row;
  616.         }
  617.         
  618.         if( $post_data['news_id'] != 0 && $post_data['news_id'] == $row['news_id'] )
  619.         {
  620.             $news_sel = $row;
  621.         }
  622.         $news_cat[] = $row;
  623.     }
  624.     
  625.     if( $post_data['news_id'] == 0 && $news_category == 0)
  626.     {
  627.         $boxstring = '<option value="0">' . $lang['Regular_Post'] . '</option>';
  628.     }
  629.     else
  630.     {
  631.         $boxstring = '<option value="' . $news_sel['news_id'] .'">' . $news_sel['news_category'] . ' (' . $lang['Current_Selection'] . ')</option>';
  632.         $boxstring .= '<option value="0">' . $lang['Regular_Post'] . '</option>';
  633.     } 
  634.  
  635.     if( count( $news_cat ) > 0 )
  636.     {
  637.         for( $i = 0; $i < count( $news_cat ); $i++ )
  638.         {
  639.             if( $news_cat[$i]['news_id'] != $post_data['news_id'] )
  640.             {
  641.                 $boxstring .= '<option value="' . $news_cat[$i]['news_id'] . '">' . $news_cat[$i]['news_category'] . '</option>';
  642.             }
  643.         }
  644.  
  645.         $template->assign_block_vars('switch_news_cat', array(
  646.             'L_NEWS_CATEGORY' => $lang['Select_News_Category'],
  647.             'S_NAME' => 'news_category',
  648.             'S_CATEGORY_BOX' => $boxstring
  649.         ));
  650.     }
  651. }
  652. // END cmx_slash_news_mod
  653. if ( ( $delete || $poll_delete || $mode == 'delete' ) && !$confirm )
  654. {
  655.     //
  656.     // Confirm deletion
  657.     //
  658.     $s_hidden_fields = '<input type="hidden" name="' . POST_POST_URL . '" value="' . $post_id . '" />';
  659.     $s_hidden_fields .= ( $delete || $mode == "delete" ) ? '<input type="hidden" name="mode" value="delete" />' : '<input type="hidden" name="mode" value="poll_delete" />';
  660.  
  661.     $l_confirm = ( $delete || $mode == 'delete' ) ? $lang['Confirm_delete'] : $lang['Confirm_delete_poll'];
  662.  
  663.     //
  664.     // Output confirmation page
  665.     //
  666.     include($phpbb_root_path . 'includes/page_header.'.$phpEx);
  667.  
  668.     $template->set_filenames(array(
  669.         'confirm_body' => 'confirm_body.tpl')
  670.     );
  671.  
  672.     $template->assign_vars(array(
  673.         'MESSAGE_TITLE' => $lang['Information'],
  674.         'MESSAGE_TEXT' => $l_confirm,
  675.  
  676.         'L_YES' => $lang['Yes'],
  677.         'L_NO' => $lang['No'],
  678.  
  679.         'S_CONFIRM_ACTION' => append_sid("posting.$phpEx"),
  680.         'S_HIDDEN_FIELDS' => $s_hidden_fields)
  681.     );
  682.  
  683.     $template->pparse('confirm_body');
  684.  
  685.     include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  686. }
  687. else if ( $mode == 'vote' )
  688. {
  689.     //
  690.     // Vote in a poll
  691.     //
  692.     if ( !empty($HTTP_POST_VARS['vote_id']) )
  693.     {
  694.         $vote_option_id = intval($HTTP_POST_VARS['vote_id']);
  695.  
  696.         $sql = "SELECT vd.vote_id    
  697.             FROM " . VOTE_DESC_TABLE . " vd, " . VOTE_RESULTS_TABLE . " vr
  698.             WHERE vd.topic_id = $topic_id 
  699.                 AND vr.vote_id = vd.vote_id 
  700.                 AND vr.vote_option_id = $vote_option_id
  701.             GROUP BY vd.vote_id";
  702.         if ( !($result = $db->sql_query($sql)) )
  703.         {
  704.             message_die(GENERAL_ERROR, 'Could not obtain vote data for this topic', '', __LINE__, __FILE__, $sql);
  705.         }
  706.  
  707.         if ( $vote_info = $db->sql_fetchrow($result) )
  708.         {
  709.             $vote_id = $vote_info['vote_id'];
  710.  
  711.             $sql = "SELECT * 
  712.                 FROM " . VOTE_USERS_TABLE . "  
  713.                 WHERE vote_id = $vote_id 
  714.                     AND vote_user_id = " . $userdata['user_id'];
  715.             if ( !($result2 = $db->sql_query($sql)) )
  716.             {
  717.                 message_die(GENERAL_ERROR, 'Could not obtain user vote data for this topic', '', __LINE__, __FILE__, $sql);
  718.             }
  719.  
  720.             if ( !($row = $db->sql_fetchrow($result2)) )
  721.             {
  722.                 $sql = "UPDATE " . VOTE_RESULTS_TABLE . " 
  723.                     SET vote_result = vote_result + 1 
  724.                     WHERE vote_id = $vote_id 
  725.                         AND vote_option_id = $vote_option_id";
  726.                 if ( !$db->sql_query($sql, BEGIN_TRANSACTION) )
  727.                 {
  728.                     message_die(GENERAL_ERROR, 'Could not update poll result', '', __LINE__, __FILE__, $sql);
  729.                 }
  730.  
  731.                 $sql = "INSERT INTO " . VOTE_USERS_TABLE . " (vote_id, vote_user_id, vote_user_ip) 
  732.                     VALUES ($vote_id, " . $userdata['user_id'] . ", '$user_ip')";
  733.                 if ( !$db->sql_query($sql, END_TRANSACTION) )
  734.                 {
  735.                     message_die(GENERAL_ERROR, "Could not insert user_id for poll", "", __LINE__, __FILE__, $sql);
  736.                 }
  737.  
  738.                 $message = $lang['Vote_cast'];
  739.             }
  740.             else
  741.             {
  742.                 $message = $lang['Already_voted'];
  743.             }
  744.             $db->sql_freeresult($result2);
  745.         }
  746.         else
  747.         {
  748.             $message = $lang['No_vote_option'];
  749.         }
  750.         $db->sql_freeresult($result);
  751.  
  752.         $template->assign_vars(array(
  753.             'META' => '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">')
  754.         );
  755.         $message .=  '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id") . '">', '</a>');
  756.         message_die(GENERAL_MESSAGE, $message);
  757.     }
  758.     else
  759.     {
  760.         redirect(append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id", true));
  761.     }
  762. }
  763. else if ( $submit || $confirm )
  764. {
  765.     //
  766.     // Submit post/vote (newtopic, edit, reply, etc.)
  767.     //
  768.     $return_message = '';
  769.     $return_meta = '';
  770.  
  771.     switch ( $mode )
  772.     {
  773.         case 'editpost':
  774.         case 'newtopic':
  775.         case 'reply':
  776.             $username = ( !empty($HTTP_POST_VARS['username']) ) ? $HTTP_POST_VARS['username'] : '';
  777.             $subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';
  778.             $topic_desc = ( !empty($HTTP_POST_VARS['topic_desc']) ) ? trim($HTTP_POST_VARS['topic_desc']) : '';
  779.             $message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
  780.             //-- mod : calendar --------------------------------------------------------------------------------
  781. //-- add
  782.             $topic_calendar_time = ( $topic_calendar_time != $post_data['topic_calendar_time'] && !$is_auth['auth_cal']) ? $post_data['topic_calendar_time'] : $topic_calendar_time;
  783.             if (empty($topic_calendar_time)) $topic_calendar_time = 0;
  784.             $topic_calendar_duration = ( $topic_calendar_duration != $post_data['topic_calendar_duration'] && !$is_auth['auth_cal']) ? $post_data['topic_calendar_duration'] : $topic_calendar_duration;
  785.             if ( !empty($topic_calendar_duration) )
  786.             {
  787.                 $topic_calendar_duration--;
  788.             }
  789.             if (empty($topic_calendar_time) || empty($topic_calendar_duration)) $topic_calendar_duration = 0;
  790. //-- fin mod : calendar ----------------------------------------------------------------------------
  791.             $poll_title = ( isset($HTTP_POST_VARS['poll_title']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_title'] : '';
  792.             $poll_options = ( isset($HTTP_POST_VARS['poll_option_text']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_option_text'] : '';
  793.             $poll_length = ( isset($HTTP_POST_VARS['poll_length']) && $is_auth['auth_pollcreate'] ) ? $HTTP_POST_VARS['poll_length'] : '';
  794.             $bbcode_uid = '';
  795.             //-- mod : calendar --------------------------------------------------------------------------------
  796. // here we have added
  797. //    , $topic_calendar_time, $topic_calendar_duration
  798. //-- modify prepare_post only
  799.  
  800.             prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length, $topic_desc, $topic_calendar_time, $topic_calendar_duration);
  801.  
  802.             if ( $error_msg == '' )
  803.             {
  804.                 $topic_type = ( $topic_type != $post_data['topic_type'] && !$is_auth['auth_sticky'] && !$is_auth['auth_announce'] && !$is_auth['auth_global_announce'] ) ? $post_data['topic_type'] : $topic_type;
  805.                 //-- mod : announces -------------------------------------------------------------------------------
  806. //-- add
  807.                 if ($topic_announce_duration < -1) $topic_announce_duration == 0;
  808.                 if ( !in_array($topic_type, array(POST_ANNOUNCE, POST_GLOBAL_ANNOUNCE)) )
  809.                 {
  810.                     $topic_announce_duration = 0;
  811.                 }
  812.                 if ( ($topic_announce_duration == 0) && in_array($topic_type, array(POST_ANNOUNCE, POST_GLOBAL_ANNOUNCE)) )
  813.                 {
  814.                     $topic_announce_duration = intval($board_config['announcement_duration']);
  815.                 }
  816. //-- fin mod : announces ---------------------------------------------------------------------------
  817.                 //-- mod : announces -------------------------------------------------------------------------------
  818. // here we added
  819. //    , $topic_announce_duration
  820. //-- modify
  821. //-- mod : post icon -------------------------------------------------------------------------------
  822. // here we added
  823. //    , post_icon
  824. //-- modify
  825. //-- mod : calendar --------------------------------------------------------------------------------
  826. // here we added
  827. //    , $topic_calendar_time, $topic_calendar_duration
  828. //-- modify
  829. if ($lock_subject)
  830. {
  831.     $url = "<a href='viewtopic.$phpEx?" . POST_POST_URL . "=" .$lock_subject."#".$lock_subject."'> ";
  832.     $message = addslashes(sprintf($lang['Link_to_post'],$url,"</a>")).$message;    
  833. }
  834.  
  835.                 submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length, str_replace("\'", "''", $topic_desc), $topic_announce_duration, $post_icon, $topic_calendar_time, $topic_calendar_duration, $news_category);
  836.             }
  837.             break;
  838.  
  839.         case 'delete':
  840.         case 'poll_delete':
  841.             delete_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id);
  842.             break;
  843.     }
  844.  
  845.     if ( $error_msg == '' )
  846.     {
  847.         if ( $mode != 'editpost' )
  848.         {
  849.             $user_id = ( $mode == 'reply' || $mode == 'newtopic' ) ? $userdata['user_id'] : $post_data['poster_id'];
  850.             update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id);
  851.         }
  852.         $attachment_mod['posting']->insert_attachment($post_id);
  853.         if ($error_msg == '' && $mode != 'poll_delete')
  854.         {
  855.             if ( $setbm )
  856.             {
  857.                 set_bookmark($topic_id);
  858.             }
  859.             user_notification($mode, $post_data, $post_info['topic_title'], $forum_id, $topic_id, $post_id, $notify_user);
  860.         }
  861.         if ($lock_subject) 
  862.     $url = "<a href='".append_sid("viewtopic.$phpEx?" . POST_POST_URL . "=" .$lock_subject."#".$lock_subject)."'> ";
  863.     $return_message = $lang['Report_stored']."<br/><br/>".sprintf($lang['Send_report'],$url,"</a>");    
  864.     $return_meta = str_replace($post_id,$lock_subject,$return_meta); 
  865. }
  866.         if ( $mode == 'newtopic' || $mode == 'reply' )
  867.         {
  868.             $tracking_topics = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
  869.             $tracking_forums = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
  870.  
  871.             if ( count($tracking_topics) + count($tracking_forums) == 100 && empty($tracking_topics[$topic_id]) )
  872.             {
  873.                 asort($tracking_topics);
  874.                 unset($tracking_topics[key($tracking_topics)]);
  875.             }
  876.  
  877.             $tracking_topics[$topic_id] = time();
  878.  
  879.             setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
  880.         }
  881.  
  882.         $template->assign_vars(array(
  883.             'META' => $return_meta)
  884.         );
  885.         message_die(GENERAL_MESSAGE, $return_message);
  886.     }
  887. }
  888.  
  889. if( $refresh || isset($HTTP_POST_VARS['del_poll_option']) || $error_msg != '' )
  890. {
  891.     $username = ( !empty($HTTP_POST_VARS['username']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['username']))) : '';
  892.     $subject = ( !empty($HTTP_POST_VARS['subject']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['subject']))) : '';
  893.     $message = ( !empty($HTTP_POST_VARS['message']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['message']))) : '';
  894.     $topic_desc = ( !empty($HTTP_POST_VARS['topic_desc']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['topic_desc']))) : '';
  895.     //-- mod : post icon -------------------------------------------------------------------------------
  896. //-- add
  897.     $post_icon = ( !empty($HTTP_POST_VARS['post_icon']) ) ? intval($HTTP_POST_VARS['post_icon']) : 0;
  898. //-- fin mod : post icon ---------------------------------------------------------------------------
  899.  
  900.  
  901.     $poll_title = ( !empty($HTTP_POST_VARS['poll_title']) ) ? htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['poll_title']))) : '';
  902.     $poll_length = ( isset($HTTP_POST_VARS['poll_length']) ) ? max(0, intval($HTTP_POST_VARS['poll_length'])) : 0;
  903.  
  904.     $poll_options = array();
  905.     if ( !empty($HTTP_POST_VARS['poll_option_text']) )
  906.     {
  907.         while( list($option_id, $option_text) = @each($HTTP_POST_VARS['poll_option_text']) )
  908.         {
  909.             if( isset($HTTP_POST_VARS['del_poll_option'][$option_id]) )
  910.             {
  911.                 unset($poll_options[$option_id]);
  912.             }
  913.             else if ( !empty($option_text) ) 
  914.             {
  915.                 $poll_options[$option_id] = htmlspecialchars(trim(stripslashes($option_text)));
  916.             }
  917.         }
  918.     }
  919.  
  920.     if ( isset($poll_add) && !empty($HTTP_POST_VARS['add_poll_option_text']) )
  921.     {
  922.         $poll_options[] = htmlspecialchars(trim(stripslashes($HTTP_POST_VARS['add_poll_option_text'])));
  923.     }
  924.  
  925.     if ( $mode == 'newtopic' || $mode == 'reply')
  926.     {
  927.         $user_sig = ( $userdata['user_sig'] != '' && $board_config['allow_sig'] ) ? $userdata['user_sig'] : '';
  928.     }
  929.     else if ( $mode == 'editpost' )
  930.     {
  931.         $user_sig = ( $post_info['user_sig'] != '' && $board_config['allow_sig'] ) ? $post_info['user_sig'] : '';
  932.     }
  933.     
  934.     if( $preview )
  935.     {
  936.         $orig_word = array();
  937.         $replacement_word = array();
  938.         obtain_word_list($orig_word, $replacement_word);
  939.  
  940.         $bbcode_uid = ( $bbcode_on ) ? make_bbcode_uid() : '';
  941.         $preview_message = stripslashes(prepare_message(addslashes(unprepare_message($message)), $html_on, $bbcode_on, $smilies_on, $bbcode_uid));
  942.         $preview_subject = $subject;
  943.         $preview_username = $username;
  944.  
  945.         //
  946.         // Finalise processing as per viewtopic
  947.         //
  948.         if( !$html_on )
  949.         {
  950.             if( $user_sig != '' || !$userdata['user_allowhtml'] )
  951.             {
  952.                 $user_sig = preg_replace('#(<)([\/]?.*?)(>)#is', '<\2>', $user_sig);
  953.             }
  954.         }
  955.  
  956.         if( $attach_sig && $user_sig != '' && $userdata['user_sig_bbcode_uid'] )
  957.         {
  958.             $user_sig = bbencode_second_pass($user_sig, $userdata['user_sig_bbcode_uid']);
  959.         }
  960.  
  961.         if( $bbcode_on )
  962.         {
  963.             $preview_message = bbencode_second_pass($preview_message, $bbcode_uid);
  964.         }
  965.  
  966.         if( !empty($orig_word) )
  967.         {
  968.             $preview_username = ( !empty($username) ) ? preg_replace($orig_word, $replacement_word, $preview_username) : '';
  969.             $preview_subject = ( !empty($subject) ) ? preg_replace($orig_word, $replacement_word, $preview_subject) : '';
  970.             $preview_message = ( !empty($preview_message) ) ? preg_replace($orig_word, $replacement_word, $preview_message) : '';
  971.         }
  972.  
  973.         if( $user_sig != '' )
  974.         {
  975.             $user_sig = make_clickable($user_sig);
  976.         }
  977.         $preview_message = make_clickable($preview_message);
  978.  
  979.         if( $smilies_on )
  980.         {
  981.             if( $userdata['user_allowsmile'] && $user_sig != '' )
  982.             {
  983.                 $user_sig = smilies_pass($user_sig);
  984.             }
  985.  
  986.             $preview_message = smilies_pass($preview_message);
  987.         }
  988.  
  989.         if( $attach_sig && $user_sig != '' )
  990.         {
  991.             $preview_message = $preview_message . '<br /><br />_________________<br />' . $user_sig;
  992.         }
  993.  
  994.         $preview_message = str_replace("\n", '<br />', $preview_message);
  995.         $url = "<a href='viewtopic.$phpEx?" . POST_POST_URL . "=" .$lock_subject."#".$lock_subject."'> ";
  996.         $extra_message_body= sprintf($lang['Link_to_post'],$url,"</a>");    
  997.         $preview_message = ($lock_subject) ? stripslashes($extra_message_body).$preview_message : $preview_message;
  998.         $template->set_filenames(array(
  999.             'preview' => 'posting_preview.tpl')
  1000.         );
  1001.         //-- mod : calendar --------------------------------------------------------------------------------
  1002. //-- add
  1003.         if (!empty($topic_calendar_time))
  1004.         {
  1005.             $topic_calendar_duration_preview = $topic_calendar_duration-1;
  1006.             if ($topic_calendar_duration_preview < 0)
  1007.             {
  1008.                 $topic_calendar_duration_preview = 0;
  1009.             }
  1010.             $preview_subject .= get_calendar_title($topic_calendar_time, $topic_calendar_duration_preview);
  1011.         }
  1012. //-- fin mod : calendar ----------------------------------------------------------------------------
  1013.         //-- mod : post icon -------------------------------------------------------------------------------
  1014. //-- add
  1015.         $preview_subject = get_icon_title($post_icon) . ' ' . $preview_subject;
  1016. //-- fin mod : post icon ---------------------------------------------------------------------------
  1017.  
  1018.         $attachment_mod['posting']->preview_attachments();
  1019.         $template->assign_vars(array(
  1020.             'TOPIC_TITLE' => $preview_subject,
  1021.             'POST_SUBJECT' => $preview_subject,
  1022.             'POSTER_NAME' => $preview_username,
  1023.             'POST_DATE' => create_date($board_config['default_dateformat'], time(), $board_config['board_timezone']),
  1024.             'MESSAGE' => $preview_message,
  1025.  
  1026.             'L_POST_SUBJECT' => $lang['Post_subject'], 
  1027.             'L_PREVIEW' => $lang['Preview'],
  1028.             'L_POSTED' => $lang['Posted'], 
  1029.             'L_POST' => $lang['Post'])
  1030.         );
  1031.         $template->assign_var_from_handle('POST_PREVIEW_BOX', 'preview');
  1032.     }
  1033.     else if( $error_msg != '' )
  1034.     {
  1035.         $template->set_filenames(array(
  1036.             'reg_header' => 'error_body.tpl')
  1037.         );
  1038.         $template->assign_vars(array(
  1039.             'ERROR_MESSAGE' => $error_msg)
  1040.         );
  1041.         $template->assign_var_from_handle('ERROR_BOX', 'reg_header');
  1042.     }
  1043. }
  1044. else
  1045. {
  1046.     //
  1047.     // User default entry point
  1048.     //
  1049.     $postreport=(isset($HTTP_GET_VARS['postreport']))? intval( $HTTP_GET_VARS['postreport']) : 0;
  1050. if ($postreport)
  1051. {
  1052.     $sql = 'SELECT topic_id FROM '.POSTS_TABLE.' WHERE post_id="'.$postreport.'"';
  1053.     if( !($result = $db->sql_query($sql) )) 
  1054.         message_die(GENERAL_ERROR, "Couldn't get post subject information"); 
  1055.     $post_details = $db->sql_fetchrow($result);
  1056.     $post_topic_id=$post_details['topic_id'];
  1057.     $sql = 'SELECT pt.post_subject FROM '.POSTS_TEXT_TABLE.' pt, '.POSTS_TABLE.' p WHERE p.topic_id="'.$post_topic_id.'" AND pt.post_id=p.post_id ORDER BY p.post_time ASC LIMIT 1';
  1058.     if( !($result = $db->sql_query($sql) )) 
  1059.         message_die(GENERAL_ERROR, "Couldn't get topic subject information".$sql); 
  1060.     $post_details = $db->sql_fetchrow($result);
  1061.     $subject='('.$postreport.')'.$post_details['post_subject'];
  1062.     $lock_subject=$postreport;
  1063. } else
  1064. {
  1065.     $subject = '';
  1066.     $lock_subject='';
  1067. }
  1068.     if ( $mode == 'newtopic' )
  1069.     {
  1070.         $user_sig = ( $userdata['user_sig'] != '' ) ? $userdata['user_sig'] : '';
  1071.  
  1072.         // Start replacement - Yellow card MOD
  1073. $username = ($userdata['session_logged_in']) ? $userdata['username'] : ''; 
  1074. $poll_title = ''; 
  1075. $poll_length = ''; 
  1076. // End replacement - Yellow card MOD
  1077.         $message = '';
  1078.         //-- mod : post icon -------------------------------------------------------------------------------
  1079. //-- add
  1080.         $post_icon = 0;
  1081. //-- fin mod : post icon ---------------------------------------------------------------------------
  1082.  
  1083.     }
  1084.     else if ( $mode == 'reply' )
  1085.     {
  1086.         $user_sig = ( $userdata['user_sig'] != '' ) ? $userdata['user_sig'] : '';
  1087.  
  1088.         $username = ( $userdata['session_logged_in'] ) ? $userdata['username'] : '';
  1089.         $subject = '';
  1090.         $message = '';
  1091.         //-- mod : post icon -------------------------------------------------------------------------------
  1092. //-- add
  1093.         $post_icon = 0;
  1094. //-- fin mod : post icon ---------------------------------------------------------------------------
  1095.  
  1096.  
  1097.     }
  1098.     else if ( $mode == 'quote' || $mode == 'editpost' )
  1099.     {
  1100.         $subject = ( $post_data['first_post'] ) ? $post_info['topic_title'] : $post_info['post_subject'];
  1101.         $message = $post_info['post_text'];
  1102.         $topic_desc = $post_info['topic_desc'];
  1103.         //-- mod : post icon -------------------------------------------------------------------------------
  1104. //-- add
  1105.         $post_icon = ( $post_data['first_post'] ) ? $post_info['topic_icon'] : $post_info['post_icon'];
  1106. //-- fin mod : post icon ---------------------------------------------------------------------------
  1107.  
  1108.  
  1109.         if ( $mode == 'editpost' )
  1110.         {
  1111.             $attach_sig = ( $post_info['enable_sig'] && $post_info['user_sig'] != '' ) ? TRUE : 0; 
  1112.             $user_sig = $post_info['user_sig'];
  1113.  
  1114.             $html_on = ( $post_info['enable_html'] ) ? true : false;
  1115.             $bbcode_on = ( $post_info['enable_bbcode'] ) ? true : false;
  1116.             $smilies_on = ( $post_info['enable_smilies'] ) ? true : false;
  1117.         }
  1118.         else
  1119.         {
  1120.             $attach_sig = ( $userdata['user_attachsig'] ) ? TRUE : 0;
  1121.             $user_sig = $userdata['user_sig'];
  1122.         }
  1123.  
  1124.         if ( $post_info['bbcode_uid'] != '' )
  1125.         {
  1126.             $message = preg_replace('/\:(([a-z0-9]:)?)' . $post_info['bbcode_uid'] . '/s', '', $message);
  1127.         }
  1128.  
  1129.         $message = str_replace('<', '<', $message);
  1130.         $message = str_replace('>', '>', $message);
  1131.         $message = str_replace('<br />', "\n", $message);
  1132.  
  1133.         if ( $mode == 'quote' )
  1134.         {
  1135.             $orig_word = array();
  1136.             $replacement_word = array();
  1137.             obtain_word_list($orig_word, $replace_word);
  1138.  
  1139.             $msg_date =  create_date($board_config['default_dateformat'], $postrow['post_time'], $board_config['board_timezone']);
  1140.  
  1141.             // Use trim to get rid of spaces placed there by MS-SQL 2000
  1142.             $quote_username = ( trim($post_info['post_username']) != '' ) ? $post_info['post_username'] : $post_info['username'];
  1143.             $message = '[quote="' . $quote_username . '"]' . $message . '[/quote]';
  1144.  
  1145.             if ( !empty($orig_word) )
  1146.             {
  1147.                 $subject = ( !empty($subject) ) ? preg_replace($orig_word, $replace_word, $subject) : '';
  1148.                 $message = ( !empty($message) ) ? preg_replace($orig_word, $replace_word, $message) : '';
  1149.             }
  1150.  
  1151.             if ( !preg_match('/^Re:/', $subject) && strlen($subject) > 0 )
  1152.             {
  1153.                 $subject = 'Re: ' . $subject;
  1154.             }
  1155.  
  1156.             $mode = 'reply';
  1157.         }
  1158.         else
  1159.         {
  1160.             $username = ( $post_info['user_id'] == ANONYMOUS && !empty($post_info['post_username']) ) ? $post_info['post_username'] : '';
  1161.         }
  1162.     }
  1163. }
  1164.  
  1165. //
  1166. // Signature toggle selection
  1167. //
  1168. if( $user_sig != '' )
  1169. {
  1170.     $template->assign_block_vars('switch_signature_checkbox', array());
  1171. }
  1172.  
  1173. //
  1174. // HTML toggle selection
  1175. //
  1176. if ( $board_config['allow_html'] )
  1177. {
  1178.     $html_status = $lang['HTML_is_ON'];
  1179.     $template->assign_block_vars('switch_html_checkbox', array());
  1180. }
  1181. else
  1182. {
  1183.     $html_status = $lang['HTML_is_OFF'];
  1184. }
  1185.  
  1186. //
  1187. // BBCode toggle selection
  1188. //
  1189. if ( $board_config['allow_bbcode'] )
  1190. {
  1191.     $bbcode_status = $lang['BBCode_is_ON'];
  1192.     $template->assign_block_vars('switch_bbcode_checkbox', array());
  1193. }
  1194. else
  1195. {
  1196.     $bbcode_status = $lang['BBCode_is_OFF'];
  1197. }
  1198.  
  1199. //
  1200. // Smilies toggle selection
  1201. //
  1202. if ( $board_config['allow_smilies'] )
  1203. {
  1204.     $smilies_status = $lang['Smilies_are_ON'];
  1205.     $template->assign_block_vars('switch_smilies_checkbox', array());
  1206. }
  1207. else
  1208. {
  1209.     $smilies_status = $lang['Smilies_are_OFF'];
  1210. }
  1211.  
  1212. if( !$userdata['session_logged_in'] || ( $mode == 'editpost' && $post_info['poster_id'] == ANONYMOUS ) )
  1213. {
  1214.     $template->assign_block_vars('switch_username_select', array());
  1215. }
  1216.  
  1217. //
  1218. // Notify checkbox - only show if user is logged in
  1219. //
  1220. if ( $userdata['session_logged_in'] && $is_auth['auth_read'] )
  1221. {
  1222.     if ( $mode != 'editpost' || ( $mode == 'editpost' && $post_info['poster_id'] != ANONYMOUS ) )
  1223.     {
  1224.         $template->assign_block_vars('switch_notify_checkbox', array());
  1225.     }
  1226. }
  1227. //
  1228. // Bookmark checkbox - only show if user is logged in and not editing a post
  1229. //
  1230. if ( $userdata['session_logged_in'] )
  1231. {
  1232.     if ( $mode != 'editpost' )
  1233.     {
  1234.         $template->assign_block_vars('switch_bookmark_checkbox', array());
  1235.     }
  1236. }
  1237. //
  1238. // Delete selection
  1239. //
  1240. if ( $mode == 'editpost' && ( ( $is_auth['auth_delete'] && $post_data['last_post'] && ( !$post_data['has_poll'] || $post_data['edit_poll'] ) ) || $is_auth['auth_mod'] ) )
  1241. {
  1242.     $template->assign_block_vars('switch_delete_checkbox', array());
  1243. }
  1244.  
  1245. //
  1246. // Topic type selection
  1247. //
  1248. $topic_type_toggle = '';
  1249. if ( $mode == 'newtopic' || ( $mode == 'editpost' && $post_data['first_post'] ) )
  1250. {
  1251.     $template->assign_block_vars('switch_type_toggle', array());
  1252.  
  1253.     if( $is_auth['auth_sticky'] )
  1254.     {
  1255.         $topic_type_toggle .= '<input type="radio" name="topictype" value="' . POST_STICKY . '"';
  1256.         if ( $post_data['topic_type'] == POST_STICKY || $topic_type == POST_STICKY )
  1257.         {
  1258.             $topic_type_toggle .= ' checked="checked"';
  1259.         }
  1260.         $topic_type_toggle .= ' /> ' . $lang['Post_Sticky'] . '  ';
  1261.     }
  1262.  
  1263.     if( $is_auth['auth_announce'] )
  1264.     {
  1265.         $topic_type_toggle .= '<input type="radio" name="topictype" value="' . POST_ANNOUNCE . '"';
  1266.         if ( $post_data['topic_type'] == POST_ANNOUNCE || $topic_type == POST_ANNOUNCE )
  1267.         {
  1268.             $topic_type_toggle .= ' checked="checked"';
  1269.         }
  1270.         $topic_type_toggle .= ' /> ' . $lang['Post_Announcement'] . '  ';
  1271.     }
  1272.     //-- mod : announces -------------------------------------------------------------------------------
  1273. //-- add
  1274.     if( $is_auth['auth_global_announce'] )
  1275.     {
  1276.         $topic_type_toggle .= '<input type="radio" name="topictype" value="' . POST_GLOBAL_ANNOUNCE . '"';
  1277.         if ( $post_data['topic_type'] == POST_GLOBAL_ANNOUNCE || $topic_type == POST_GLOBAL_ANNOUNCE )
  1278.         {
  1279.             $topic_type_toggle .= ' checked="checked"';
  1280.         }
  1281.         $topic_type_toggle .= ' /> ' . $lang['Post_Global_Announcement'] . '  ';
  1282.     }
  1283. //-- fin mod : announces ---------------------------------------------------------------------------
  1284.  
  1285.     if ( $topic_type_toggle != '' )
  1286.     {
  1287.         $topic_type_toggle = $lang['Post_topic_as'] . ': <input type="radio" name="topictype" value="' . POST_NORMAL .'"' . ( ( $post_data['topic_type'] == POST_NORMAL || $topic_type == POST_NORMAL ) ? ' checked="checked"' : '' ) . ' /> ' . $lang['Post_Normal'] . '  ' . $topic_type_toggle;
  1288.     }
  1289.     //-- mod : announces -------------------------------------------------------------------------------
  1290. //-- add
  1291.     if( $is_auth['auth_announce'] || $is_auth['auth_global_announce'])
  1292.     {
  1293.         if (empty($topic_announce_duration)) $topic_announce_duration = $post_data['topic_announce_duration'];
  1294.         $topic_type_toggle .= '<br />' . $lang['announcement_duration'] . ': <input type="post" size="3" name="topicduration" value="' . $topic_announce_duration . '" /> ' . $lang['Days'] . '<br /><span class="gensmall">(' . $lang['announcement_duration_explain'] . ')</span>';
  1295.     }
  1296. //-- fin mod : announces ---------------------------------------------------------------------------
  1297.  
  1298. }
  1299. //-- mod : calendar --------------------------------------------------------------------------------
  1300. //-- add
  1301. //
  1302. // Calendar type selection
  1303. //
  1304. $topic_type_cal = '';
  1305. if ( $mode == 'newtopic' || ( $mode == 'editpost' && $post_data['first_post'] ) )
  1306. {
  1307.     if( $is_auth['auth_cal'])
  1308.     {
  1309.         $template->assign_block_vars('switch_type_cal', array());
  1310.         $months = array( 
  1311.             ' ------------ ',
  1312.             $lang['datetime']['January'], 
  1313.             $lang['datetime']['February'], 
  1314.             $lang['datetime']['March'],
  1315.             $lang['datetime']['April'],
  1316.             $lang['datetime']['May'],
  1317.             $lang['datetime']['June'],
  1318.             $lang['datetime']['July'],
  1319.             $lang['datetime']['August'],
  1320.             $lang['datetime']['September'],
  1321.             $lang['datetime']['October'],
  1322.             $lang['datetime']['November'],
  1323.             $lang['datetime']['December'],
  1324.         );
  1325.  
  1326.         // get the date
  1327.         $topic_calendar_time = ( !isset($HTTP_POST_VARS['topic_calendar_year']) || (($topic_calendar_time != intval($post_data['topic_calendar_time'])) && !$is_auth['auth_cal']) ) ? intval($post_data['topic_calendar_time']) : $topic_calendar_time;
  1328.         $topic_calendar_duration = ( (!isset($HTTP_POST_VARS['topic_calendar_duration_day']) && !isset($HTTP_POST_VARS['topic_calendar_duration_hour']) && !isset($HTTP_POST_VARS['topic_calendar_duration_min']) ) || (($topic_calendar_duration != intval($post_data['topic_calendar_duration'])) && !$is_auth['auth_cal']) ) ? intval($post_data['topic_calendar_duration']) : $topic_calendar_duration;
  1329.  
  1330.         // get the components of the event date
  1331.         $year    = '';
  1332.         $month    = '';
  1333.         $day    = '';
  1334.         $hour    = '';
  1335.         $min    = '';
  1336.         if (!empty($topic_calendar_time))
  1337.         {
  1338.             $year    = intval( date('Y', $topic_calendar_time) );
  1339.             $month    = intval( date('m', $topic_calendar_time) );
  1340.             $day    = intval( date('d', $topic_calendar_time) );
  1341.             $hour    = intval( date('H', $topic_calendar_time) );
  1342.             $min    = intval( date('i', $topic_calendar_time) );
  1343.         }
  1344.  
  1345.         // get the components of the duration
  1346.         $d_day    = '';
  1347.         $d_hour    = '';
  1348.         $d_min    = '';
  1349.         if ( !empty($topic_calendar_time) && !empty($topic_calendar_duration) )
  1350.         {
  1351.             $d_dur = intval($topic_calendar_duration);
  1352.             $d_day = intval($d_dur / 86400);
  1353.             $d_dur = $d_dur - 86400 * $d_day;
  1354.             $d_hour = intval($d_dur / 3600);
  1355.             $d_dur = $d_dur - 3600 * $d_hour;
  1356.             $d_min = intval($d_dur / 60);
  1357.         }
  1358.  
  1359.         // raz if no date
  1360.         if ( empty($year) || empty($month) || empty($day) )
  1361.         {
  1362.             $year    = '';
  1363.             $month    = '';
  1364.             $day    = '';
  1365.             $hour    = '';
  1366.             $min    = '';
  1367.             $d_day    = '';
  1368.             $d_hour    = '';
  1369.             $d_min    = '';
  1370.         }
  1371.  
  1372.         // day list
  1373.         $s_topic_calendar_day = '<select name="topic_calendar_day">';
  1374.         for ($i=0; $i <= 31; $i++)
  1375.         {
  1376.             $selected = ( intval($day) == $i) ? ' selected="selected"' : '';
  1377.             $s_topic_calendar_day .= '<option value="' . $i . '"' . $selected . '>' . ( ($i == 0) ? ' -- ' : str_pad($i, 2, '0', STR_PAD_LEFT) ) . '</option>';
  1378.         }
  1379.         $s_topic_calendar_day .= '</select>';
  1380.  
  1381.         // month list
  1382.         $s_topic_calendar_month = '<select name="topic_calendar_month">';
  1383.         for ($i=0; $i <= 12; $i++)
  1384.         {
  1385.             $selected = ( intval($month) == $i ) ? ' selected="selected"' : '';
  1386.             $s_topic_calendar_month .= '<option value="' . $i . '"' . $selected . '>' . $months[$i] . '</option>';
  1387.         }
  1388.         $s_topic_calendar_month .= '</select>';
  1389.  
  1390.         // year list
  1391.         $s_topic_calendar_year = '<select name="topic_calendar_year">';
  1392.  
  1393.         $selected = empty($year) ? ' selected="selected"' : '';
  1394.         $s_topic_calendar_year .= '<option value="0"' . $select . '> ---- </option>';
  1395.  
  1396.         $start_year = ( (intval($year) > 1971 ) && (intval($year) <= date('Y', time())) ) ? intval($year) : date('Y', time());
  1397.         for ($i = $start_year; $i <= date('Y', time())+10; $i++)
  1398.         {
  1399.             $selected = ( intval($year) == $i) ? ' selected="selected"' : '';
  1400.             $s_topic_calendar_year .= '<option value="' . $i . '"' . $selected . '>' . $i . '</option>';
  1401.         }
  1402.         $s_topic_calendar_year .= '</select>';
  1403.  
  1404.         // time
  1405.         if (empty($hour) && empty($min))
  1406.         {
  1407.             $hour = '';
  1408.             $min = '';
  1409.         }
  1410.         $topic_calendar_hour    = $hour;
  1411.         $topic_calendar_min        = $min;
  1412.  
  1413.         // duration
  1414.         if ( empty($topic_calendar_hour) && empty($topic_calendar_min) )
  1415.         {
  1416.             $d_hour = '';
  1417.             $d_min = '';
  1418.         }
  1419.         if ( empty($d_day) && empty($d_hour) && empty($d_min) )
  1420.         {
  1421.             $d_day = '';
  1422.             $d_hour = '';
  1423.             $d_min = '';
  1424.         }
  1425.         $topic_calendar_duration_day    = $d_day;
  1426.         $topic_calendar_duration_hour    = $d_hour;
  1427.         $topic_calendar_duration_min    = $d_min;
  1428.     }
  1429. }
  1430. //-- fin mod : calendar ----------------------------------------------------------------------------
  1431.  
  1432. $hidden_form_fields = '<input type="hidden" name="mode" value="' . $mode . '" />';
  1433. $hidden_form_fields .= ($lock_subject) ? '<input type="hidden" name="lock_subject" value="'.$lock_subject.'" />':'';
  1434. switch( $mode )
  1435. {
  1436.     case 'newtopic':
  1437.         $page_title = $lang['Post_a_new_topic'];
  1438.         $hidden_form_fields .= '<input type="hidden" name="' . POST_FORUM_URL . '" value="' . $forum_id . '" />';
  1439.         break;
  1440.  
  1441.     case 'reply':
  1442.         $page_title = $lang['Post_a_reply'];
  1443.         $hidden_form_fields .= '<input type="hidden" name="' . POST_TOPIC_URL . '" value="' . $topic_id . '" />';
  1444.         break;
  1445.  
  1446.     case 'editpost':
  1447.         $page_title = $lang['Edit_Post'];
  1448.         $hidden_form_fields .= '<input type="hidden" name="' . POST_POST_URL . '" value="' . $post_id . '" />';
  1449.         break;
  1450. }
  1451. $page_title = ($postreport || $lock_subject) ? $lang['Post_a_report']: $page_title;
  1452. // Generate smilies listing for page output
  1453. generate_smilies('inline', PAGE_POSTING);
  1454.  
  1455. //
  1456. // Include page header
  1457. //
  1458. include($phpbb_root_path . 'includes/page_header.'.$phpEx);
  1459.  
  1460. $template->set_filenames(array(
  1461.     'body' => 'posting_body.tpl', 
  1462.     'pollbody' => 'posting_poll_body.tpl', 
  1463.     'reviewbody' => 'posting_topic_review.tpl')
  1464. );
  1465. make_jumpbox('viewforum.'.$phpEx);
  1466. // MULTI BBCODE-begin
  1467. //NOTE: the first element of each array must be ''   Add new elements AFTER the ''
  1468. $EMBB_keys = array('','g', 'd', 'e', 'h', 'j', 'j', 'j', 'j', 'k', 'm', 'n', 'r', 't', 'v', 'x', 'y', 'z', 'th') ;
  1469. $EMBB_widths = array('','57' ,'57','57','57','57','57','57','57','57','57','57','57','57','57','57','57','57','57') ;
  1470. $EMBB_values = array('','Glow' ,'Shadow','Align','Fade','ScrollLeft','Scrollright','ScrollUp','Scrolldown','Highlight','Flash','FlipV','FlipH','Stream','Left','Right',$lang['PHPCode'],'Google','Through') ;
  1471. /* ///// removed for BBCode Buttons Mod /////
  1472. for ($i=1; $i<count($EMBB_values); $i++)
  1473. {
  1474.     // load BBcode MODs info
  1475.     $val = ($i*2)+16 ;
  1476.     $template->assign_block_vars('MultiBB', array(
  1477.         'KEY' => $EMBB_keys[$i],
  1478.         'NAME' => "addbbcode$val",
  1479.         'WIDTH' => $EMBB_widths[$i],
  1480.         'VALUE' => $EMBB_values[$i],
  1481.         'STYLE' => "bbstyle($val)")
  1482.     );
  1483. }
  1484. */
  1485.  
  1486.  
  1487. $max_rows = ((count($EMBB_values)-1)/9) ;
  1488. $max_rows = ($max_rows*9 == count($EMBB_values)) ? $max_rows : $max_rows+1 ;
  1489. $code_count = 1 ;
  1490. for ($i=1; $i<=$max_rows; $i++)
  1491. {
  1492.     $template->assign_block_vars('XBBcode', array(
  1493.         'ROW_ID' => $i)
  1494.     );
  1495.     
  1496.     for ($element=0; $element<9; $element++)
  1497.     {
  1498.         $val = ($code_count*2)+16 ;
  1499.         if ( $code_count < count($EMBB_values))
  1500.         {
  1501.             $template->assign_block_vars('XBBcode.BB', array(
  1502.                 'KEY' => $EMBB_keys[$code_count],
  1503.                 'NAME' => "addbbcode$val",
  1504.                 'WIDTH' => $EMBB_widths[$code_count],
  1505.                 'VALUE' => $EMBB_values[$code_count],
  1506.                 'STYLE' => "bbstyle($val)")
  1507.             );
  1508.         }
  1509.         $code_count++ ;
  1510.     }
  1511. }
  1512.  
  1513. // MULTI BBCODE-end
  1514. $template->assign_vars(array(
  1515.     'FORUM_NAME' => $forum_name,
  1516.     'L_POST_A' => $page_title,
  1517.     'L_POST_SUBJECT' => $lang['Post_subject'], 
  1518.  
  1519.     'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"))
  1520. );
  1521.  
  1522. //
  1523. // This enables the forum/topic title to be output for posting
  1524. // but not for privmsg (where it makes no sense)
  1525. //
  1526. $template->assign_block_vars('switch_not_privmsg', array());
  1527. //
  1528. // Enable the Topic Description MOD only if this is a new post
  1529. // or if you edit the fist post of a topic
  1530. //
  1531. if ( $mode == 'newtopic' || ( $mode == 'editpost' && $post_data['first_post'] ) )
  1532. {
  1533.    $template->assign_block_vars('topic_description', array());
  1534. }
  1535.  
  1536. //
  1537. // Output the data to the template
  1538. //
  1539. $template->assign_vars(array(
  1540.     'USERNAME' => $username,
  1541.     'SUBJECT' => $subject,
  1542.     'MESSAGE' => $message,
  1543.     'HTML_STATUS' => $html_status,
  1544.     'BBCODE_STATUS' => sprintf($bbcode_status, '<a href="' . append_sid("faq.$phpEx?mode=bbcode") . '" target="_phpbbcode">', '</a>'), 
  1545.     'SMILIES_STATUS' => $smilies_status, 
  1546.  
  1547.     'L_SUBJECT' => $lang['Subject'],
  1548.     'L_MESSAGE_BODY' => $lang['Message_body'],
  1549.     'L_OPTIONS' => $lang['Options'],
  1550.     'L_PREVIEW' => $lang['Preview'],
  1551.     'L_SPELLCHECK' => $lang['Spellcheck'],
  1552.     'L_SUBMIT' => $lang['Submit'],
  1553.     'L_CANCEL' => $lang['Cancel'],
  1554.     'L_CONFIRM_DELETE' => $lang['Confirm_delete'],
  1555.     'L_DISABLE_HTML' => $lang['Disable_HTML_post'], 
  1556.     'L_DISABLE_BBCODE' => $lang['Disable_BBCode_post'], 
  1557.     'L_DISABLE_SMILIES' => $lang['Disable_Smilies_post'], 
  1558.     'L_ATTACH_SIGNATURE' => $lang['Attach_signature'], 
  1559.     'L_SET_BOOKMARK' => $lang['Set_Bookmark'],
  1560.     'L_NOTIFY_ON_REPLY' => $lang['Notify'], 
  1561.     'L_DELETE_POST' => $lang['Delete_post'],
  1562.  
  1563.     'L_BBCODE_B_HELP' => $lang['bbcode_b_help'], 
  1564.     'L_BBCODE_I_HELP' => $lang['bbcode_i_help'], 
  1565.     'L_BBCODE_U_HELP' => $lang['bbcode_u_help'], 
  1566.     'L_BBCODE_Q_HELP' => $lang['bbcode_q_help'], 
  1567.     'L_BBCODE_C_HELP' => $lang['bbcode_c_help'], 
  1568.     'L_BBCODE_L_HELP' => $lang['bbcode_l_help'], 
  1569.     'L_BBCODE_O_HELP' => $lang['bbcode_o_help'], 
  1570.     'L_BBCODE_P_HELP' => $lang['bbcode_p_help'], 
  1571.     'L_BBCODE_W_HELP' => $lang['bbcode_w_help'], 
  1572.     'L_BBCODE_A_HELP' => $lang['bbcode_a_help'], 
  1573.     'L_BBCODE_S_HELP' => $lang['bbcode_s_help'], 
  1574.     'L_BBCODE_F_HELP' => $lang['bbcode_f_help'], 
  1575.     'L_BBCODE_G_HELP' => $lang['bbcode_g_help'], 
  1576.        'L_BBCODE_D_HELP' => $lang['bbcode_d_help'], 
  1577.        'L_BBCODE_E_HELP' => $lang['bbcode_e_help'],
  1578.        'L_BBCODE_H_HELP' => $lang['bbcode_h_help'],
  1579.        'L_BBCODE_J_HELP' => $lang['bbcode_j_help'],
  1580.        'L_BBCODE_K_HELP' => $lang['bbcode_k_help'],
  1581.        'L_BBCODE_M_HELP' => $lang['bbcode_m_help'],
  1582.        'L_BBCODE_N_HELP' => $lang['bbcode_n_help'],
  1583.        'L_BBCODE_R_HELP' => $lang['bbcode_r_help'],
  1584.        'L_BBCODE_T_HELP' => $lang['bbcode_t_help'],
  1585.        'L_BBCODE_V_HELP' => $lang['bbcode_v_help'],
  1586.        'L_BBCODE_X_HELP' => $lang['bbcode_x_help'],
  1587.        'L_BBCODE_Y_HELP' => $lang['bbcode_y_help'],
  1588.        'L_BBCODE_Z_HELP' => $lang['bbcode_z_help'],
  1589.        'L_BBCODE_TH_HELP' => $lang['bbcode_th_help'],
  1590.        'L_BBCODE_SC_HELP' => $lang['bbcode_sc_help'],
  1591.     'L_SMILIE_CREATOR' => $lang['Smilie_creator'],
  1592.     'L_EMPTY_MESSAGE' => $lang['Empty_message'],
  1593.  
  1594.     'L_FONT_COLOR' => $lang['Font_color'], 
  1595.     'L_COLOR_DEFAULT' => $lang['color_default'], 
  1596.     'L_COLOR_DARK_RED' => $lang['color_dark_red'], 
  1597.     'L_COLOR_RED' => $lang['color_red'], 
  1598.     'L_COLOR_ORANGE' => $lang['color_orange'], 
  1599.     'L_COLOR_BROWN' => $lang['color_brown'], 
  1600.     'L_COLOR_YELLOW' => $lang['color_yellow'], 
  1601.     'L_COLOR_GREEN' => $lang['color_green'], 
  1602.     'L_COLOR_OLIVE' => $lang['color_olive'], 
  1603.     'L_COLOR_CYAN' => $lang['color_cyan'], 
  1604.     'L_COLOR_BLUE' => $lang['color_blue'], 
  1605.     'L_COLOR_DARK_BLUE' => $lang['color_dark_blue'], 
  1606.     'L_COLOR_INDIGO' => $lang['color_indigo'], 
  1607.     'L_COLOR_VIOLET' => $lang['color_violet'], 
  1608.     'L_COLOR_WHITE' => $lang['color_white'], 
  1609.     'L_COLOR_BLACK' => $lang['color_black'], 
  1610.  
  1611.     'L_FONT_SIZE' => $lang['Font_size'], 
  1612.     'L_FONT_TINY' => $lang['font_tiny'], 
  1613.     'L_FONT_SMALL' => $lang['font_small'], 
  1614.     'L_FONT_NORMAL' => $lang['font_normal'], 
  1615.     'L_FONT_LARGE' => $lang['font_large'], 
  1616.     'L_FONT_HUGE' => $lang['font_huge'], 
  1617.  
  1618.     'L_BBCODE_CLOSE_TAGS' => $lang['Close_Tags'], 
  1619.     'L_STYLES_TIP' => $lang['Styles_tip'], 
  1620.     'L_TOPIC_DESCRIPTION' => $lang['Topic_description'],
  1621.     'U_VIEWTOPIC' => ( $mode == 'reply' ) ? append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id&postorder=desc") : '', 
  1622.     'U_REVIEW_TOPIC' => ( $mode == 'reply' ) ? append_sid("posting.$phpEx?mode=topicreview&" . POST_TOPIC_URL . "=$topic_id") : '', 
  1623.     'TOPIC_DESCRIPTION' => $topic_desc,
  1624.     //-- mod : calendar --------------------------------------------------------------------------------
  1625. //-- add
  1626.     'L_CALENDAR_TITLE'            => $lang['Calendar_event'],
  1627.     'L_TIME'                    => $lang['Event_time'],
  1628.     'L_CALENDAR_DURATION'        => $lang['Calendar_duration'],
  1629.     'L_DAYS'                    => $lang['Days'],
  1630.     'L_HOURS'                    => $lang['Hours'],
  1631.     'L_MINUTES'                    => $lang['Minutes'],
  1632.     'L_TODAY'                    => $lang['Today'],
  1633.  
  1634.     'TODAY_DAY'                    => date('d', time()),
  1635.     'TODAY_MONTH'                => date('m', time()),
  1636.     'TODAY_YEAR'                => date('Y', time()),
  1637.  
  1638.     'S_CALENDAR_YEAR'            => $s_topic_calendar_year,
  1639.     'S_CALENDAR_MONTH'            => $s_topic_calendar_month,
  1640.     'S_CALENDAR_DAY'            => $s_topic_calendar_day,
  1641.  
  1642.     'CALENDAR_HOUR'                => $topic_calendar_hour,
  1643.     'CALENDAR_MIN'                => $topic_calendar_min,
  1644.     'CALENDAR_DURATION_DAY'        => $topic_calendar_duration_day,
  1645.     'CALENDAR_DURATION_HOUR'    => $topic_calendar_duration_hour,
  1646.     'CALENDAR_DURATION_MIN'        => $topic_calendar_duration_min,
  1647. //-- fin mod : calendar ----------------------------------------------------------------------------
  1648.  
  1649.     'S_HTML_CHECKED' => ( !$html_on ) ? 'checked="checked"' : '', 
  1650.     'S_BBCODE_CHECKED' => ( !$bbcode_on ) ? 'checked="checked"' : '', 
  1651.     'S_SMILIES_CHECKED' => ( !$smilies_on ) ? 'checked="checked"' : '', 
  1652.     'S_SIGNATURE_CHECKED' => ( $attach_sig ) ? 'checked="checked"' : '', 
  1653.     'S_SETBM_CHECKED' => ( $setbm ) ? 'checked="checked"' : '',
  1654.     // Start replacement - Yellow card admin MOD
  1655.     'S_NOTIFY_CHECKED' => ($is_auth['auth_read'] ) ? (( $notify_user ) ? 'checked="checked"' : '')  : 'DISABLED' ,
  1656.     'S_LOCK_SUBJECT' => ($lock_subject) ? ' READONLY ' : '',
  1657.     // End replacement - Yellow card admin MOD 
  1658.     'S_TYPE_TOGGLE' => $topic_type_toggle, 
  1659.     'S_TOPIC_ID' => $topic_id, 
  1660.     'S_POST_ACTION' => append_sid("posting.$phpEx"),
  1661.     'S_HIDDEN_FORM_FIELDS' => $hidden_form_fields)
  1662. );
  1663. //-- mod : post icon -------------------------------------------------------------------------------
  1664. //-- add
  1665. // get the number of icon per row from config
  1666. $icon_per_row = isset($board_config['icon_per_row']) ? intval($board_config['icon_per_row']) : 10;
  1667. if ($icon_per_row <= 1)
  1668. {
  1669.     $icon_per_row = 10;
  1670. }
  1671.  
  1672. // get the list of icon available to the user
  1673. $icones_sort = array();
  1674. for ($i = 0; $i < count($icones); $i++)
  1675. {
  1676.     switch ($icones[$i]['auth'])
  1677.     {
  1678.         case AUTH_ADMIN:
  1679.             if ( $userdata['user_level'] == ADMIN )
  1680.             {
  1681.                 $icones_sort[] = $i;
  1682.             }
  1683.             break;
  1684.         case AUTH_MOD:
  1685.             if ( $is_auth['auth_mod'] )
  1686.             {
  1687.                 $icones_sort[] = $i;
  1688.             }
  1689.             break;
  1690.         case AUTH_REG:
  1691.             if ( $userdata['session_logged_in'] )
  1692.             {
  1693.                 $icones_sort[] = $i;
  1694.             }
  1695.             break;
  1696.         default:
  1697.             $icones_sort[] = $i;
  1698.             break;
  1699.     }
  1700. }
  1701.  
  1702. // check if the icon exists
  1703. $found = false;
  1704. for ($i=0; ( ($i < count($icones_sort)) && !$found );$i++)
  1705. {
  1706.     $found = ($icones[ $icones_sort[$i] ]['ind'] == $post_icon);
  1707. }
  1708. if (!$found) $post_icon = 0;
  1709.  
  1710. // send to template
  1711. $template->assign_block_vars('switch_icon_checkbox', array());
  1712. $template->assign_vars(array(
  1713.     'L_ICON_TITLE' => $lang['post_icon_title'],
  1714.     )
  1715. );
  1716.  
  1717. // display the icons
  1718. $nb_row = intval( (count($icones_sort)-1) / $icon_per_row )+1;
  1719. $offset = 0;
  1720. for ($i=0; $i < $nb_row; $i++)
  1721. {
  1722.     $template->assign_block_vars('switch_icon_checkbox.row',array());
  1723.     for ($j=0; ( ($j < $icon_per_row) && ($offset < count($icones_sort)) ); $j++)
  1724.     {
  1725.         $icon_id  = $icones_sort[$offset];
  1726.  
  1727.         // send to cell or cell_none
  1728.         $template->assign_block_vars('switch_icon_checkbox.row.cell', array(
  1729.             'ICON_ID'        => $icones[$icon_id]['ind'],
  1730.             'ICON_CHECKED'    => ($post_icon == $icones[$icon_id]['ind']) ? ' checked="checked"' : '',
  1731.             'ICON_IMG'        => get_icon_title($icones[$icon_id]['ind'], 2),
  1732.             )
  1733.         );
  1734.         $offset++;
  1735.     }
  1736. }
  1737. //-- fin mod : post icon ---------------------------------------------------------------------------
  1738.  
  1739. //
  1740. // Poll entry switch/output
  1741. //
  1742. if( ( $mode == 'newtopic' || ( $mode == 'editpost' && $post_data['edit_poll']) ) && $is_auth['auth_pollcreate'] )
  1743. {
  1744.     $template->assign_vars(array(
  1745.         'L_ADD_A_POLL' => $lang['Add_poll'],  
  1746.         'L_ADD_POLL_EXPLAIN' => $lang['Add_poll_explain'],   
  1747.         'L_POLL_QUESTION' => $lang['Poll_question'],   
  1748.         'L_POLL_OPTION' => $lang['Poll_option'],  
  1749.         'L_ADD_OPTION' => $lang['Add_option'],
  1750.         'L_UPDATE_OPTION' => $lang['Update'],
  1751.         'L_DELETE_OPTION' => $lang['Delete'], 
  1752.         'L_POLL_LENGTH' => $lang['Poll_for'],  
  1753.         'L_DAYS' => $lang['Days'], 
  1754.         'L_POLL_LENGTH_EXPLAIN' => $lang['Poll_for_explain'], 
  1755.         'L_POLL_DELETE' => $lang['Delete_poll'],
  1756.         
  1757.         'POLL_TITLE' => $poll_title,
  1758.         'POLL_LENGTH' => $poll_length)
  1759.     );
  1760.  
  1761.     if( $mode == 'editpost' && $post_data['edit_poll'] && $post_data['has_poll'])
  1762.     {
  1763.         $template->assign_block_vars('switch_poll_delete_toggle', array());
  1764.     }
  1765.  
  1766.     if( !empty($poll_options) )
  1767.     {
  1768.         while( list($option_id, $option_text) = each($poll_options) )
  1769.         {
  1770.             $template->assign_block_vars('poll_option_rows', array(
  1771.                 'POLL_OPTION' => str_replace('"', '"', $option_text), 
  1772.  
  1773.                 'S_POLL_OPTION_NUM' => $option_id)
  1774.             );
  1775.         }
  1776.     }
  1777.  
  1778.     $template->assign_var_from_handle('POLLBOX', 'pollbody');
  1779. }
  1780.  
  1781. //
  1782. // Topic review
  1783. //
  1784. if( $mode == 'reply' && $is_auth['auth_read'] )
  1785. {
  1786.     require($phpbb_root_path . 'includes/topic_review.'.$phpEx);
  1787.     topic_review($topic_id, true);
  1788.  
  1789.     $template->assign_block_vars('switch_inline_mode', array());
  1790.     $template->assign_var_from_handle('TOPIC_REVIEW_BOX', 'reviewbody');
  1791. }
  1792.  
  1793. $template->pparse('body');
  1794.  
  1795. include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  1796.  
  1797. ?>
  1798.