252 lines
7.0 KiB
PHP
252 lines
7.0 KiB
PHP
<?php
|
||
if(!defined('DATALIFEENGINE')){die("Hacking attempt!");}
|
||
|
||
if (check_access($forum_config['post_captcha']))
|
||
{
|
||
if ($_REQUEST['sec_code'] !== $_SESSION['sec_code_session'] and isset($_SESSION['sec_code_session']))
|
||
{
|
||
$post_captcha = true;
|
||
|
||
$_SESSION['sec_code_session'] = FALSE;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$post_captcha = false;
|
||
}
|
||
|
||
include_once SYSTEM_DIR.'/classes/parse.class.php';
|
||
|
||
$parse = new ParseFilter(Array(), Array(), 1, 1);
|
||
|
||
$post_text = $parse->process($post_text);
|
||
|
||
$post_text = $db->safesql($parse->BB_Parse($post_text, FALSE));
|
||
|
||
$post_text = auto_wrap ($post_text);
|
||
|
||
if (strlen($post_text) > $forum_config['post_maxlen'])
|
||
{
|
||
$post_maxlen = true;
|
||
}
|
||
else
|
||
{
|
||
$post_maxlen = false;
|
||
}
|
||
|
||
$topic_title = $db->safesql(urldecode($topic_title));
|
||
|
||
if (!$is_logged)
|
||
{
|
||
$name = $db->safesql($parse->BB_Parse($parse->process($name), TRUE));
|
||
|
||
$mail = $db->safesql($parse->BB_Parse($parse->process($mail), TRUE));
|
||
|
||
$member_id['name'] = $name;
|
||
|
||
if ($name)
|
||
{
|
||
$db->query("SELECT name from " . USERPREFIX . "_users where LOWER(name) = '".strtolower($name)."'");
|
||
|
||
if (!$db->num_rows()){
|
||
$name_ok = true;
|
||
}else{
|
||
$name_ok = false;
|
||
$stop .= $f_lang['err_name'];
|
||
}
|
||
$db->free();
|
||
}
|
||
|
||
if ($mail)
|
||
{
|
||
if(preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $mail)){
|
||
$mail_ok = true;
|
||
}else{
|
||
$mail_ok = false;
|
||
$stop .= $f_lang['err_mail'];
|
||
}
|
||
}
|
||
|
||
if ($name_ok and $mail_ok)
|
||
{
|
||
$add_post_ok = true;
|
||
}
|
||
else
|
||
{
|
||
$add_post_ok = false;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
$add_post_ok = true;
|
||
}
|
||
|
||
$_TIME = time()+($config['date_adjust']*60);
|
||
|
||
$topic_date = date ("Y-m-d H:i:s", $_TIME);
|
||
|
||
$_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
|
||
|
||
if ($post_text and $topic_id and $forum_id and $add_post_ok and !$post_captcha and !$post_maxlen)
|
||
{
|
||
$postcount = intval ($forums_array[$forum_id]['postcount']);
|
||
|
||
if ($forum_config['post_update'])
|
||
{
|
||
$row = $db->super_query("SELECT pid, topic_id, post_author, DATE_FORMAT(post_date,'%Y-%m-%d') as post_date, post_text, is_register, post_ip FROM " . PREFIX . "_forum_posts WHERE topic_id = '$topic_id' ORDER BY pid DESC LIMIT 0,1");
|
||
|
||
$post_id = $row['pid'];
|
||
|
||
if ($row['post_author'] == $member_id['name'] AND $row['is_register']) $update_post = true;
|
||
elseif ($row['ip'] == $_IP AND !$row['is_register'] AND !$is_logged) $update_post = true;
|
||
|
||
if ($row['post_date'] != date("Y-m-d", $_TIME)) $update_post = false;
|
||
|
||
|
||
}
|
||
|
||
if (!$update_post){
|
||
|
||
$db->query("INSERT INTO " . PREFIX . "_forum_posts (topic_id, post_date, post_author, post_text, post_ip, is_register, e_mail, is_count) values ('$topic_id', '$topic_date', '$member_id[name]', '$post_text', '$_IP', '$is_logged', '$mail', '$postcount')");
|
||
|
||
$new_pid = $db->insert_id();
|
||
|
||
// update table //
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_topics SET post = post+1, last_date = '$topic_date', last_poster_name = '$member_id[name]', last_post_id = '$new_pid' WHERE tid = '$topic_id'");
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_forums SET posts = posts+1, f_last_tid = '$topic_id', f_last_title = '$topic_title', f_last_date = '$topic_date', f_last_poster_name = '$member_id[name]', last_post_id = '$new_pid' WHERE id = '$forum_id'");
|
||
|
||
if ($is_logged)
|
||
{
|
||
if ($postcount)
|
||
{
|
||
$db->query("UPDATE " . PREFIX . "_users SET forum_post = forum_post+1 WHERE name = '$member_id[name]'");
|
||
}
|
||
|
||
$db->query("DELETE FROM " . PREFIX . "_forum_views WHERE topic_id = '$topic_id' and user_id != '$member_id[user_id]'");
|
||
}
|
||
|
||
if ($forum_config['set_sub_last_up'] and $is_parentid = $forums_array[$forum_id]['parentid'])
|
||
{
|
||
$db->query("UPDATE " . PREFIX . "_forum_forums SET f_last_tid = '$topic_id', f_last_title = '$topic_title', f_last_date ='$topic_date', f_last_poster_name = '$member_id[name]' WHERE id ='$is_parentid'");
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
$stop_subscription = true;
|
||
|
||
$post_text = $db->safesql($row['post_text'] . "<br /><br />" . stripslashes($post_text));
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_posts set post_text = '{$post_text}' WHERE pid = '{$post_id}'");
|
||
|
||
$new_pid = $post_id;
|
||
}
|
||
|
||
if ($post_id)
|
||
{
|
||
if (stristr ($post_text, "[attachment="))
|
||
{
|
||
$result = $db->query("SELECT * FROM " . PREFIX . "_forum_files
|
||
WHERE topic_id = '$topic_id' and file_attach = '0'");
|
||
|
||
while ($att = $db->get_row($result))
|
||
{
|
||
if (stristr ($post_text, "[attachment=".$att['file_id']."]") OR stristr ($post_text, "[attachment=".$att['file_id'].":url]"))
|
||
{
|
||
$update_id[] = $att['file_id'];
|
||
}
|
||
}
|
||
|
||
if ($update_id)
|
||
{
|
||
$update_list = implode(',', $update_id);
|
||
|
||
$db->query("UPDATE " . PREFIX . "_forum_files SET topic_id = '$topic_id', post_id = '$new_pid', file_attach = '1' WHERE file_id IN ({$update_list})");
|
||
}
|
||
}
|
||
}
|
||
|
||
$cache->clear ('forum_show_last');
|
||
|
||
$topic_location = $forum_url."/topic_{$topic_id}/{$page}#post-{$new_pid}";
|
||
|
||
if (!$ajax_adds)
|
||
{
|
||
header("Location: {$topic_location}");
|
||
}
|
||
|
||
if ($forum_config['subscription'] AND !$stop_subscription)
|
||
{
|
||
$all_subscr = $db->query("SELECT name, email FROM ". PREFIX ."_forum_subscription AS t1 INNER JOIN ". PREFIX ."_users AS t2 ON t1.user_id = t2.user_id WHERE t1.topic_id = $topic_id and t1.user_id != '{$member_id['user_id']}'");
|
||
|
||
if ($db->num_rows($all_subscr))
|
||
{
|
||
include_once SYSTEM_DIR.'/classes/mail.class.php';
|
||
|
||
$mail = new dle_mail ($config);
|
||
|
||
$topic_link = $a_forum_url."showtopic={$topic_id}&lastpost=1#reply";
|
||
|
||
$topic_link_del = $config['http_home_url']."?do=forum&act=subscription&code=del&selected_id={$topic_id}";
|
||
|
||
$mail_tpl = $db->super_query("SELECT template FROM " . PREFIX . "_forum_email where name='subscription_text' LIMIT 0,1");
|
||
|
||
$mail_tpl['template'] = stripslashes($mail_tpl['template']);
|
||
|
||
while ($mail_row = $db->get_row($all_subscr))
|
||
{
|
||
$mail_result = str_replace("{%username_to%}", $mail_row['name'], $mail_tpl['template']);
|
||
|
||
$mail_result = str_replace("{%username_from%}", $member_id['name'], $mail_result);
|
||
|
||
$mail_result = str_replace("{%topic_name%}", $topic_title, $mail_result);
|
||
|
||
$mail_result = str_replace("{%topic_link%}", $topic_link, $mail_result);
|
||
|
||
$mail_result = str_replace("{%topic_link_del%}", $topic_link_del, $mail_result);
|
||
|
||
$mail_title = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
||
|
||
$mail->send ($mail_row['email'], $mail_title, $mail_result);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
$cache->clear ('forum_show_last');
|
||
}
|
||
|
||
else
|
||
{
|
||
if (!$add_post_ok)
|
||
{
|
||
forum_msg($f_lang['all_info'], $stop);
|
||
|
||
$add_post_error = $stop;
|
||
}
|
||
|
||
elseif ($post_captcha)
|
||
{
|
||
forum_msg($f_lang['all_info'], $f_lang['captcha_stop']);
|
||
|
||
$add_post_error = $f_lang['ajax_stop_2'];
|
||
}
|
||
|
||
elseif ($post_maxlen)
|
||
{
|
||
forum_msg($f_lang['all_info'], $f_lang['maxlen_stop']);
|
||
|
||
$add_post_error = $f_lang['ajax_stop_4'];
|
||
}
|
||
|
||
else
|
||
{
|
||
forum_msg($f_lang['all_info'], $f_lang['values_error']);
|
||
|
||
$add_post_error = $f_lang['ajax_stop_3'];
|
||
}
|
||
}
|
||
|
||
?>
|