public function submit()
{
$post_message = \Input::get('message');
$mode = (int) \Input::get('mode');
$recaptcha = \Input::get('recaptcha');
$response = ['state' => 'deny'];
$recaptcha_check = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=' . \Configer::get('recaptcha_secret') . '&response=' . $recaptcha, false, stream_context_create(['ssl' => ['verify_peer' => false, 'verify_peer_name' => false]]));
$recaptcha_check = json_decode($recaptcha_check, true);
if (@$recaptcha_check['success']) {
if (mb_strlen($post_message, 'utf-8') > 1024) {
$post_message = mb_substr($post_message, 0, 1024, 'utf-8');
}
$check = \DB::table('post')->where('post_message', $post_message)->where('post_type', $mode)->where('insert_time', '>', time() - 3600)->first();
if (count($check)) {
$response = ['state' => 'success', 'redirct' => '/' . $check->post_key];
} else {
$post_key = $this->base62(strrev(time())) . $this->randString(3);
$post_state = 0;
$post_type = 1;
$post_url = null;
$insert_time = time();
$last = \DB::table('post')->where('post_state', '1')->where('post_type', $mode)->orderBy('id', 'desc')->first();
if (count($last) > 0) {
$query = 'UPDATE post SET post_state = 8 WHERE id < ' . $last->id . ' AND post_state = 0';
\DB::update(\DB::raw($query));
}
@($posts = \DB::table('post')->where('post_state', 0)->count());
if (count($last) > 0 && time() - $last->publish_time >= \Configer::get('publish_frequency') && $posts == 0) {
$publish_time = time();
} else {
$publish_time = time() + (\Configer::get('publish_frequency') - time() % \Configer::get('publish_frequency')) + $posts * \Configer::get('publish_frequency');
}
if ($mode == 3) {
$post_type = 3;
}
if (strlen($this->searchUrl($post_message))) {
$post_type = 2;
$post_url = $this->searchUrl($post_message);
} else {
$post_url = '0';
}
if (\Configer::get('log_guest_ip') == "on") {
$post_user_ip = $this->getUserIP();
if (\Configer::get('encrypt_guest_ip') == "on") {
$post_user_ip = md5($post_user_ip);
}
$check = \DB::table('block_guest')->where('ip', $post_user_ip)->first();
if (count($check)) {
$post_state = 5;
}
} else {
$post_user_ip = '0';
}
$block_keyword = \DB::table('block_keyword')->get();
if (count($block_keyword)) {
foreach ($block_keyword as $item) {
if (!empty($item->keyword)) {
if (strpos($post_message, $item->keyword) !== false) {
$post_state = 5;
}
}
}
if (\Configer::get('advance_block_mode') == 'on') {
$covert = new utf8_chinese_str();
$pinyin = \App::make('pinyin');
$gb_post_message = $covert->big5_gb2312($post_message);
$pinyin_post_message = $pinyin->trans($gb_post_message, ['delimiter' => '-', 'accent' => false, 'only_chinese' => true]);
foreach ($block_keyword as $item) {
$gb_keyword = $covert->big5_gb2312($item->keyword);
$pinyin_keyword = $pinyin->trans($gb_keyword, ['delimiter' => '-', 'accent' => false, 'only_chinese' => true]);
if (!empty($pinyin_post_message) && !empty($pinyin_keyword)) {
if (strpos($pinyin_post_message, $pinyin_keyword) !== false) {
$post_state = 5;
}
}
}
}
}
$post = ['post_key' => $post_key, 'post_state' => $post_state, 'post_type' => $post_type, 'post_message' => $post_message, 'post_url' => $post_url, 'post_user_ip' => $post_user_ip, 'insert_time' => $insert_time, 'publish_time' => $publish_time, 'facebook_url' => '0'];
if (\DB::table('post')->insert($post)) {
$response = ['state' => 'success', 'redirct' => '/' . $post_key];
}
}
}
echo json_encode($response);
}