2001-02-17 08:37:32 +00:00
< ? php
2001-04-17 07:14:50 +00:00
/***************************************************************************
2001-08-26 13:53:41 +00:00
* posting . php
2001-04-17 07:14:50 +00:00
* -------------------
* begin : Saturday , Feb 13 , 2001
* copyright : ( C ) 2001 The phpBB Group
* email : support @ phpbb . com
*
* $Id $
*
***************************************************************************/
2001-08-30 22:20:23 +00:00
/***************************************************************************
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
***************************************************************************/
2002-03-18 13:35:43 +00:00
define ( 'IN_PHPBB' , true );
2002-03-31 00:06:34 +00:00
$phpbb_root_path = './' ;
2001-07-13 16:14:37 +00:00
include ( $phpbb_root_path . 'extension.inc' );
include ( $phpbb_root_path . 'common.' . $phpEx );
2002-07-14 14:45:26 +00:00
include ( $phpbb_root_path . 'includes/functions_posting.' . $phpEx );
2001-04-17 07:14:50 +00:00
2002-10-28 00:08:18 +00:00
// Start session management
$user -> start ();
$user -> setup ();
$auth -> acl ( $user -> data );
// End session management
2002-10-20 19:19:07 +00:00
// Grab all data
2002-10-08 20:11:59 +00:00
extract ( $_GET );
extract ( $_POST );
2001-11-09 13:15:36 +00:00
2002-10-20 19:19:07 +00:00
// Was cancel pressed? If so then redirect to the appropriate page
2002-10-04 13:09:10 +00:00
if ( ! empty ( $cancel ) )
2001-09-06 00:29:07 +00:00
{
2002-10-30 18:59:09 +00:00
$redirect = ( intval ( $p )) ? " viewtopic. $phpEx $SID &p= " . intval ( $p ) . " # " . intval ( $p ) : ( ( intval ( $t )) ? " viewtopic. $phpEx $SID &t= " . intval ( $t ) : ( ( intval ( $f )) ? " viewforum. $phpEx $SID &f= " . intval ( $f ) : " index. $phpEx $SID " ) );
2002-10-20 19:19:07 +00:00
redirect ( $redirect );
2001-09-06 00:29:07 +00:00
}
2002-10-28 00:08:18 +00:00
// ---------
// POST INFO
//
2001-09-06 00:29:07 +00:00
2002-10-28 00:08:18 +00:00
// What is all this following SQL for? Well, we need to know
// some basic information in all cases before we do anything.
switch ( $mode )
2002-02-18 12:34:38 +00:00
{
2002-10-28 00:08:18 +00:00
case 'post' :
2002-10-30 18:59:09 +00:00
if ( empty ( $f ))
{
trigger_error ( $user -> lang [ 'No_forum_id' ]);
}
$sql = ' SELECT forum_id , post_count_inc
FROM ' . FORUMS_TABLE . '
WHERE forum_id = ' . intval ( $f );
2002-10-04 13:09:10 +00:00
break ;
2002-10-30 00:57:27 +00:00
2002-10-04 13:09:10 +00:00
case 'reply' :
2002-10-30 18:59:09 +00:00
if ( empty ( $t ))
2002-03-21 01:03:47 +00:00
{
2002-10-28 00:08:18 +00:00
trigger_error ( $user -> lang [ 'No_topic_id' ]);
2002-03-21 01:03:47 +00:00
}
2002-10-30 18:59:09 +00:00
$sql = ' SELECT t .* , f . post_count_inc
FROM ' . TOPICS_TABLE . ' t , ' . FORUMS_TABLE . ' f
WHERE t . topic_id = ' . intval($t) . '
AND f . forum_id = t . forum_id ' ;
2002-10-04 13:09:10 +00:00
break ;
2002-10-30 00:57:27 +00:00
2002-10-04 13:09:10 +00:00
case 'quote' :
2002-10-28 00:08:18 +00:00
case 'edit' :
2002-10-04 13:09:10 +00:00
case 'delete' :
2002-10-30 18:59:09 +00:00
if ( empty ( $p ))
2002-10-04 13:09:10 +00:00
{
2002-10-28 00:08:18 +00:00
trigger_error ( $user -> lang [ 'No_post_id' ]);
2002-10-04 13:09:10 +00:00
}
2001-09-06 00:29:07 +00:00
2002-10-30 18:59:09 +00:00
$sql = ' SELECT t .* , p .* , pt .* , f . post_count_inc
FROM ' . POSTS_TABLE . ' p , ' . POSTS_TEXT_TABLE . ' pt , ' . TOPICS_TABLE . ' t , ' . FORUMS_TABLE . ' f
WHERE p . post_id = ' . intval($p) . '
2002-10-04 13:09:10 +00:00
AND t . topic_id = p . topic_id
2002-10-30 18:59:09 +00:00
AND pt . post_id = p . post_id
AND f . forum_id = t . forum_id ' ;
break ;
case 'topicreview' :
require ( $phpbb_root_path . 'includes/topic_review.' . $phpEx );
topic_review ( intval ( $topic_id ), false );
break ;
case 'smilies' :
generate_smilies ( 'window' );
2002-10-04 13:09:10 +00:00
break ;
2001-09-06 00:29:07 +00:00
2002-10-04 13:09:10 +00:00
default :
2002-10-28 00:08:18 +00:00
trigger_error ( $user -> lang [ 'No_valid_mode' ]);
2002-02-18 12:34:38 +00:00
}
2001-07-06 01:09:42 +00:00
2002-10-30 00:57:27 +00:00
if ( $sql != '' )
2002-10-28 00:08:18 +00:00
{
$result = $db -> sql_query ( $sql );
extract ( $db -> sql_fetchrow ( $result ));
$db -> sql_freeresult ( $result );
}
2002-10-30 00:57:27 +00:00
// Notify user checkbox
if ( $mode != 'post' && $user -> data [ 'user_id' ] != ANONYMOUS )
{
$sql = " SELECT topic_id
FROM " . TOPICS_WATCH_TABLE . "
WHERE topic_id = $topic_id
AND user_id = " . $user->data ['user_id'];
$result = $db -> sql_query ( $sql );
$notify_set = ( $db -> sql_fetchrow ( $result )) ? true : false ;
$db -> sql_freeresult ( $result );
}
if ( $mode == 'edit' && ! empty ( $poll_start ))
{
$sql = " SELECT *
FROM phpbb_poll_results
WHERE topic_id = " . intval( $topic_id );
$result = $db -> sql_query ( $sql );
$poll_options = array ();
while ( $row = $db -> sql_fetchrow ( $result ))
{
$poll_options [] = $row [ 'poll_option_text' ];
}
$db -> sql_freeresult ( $result );
}
2002-10-28 00:08:18 +00:00
//
// POST INFO
// ---------
2002-10-30 00:57:27 +00:00
// Basic mode related permission check
2002-10-28 00:08:18 +00:00
if ( ! $auth -> acl_get ( 'f_' . $mode , $forum_id ))
2002-10-20 19:19:07 +00:00
{
2002-10-28 00:08:18 +00:00
trigger_error ( $user -> lang [ 'User_cannot_' . $mode ]);
}
2001-05-27 03:11:27 +00:00
2002-10-30 00:57:27 +00:00
// Can we edit this post?
if (( $mode == 'edit' || $mode == 'delete' ) && ! empty ( $config [ 'edit_time' ]) && $post_time < time () - $config [ 'edit_time' ] && ! $auth -> acl_get ( 'm_' , $forum_id ) && ! $auth -> acl_get ( 'a_' ))
2002-10-28 00:08:18 +00:00
{
trigger_error ( $user -> lang [ 'Cannot_edit_time' ]);
2002-10-04 13:09:10 +00:00
}
2001-05-26 00:25:50 +00:00
2001-06-11 00:58:08 +00:00
2001-08-10 23:13:41 +00:00
2002-10-30 00:57:27 +00:00
2002-10-28 00:08:18 +00:00
// --------------
// PROCESS SUBMIT
//
2002-10-30 00:57:27 +00:00
if ( isset ( $post ))
2002-10-04 13:09:10 +00:00
{
2002-10-28 00:08:18 +00:00
$err_msg = '' ;
2002-10-30 00:57:27 +00:00
$parse_msg = new parse_message ();
$search = new fulltext_search ();
2002-10-28 00:08:18 +00:00
$current_time = time ();
$message_md5 = md5 ( $message );
2001-08-15 22:54:48 +00:00
2002-10-30 00:57:27 +00:00
$enable_html = ( ! intval ( $config [ 'allow_html' ])) ? 0 : (( ! empty ( $disable_html )) ? 0 : 1 );
$enable_bbcode = ( ! intval ( $config [ 'allow_bbcode' ])) ? 0 : (( ! empty ( $disable_bbcode )) ? 0 : 1 );
$enable_smilies = ( ! intval ( $config [ 'allow_smilies' ])) ? 0 : (( ! empty ( $disable_smilies )) ? 0 : 1 );
2002-10-31 00:51:00 +00:00
$enable_urls = ( ! empty ( $disable_magic_url )) ? 0 : 1 ;
2002-10-30 00:57:27 +00:00
$enable_sig = ( empty ( $attach_sig ) ) ? 1 : 0 ;
// Check checksum ... don't re-parse message if the same
2002-10-28 00:08:18 +00:00
if ( $mode != 'edit' || $message_md5 != $post_checksum )
2002-10-04 13:09:10 +00:00
{
2002-10-28 00:08:18 +00:00
// Parse message
2002-10-30 00:57:27 +00:00
$bbcode_uid = ( ! empty ( $bbcode_uid )) ? $bbcode_uid : '' ;
2001-08-15 22:54:48 +00:00
2002-10-30 00:57:27 +00:00
if (( $result = $parse_msg -> parse ( $message , $enable_html , $enable_bbcode , $bbcode_uid , $enable_urls , $enable_smilies )) != '' )
2002-10-28 00:08:18 +00:00
{
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $result ;
}
}
if ( $mode != 'edit' )
{
// Flood check
$where_sql = ( $user -> data [ 'user_id' ] == ANONYMOUS ) ? " poster_ip = ' $user->ip ' " : 'poster_id = ' . $user -> data [ 'user_id' ];
$sql = " SELECT MAX(post_time) AS last_post_time
FROM " . POSTS_TABLE . "
WHERE $where_sql " ;
$result = $db -> sql_query ( $sql );
if ( $row = $db -> sql_fetchrow ( $result ))
{
2002-10-30 00:57:27 +00:00
if ( intval ( $row [ 'last_post_time' ]) && ( $current_time - intval ( $row [ 'last_post_time' ])) < intval ( $config [ 'flood_interval' ]))
2002-10-28 00:08:18 +00:00
{
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $user -> lang [ 'Flood_Error' ];
}
}
}
// Validate username
if (( $username != '' && $user -> data [ 'user_id' ] == ANONYMOUS ) || ( $mode == 'edit' && $post_username != '' ))
{
$username = strip_tags ( htmlspecialchars ( $username ));
2002-10-30 00:57:27 +00:00
if (( $result = validate_username ( $username )) != false )
2002-10-28 00:08:18 +00:00
{
2002-10-30 00:57:27 +00:00
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $result ;
2002-10-28 00:08:18 +00:00
}
2002-02-18 12:34:38 +00:00
2002-10-28 00:08:18 +00:00
}
2001-08-15 22:54:48 +00:00
2002-10-28 00:08:18 +00:00
// Parse subject
2002-10-30 00:57:27 +00:00
if (( $subject = trim ( htmlspecialchars ( strip_tags ( $subject )))) == '' && ( $mode == 'post' || ( $mode == 'edit' && $topic_first_post_id == $post_id )))
2002-10-28 00:08:18 +00:00
{
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $user -> lang [ 'Empty_subject' ];
2002-02-18 12:34:38 +00:00
}
2001-08-10 22:00:12 +00:00
2002-10-30 00:57:27 +00:00
// Process poll options
if ( ! empty ( $poll_option_text ) && (( $auth -> acl_get ( 'f_poll' , $forum_id ) && empty ( $poll_last_vote )) || $auth -> acl_get ( 'a_' )))
{
2002-10-30 18:59:09 +00:00
$poll_options_size = sizeof ( $poll_options );
2002-10-30 00:57:27 +00:00
$result = $parse_msg -> parse ( $poll_option_text , $enable_html , $enable_bbcode , $bbcode_uid , $enable_urls , $enable_smilies );
$poll_options = explode ( " \n " , $poll_option_text );
if ( sizeof ( $poll_options ) == 1 )
{
2002-10-30 18:59:09 +00:00
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $user -> lang [ 'Too_few_poll_options' ];
2002-10-30 00:57:27 +00:00
}
else if ( sizeof ( $poll_options ) > intval ( $config [ 'max_poll_options' ]))
{
2002-10-30 18:59:09 +00:00
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $user -> lang [ 'Too_many_poll_options' ];
}
else if ( sizeof ( $poll_options ) < $poll_options_size )
{
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $user -> lang [ 'No_delete_poll_options' ];
2002-10-30 00:57:27 +00:00
}
$poll_subject = ( ! empty ( $poll_subject )) ? trim ( htmlspecialchars ( strip_tags ( $poll_subject ))) : '' ;
$poll_length = ( ! empty ( $poll_length )) ? intval ( $poll_length ) : 0 ;
}
// Check topic type
if ( $topic_type != POST_NORMAL )
{
$auth_option = '' ;
switch ( $topic_type )
{
case POST_NEWS ;
$auth_option = 'news' ;
break ;
case POST_ANNOUNCE ;
$auth_option = 'announce' ;
break ;
case POST_STICKY ;
$auth_option = 'sticky' ;
break ;
}
if ( ! $auth -> acl_get ( 'f_' . $auth_option , $forum_id ))
{
$err_msg .= (( ! empty ( $err_msg )) ? '<br />' : '' ) . $user -> lang [ 'Cannot_post_' . $auth_option ];
}
}
2002-10-28 20:39:06 +00:00
// Store message, sync counters
2002-10-28 00:08:18 +00:00
if ( $err_msg == '' )
{
$db -> sql_transaction ();
2001-09-06 00:29:07 +00:00
2002-10-30 18:59:09 +00:00
// topic info
2002-10-28 00:08:18 +00:00
if ( $mode == 'post' || ( $mode == 'edit' && $topic_first_post_id == $post_id ))
{
$topic_sql = array (
2002-10-30 00:57:27 +00:00
'forum_id' => intval ( $forum_id ),
2002-10-30 18:59:09 +00:00
'topic_title' => $subject ,
2002-10-28 00:08:18 +00:00
'topic_poster' => intval ( $user -> data [ 'user_id' ]),
'topic_time' => $current_time ,
'topic_type' => intval ( $type ),
'topic_icon' => intval ( $icon ),
'topic_approved' => ( $forum_moderated ) ? 0 : 1 ,
);
2002-10-30 00:57:27 +00:00
if ( ! empty ( $poll_options ))
{
$topic_sql = array_merge ( $topic_sql , array (
'poll_title' => $poll_title ,
'poll_start' => ( ! empty ( $poll_start )) ? $poll_start : $current_time ,
'poll_length' => $poll_length * 3600
));
}
2002-10-30 18:59:09 +00:00
$sql = ( $mode == 'post' ) ? 'INSERT INTO ' . TOPICS_TABLE . ' ' . $db -> sql_build_array ( 'INSERT' , $topic_sql ) : 'UPDATE ' . TOPICS_TABLE . ' SET ' . $db -> sql_build_array ( 'UPDATE' , $topic_sql ) . ' WHERE topic_id = ' . intval ( $topic_id );
$db -> sql_query ( $sql );
2001-08-09 22:21:55 +00:00
2002-10-28 00:08:18 +00:00
$topic_id = ( $mode == 'post' ) ? $db -> sql_nextid () : $topic_id ;
}
2002-10-30 18:59:09 +00:00
// post
2002-10-28 00:08:18 +00:00
$post_sql = array (
'topic_id' => intval ( $topic_id ),
'forum_id' => intval ( $forum_id ),
'poster_id' => ( $mode == 'edit' ) ? intval ( $poster_id ) : intval ( $user -> data [ 'user_id' ]),
2002-10-30 18:59:09 +00:00
'post_username' => ( $username != '' ) ? $username : '' ,
2002-10-30 00:57:27 +00:00
'poster_ip' => $user -> ip ,
2002-10-28 00:08:18 +00:00
'post_time' => $current_time ,
'post_approved' => ( $forum_moderated ) ? 0 : 1 ,
2002-10-30 18:59:09 +00:00
'post_edit_time' => ( $mode == 'edit' && $poster_id == $user -> data [ 'user_id' ]) ? $current_time : 0 ,
2002-10-30 00:57:27 +00:00
'enable_sig' => $enable_html ,
2002-10-28 00:08:18 +00:00
'enable_bbcode' => $enable_bbcode ,
'enable_html' => $enable_html ,
'enable_smilies' => $enable_smilies ,
2002-10-30 00:57:27 +00:00
'enable_magic_url' => $enable_urls ,
2002-10-28 00:08:18 +00:00
);
2002-10-30 18:59:09 +00:00
$sql = ( $mode == 'edit' && $poster_id == $user -> data [ 'user_id' ]) ? 'UPDATE ' . POSTS_TABLE . ' SET ' . $db -> sql_build_array ( 'UPDATE' , $post_sql ) . ' , post_edit_count = post_edit_count + 1 WHERE post_id = ' . intval ( $post_id ) : 'INSERT INTO ' . POSTS_TABLE . ' ' . $db -> sql_build_array ( 'INSERT' , $post_sql );
$db -> sql_query ( $sql );
2002-10-28 00:08:18 +00:00
$post_id = ( $mode == 'edit' ) ? $post_id : $db -> sql_nextid ();
2002-10-28 20:39:06 +00:00
// post_text ... may merge into posts table
2002-10-28 00:08:18 +00:00
$post_text_sql = array (
2002-10-30 18:59:09 +00:00
'post_subject' => htmlspecialchars ( $subject ),
2002-10-28 00:08:18 +00:00
'bbcode_uid' => $bbcode_uid ,
'post_id' => intval ( $post_id ),
);
if ( $mode != 'edit' || $message_md5 != $post_checksum )
{
$post_text_sql = array_merge ( $post_text_sql , array (
'post_checksum' => $message_md5 ,
2002-10-30 18:59:09 +00:00
'post_text' => $message ,
2002-10-28 00:08:18 +00:00
));
}
2002-10-30 18:59:09 +00:00
$sql = ( $mode == 'edit' ) ? 'UPDATE ' . POSTS_TEXT_TABLE . ' SET ' . $db -> sql_build_array ( 'UPDATE' , $post_text_sql ) . ' WHERE post_id = ' . intval ( $post_id ) : 'INSERT INTO ' . POSTS_TEXT_TABLE . ' ' . $db -> sql_build_array ( 'INSERT' , $post_text_sql );
$db -> sql_query ( $sql );
2002-03-03 22:53:11 +00:00
2002-10-30 18:59:09 +00:00
// poll options
2002-10-30 00:57:27 +00:00
if ( ! empty ( $poll_options ))
{
$cur_poll_options = array ();
if ( ! empty ( $poll_start ) && $mode == 'edit' )
{
$sql = " SELECT * FROM phpbb_poll_results
WHERE topic_id = $topic_id
ORDER BY poll_option_id " ;
$result = $db -> sql_query ( $sql );
while ( $cur_poll_options [] = $db -> sql_fetchrow ( $result ));
$db -> sql_freeresult ( $result );
}
for ( $i = 0 ; $i < sizeof ( $poll_options ); $i ++ )
{
if ( trim ( $poll_options [ $i ]) != '' )
{
if ( empty ( $cur_poll_options [ $i ]))
{
$sql = " INSERT INTO phpbb_poll_results (topic_id, poll_option_text)
VALUES ( " . intval( $topic_id ) . " , '" . sql_quote($poll_options[$i]) . "' ) " ;
$db -> sql_query ( $sql );
}
else if ( $poll_options [ $i ] != $cur_poll_options [ $i ])
{
$sql = " UPDATE phpbb_poll_results
SET poll_option_text = '" . sql_quote($poll_options[$i]) . "'
WHERE poll_option_id = " . $cur_poll_options[$i] ['poll_option_id'];
$db -> sql_query ( $sql );
}
}
}
2002-10-28 00:08:18 +00:00
}
2001-08-10 22:00:12 +00:00
2002-10-30 18:59:09 +00:00
// Fulltext parse
if ( $mode != 'edit' || $message_md5 != $post_checksum )
{
$result = $search -> add ( $mode , $post_id , $message , $subject );
}
2002-10-28 00:08:18 +00:00
// Sync forums, topics and users ...
if ( $mode != 'edit' )
{
2002-10-30 18:59:09 +00:00
// Update forums: last post info, topics, posts
2002-10-28 00:08:18 +00:00
$forum_topics_sql = ( $mode == 'post' ) ? ', forum_topics = forum_topics + 1' : '' ;
$forum_sql = array (
2002-10-30 00:57:27 +00:00
'forum_last_post_id' => intval ( $post_id ),
'forum_last_post_time' => $current_time ,
'forum_last_poster_id' => intval ( $user -> data [ 'user_id' ]),
'forum_last_poster_name' => ( $username != '' ) ? $username : '' ,
2002-10-28 00:08:18 +00:00
);
2002-10-30 18:59:09 +00:00
$sql = 'UPDATE ' . FORUMS_TABLE . ' SET ' . $db -> sql_build_array ( 'UPDATE' , $forum_sql ) . ', forum_posts = forum_posts + 1' . $forum_topics_sql . ' WHERE forum_id = ' . intval ( $forum_id );
$db -> sql_query ( $sql );
2002-03-18 13:35:43 +00:00
2002-10-30 18:59:09 +00:00
// Update topic: first/last post info, replies
2002-10-28 00:08:18 +00:00
$topic_sql = array (
2002-10-30 00:57:27 +00:00
'topic_last_post_id' => intval ( $post_id ),
'topic_last_post_time' => $current_time ,
'topic_last_poster_id' => intval ( $user -> data [ 'user_id' ]),
'topic_last_poster_name' => ( $username != '' ) ? $username : '' ,
2002-10-28 00:08:18 +00:00
);
if ( $mode == 'post' )
{
$topic_sql = array_merge ( $topic_sql , array (
2002-10-30 00:57:27 +00:00
'topic_first_post_id' => intval ( $post_id ),
'topic_time' => $current_time ,
'topic_poster' => intval ( $user -> data [ 'user_id' ]),
'topic_first_poster_name' => ( $username != '' ) ? $username : '' ,
2002-10-28 00:08:18 +00:00
));
}
2002-10-30 18:59:09 +00:00
$topic_replies_sql = ( $mode == 'reply' ) ? ', topic_replies = topic_replies + 1' : '' ;
2002-10-30 20:05:18 +00:00
$sql = 'UPDATE ' . TOPICS_TABLE . ' SET ' . $db -> sql_build_array ( 'UPDATE' , $topic_sql ) . $topic_replies_sql . ' WHERE topic_id = ' . intval ( $topic_id );
2002-10-30 18:59:09 +00:00
$db -> sql_query ( $sql );
2002-10-28 00:08:18 +00:00
2002-10-30 18:59:09 +00:00
// Update user post count ... if appropriate
if ( ! empty ( $post_count_inc ) && $user -> data [ 'user_id' ] != ANONYMOUS )
2002-10-28 00:08:18 +00:00
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_posts = user_posts + 1
WHERE user_id = ' . $user->data[' user_id ' ];
$db -> sql_query ( $sql );
}
}
2002-10-30 00:57:27 +00:00
// Topic notification
if ( ! empty ( $notify ) && ( $mode == 'post' || empty ( $notify_set )))
{
$sql = " INSERT INTO " . TOPICS_WATCH_TABLE . " (user_id, topic_id)
VALUES ( " . $user->data ['user_id'] . " , $topic_id ) " ;
$db -> sql_query ( $sql );
}
else if ( empty ( $notify ) && ! empty ( $notify_set ))
{
$sql = " DELETE FROM " . TOPICS_WATCH_TABLE . "
WHERE user_id = " . $user->data ['user_id'] . "
AND topic_id = $topic_id " ;
$db -> sql_query ( $sql );
}
2002-10-28 00:08:18 +00:00
$db -> sql_transaction ( 'commit' );
2002-10-28 20:39:06 +00:00
$template -> assign_vars ( array (
'META' => '<meta http-equiv="refresh" content="5; url=' . " viewtopic. $phpEx $SID &f= $forum_id &p= $post_id # $post_id " . '">' )
);
2002-10-28 00:08:18 +00:00
trigger_error ( $user -> lang [ 'Stored' ]);
}
// Houston, we have an error ...
2002-10-30 18:59:09 +00:00
$post_text = & stripslashes ( $message );
$post_subject = $topic_title = & stripslashes ( $subject );
2002-10-30 00:57:27 +00:00
$topic_icon = & $icon ;
$topic_type = & $type ;
$template -> assign_vars ( array (
'ERROR_MESSAGE' => $err_msg )
);
2002-10-28 00:08:18 +00:00
}
//
// PROCESS SUBMIT
// --------------
2002-10-30 00:57:27 +00:00
2002-10-28 00:08:18 +00:00
// -----------------
// TEMPORARY SECTION!
//
2001-06-11 00:58:08 +00:00
2002-10-04 13:09:10 +00:00
// Remove encoded bbcode, urls, etc.
2002-10-31 00:51:00 +00:00
$server_protocol = ( $config [ 'cookie_secure' ]) ? 'https://' : 'http://' ;
$server_port = ( $config [ 'server_port' ] <> 80 ) ? ':' . trim ( $config [ 'server_port' ]) . '/' : '/' ;
2002-10-04 13:09:10 +00:00
$match = array (
'#<!\-\- b \-\-><b>(.*?)</b><!\-\- b \-\->#s' ,
2002-10-20 19:19:07 +00:00
'#<!\-\- u \-\-><u>(.*?)</u><!\-\- u \-\->#s' ,
'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#' ,
2002-10-28 00:08:18 +00:00
'#<!\-\- m \-\-><a href="(.*?)" target="_blank">.*?</a><!\-\- m \-\->#' ,
2002-10-31 00:51:00 +00:00
'#<!\-\- w \-\-><a href="http:\/\/(.*?)" target="_blank">.*?</a><!\-\- w \-\->#' ,
'#<!\-\- l \-\-><a href="(.*?)" target="_blank">.*?</a><!\-\- l \-\->#' ,
2002-10-04 13:09:10 +00:00
);
2001-06-11 00:58:08 +00:00
2002-10-04 13:09:10 +00:00
$replace = array (
'[b]\1[/b]' ,
'[u]\1[/u]' ,
'\1' ,
'\1' ,
2002-10-31 00:51:00 +00:00
'\1' ,
$server_protocol . trim ( $config [ 'server_name' ]) . $server_port . preg_replace ( '/^\/?(.*?)(\/)?$/' , '\1' , trim ( $config [ 'script_path' ])) . '/\1' ,
2002-10-04 13:09:10 +00:00
);
2001-08-10 22:00:12 +00:00
2002-10-28 00:08:18 +00:00
$post_text = preg_replace ( $match , $replace , $post_text );
//
// TEMPORARY SECTION!
// -----------------
2002-02-18 12:34:38 +00:00
2001-12-16 18:13:34 +00:00
2001-08-10 22:00:12 +00:00
2002-10-30 00:57:27 +00:00
2002-10-04 13:09:10 +00:00
// -----------------------------
// MAIN POSTING PAGE BEGINS HERE
2001-08-10 22:00:12 +00:00
//
2001-06-13 17:36:58 +00:00
2002-10-04 13:09:10 +00:00
// Generate smilies and topic icon listings
generate_smilies ( 'inline' );
2001-08-10 22:00:12 +00:00
2002-10-04 13:09:10 +00:00
// Topic icons
$sql = " SELECT *
FROM " . ICONS_TABLE . "
WHERE icons_id > 1 " ;
$result = $db -> sql_query ( $sql );
$s_topic_icons = false ;
2002-10-28 00:08:18 +00:00
if ( $row = $db -> sql_fetchrow ( $result ))
2001-09-06 00:29:07 +00:00
{
2002-10-04 13:09:10 +00:00
$s_topic_icons = true ;
do
2001-09-18 01:24:47 +00:00
{
2002-10-04 13:09:10 +00:00
$template -> assign_block_vars ( 'topic_icon' , array (
2002-10-28 00:08:18 +00:00
'ICON_ID' => $row [ 'icons_id' ],
2002-10-30 00:57:27 +00:00
'ICON_IMG' => $config [ 'icons_path' ] . '/' . $row [ 'icons_url' ],
2002-10-28 00:08:18 +00:00
'ICON_WIDTH' => $row [ 'icons_width' ],
'ICON_HEIGHT' => $row [ 'icons_height' ],
'S_ICON_CHECKED' => ( $row [ 'icons_id' ] == $topic_icon ) ? ' checked="checked"' : '' )
2002-10-04 13:09:10 +00:00
);
2001-09-18 01:24:47 +00:00
}
2002-10-28 00:08:18 +00:00
while ( $row = $db -> sql_fetchrow ( $result ));
2001-09-06 00:29:07 +00:00
}
2002-10-28 00:08:18 +00:00
// Topic type selection ... only for first post in topic?
2002-02-18 12:34:38 +00:00
$topic_type_toggle = '' ;
2002-10-28 00:08:18 +00:00
if ( $mode == 'post' || $mode == 'edit' )
2001-06-13 17:36:58 +00:00
{
2002-10-08 20:11:59 +00:00
if ( $auth -> acl_get ( 'f_sticky' , $forum_id ) )
2001-06-13 17:36:58 +00:00
{
2002-10-28 00:08:18 +00:00
$topic_type_toggle .= '<input type="radio" name="type" value="' . POST_STICKY . '"' ;
if ( $topic_type == POST_STICKY )
2001-05-25 00:56:07 +00:00
{
2002-02-18 12:34:38 +00:00
$topic_type_toggle .= ' checked="checked"' ;
2001-05-25 00:56:07 +00:00
}
2002-10-20 19:19:07 +00:00
$topic_type_toggle .= ' /> ' . $user -> lang [ 'Post_Sticky' ] . ' ' ;
2001-06-13 17:36:58 +00:00
}
2001-05-27 03:11:27 +00:00
2002-10-08 20:11:59 +00:00
if ( $auth -> acl_get ( 'f_announce' , $forum_id ) )
2001-06-13 17:36:58 +00:00
{
2002-10-28 00:08:18 +00:00
$topic_type_toggle .= '<input type="radio" name="type" value="' . POST_ANNOUNCE . '"' ;
if ( $topic_type == POST_ANNOUNCE )
2001-06-07 07:56:45 +00:00
{
2002-02-18 12:34:38 +00:00
$topic_type_toggle .= ' checked="checked"' ;
2001-06-07 07:56:45 +00:00
}
2002-10-20 19:19:07 +00:00
$topic_type_toggle .= ' /> ' . $user -> lang [ 'Post_Announcement' ] . ' ' ;
2001-07-04 00:34:33 +00:00
}
2002-03-18 13:35:43 +00:00
if ( $topic_type_toggle != '' )
2001-07-04 00:34:33 +00:00
{
2002-10-28 00:08:18 +00:00
$topic_type_toggle = $user -> lang [ 'Post_topic_as' ] . ': <input type="radio" name="type" value="' . POST_NORMAL . '"' . ( ( $topic_type == POST_NORMAL ) ? ' checked="checked"' : '' ) . ' /> ' . $user -> lang [ 'Post_Normal' ] . ' ' . $topic_type_toggle ;
2001-06-13 17:36:58 +00:00
}
}
2001-04-17 07:14:50 +00:00
2002-10-04 13:09:10 +00:00
// HTML, BBCode, Smilies, Images and Flash status
2002-10-30 00:57:27 +00:00
$html_status = ( $config [ 'allow_html' ] && $auth -> acl_get ( 'f_html' , $forum_id )) ? true : false ;
$bbcode_status = ( $config [ 'allow_bbcode' ] && $auth -> acl_get ( 'f_bbcode' , $forum_id )) ? true : false ;
$smilies_status = ( $config [ 'allow_smilies' ] && $auth -> acl_get ( 'f_smilies' , $forum_id )) ? true : false ;
$img_status = ( $config [ 'allow_img' ] && $auth -> acl_get ( 'f_img' , $forum_id )) ? true : false ;
$flash_status = ( $config [ 'allow_flash' ] && $auth -> acl_get ( 'f_flash' , $forum_id )) ? true : false ;
$html_checked = ( isset ( $enable_html )) ? ! $enable_html : (( $config [ 'allow_html' ]) ? ! $user -> data [ 'user_allowhtml' ] : 1 );
$bbcode_checked = ( isset ( $enable_bbcode )) ? ! $enable_bbcode : (( $config [ 'allow_bbcode' ]) ? ! $user -> data [ 'user_allowbbcode' ] : 1 );
$smilies_checked = ( isset ( $enable_smilies )) ? ! $enable_smilies : (( $config [ 'allow_smilies' ]) ? ! $user -> data [ 'user_allowsmile' ] : 1 );
$urls_checked = ( isset ( $enable_urls )) ? ! $enable_urls : 0 ;
$sig_checked = ( isset ( $attach_sig )) ? $attach_sig : (( $config [ 'allow_sigs' ]) ? $user -> data [ 'user_atachsig' ] : 0 );
$notify_checked = ( isset ( $notify_set )) ? $notify_set : (( $user -> data [ 'user_id' ] != ANONYMOUS ) ? $user -> data [ 'user_notify' ] : 0 );
2002-10-04 13:09:10 +00:00
2002-10-30 18:59:09 +00:00
// Page title & action URL
$s_action = " posting. $phpEx $SID &mode= $mode &f= " . intval ( $forum_id );
switch ( $mode )
2001-08-10 22:00:12 +00:00
{
2002-10-28 00:08:18 +00:00
case 'post' :
2002-10-20 19:19:07 +00:00
$page_title = $user -> lang [ 'Post_a_new_topic' ];
2001-09-06 00:29:07 +00:00
break ;
2001-08-09 22:21:55 +00:00
2001-09-06 00:29:07 +00:00
case 'reply' :
2002-10-20 19:19:07 +00:00
$page_title = $user -> lang [ 'Post_a_reply' ];
2002-10-30 18:59:09 +00:00
$s_action .= '&t=' . intval ( $topic_id );
2001-09-06 00:29:07 +00:00
break ;
2002-10-28 00:08:18 +00:00
case 'edit' :
2002-10-20 19:19:07 +00:00
$page_title = $user -> lang [ 'Edit_Post' ];
2002-10-30 18:59:09 +00:00
$s_action .= '&p=' . intval ( $post_id );
2001-09-06 00:29:07 +00:00
break ;
2001-08-10 22:00:12 +00:00
}
2001-08-09 22:21:55 +00:00
2002-10-28 00:08:18 +00:00
// Nav links for forum
forum_nav_links ( $forum_id , $forum_name );
2002-10-04 13:09:10 +00:00
// Start assigning vars for main posting page ...
2002-02-18 12:34:38 +00:00
$template -> assign_vars ( array (
2002-10-28 00:08:18 +00:00
'FORUM_NAME' => $forum_name ,
'TOPIC_TITLE' => ( $mode != 'post' ) ? $topic_title : '' ,
'USERNAME' => $post_username ,
'SUBJECT' => ( ! empty ( $topic_title )) ? $topic_title : $post_subject ,
'MESSAGE' => $post_text ,
'HTML_STATUS' => ( $html_status ) ? $user -> lang [ 'HTML_is_ON' ] : $user -> lang [ 'HTML_is_OFF' ],
'BBCODE_STATUS' => ( $bbcode_status ) ? sprintf ( $user -> lang [ 'BBCode_is_ON' ], '<a href="' . " faq. $phpEx $SID &mode=bbcode " . '" target="_phpbbcode">' , '</a>' ) : sprintf ( $user -> lang [ 'BBCode_is_OFF' ], '<a href="' . " faq. $phpEx $SID &mode=bbcode " . '" target="_phpbbcode">' , '</a>' ),
'SMILIES_STATUS' => ( $smilies_status ) ? $user -> lang [ 'Smilies_are_ON' ] : $user -> lang [ 'Smilies_are_OFF' ],
'IMG_STATUS' => ( $img_status ) ? $user -> lang [ 'Images_are_ON' ] : $user -> lang [ 'Images_are_OFF' ],
'FLASH_STATUS' => ( $flash_status ) ? $user -> lang [ 'Flash_is_ON' ] : $user -> lang [ 'Flash_is_OFF' ],
'L_POST_A' => $page_title ,
'L_POST_SUBJECT' => $user -> lang [ 'Post_subject' ],
'L_VIEW_MODERATORS' => $user -> lang [ 'View_moderators' ],
'L_TOPIC_ICON' => $user -> lang [ 'Topic_icon' ],
'L_SUBJECT' => $user -> lang [ 'Subject' ],
'L_MESSAGE_BODY' => $user -> lang [ 'Message_body' ],
2002-10-30 18:59:09 +00:00
'L_MESSAGE_BODY_EXPLAIN' => ( intval ( $config [ 'max_post_chars' ])) ? sprintf ( $user -> lang [ 'Message_body_explain' ], intval ( $config [ 'max_post_chars' ])) : '' ,
2002-10-28 00:08:18 +00:00
'L_OPTIONS' => $user -> lang [ 'Options' ],
2002-10-30 18:59:09 +00:00
'L_EMOTICONS' => $user -> lang [ 'Emoticons' ],
2002-10-28 00:08:18 +00:00
'L_PREVIEW' => $user -> lang [ 'Preview' ],
'L_SPELLCHECK' => $user -> lang [ 'Spellcheck' ],
'L_SUBMIT' => $user -> lang [ 'Submit' ],
'L_SAVE' => $user -> lang [ 'Save' ],
'L_CANCEL' => $user -> lang [ 'Cancel' ],
'L_CONFIRM_DELETE' => $user -> lang [ 'Confirm_delete' ],
'L_DISABLE_HTML' => $user -> lang [ 'Disable_HTML_post' ],
'L_DISABLE_BBCODE' => $user -> lang [ 'Disable_BBCode_post' ],
'L_DISABLE_SMILIES' => $user -> lang [ 'Disable_Smilies_post' ],
'L_DISABLE_MAGIC_URL' => $user -> lang [ 'Disable_magic_url' ],
'L_ATTACH_SIGNATURE' => $user -> lang [ 'Attach_signature' ],
'L_NOTIFY_ON_REPLY' => $user -> lang [ 'Notify' ],
'L_DELETE_POST' => $user -> lang [ 'Delete_post' ],
'L_NONE' => $user -> lang [ 'None' ],
'L_EMPTY_MESSAGE' => $user -> lang [ 'Empty_message' ],
'L_BBCODE_CLOSE_TAGS' => $user -> lang [ 'Close_Tags' ],
'L_STYLES_TIP' => $user -> lang [ 'Styles_tip' ],
'L_BBCODE_B_HELP' => $user -> lang [ 'bbcode_b_help' ],
'L_BBCODE_I_HELP' => $user -> lang [ 'bbcode_i_help' ],
'L_BBCODE_U_HELP' => $user -> lang [ 'bbcode_u_help' ],
'L_BBCODE_Q_HELP' => $user -> lang [ 'bbcode_q_help' ],
'L_BBCODE_C_HELP' => $user -> lang [ 'bbcode_c_help' ],
'L_BBCODE_L_HELP' => $user -> lang [ 'bbcode_l_help' ],
'L_BBCODE_O_HELP' => $user -> lang [ 'bbcode_o_help' ],
'L_BBCODE_P_HELP' => $user -> lang [ 'bbcode_p_help' ],
'L_BBCODE_W_HELP' => $user -> lang [ 'bbcode_w_help' ],
'L_BBCODE_A_HELP' => $user -> lang [ 'bbcode_a_help' ],
'L_BBCODE_S_HELP' => $user -> lang [ 'bbcode_s_help' ],
'L_BBCODE_F_HELP' => $user -> lang [ 'bbcode_f_help' ],
'L_FONT_COLOR' => $user -> lang [ 'Font_color' ],
'L_FONT_SIZE' => $user -> lang [ 'Font_size' ],
'L_FONT_TINY' => $user -> lang [ 'font_tiny' ],
'L_FONT_SMALL' => $user -> lang [ 'font_small' ],
'L_FONT_NORMAL' => $user -> lang [ 'font_normal' ],
'L_FONT_LARGE' => $user -> lang [ 'font_large' ],
'L_FONT_HUGE' => $user -> lang [ 'font_huge' ],
'U_VIEW_FORUM' => " viewforum. $phpEx $SID &f= $forum_id " ,
'U_VIEWTOPIC' => ( $mode != 'post' ) ? " viewtopic. $phpEx $SID &t= $topic_id " : '' ,
'U_REVIEW_TOPIC' => ( $mode != 'post' ) ? " posting. $phpEx $SID &mmode=topicreview&t= $topic_id " : '' ,
2002-10-30 18:59:09 +00:00
'U_VIEW_MODERATORS' => 'memberslist.' . $phpEx . $SID . '&mode=moderators&f=' . intval ( $forum_id ),
2002-10-28 00:08:18 +00:00
'S_SHOW_TOPIC_ICONS' => $s_topic_icons ,
2002-10-30 00:57:27 +00:00
'S_HTML_CHECKED' => ( $html_checked ) ? 'checked="checked"' : '' ,
'S_BBCODE_CHECKED' => ( $bbcode_checked ) ? 'checked="checked"' : '' ,
'S_SMILIES_CHECKED' => ( $smilies_checked ) ? 'checked="checked"' : '' ,
'S_MAGIC_URL_CHECKED' => ( $urls_checked ) ? 'checked="checked"' : '' ,
'S_SIGNATURE_CHECKED' => ( $sig_checked ) ? 'checked="checked"' : '' ,
'S_NOTIFY_CHECKED' => ( $notify_checked ) ? 'checked="checked"' : '' ,
2002-10-28 00:08:18 +00:00
'S_DISPLAY_USERNAME' => ( $user -> data [ 'user_id' ] == ANONYMOUS || ( $mode == 'edit' && $post_username )) ? true : false ,
'S_SAVE_ALLOWED' => ( $auth -> acl_get ( 'f_save' , $forum_id )) ? true : false ,
'S_HTML_ALLOWED' => $html_status ,
'S_BBCODE_ALLOWED' => $bbcode_status ,
2002-10-08 20:11:59 +00:00
'S_SMILIES_ALLOWED' => $smilies_status ,
2002-10-28 00:08:18 +00:00
'S_SIG_ALLOWED' => ( $auth -> acl_get ( 'f_sigs' , $forum_id )) ? true : false ,
'S_NOTIFY_ALLOWED' => ( $user -> data [ 'user_id' ] != ANONYMOUS ) ? true : false ,
2002-10-30 18:59:09 +00:00
'S_DELETE_ALLOWED' => ( $mode = 'edit' && (( $post_id == $topic_last_post_id && $poster_id == $user -> data [ 'user_id' ] && $auth -> acl_get ( 'f_delete' , intval ( $forum_id ))) || $auth -> acl_get ( 'm_delete' , intval ( $forum_id )) || $auth -> acl_get ( 'a_' ))) ? true : false ,
2002-10-28 00:08:18 +00:00
'S_TYPE_TOGGLE' => $topic_type_toggle ,
2002-10-30 18:59:09 +00:00
'S_TOPIC_ID' => intval ( $topic_id ),
'S_POST_ACTION' => $s_action )
2001-06-13 17:36:58 +00:00
);
2002-10-04 13:09:10 +00:00
// Poll entry
2002-10-30 18:59:09 +00:00
if ((( $mode == 'post' || ( $mode == 'edit' && intval ( $post_id ) == intval ( $topic_first_post_id ) && empty ( $poll_last_vote ))) && $auth -> acl_get ( 'f_poll' , intval ( $forum_id ))) || $auth -> acl_get ( 'a_' ))
2001-09-06 00:29:07 +00:00
{
$template -> assign_vars ( array (
2002-10-28 00:08:18 +00:00
'S_SHOW_POLL_BOX' => true ,
2002-10-30 18:59:09 +00:00
'S_POLL_DELETE' => ( $mode = 'edit' && ! empty ( $poll_options ) && (( empty ( $poll_last_vote ) && $poster_id == $user -> data [ 'user_id' ] && $auth -> acl_get ( 'f_delete' , intval ( $forum_id ))) || $auth -> acl_get ( 'm_delete' , intval ( $forum_id )) || $auth -> acl_get ( 'a_' ))) ? true : false ,
2002-10-28 00:08:18 +00:00
'L_ADD_A_POLL' => $user -> lang [ 'Add_poll' ],
'L_ADD_POLL_EXPLAIN' => $user -> lang [ 'Add_poll_explain' ],
'L_POLL_QUESTION' => $user -> lang [ 'Poll_question' ],
2002-10-30 00:57:27 +00:00
'L_POLL_OPTIONS' => $user -> lang [ 'Poll_options' ],
'L_POLL_OPTIONS_EXPLAIN' => sprintf ( $user -> lang [ 'Poll_options_explain' ], $config [ 'max_poll_options' ]),
2002-10-28 00:08:18 +00:00
'L_ADD_OPTION' => $user -> lang [ 'Add_option' ],
'L_UPDATE_OPTION' => $user -> lang [ 'Update' ],
'L_DELETE_OPTION' => $user -> lang [ 'Delete' ],
'L_POLL_LENGTH' => $user -> lang [ 'Poll_for' ],
'L_DAYS' => $user -> lang [ 'Days' ],
2002-10-20 19:19:07 +00:00
'L_POLL_LENGTH_EXPLAIN' => $user -> lang [ 'Poll_for_explain' ],
2002-10-28 00:08:18 +00:00
'L_POLL_DELETE' => $user -> lang [ 'Delete_poll' ],
2002-08-13 16:34:17 +00:00
2002-10-28 00:08:18 +00:00
'POLL_TITLE' => $poll_title ,
2002-10-30 00:57:27 +00:00
'POLL_OPTIONS' => ( $poll_options ) ? implode ( " \n " , $poll_options ) : '' ,
2002-10-28 00:08:18 +00:00
'POLL_LENGTH' => $poll_length )
2001-09-06 00:29:07 +00:00
);
2002-10-04 13:09:10 +00:00
}
// Attachment entry
2002-10-20 19:19:07 +00:00
if ( $auth -> acl_get ( 'f_attach' , $forum_id ) )
2002-10-04 13:09:10 +00:00
{
$template -> assign_vars ( array (
2002-10-28 00:08:18 +00:00
'S_SHOW_ATTACH_BOX' => true ,
'L_ADD_ATTACHMENT' => $user -> lang [ 'Add_attach' ],
'L_ADD_ATTACHMENT_EXPLAIN' => $user -> lang [ 'Add_attach_explain' ],
2001-09-06 00:29:07 +00:00
2002-10-28 00:08:18 +00:00
'L_ADD_FILE' => $user -> lang [ 'Add_file' ],
'L_FILE_NAME' => $user -> lang [ 'Filename' ],
'L_FILE_COMMENT' => $user -> lang [ 'File_comment' ],)
2002-10-04 13:09:10 +00:00
);
2001-09-06 00:29:07 +00:00
}
2002-10-04 13:09:10 +00:00
// Output page ...
include ( $phpbb_root_path . 'includes/page_header.' . $phpEx );
$template -> set_filenames ( array (
'body' => 'posting_body.html' ,
'reviewbody' => 'posting_topic_review.html' )
);
make_jumpbox ( 'viewforum.' . $phpEx );
2001-10-16 11:12:32 +00:00
// Topic review
2002-10-04 13:09:10 +00:00
if ( $mode == 'reply' )
2001-10-16 11:12:32 +00:00
{
2002-10-28 00:08:18 +00:00
// require($phpbb_root_path . 'includes/topic_review.'.$phpEx);
// topic_review($topic_id, true);
2001-10-16 11:12:32 +00:00
2002-10-28 00:08:18 +00:00
// $template->assign_var_from_handle('TOPIC_REVIEW_BOX', 'reviewbody');
2001-10-16 11:12:32 +00:00
}
2001-07-13 16:14:37 +00:00
include ( $phpbb_root_path . 'includes/page_tail.' . $phpEx );
2001-06-13 17:36:58 +00:00
2002-04-20 00:22:29 +00:00
?>