Advertisement
Guest User

Untitled

a guest
Jan 5th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.09 KB | None | 0 0
  1. <?php
  2. /**
  3. * MyBB 1.8
  4. * Copyright 2014 MyBB Group, All Rights Reserved
  5. *
  6. * Website: http://www.mybb.com
  7. * License: http://www.mybb.com/about/license
  8. *
  9. */
  10.  
  11. define("IN_MYBB", 1);
  12. define('THIS_SCRIPT', 'contact.php');
  13.  
  14. $templatelist = "contact,post_captcha,post_captcha_recaptcha,post_captcha_nocaptcha,post_captcha_ayah";
  15.  
  16. require_once "./global.php";
  17. require_once MYBB_ROOT.'inc/class_captcha.php';
  18.  
  19. // Load global language phrases
  20. $lang->load("contact");
  21.  
  22. $plugins->run_hooks('contact_start');
  23.  
  24. // Make navigation
  25. add_breadcrumb($lang->contact, "contact.php");
  26.  
  27. if($mybb->settings['contact'] != 1 || (!$mybb->user['uid'] && $mybb->settings['contact_guests'] == 1))
  28. {
  29. error_no_permission();
  30. }
  31.  
  32. if($mybb->settings['contactemail'])
  33. {
  34. $contactemail = $mybb->settings['contactemail'];
  35. }
  36. else
  37. {
  38. $contactemail = $mybb->settings['adminemail'];
  39. }
  40.  
  41. // Check group limits
  42. if($mybb->usergroup['maxemails'] > 0)
  43. {
  44. if($mybb->user['uid'] > 0)
  45. {
  46. $user_check = "fromuid='{$mybb->user['uid']}'";
  47. }
  48. else
  49. {
  50. $user_check = "ipaddress=".$db->escape_binary($session->packedip);
  51. }
  52.  
  53. $query = $db->simple_select("maillogs", "COUNT(mid) AS sent_count", "{$user_check} AND dateline >= ".(TIME_NOW - (60*60*24)));
  54. $sent_count = $db->fetch_field($query, "sent_count");
  55. if($sent_count >= $mybb->usergroup['maxemails'])
  56. {
  57. $lang->error_max_emails_day = $lang->sprintf($lang->error_max_emails_day, $mybb->usergroup['maxemails']);
  58. error($lang->error_max_emails_day);
  59. }
  60. }
  61.  
  62. // Check email flood control
  63. if($mybb->usergroup['emailfloodtime'] > 0)
  64. {
  65. if($mybb->user['uid'] > 0)
  66. {
  67. $user_check = "fromuid='{$mybb->user['uid']}'";
  68. }
  69. else
  70. {
  71. $user_check = "ipaddress=".$db->escape_binary($session->packedip);
  72. }
  73.  
  74. $timecut = TIME_NOW-$mybb->usergroup['emailfloodtime']*60;
  75.  
  76. $query = $db->simple_select("maillogs", "mid, dateline", "{$user_check} AND dateline > '{$timecut}'", array('order_by' => "dateline", 'order_dir' => "DESC"));
  77. $last_email = $db->fetch_array($query);
  78.  
  79. // Users last email was within the flood time, show the error
  80. if($last_email['mid'])
  81. {
  82. $remaining_time = ($mybb->usergroup['emailfloodtime']*60)-(TIME_NOW-$last_email['dateline']);
  83.  
  84. if($remaining_time == 1)
  85. {
  86. $lang->error_emailflooding = $lang->sprintf($lang->error_emailflooding_1_second, $mybb->usergroup['emailfloodtime']);
  87. }
  88. elseif($remaining_time < 60)
  89. {
  90. $lang->error_emailflooding = $lang->sprintf($lang->error_emailflooding_seconds, $mybb->usergroup['emailfloodtime'], $remaining_time);
  91. }
  92. elseif($remaining_time > 60 && $remaining_time < 120)
  93. {
  94. $lang->error_emailflooding = $lang->sprintf($lang->error_emailflooding_1_minute, $mybb->usergroup['emailfloodtime']);
  95. }
  96. else
  97. {
  98. $remaining_time_minutes = ceil($remaining_time/60);
  99. $lang->error_emailflooding = $lang->sprintf($lang->error_emailflooding_minutes, $mybb->usergroup['emailfloodtime'], $remaining_time_minutes);
  100. }
  101.  
  102. error($lang->error_emailflooding);
  103. }
  104. }
  105.  
  106. $errors = array();
  107.  
  108. $mybb->input['message'] = trim_blank_chrs($mybb->get_input('message'));
  109. $mybb->input['other_message'] = trim_blank_chrs($mybb->get_input('other_message')); // Druga kolumna Możesz sobie warunki niżej dopisać tak jak są te do zwykłej wiadomości
  110. $mybb->input['subject'] = trim_blank_chrs($mybb->get_input('subject'));
  111. $mybb->input['email'] = trim_blank_chrs($mybb->get_input('email'));
  112.  
  113. if($mybb->request_method == "post")
  114. {
  115. // Verify incoming POST request
  116. verify_post_check($mybb->get_input('my_post_key'));
  117.  
  118. $plugins->run_hooks('contact_do_start');
  119.  
  120. // Validate input
  121. if(empty($mybb->input['subject']))
  122. {
  123. $errors[] = $lang->contact_no_subject;
  124. }
  125.  
  126. if(strlen($mybb->input['subject']) > $mybb->settings['contact_maxsubjectlength'] && $mybb->settings['contact_maxsubjectlength'] > 0)
  127. {
  128. $errors[] = $lang->sprintf($lang->subject_too_long, $mybb->settings['contact_maxsubjectlength'], strlen($mybb->input['subject']));
  129. }
  130.  
  131. if(empty($mybb->input['message']))
  132. {
  133. $errors[] = $lang->contact_no_message;
  134. }
  135.  
  136. if(strlen($mybb->input['message']) > $mybb->settings['contact_maxmessagelength'] && $mybb->settings['contact_maxmessagelength'] > 0)
  137. {
  138. $errors[] = $lang->sprintf($lang->message_too_long, $mybb->settings['contact_maxmessagelength'], strlen($mybb->input['message']));
  139. }
  140.  
  141. if(strlen($mybb->input['message']) < $mybb->settings['contact_minmessagelength'] && $mybb->settings['contact_minmessagelength'] > 0)
  142. {
  143. $errors[] = $lang->sprintf($lang->message_too_short, $mybb->settings['contact_minmessagelength'], strlen($mybb->input['message']));
  144. }
  145.  
  146. if(empty($mybb->input['email']))
  147. {
  148. $errors[] = $lang->contact_no_email;
  149. }
  150. else
  151. {
  152. // Validate email
  153. if(!validate_email_format($mybb->input['email']))
  154. {
  155. $errors[] = $lang->contact_no_email;
  156. }
  157. }
  158.  
  159. // Should we have a CAPTCHA? Perhaps yes, but only for guests like in other pages...
  160. if($mybb->settings['captchaimage'] && !$mybb->user['uid'])
  161. {
  162. $captcha = new captcha;
  163.  
  164. if($captcha->validate_captcha() == false)
  165. {
  166. // CAPTCHA validation failed
  167. foreach($captcha->get_errors() as $error)
  168. {
  169. $errors[] = $error;
  170. }
  171. }
  172. }
  173.  
  174. if(!$mybb->user['uid'] && $mybb->settings['stopforumspam_on_contact'])
  175. {
  176. require_once MYBB_ROOT . '/inc/class_stopforumspamchecker.php';
  177.  
  178. $stop_forum_spam_checker = new StopForumSpamChecker(
  179. $plugins,
  180. $mybb->settings['stopforumspam_min_weighting_before_spam'],
  181. $mybb->settings['stopforumspam_check_usernames'],
  182. $mybb->settings['stopforumspam_check_emails'],
  183. $mybb->settings['stopforumspam_check_ips'],
  184. $mybb->settings['stopforumspam_log_blocks']
  185. );
  186.  
  187. try {
  188. if($stop_forum_spam_checker->is_user_a_spammer('', $mybb->input['email'], get_ip()))
  189. {
  190. $errors[] = $lang->sprintf($lang->error_stop_forum_spam_spammer,
  191. $stop_forum_spam_checker->getErrorText(array(
  192. 'stopforumspam_check_emails',
  193. 'stopforumspam_check_ips')));
  194. }
  195. }
  196. catch (Exception $e)
  197. {
  198. if($mybb->settings['stopforumspam_block_on_error'])
  199. {
  200. $errors[] = $lang->error_stop_forum_spam_fetching;
  201. }
  202. }
  203. }
  204.  
  205. if(empty($errors))
  206. {
  207. if($mybb->settings['contact_badwords'] == 1)
  208. {
  209. // Load the post parser
  210. require_once MYBB_ROOT."inc/class_parser.php";
  211. $parser = new postParser;
  212.  
  213. $parser_options = array(
  214. 'filter_badwords' => 1
  215. );
  216.  
  217. $mybb->input['subject'] = $parser->parse_message($mybb->input['subject'], $parser_options);
  218. $mybb->input['message'] = $parser->parse_message($mybb->input['message'], $parser_options);
  219. $mybb->input['other_message'] = $parser->parse_message($mybb->input['other_message'], $parser_options); // Parsowanie drugiej kolumny
  220. }
  221.  
  222. $user = $lang->na;
  223. if($mybb->user['uid'])
  224. {
  225. $user = $mybb->user['username'].' - '.$mybb->settings['bburl'].'/'.get_profile_link($mybb->user['uid']);
  226. }
  227.  
  228. $subject = $lang->sprintf($lang->email_contact_subject, $mybb->input['subject']);
  229. $message = $lang->sprintf($lang->email_contact, $mybb->input['email'], $user, $session->ipaddress, $mybb->input['message'], $mybb->input['other_message']); // Tutaj trza dopisać nputy by wysłało je na maila
  230.  
  231. // Email the administrator
  232. my_mail($contactemail, $subject, $message, $mybb->input['email']);
  233.  
  234. $plugins->run_hooks('contact_do_end');
  235.  
  236. if($mybb->settings['mail_logging'] > 0)
  237. {
  238. // Log the message
  239. $log_entry = array(
  240. "subject" => $db->escape_string($subject),
  241. "message" => $db->escape_string($message),
  242. "dateline" => TIME_NOW,
  243. "fromuid" => $mybb->user['uid'],
  244. "fromemail" => $db->escape_string($mybb->input['email']),
  245. "touid" => 0,
  246. "toemail" => $db->escape_string($contactemail),
  247. "tid" => 0,
  248. "ipaddress" => $db->escape_binary($session->packedip),
  249. "type" => 3
  250. );
  251. $db->insert_query("maillogs", $log_entry);
  252. }
  253.  
  254. if($mybb->usergroup['emailfloodtime'] > 0 || (isset($sent_count) && $sent_count + 1 >= $mybb->usergroup['maxemails']))
  255. {
  256. redirect('index.php', $lang->contact_success_message, '', true);
  257. }
  258. else
  259. {
  260. redirect('contact.php', $lang->contact_success_message, '', true);
  261. }
  262. }
  263. else
  264. {
  265. $errors = inline_error($errors);
  266. }
  267. }
  268.  
  269. if(empty($errors))
  270. {
  271. $errors = '';
  272. }
  273.  
  274. // Generate CAPTCHA?
  275. $captcha = '';
  276.  
  277. if($mybb->settings['captchaimage'] && !$mybb->user['uid'])
  278. {
  279. $post_captcha = new captcha(true, "post_captcha");
  280.  
  281. if($post_captcha->html)
  282. {
  283. $captcha = $post_captcha->html;
  284. }
  285. }
  286.  
  287. $mybb->input['subject'] = htmlspecialchars_uni($mybb->input['subject']);
  288. $mybb->input['message'] = htmlspecialchars_uni($mybb->input['message']);
  289. $mybb->input['other_message'] = htmlspecialchars_uni($mybb->input['other_message']); // Druga kolumna
  290.  
  291. if($mybb->user['uid'] && !$mybb->get_input('email'))
  292. {
  293. $mybb->input['email'] = htmlspecialchars_uni($mybb->user['email']);
  294. }
  295. else
  296. {
  297. $mybb->input['email'] = htmlspecialchars_uni($mybb->get_input('email'));
  298. }
  299.  
  300. $plugins->run_hooks('contact_end');
  301.  
  302. eval("\$page = \"".$templates->get("contact")."\";");
  303. output_page($page);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement