PluginProbe
User Submitted Posts – Enable Users to Submit Posts from the Front End / 20260110
User Submitted Posts – Enable Users to Submit Posts from the Front End v20260110
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
user-submitted-posts / library / shortcode-access.php

shortcode-access.php in User Submitted Posts – Enable Users to Submit Posts from the Front End 20260110, at library/shortcode-access.php

117 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // User Submitted Posts - Access Control
2
3 /*
4 Shortcode: require login based on capability
5 Syntax: [usp_access cap="read" deny=""][/usp_access]
6 Can use {tag} to output <tag>
7 See @ https://codex.wordpress.org/Roles_and_Capabilities#Capabilities
8 */
9 if (!function_exists('usp_access')) :
10 function usp_access($attr, $content = null) {
11 extract(shortcode_atts(array(
12 'cap' => 'read',
13 'deny' => '',
14 ), $attr));
15
16 // deny message
17
18 $deny = htmlspecialchars($deny, ENT_QUOTES);
19
20 $deny = str_replace("{", "<", $deny);
21 $deny = str_replace("}", ">", $deny);
22
23 $deny = preg_replace('#<script(.*)>(.*)</script>#is', '', $deny);
24
25 // content
26
27 $content = htmlspecialchars($content, ENT_QUOTES);
28
29 $content = str_replace("{", "<", $content);
30 $content = str_replace("}", ">", $content);
31
32 $content = preg_replace('#<script(.*)>(.*)</script>#is', '', $content);
33
34 //
35
36 $caps = array_map('trim', explode(',', $cap));
37
38 foreach ($caps as $c) {
39 if (current_user_can($c) && !is_null($content) && !is_feed()) return do_shortcode($content);
40 }
41
42 return $deny;
43 }
44 add_shortcode('usp_access', 'usp_access');
45 endif;
46
47
48
49 /*
50 Shortcode: show content to visitors
51 Syntax: [usp_visitor deny=""][/usp_visitor]
52 Can use {tag} to output <tag>
53 */
54 if (!function_exists('usp_visitor')) :
55 function usp_visitor($attr, $content = null) {
56 extract(shortcode_atts(array(
57 'deny' => '',
58 ), $attr));
59
60 $deny = str_replace("{", "<", $deny);
61 $deny = str_replace("}", ">", $deny);
62
63 $deny = htmlspecialchars($deny, ENT_QUOTES);
64 $content = htmlspecialchars($content, ENT_QUOTES);
65
66 if ((!is_user_logged_in() && !is_null($content)) || is_feed()) return do_shortcode($content);
67
68 return $deny;
69 }
70 add_shortcode('usp_visitor', 'usp_visitor');
71 endif;
72
73
74
75 /*
76 Shortcode: show content to members
77 Syntax: [usp_member deny=""][/usp_member]
78 Can use {tag} to output <tag>
79 */
80 if (!function_exists('usp_member')) :
81 function usp_member($attr, $content = null) {
82 extract(shortcode_atts(array(
83 'deny' => '',
84 ), $attr));
85
86 $deny = str_replace("{", "<", $deny);
87 $deny = str_replace("}", ">", $deny);
88
89 $deny = htmlspecialchars($deny, ENT_QUOTES);
90 $content = htmlspecialchars($content, ENT_QUOTES);
91
92 if (is_user_logged_in() && !is_null($content) && !is_feed()) return do_shortcode($content);
93
94 return $deny;
95 }
96 add_shortcode('usp_member', 'usp_member');
97 endif;
98
99
100
101 /*
102 Shortcode Empty Paragraph Fix
103 */
104 if (!function_exists('usp_shortcode_empty_p_fix')) :
105 function usp_shortcode_empty_p_fix($content) {
106 $array = array(
107 '<p>[' => '[',
108 ']</p>' => ']',
109 ']<br />' => ']',
110 ']<br>' => ']'
111 );
112 $content = strtr($content, $array);
113 return $content;
114 }
115 add_filter('the_content', 'usp_shortcode_empty_p_fix');
116 endif;
117