PluginProbe
User Submitted Posts – Enable Users to Submit Posts from the Front End / 20260916
User Submitted Posts – Enable Users to Submit Posts from the Front End v20260916
20260916 20260810 20260608 20230806 20230809 20230811 20230901 20230902 20230914 20231102 20240319 20240516 20240703 20241026 20250327 20250329 20251121 20251210 20260110 20260113 20260207 20260217 20260407 20260422 trunk All 59 releases
← All changes | user-submitted-posts.php +232 -78 2023080620260916 View file →
@@ -2,24 +2,22 @@
2 2 /*
3 3 Plugin Name: User Submitted Posts
4 4 Plugin URI: https://perishablepress.com/user-submitted-posts/
5 5 Description: Enables your visitors to submit posts and images from anywhere on your site.
6 - Tags: frontend post, submit post, guest post, visitor post, content restriction, public post, share post, user post, user submitted post, upload
6 + Tags: frontend post, submit post, guest post, visitor post, public post
7 7 Author: Jeff Starr
8 8 Author URI: https://plugin-planet.com/
9 9 Donate link: https://monzillamedia.com/donate.html
10 10 Contributors: specialk
11 - Requires at least: 4.6
12 - Tested up to: 6.3
13 - Stable tag: 20230806
14 - Version: 20230806
11 + Requires at least: 4.7
12 + Tested up to: 7.1
13 + Stable tag: 20260916
14 + Version: 20260916
15 15 Requires PHP: 5.6.20
16 16 Text Domain: usp
17 17 Domain Path: /languages
18 18 License: GPL v2 or later
19 -*/
20 -
21 -/*
19 +
22 20 This program is free software; you can redistribute it and/or
23 21 modify it under the terms of the GNU General Public License
24 22 as published by the Free Software Foundation; either version
25 23 2 of the License, or (at your option) any later version.
@@ -31,16 +29,16 @@
31 29
32 30 You should have received a copy of the GNU General Public License
33 31 with this program. If not, visit: https://www.gnu.org/licenses/
34 32
35 - Copyright 2023 Monzilla Media. All rights reserved.
33 + Copyright 2011-2026 Monzilla Media. All rights reserved.
36 34 */
37 35
38 36 if (!defined('ABSPATH')) die();
39 37
40 -if (!defined('USP_WP_VERSION')) define('USP_WP_VERSION', '4.6');
41 -if (!defined('USP_VERSION')) define('USP_VERSION', '20230806');
42 -if (!defined('USP_PLUGIN')) define('USP_PLUGIN', esc_html__('User Submitted Posts', 'usp'));
38 +if (!defined('USP_WP_VERSION')) define('USP_WP_VERSION', '4.7');
39 +if (!defined('USP_VERSION')) define('USP_VERSION', '20260916');
40 +if (!defined('USP_PLUGIN')) define('USP_PLUGIN', 'User Submitted Posts');
43 41 if (!defined('USP_FILE')) define('USP_FILE', plugin_basename(__FILE__));
44 42 if (!defined('USP_PATH')) define('USP_PATH', plugin_dir_path(__FILE__));
45 43 if (!defined('USP_URL')) define('USP_URL', plugin_dir_url (__FILE__));
46 44
@@ -66,8 +64,10 @@
66 64 }
67 65
68 66 //
69 67
68 +
69 +
70 70 function usp_i18n_init() {
71 71
72 72 $domain = 'usp';
73 73
@@ -119,10 +119,10 @@
119 119 deactivate_plugins(USP_FILE);
120 120
121 121 $msg = '<strong>'. USP_PLUGIN .'</strong> ';
122 122 $msg .= esc_html__('requires WordPress ', 'usp') . USP_WP_VERSION;
123 - $msg .= esc_html__(' or higher, and has been deactivated! ', 'usp');
124 - $msg .= esc_html__('Please return to the', 'usp') .' <a href="'. admin_url() .'">';
123 + $msg .= esc_html__(' or higher, and has been deactivated. ', 'usp');
124 + $msg .= esc_html__('Please return to the', 'usp') .' <a href="'. admin_url('plugins.php') .'">';
125 125 $msg .= esc_html__('WordPress Admin Area', 'usp') .'</a> ';
126 126 $msg .= esc_html__('to upgrade WordPress and try again.', 'usp');
127 127
128 128 wp_die($msg);
@@ -293,8 +293,12 @@
293 293
294 294
295 295 function usp_get_submitted_category() {
296 296
297 + global $usp_options;
298 +
299 + $allowed_cats = isset($usp_options['categories']) ? array_map('intval', $usp_options['categories']) : array();
300 +
297 301 $category = isset($_POST['user-submitted-category']) ? $_POST['user-submitted-category'] : '';
298 302
299 303 if (is_array($category)) {
300 304
@@ -299,20 +303,30 @@
299 303 if (is_array($category)) {
300 304
301 305 $cats = array();
302 306
303 - foreach ($category as $cat) $cats[] = sanitize_text_field($cat);
307 + foreach ($category as $cat) $cats[] = intval($cat);
304 308
309 + $cats = array_intersect($cats, $allowed_cats);
310 +
305 311 } else {
306 312
307 313 if (strpos($category, ',') !== false) {
308 314
309 - $cats = array_map('trim', explode(',', $category));
315 + $cats = array_map('intval', array_map('trim', explode(',', $category)));
310 316
317 + $cats = array_intersect($cats, $allowed_cats);
318 +
311 319 } else {
312 320
313 - $cats = sanitize_text_field($category);
321 + $cats = intval($category);
314 322
323 + if (!in_array($cats, $allowed_cats)) {
324 +
325 + $cats = isset($allowed_cats[0]) ? $allowed_cats[0] : '';
326 +
327 + }
328 +
315 329 }
316 330
317 331 }
318 332
@@ -470,24 +484,13 @@
470 484 }
471 485
472 486 if ($post_id) {
473 487
474 - if (!empty($_POST['redirect-override'])) {
475 -
476 - $redirect = $_POST['redirect-override'];
477 -
478 - $redirect = remove_query_arg(array('usp-error'), $redirect);
479 - $redirect = add_query_arg(array('usp_redirect' => '1', 'success' => 1, 'post_id' => $post_id), $redirect);
480 -
481 - } else {
482 -
483 - $redirect = $_SERVER['REQUEST_URI'];
484 -
485 - $redirect = remove_query_arg(array('usp-error'), $redirect);
486 - $redirect = add_query_arg(array('success' => 1, 'post_id' => $post_id), $redirect);
487 -
488 - }
488 + $redirect = $_SERVER['REQUEST_URI'];
489 489
490 + $redirect = remove_query_arg(array('usp-error'), $redirect);
491 + $redirect = add_query_arg(array('success' => 1, 'post_id' => $post_id), $redirect);
492 +
490 493 do_action('usp_submit_success', $redirect);
491 494
492 495 } else {
493 496
@@ -525,8 +528,23 @@
525 528 }
526 529
527 530
528 531
532 +function usp_check_turnstile_keys() {
533 +
534 + global $usp_options;
535 +
536 + $site_key = isset($usp_options['turnstile_site_key']) ? $usp_options['turnstile_site_key'] : '';
537 + $secret_key = isset($usp_options['turnstile_secret_key']) ? $usp_options['turnstile_secret_key'] : '';
538 +
539 + if (empty($site_key) || empty($secret_key)) return false;
540 +
541 + return true;
542 +
543 +}
544 +
545 +
546 +
529 547 function usp_verify_recaptcha() {
530 548
531 549 global $usp_options;
532 550
@@ -557,8 +575,43 @@
557 575 }
558 576
559 577
560 578
579 +function usp_verify_turnstile() {
580 +
581 + global $usp_options;
582 +
583 + $site_key = isset($usp_options['turnstile_site_key']) ? $usp_options['turnstile_site_key'] : '';
584 + $secret_key = isset($usp_options['turnstile_secret_key']) ? $usp_options['turnstile_secret_key'] : '';
585 +
586 + if (!usp_check_turnstile_keys()) return false;
587 +
588 + $turnstile = isset($_POST['cf-turnstile-response']) ? $_POST['cf-turnstile-response'] : null;
589 +
590 + $headers = array(
591 + 'body' => array(
592 + 'secret' => $secret_key,
593 + 'response' => $turnstile,
594 + 'remoteip' => usp_get_ip_address()
595 + )
596 + );
597 +
598 + $verify = wp_remote_post('https://challenges.cloudflare.com/turnstile/v0/siteverify', $headers);
599 +
600 + $verify = wp_remote_retrieve_body($verify);
601 +
602 + $verify = json_decode($verify, true);
603 +
604 + $response = (isset($verify['success']) && $verify['success'] == 1) ? true : false;
605 +
606 + do_action('cfturnstile_after_check', $response, $verify);
607 +
608 + return $response;
609 +
610 +}
611 +
612 +
613 +
561 614 function usp_sanitize_content($content) {
562 615
563 616 $allowed_tags = wp_kses_allowed_html('post');
564 617
@@ -565,13 +618,24 @@
565 618 $allowed_tags['style'] = array('types' => array());
566 619
567 620 $allowed_tags = apply_filters('usp_content_allowed', $allowed_tags);
568 621
569 - $patterns = array('/target="_blank"/i', "/target='_blank'/i");
622 + $patterns = array(
623 + '/target="_blank"/i',
624 + "/target='_blank'/i",
625 + '/user-submitted-posts/i',
626 + '/usp-login-form/i',
627 + '/usp_display_posts/i',
628 + '/usp_gallery/i',
629 + '/usp-reset-button/i',
630 + '/usp_access/i',
631 + '/usp_visitor/i',
632 + '/usp_member/i'
633 + );
570 634
571 635 $patterns = apply_filters('usp_content_patterns', $patterns);
572 636
573 - $replacements = array('', '');
637 + $replacements = array('', '', '', '', '', '', '', '', '', '');
574 638
575 639 $replacements = apply_filters('usp_content_replacements', $replacements);
576 640
577 641 $content = wp_kses(stripslashes($content), $allowed_tags);
@@ -631,12 +695,12 @@
631 695 if (!empty($name) || !empty($email) || !empty($url) || !empty($ip)) {
632 696
633 697 echo '<ul style="margin-left:24px;list-style:square outside;">';
634 698
635 - if (!empty($name)) echo '<li>'. esc_html__('Submitter Name: ', 'usp') . $name .'</li>';
636 - if (!empty($email)) echo '<li>'. esc_html__('Submitter Email: ', 'usp') . $email .'</li>';
637 - if (!empty($url)) echo '<li>'. esc_html__('Submitter URL: ', 'usp') . $url .'</li>';
638 - if (!empty($ip) && !$usp_options['disable_ip_tracking']) echo '<li>'. esc_html__('Submitter IP: ', 'usp') . $ip .'</li>';
699 + if (!empty($name)) echo '<li>'. esc_html__('Submitter Name: ', 'usp') . esc_html($name) .'</li>';
700 + if (!empty($email)) echo '<li>'. esc_html__('Submitter Email: ', 'usp') . esc_html($email) .'</li>';
701 + if (!empty($url)) echo '<li>'. esc_html__('Submitter URL: ', 'usp') . esc_html($url) .'</li>';
702 + if (!empty($ip) && !$usp_options['disable_ip_tracking']) echo '<li>'. esc_html__('Submitter IP: ', 'usp') . esc_html($ip) .'</li>';
639 703
640 704 echo '</ul>';
641 705
642 706 }
@@ -663,9 +727,9 @@
663 727
664 728 return apply_filters('usp_form_shortcode', ob_get_clean());
665 729
666 730 }
667 -add_shortcode ('user-submitted-posts', 'usp_display_form');
731 +add_shortcode('user-submitted-posts', 'usp_display_form');
668 732
669 733
670 734
671 735 function user_submitted_posts() {
@@ -740,23 +804,23 @@
740 804 function usp_replaceAuthor($author) {
741 805
742 806 global $post, $usp_options;
743 807
744 - if (!$post) return;
808 + if ($post && is_object($post) && property_exists($post, 'ID')) {
809 +
810 + $disable = isset($usp_options['disable_author']) ? $usp_options['disable_author'] : false;
811 +
812 + $isSubmission = get_post_meta($post->ID, 'is_submission', true);
813 + $submissionAuthor = get_post_meta($post->ID, 'user_submit_name', true);
814 +
815 + if (!$disable && $isSubmission && !empty($submissionAuthor)) $author = $submissionAuthor;
816 +
817 + }
745 818
746 - if (!property_exists($post, 'ID')) return;
747 -
748 - $disable = isset($usp_options['disable_author']) ? $usp_options['disable_author'] : false;
749 -
750 - $isSubmission = get_post_meta($post->ID, 'is_submission', true);
751 - $submissionAuthor = get_post_meta($post->ID, 'user_submit_name', true);
752 -
753 - if (!$disable && $isSubmission && !empty($submissionAuthor)) $author = $submissionAuthor;
754 -
755 819 return apply_filters('usp_post_author', $author);
756 820
757 821 }
758 -add_filter ('the_author', 'usp_replaceAuthor');
822 +add_filter('the_author', 'usp_replaceAuthor');
759 823
760 824
761 825
762 826 function usp_get_author($author) {
@@ -995,12 +1059,26 @@
995 1059 global $usp_options;
996 1060
997 1061 if ($usp_options['titles_unique']) {
998 1062
999 - $check_post = get_page_by_title($title, OBJECT, 'post');
1063 + $args = array(
1064 +
1065 + 'post_type' => 'post',
1066 + 'title' => $title,
1067 + 'post_status' => 'all',
1068 + 'posts_per_page' => 1,
1069 + 'no_found_rows' => true,
1070 + 'ignore_sticky_posts' => true,
1071 + 'update_post_term_cache' => false,
1072 + 'update_post_meta_cache' => false,
1073 + 'orderby' => 'post_date ID',
1074 + 'order' => 'ASC'
1075 + );
1000 1076
1001 - if ($check_post && $check_post->ID) return false;
1077 + $check_post = new WP_Query(apply_filters('usp_check_duplicates', $args));
1002 1078
1079 + if (!empty($check_post->post)) return false;
1080 +
1003 1081 }
1004 1082
1005 1083 return true;
1006 1084
@@ -1085,9 +1163,9 @@
1085 1163 }
1086 1164
1087 1165
1088 1166
1089 -function usp_attach_images($post_id, $newPost, $files, $file_count) {
1167 +function usp_attach_images($post_id, $newPost, $files, $file_count, $author_data) {
1090 1168
1091 1169 global $usp_options;
1092 1170
1093 1171 do_action('usp_files_before', $files);
@@ -1157,9 +1235,9 @@
1157 1235 }
1158 1236
1159 1237 $file = file_exists($file) ? usp_unique_filename($file) : $file;
1160 1238
1161 - if (stripos($ext, 'php') === false) $bytes = file_put_contents($file, $file_local);
1239 + if (in_array(strtolower($ext), array('jpg', 'jpeg', 'jpe', 'gif', 'png', 'bmp', 'tif', 'tiff', 'ico', 'webp', 'heic', 'heif', 'svg'))) $bytes = file_put_contents($file, $file_local);
1162 1240
1163 1241 $file_type = isset($wp_filetype['type']) ? $wp_filetype['type'] : null;
1164 1242
1165 1243 $params = apply_filters('wp_handle_upload', array('file' => $file, 'url' => $guid, 'type' => $file_type));
@@ -1172,11 +1250,25 @@
1172 1250 'post_mime_type' => $file_type,
1173 1251 'post_name' => $file_name,
1174 1252 'post_title' => $file_name,
1175 1253 'post_status' => 'inherit',
1176 - 'guid' => $guid,
1254 + 'guid' => $guid
1177 1255 );
1178 1256
1257 + if (!is_user_logged_in()) {
1258 +
1259 + $attachment_author_id = apply_filters('usp_attachment_author_id', 0);
1260 +
1261 + if (!$attachment_author_id) {
1262 +
1263 + $attachment_author_id = isset($author_data['author_id']) ? $author_data['author_id'] : 1;
1264 +
1265 + }
1266 +
1267 + $attachment['post_author'] = $attachment_author_id;
1268 +
1269 + }
1270 +
1179 1271 $attachment = apply_filters('usp_insert_attachment_data', $attachment);
1180 1272
1181 1273 $attach_id = wp_insert_attachment($attachment, $file, $post_id);
1182 1274
@@ -1275,8 +1367,14 @@
1275 1367 if (isset($usp_options['usp_recaptcha']) && ($usp_options['usp_recaptcha'] == 'show') && !usp_verify_recaptcha()) $newPost['error'][] = 'required-recaptcha';
1276 1368
1277 1369 }
1278 1370
1371 + if (usp_check_turnstile_keys()) {
1372 +
1373 + if (isset($usp_options['usp_turnstile']) && ($usp_options['usp_turnstile'] == 'show') && !usp_verify_turnstile()) $newPost['error'][] = 'required-recaptcha';
1374 +
1375 + }
1376 +
1279 1377 if (isset($usp_options['usp_captcha']) && ($usp_options['usp_captcha'] == 'show') && !usp_spamQuestion($captcha)) $newPost['error'][] = 'required-captcha';
1280 1378
1281 1379 if (isset($usp_options['usp_email']) && ($usp_options['usp_email'] == 'show')) {
1282 1380
@@ -1296,10 +1394,13 @@
1296 1394
1297 1395 if (isset($usp_options['titles_unique']) && $usp_options['titles_unique'] && !usp_check_duplicates($title)) $newPost['error'][] = 'duplicate-title';
1298 1396 if (!empty($verify)) $newPost['error'][] = 'spam-verify';
1299 1397
1300 - if (isset($usp_options['custom_checkbox']) && !empty($usp_options['custom_checkbox']) && empty($checkbox)) $newPost['error'][] = 'required-checkbox';
1398 + $checkbox_display = (isset($usp_options['custom_checkbox']) && !empty($usp_options['custom_checkbox'])) ? true : false;
1399 + $checkbox_required = (isset($usp_options['custom_checkbox_req']) && !empty($usp_options['custom_checkbox_req'])) ? true : false;
1301 1400
1401 + if ($checkbox_display && $checkbox_required && empty($checkbox)) $newPost['error'][] = 'required-checkbox';
1402 +
1302 1403 if (isset($newPost['error']) && !empty($newPost['error'])) {
1303 1404
1304 1405 foreach ($newPost['error'] as $e) {
1305 1406
@@ -1320,8 +1421,9 @@
1320 1421 $new_status = (isset($postData['post_status']) && !empty($postData['post_status'])) ? sanitize_text_field($postData['post_status']) : apply_filters('usp_post_status', 'pending');
1321 1422 $postData['post_status'] = apply_filters('usp_post_status', 'pending');
1322 1423
1323 1424 do_action('usp_insert_before', $postData);
1425 + $postData = apply_filters('usp_insert_post_vars', $postData);
1324 1426 $newPost['id'] = wp_insert_post($postData);
1325 1427 do_action('usp_insert_after', $newPost);
1326 1428
1327 1429 $post_id = isset($newPost['id']) ? $newPost['id'] : null;
@@ -1339,9 +1441,9 @@
1339 1441 wp_set_post_tags($post_id, apply_filters('usp_filter_tags', $tags), apply_filters('usp_append_tags', false));
1340 1442
1341 1443 wp_set_post_categories($post_id, apply_filters('usp_filter_cats', $category), apply_filters('usp_append_cats', false));
1342 1444
1343 - $newPost = usp_attach_images($post_id, $newPost, $files, $file_count);
1445 + $newPost = usp_attach_images($post_id, $newPost, $files, $file_count, $author_data);
1344 1446
1345 1447 if (isset($newPost['error']) && empty($newPost['error'])) {
1346 1448
1347 1449 update_post_meta($post_id, 'is_submission', true);
@@ -1360,10 +1462,14 @@
1360 1462 if (!empty($url)) update_post_meta($post_id, 'user_submit_url', $url);
1361 1463
1362 1464 if (!empty($ip) && !$usp_options['disable_ip_tracking']) update_post_meta($post_id, 'user_submit_ip', $ip);
1363 1465
1364 - usp_send_mail_alert($post_id, $title, $content, $author, $email, $url, $custom, $custom_2);
1466 + $post_date = apply_filters('usp_post_meta_submit_time_format', get_the_time('l, F j, Y @ h:i:s a', $post_id));
1365 1467
1468 + update_post_meta($post_id, 'usp-post-time', $post_date);
1469 +
1470 + usp_send_mail_alert($post_id, $title, $content, $author, $email, $url, $custom, $custom_2, $post_date);
1471 +
1366 1472 }
1367 1473
1368 1474 } else {
1369 1475
@@ -1378,13 +1484,13 @@
1378 1484
1379 1485
1380 1486 function usp_include_deps() {
1381 1487
1382 - if (!function_exists('media_handle_upload')) {
1488 + if (!function_exists('media_handle_upload') || !function_exists('wp_crop_image')) {
1383 1489
1384 - require_once (ABSPATH .'/wp-admin/includes/media.php');
1385 - require_once (ABSPATH .'/wp-admin/includes/file.php');
1386 - require_once (ABSPATH .'/wp-admin/includes/image.php');
1490 + require_once(ABSPATH .'/wp-admin/includes/media.php');
1491 + require_once(ABSPATH .'/wp-admin/includes/file.php');
1492 + require_once(ABSPATH .'/wp-admin/includes/image.php');
1387 1493
1388 1494 }
1389 1495
1390 1496 }
@@ -1458,10 +1564,26 @@
1458 1564 return true;
1459 1565
1460 1566 }
1461 1567
1462 -function usp_send_mail_alert($post_id, $title, $content, $author, $email, $url, $custom, $custom_2) {
1568 +function usp_post_cats($post_id) {
1463 1569
1570 + $cats = '';
1571 +
1572 + foreach((get_the_category($post_id)) as $category) {
1573 +
1574 + $cats .= $category->cat_name .', ';
1575 +
1576 + }
1577 +
1578 + $cats = trim($cats, ', ');
1579 +
1580 + return $cats;
1581 +
1582 +}
1583 +
1584 +function usp_send_mail_alert($post_id, $title, $content, $author, $email, $url, $custom, $custom_2, $post_date) {
1585 +
1464 1586 global $usp_options;
1465 1587
1466 1588 if (isset($usp_options['usp_email_alerts']) && $usp_options['usp_email_alerts']) {
1467 1589
@@ -1467,8 +1589,9 @@
1467 1589
1468 1590 $blog_url = get_bloginfo('url'); // %%blog_url%%
1469 1591 $blog_name = get_bloginfo('name'); // %%blog_name%%
1470 1592 $post_url = get_permalink($post_id); // %%post_url%%
1593 + $post_cats = usp_post_cats($post_id); // %%post_cats%%
1471 1594 $admin_url = admin_url(); // %%admin_url%%
1472 1595 $post_title = $title; // %%post_title%%
1473 1596 $post_content = $content; // %%post_content%%
1474 1597 $post_author = $author; // %%post_author%%
@@ -1479,21 +1602,23 @@
1479 1602 $delete_link = usp_remote_delete_post_link($post_id); // %%delete_link%%
1480 1603
1481 1604 $patterns = array();
1482 1605
1483 - $patterns[0] = "/%%blog_url%%/";
1484 - $patterns[1] = "/%%blog_name%%/";
1485 - $patterns[2] = "/%%post_url%%/";
1486 - $patterns[3] = "/%%admin_url%%/";
1487 - $patterns[4] = "/%%post_title%%/";
1488 - $patterns[5] = "/%%post_content%%/";
1489 - $patterns[6] = "/%%post_author%%/";
1490 - $patterns[7] = "/%%user_email%%/";
1491 - $patterns[8] = "/%%user_url%%/";
1492 - $patterns[9] = "/%%edit_link%%/";
1493 - $patterns[10] = "/%%custom_field%%/";
1494 - $patterns[11] = "/%%custom_field_2%%/";
1495 - $patterns[12] = "/%%delete_link%%/";
1606 + $patterns[0] = "%%blog_url%%";
1607 + $patterns[1] = "%%blog_name%%";
1608 + $patterns[2] = "%%post_url%%";
1609 + $patterns[3] = "%%admin_url%%";
1610 + $patterns[4] = "%%post_title%%";
1611 + $patterns[5] = "%%post_content%%";
1612 + $patterns[6] = "%%post_author%%";
1613 + $patterns[7] = "%%user_email%%";
1614 + $patterns[8] = "%%user_url%%";
1615 + $patterns[9] = "%%edit_link%%";
1616 + $patterns[10] = "%%custom_field%%";
1617 + $patterns[11] = "%%custom_field_2%%";
1618 + $patterns[12] = "%%delete_link%%";
1619 + $patterns[13] = "%%post_date%%";
1620 + $patterns[14] = "%%post_cats%%";
1496 1621
1497 1622 $replacements = array();
1498 1623
1499 1624 $replacements[0] = $blog_url;
@@ -1508,19 +1633,29 @@
1508 1633 $replacements[9] = $edit_link;
1509 1634 $replacements[10] = $custom;
1510 1635 $replacements[11] = $custom_2;
1511 1636 $replacements[12] = $delete_link;
1637 + $replacements[13] = $post_date;
1638 + $replacements[14] = $post_cats;
1512 1639
1513 1640 //
1514 1641
1515 1642 $subject_default = $blog_name .': New user-submitted post!';
1516 1643 $subject = (isset($usp_options['email_alert_subject']) && !empty($usp_options['email_alert_subject'])) ? $usp_options['email_alert_subject'] : $subject_default;
1517 - $subject = preg_replace($patterns, $replacements, $subject);
1644 + for($i = 0; $i < count($patterns); $i++) {
1645 + $pattern = isset($patterns[$i]) ? $patterns[$i] : '';
1646 + $replace = isset($replacements[$i]) ? $replacements[$i] : '';
1647 + $subject = str_replace($pattern, $replace, $subject);
1648 + }
1518 1649 $subject = apply_filters('usp_mail_subject', $subject);
1519 1650
1520 1651 $message_default = 'Hello, there is a new user-submitted post:'. "\r\n\n" . 'Title: '. $post_title . "\r\n\n" .'Visit Admin Area: '. $admin_url;
1521 1652 $message = (isset($usp_options['email_alert_message']) && !empty($usp_options['email_alert_message'])) ? $usp_options['email_alert_message'] : $message_default;
1522 - $message = preg_replace($patterns, $replacements, $message);
1653 + for($i = 0; $i < count($patterns); $i++) {
1654 + $pattern = isset($patterns[$i]) ? $patterns[$i] : '';
1655 + $replace = isset($replacements[$i]) ? $replacements[$i] : '';
1656 + $message = str_replace($pattern, $replace, $message);
1657 + }
1523 1658 $message = apply_filters('usp_mail_message', $message);
1524 1659
1525 1660 $html = isset($usp_options['usp_email_html']) ? $usp_options['usp_email_html'] : false;
1526 1661 $format = $html ? 'text/html' : 'text/plain';
@@ -1810,4 +1945,23 @@
1810 1945 }
1811 1946
1812 1947 }
1813 1948 add_action('wp_logout', 'usp_clear_cookies');
1949 +
1950 +
1951 +
1952 +function usp_add_new_options() {
1953 +
1954 + global $usp_options;
1955 +
1956 + $turnstile = isset($usp_options['usp_turnstile']) ? true : false;
1957 +
1958 + if (empty($turnstile)) {
1959 +
1960 + $usp_options['usp_turnstile'] = 'hide';
1961 +
1962 + $update_option = update_option('usp_options', $usp_options);
1963 +
1964 + }
1965 +
1966 +}
1967 +add_action('admin_init', 'usp_add_new_options');